
int fts5DlidxLvlNext(Fts5DlidxLvl *pLvl)

{
  u8 *puVar1;
  undefined *puVar2;
  Fts5Data *pFVar3;
  int iVar4;
  byte bVar6;
  uint *puVar5;
  int iVar7;
  Fts5Data *pFVar8;
  int *p;
  uchar *p_00;
  i64 *in_a1;
  int iVar9;
  u32 *v;
  u32 *puVar10;
  u32 *v_00;
  uint *puVar11;
  uint uVar12;
  uint uVar13;
  u32 *puVar14;
  uint uVar15;
  Fts5Data *p_01;
  int *piVar16;
  int *piVar17;
  undefined4 *puVar18;
  undefined *puVar19;
  code *pcVar20;
  code *pcVar21;
  code *pcVar22;
  undefined4 in_stack_fffffec4;
  uint uStack_10c;
  int *piStack_100;
  int iStack_fc;
  int iStack_f4;
  code *pcStack_ec;
  code *pcStack_d8;
  u32 uStack_d0;
  uint *puStack_cc;
  i64 *piStack_c4;
  u32 *puStack_c0;
  int *piStack_bc;
  uint uStack_90;
  int iStack_8c;
  uint *puStack_88;
  Fts5Data *pFStack_84;
  int *piStack_80;
  code *pcStack_7c;
  undefined *puStack_68;
  int iStack_5c;
  i64 *piStack_58;
  int iStack_54;
  Fts5Data *pFStack_4c;
  Fts5DlidxLvl *pFStack_48;
  Fts5Data *pFStack_44;
  undefined *puStack_40;
  code *pcStack_3c;
  i64 iVal;
  uint *puStack_14;
  
  puVar2 = PTR___stack_chk_guard_00190e24;
  v_00 = (u32 *)pLvl->iOff;
  p_01 = pLvl->pData;
  puStack_14 = *(uint **)PTR___stack_chk_guard_00190e24;
  if (v_00 == (u32 *)0x0) {
    pLvl->iOff = 1;
    iVar4 = sqlite3Fts5GetVarint32(p_01->p + 1,(u32 *)&pLvl->iLeafPgno);
    puVar19 = PTR_LAB_00190b40;
    in_a1 = &pLvl->iRowid;
    iVar4 = iVar4 + pLvl->iOff;
    pLvl->iOff = iVar4;
    iVar4 = (*(code *)(puVar19 + -0x80))(p_01->p + iVar4);
    iVar7 = pLvl->bEof;
    iVar4 = iVar4 + pLvl->iOff;
    pLvl->iOff = iVar4;
    pLvl->iFirstOff = iVar4;
  }
  else if ((int)v_00 < p_01->nn) {
    in_a1 = (i64 *)p_01->p;
    puVar14 = v_00;
    if (*(u8 *)((int)in_a1 + (int)v_00) == '\0') {
      do {
        puVar14 = (u32 *)((int)puVar14 + 1);
        if (puVar14 == (u32 *)p_01->nn) goto LAB_00066908;
      } while (*(u8 *)((int)in_a1 + (int)puVar14) == '\0');
      iVar4 = (int)puVar14 + (1 - (int)v_00);
      v_00 = puVar14;
    }
    else {
      iVar4 = 1;
    }
    pcVar20 = (code *)(PTR_LAB_00190b40 + -0x80);
    pLvl->iLeafPgno = pLvl->iLeafPgno + iVar4;
    iVar4 = (*pcVar20)(p_01->p + (int)v_00,&iVal);
    iVar4 = iVar4 + (int)v_00;
    v_00 = *(u32 **)((int)&pLvl->iRowid + 4);
    iVar9 = *(int *)&pLvl->iRowid;
    pLvl->iOff = iVar4;
    iVar7 = pLvl->bEof;
    *(u32 **)((int)&pLvl->iRowid + 4) = (u32 *)((int)v_00 + iVal._4_4_);
    in_a1 = (i64 *)(iVar9 + iVal._0_4_);
    *(u8 **)&pLvl->iRowid = (u8 *)((uint)((u32 *)((int)v_00 + iVal._4_4_) < v_00) + (int)in_a1);
  }
  else {
LAB_00066908:
    iVar7 = 1;
    pLvl->bEof = 1;
  }
  if (puStack_14 == *(uint **)puVar2) {
    return iVar7;
  }
  pcVar20 = fts5DoclistIterNext;
  puVar11 = puStack_14;
  puVar19 = PTR___stack_chk_fail_00190df8;
  (*(code *)PTR___stack_chk_fail_00190df8)();
  puStack_68 = puVar19 + 0x131f08;
  puStack_40 = puVar2;
  piVar16 = *(int **)(puVar19 + 0x12a40c);
  pFVar8 = (Fts5Data *)*piVar16;
  uVar15 = puVar11[4] + puVar11[6] + puVar11[5];
  pFStack_4c = pFVar8;
  pFStack_48 = pLvl;
  pFStack_44 = p_01;
  pcStack_3c = pcVar20;
  if (uVar15 < *puVar11) {
    iVar4 = (*(code *)(*(int *)(puVar19 + 0x12a128) + -0x80))(uVar15,&piStack_58);
    pFVar8 = (Fts5Data *)puVar11[3];
    p_01 = (Fts5Data *)(uVar15 + iVar4);
    pFVar3 = (Fts5Data *)((int)&pFVar8->p + iStack_54);
    puVar11[3] = (uint)pFVar3;
    puVar11[2] = (uint)((int)piStack_58 + (uint)(pFVar3 < pFVar8) + puVar11[2]);
    bVar6 = *(byte *)&p_01->p;
    if ((char)bVar6 < '\0') {
      in_a1 = (i64 *)&iStack_5c;
      pFVar8 = p_01;
      uVar15 = sqlite3Fts5GetVarint32((uchar *)p_01,(u32 *)in_a1);
      puVar11[6] = uVar15;
      puVar11[4] = (uint)p_01;
      puVar11[5] = iStack_5c >> 1;
    }
    else {
      puVar11[4] = (uint)p_01;
      puVar11[5] = (uint)(bVar6 >> 1);
      puVar11[6] = 1;
      in_a1 = piStack_58;
    }
  }
  else {
    puVar11[4] = 0;
  }
  if (pFStack_4c == (Fts5Data *)*piVar16) {
    return *piVar16;
  }
  pcVar20 = *(code **)(puStack_68 + -0x7b28);
  pcVar21 = fts5SegIterLoadNPos;
  (*pcVar20)();
  piStack_80 = piVar16;
  puStack_88 = puVar11;
  pcStack_7c = pcVar21;
  pFStack_84 = p_01;
  piVar17 = *(int **)(pcVar20 + 0x12a2ec);
  puVar14 = *(u32 **)((int)in_a1 + 0x14);
  piVar16 = *(int **)((int)in_a1 + 0xc);
  iStack_8c = *piVar17;
  if (pFVar8[4].p == (u8 *)0x1) {
    v_00 = (u32 *)piVar16[2];
    *(u8 *)((int)in_a1 + 0x54) = '\0';
    puVar10 = *(u32 **)(in_a1 + 5);
    if ((int)v_00 <= (int)*(u32 **)(in_a1 + 5)) {
      puVar10 = v_00;
    }
    v = (u32 *)(uint)((int)puVar14 < (int)puVar10);
    puVar1 = (u8 *)(in_a1 + 10);
    puVar1[0] = '\0';
    puVar1[1] = '\0';
    puVar1[2] = '\0';
    puVar1[3] = '\x01';
    if ((v != (u32 *)0x0) &&
       (v = (u32 *)((int)puVar14 + 1), *(char *)(*piVar16 + (int)puVar14) == '\0')) {
      *(u8 *)((int)in_a1 + 0x54) = '\x01';
      if (((int)v < (int)puVar10) && (*(char *)(*piVar16 + (int)v) == '\0')) {
        puVar14 = (u32 *)((int)puVar14 + 2);
      }
      else {
        puVar1 = (u8 *)(in_a1 + 10);
        puVar1[0] = '\0';
        puVar1[1] = '\0';
        puVar1[2] = '\0';
        puVar1[3] = '\0';
        puVar14 = v;
      }
    }
  }
  else {
    bVar6 = *(byte *)(*piVar16 + (int)puVar14);
    uStack_90 = (uint)bVar6;
    v = (u32 *)(int)(char)bVar6;
    if ((int)v < 0) {
      v = &uStack_90;
      piVar16 = (int *)(*piVar16 + (int)puVar14);
      iVar4 = sqlite3Fts5GetVarint32((uchar *)piVar16,v);
      puVar14 = (u32 *)((int)puVar14 + iVar4);
      bVar6 = (byte)uStack_90;
    }
    else {
      puVar14 = (u32 *)((int)puVar14 + 1);
    }
    *(byte *)((int)in_a1 + 0x54) = bVar6 & 1;
    *(int *)(in_a1 + 10) = (int)uStack_90 >> 1;
  }
  iVar4 = *piVar17;
  *(u32 **)((int)in_a1 + 0x14) = puVar14;
  if (iStack_8c == iVar4) {
    return iVar4;
  }
  pcVar20 = *(code **)(pcVar20 + 0x12a2c0);
  (*pcVar20)();
  pcStack_d8 = pcVar20 + 0x131ca0;
  piVar16 = (int *)*piVar16;
  p = (int *)*v;
  puVar18 = *(undefined4 **)(pcVar20 + 0x12a1a4);
  puVar11 = (uint *)*puVar18;
  puVar10 = *(u32 **)(piVar16[3] + 0x30);
  puStack_cc = puVar11;
  piStack_c4 = in_a1;
  puStack_c0 = puVar14;
  piStack_bc = piVar17;
  if (puVar10 == (u32 *)&SUB_00000002) {
    if (p < (int *)v[1]) {
      puVar10 = &uStack_d0;
      iVar4 = sqlite3Fts5GetVarint32((uchar *)p,puVar10);
      *v = *v + iVar4;
      *v_00 = *v_00 + (uStack_d0 - 2);
      goto LAB_00066d4c;
    }
  }
  else if (p < (int *)v[1]) {
    if (*(uchar *)p != '\x01') {
      do {
        puVar10 = &uStack_d0;
        iVar4 = sqlite3Fts5GetVarint32((uchar *)p,&uStack_d0);
        p = (int *)(*v + iVar4);
        *v = (u32)p;
        if ((int *)v[1] <= p) goto LAB_00066d48;
      } while (*(uchar *)p != '\x01');
    }
    p = (int *)((int)p + 1);
    iVar4 = sqlite3Fts5GetVarint32((uchar *)p,v_00);
    *v = *v + iVar4 + 1;
    puVar10 = v_00;
    goto LAB_00066d4c;
  }
LAB_00066d48:
  *v_00 = 0xffffffff;
LAB_00066d4c:
  puVar5 = (uint *)*puVar18;
  if (puStack_cc == puVar5) {
    return (int)puVar5;
  }
  pcVar20 = *(code **)(pcStack_d8 + -0x7b28);
  pcVar22 = fts5NextRowid;
  (*pcVar20)();
  pcVar21 = pcVar20 + 0x131b28;
  piVar17 = *(int **)(pcVar20 + 0x12a02c);
  uVar15 = *puVar11;
  iStack_f4 = *piVar17;
  pcStack_ec = pcVar22;
  if ((int)uVar15 < (int)puVar10) {
    iVar4 = (*(code *)(*(int *)(pcVar20 + 0x129d48) + -0x80))
                      ((uchar *)((int)p + uVar15),&piStack_100);
    *puVar11 = iVar4 + uVar15;
    uVar15 = piVar16[1];
    uVar12 = uVar15 + iStack_fc;
    p = (int *)(*piVar16 + (int)piStack_100);
    piVar16[1] = uVar12;
    *piVar16 = (int)((uint)(uVar12 < uVar15) + (int)p);
    piVar16 = piStack_100;
  }
  else {
    *puVar11 = 0xffffffff;
    piVar16 = (int *)0x0;
  }
  if (iStack_f4 != *piVar17) {
    pcVar20 = *(code **)(pcVar20 + 0x12a000);
    (*pcVar20)();
    pcVar20 = pcVar20 + 0x131a70;
    uVar15 = *puVar11;
    uVar12 = puVar11[1];
    p_00 = (uchar *)(*p + *piVar16);
    if (((uVar15 ^ (uint)pcVar21) & 0x7fffffff) != 0) {
      *piVar16 = *piVar16 + 1;
      *p_00 = '\x01';
      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {
        iVar4 = sqlite3PutVarint((uchar *)(*p + *piVar16),CONCAT44(pcVar20,in_stack_fffffec4));
      }
      else {
        *(uchar *)(*p + *piVar16) = (uchar)pcVar21;
        iVar4 = 1;
      }
      uVar15 = (uint)pcVar21 & 0x7fffffff;
      uVar12 = 0;
      *piVar16 = *piVar16 + iVar4;
      *puVar11 = uVar15;
      puVar11[1] = 0;
      p_00 = (uchar *)(*p + *piVar16);
    }
    uVar12 = uStack_10c - uVar12;
    uVar13 = uVar12 + 2;
    if ((pcVar21 + (uint)(uVar13 < uVar12) + (-(uint)(uStack_10c < uVar12) - uVar15) == (code *)0x0)
       && (uVar13 < 0x80)) {
      *p_00 = (uchar)uVar13;
      *piVar16 = *piVar16 + 1;
      *puVar11 = (uint)pcVar21;
      puVar11[1] = uStack_10c;
      return 1;
    }
    iVar4 = sqlite3PutVarint(p_00,CONCAT44(pcVar20,in_stack_fffffec4));
    *piVar16 = *piVar16 + iVar4;
    *puVar11 = (uint)pcVar21;
    puVar11[1] = uStack_10c;
    return iVar4;
  }
  return *piVar17;
}



uint * FUN_0006687c(undefined4 *param_1,int *param_2)

{
  undefined *puVar1;
  byte bVar3;
  int iVar2;
  uint *puVar4;
  int iVar5;
  uint *puVar6;
  int *piVar7;
  undefined1 *puVar8;
  int *piVar9;
  int *piVar10;
  uint uVar11;
  uint uVar12;
  int *piVar13;
  uint uVar14;
  uint *puVar15;
  undefined4 *puVar16;
  int *piVar17;
  undefined *puVar18;
  code *pcVar19;
  undefined4 uVar20;
  code *pcVar21;
  uint uStack_10c;
  int *piStack_100;
  int iStack_fc;
  uint *puStack_f4;
  undefined4 uStack_ec;
  code *pcStack_d8;
  int iStack_d0;
  uint *puStack_cc;
  int *piStack_c4;
  uint *puStack_c0;
  int *piStack_bc;
  uint uStack_90;
  uint *puStack_8c;
  uint *puStack_88;
  uint *puStack_84;
  undefined4 *puStack_80;
  code *pcStack_7c;
  undefined *local_68;
  int local_5c;
  int *local_58;
  int local_54;
  uint *local_4c;
  undefined4 *local_48;
  uint *local_44;
  undefined *local_40;
  undefined4 local_3c;
  int local_20;
  int local_1c;
  uint *local_14;
  
  puVar1 = PTR___stack_chk_guard_00190e24;
  piVar10 = (int *)param_1[1];
  puVar15 = (uint *)*param_1;
  local_14 = *(uint **)PTR___stack_chk_guard_00190e24;
  if (piVar10 == (int *)0x0) {
    param_1[1] = 1;
    iVar2 = FUN_0006610c(*puVar15 + 1,param_1 + 4);
    puVar18 = PTR_LAB_00190b40;
    param_2 = param_1 + 6;
    iVar5 = param_1[1];
    param_1[1] = iVar2 + iVar5;
    iVar2 = (*(code *)(puVar18 + -0x80))(*puVar15 + iVar2 + iVar5);
    iVar5 = param_1[1];
    puVar4 = (uint *)param_1[2];
    param_1[1] = iVar2 + iVar5;
    param_1[3] = iVar2 + iVar5;
  }
  else if ((int)piVar10 < (int)puVar15[1]) {
    param_2 = (int *)*puVar15;
    piVar13 = piVar10;
    if (*(char *)((int)param_2 + (int)piVar10) == '\0') {
      do {
        piVar13 = (int *)((int)piVar13 + 1);
        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;
      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');
      iVar2 = (int)piVar13 + (1 - (int)piVar10);
      piVar10 = piVar13;
    }
    else {
      iVar2 = 1;
    }
    pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80);
    param_1[4] = param_1[4] + iVar2;
    iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20);
    iVar2 = iVar2 + (int)piVar10;
    piVar10 = (int *)param_1[7];
    param_1[1] = iVar2;
    puVar4 = (uint *)param_1[2];
    param_1[7] = (int *)((int)piVar10 + local_1c);
    param_2 = (int *)(param_1[6] + local_20);
    param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2;
  }
  else {
LAB_00066908:
    puVar4 = (uint *)0x1;
    param_1[2] = 1;
  }
  if (local_14 == *(uint **)puVar1) {
    return puVar4;
  }
  uVar20 = 0x66a18;
  puVar4 = local_14;
  puVar18 = PTR___stack_chk_fail_00190df8;
  (*(code *)PTR___stack_chk_fail_00190df8)();
  local_68 = puVar18 + 0x131f08;
  local_40 = puVar1;
  puVar16 = *(undefined4 **)(puVar18 + 0x12a40c);
  puVar6 = (uint *)*puVar16;
  uVar14 = puVar4[4] + puVar4[6] + puVar4[5];
  local_4c = puVar6;
  local_48 = param_1;
  local_44 = puVar15;
  local_3c = uVar20;
  if (uVar14 < *puVar4) {
    iVar2 = (*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))(uVar14,&local_58);
    puVar6 = (uint *)puVar4[3];
    puVar15 = (uint *)(uVar14 + iVar2);
    puVar4[3] = (uint)((int)puVar6 + local_54);
    puVar4[2] = (int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6) + puVar4[2];
    bVar3 = *(byte *)puVar15;
    if ((char)bVar3 < '\0') {
      param_2 = &local_5c;
      puVar6 = puVar15;
      uVar14 = FUN_0006610c();
      puVar4[6] = uVar14;
      puVar4[4] = (uint)puVar15;
      puVar4[5] = local_5c >> 1;
    }
    else {
      puVar4[4] = (uint)puVar15;
      puVar4[5] = (uint)(bVar3 >> 1);
      puVar4[6] = 1;
      param_2 = local_58;
    }
  }
  else {
    puVar4[4] = 0;
  }
  if (local_4c == (uint *)*puVar16) {
    return (uint *)*puVar16;
  }
  pcVar19 = *(code **)(local_68 + -0x7b28);
  pcVar21 = FUN_00066b38;
  (*pcVar19)();
  puStack_80 = puVar16;
  puStack_88 = puVar4;
  pcStack_7c = pcVar21;
  puStack_84 = puVar15;
  piVar17 = *(int **)(pcVar19 + 0x12a2ec);
  puVar15 = (uint *)param_2[5];
  piVar13 = (int *)param_2[3];
  puStack_8c = (uint *)*piVar17;
  if (puVar6[0xc] == 1) {
    piVar10 = (int *)piVar13[2];
    *(undefined1 *)(param_2 + 0x15) = 0;
    piVar9 = (int *)param_2[10];
    if ((int)piVar10 <= param_2[10]) {
      piVar9 = piVar10;
    }
    puVar4 = (uint *)(uint)((int)puVar15 < (int)piVar9);
    param_2[0x14] = 1;
    if ((puVar4 != (uint *)0x0) &&
       (puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0')) {
      *(undefined1 *)(param_2 + 0x15) = 1;
      if (((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')) {
        puVar15 = (uint *)((int)puVar15 + 2);
      }
      else {
        param_2[0x14] = 0;
        puVar15 = puVar4;
      }
    }
  }
  else {
    bVar3 = *(byte *)(*piVar13 + (int)puVar15);
    uStack_90 = (uint)bVar3;
    puVar4 = (uint *)(int)(char)bVar3;
    if ((int)puVar4 < 0) {
      puVar4 = &uStack_90;
      piVar13 = (int *)(*piVar13 + (int)puVar15);
      iVar2 = FUN_0006610c();
      puVar15 = (uint *)((int)puVar15 + iVar2);
      bVar3 = (byte)uStack_90;
    }
    else {
      puVar15 = (uint *)((int)puVar15 + 1);
    }
    *(byte *)(param_2 + 0x15) = bVar3 & 1;
    param_2[0x14] = (int)uStack_90 >> 1;
  }
  puVar6 = (uint *)*piVar17;
  param_2[5] = (int)puVar15;
  if (puStack_8c == puVar6) {
    return puVar6;
  }
  pcVar19 = *(code **)(pcVar19 + 0x12a2c0);
  (*pcVar19)();
  pcStack_d8 = pcVar19 + 0x131ca0;
  piVar13 = (int *)*piVar13;
  piVar7 = (int *)*puVar4;
  puVar16 = *(undefined4 **)(pcVar19 + 0x12a1a4);
  puVar6 = (uint *)*puVar16;
  piVar9 = *(int **)(piVar13[3] + 0x30);
  puStack_cc = puVar6;
  piStack_c4 = param_2;
  puStack_c0 = puVar15;
  piStack_bc = piVar17;
  if (piVar9 == (int *)0x2) {
    if (piVar7 < (int *)puVar4[1]) {
      piVar9 = &iStack_d0;
      iVar2 = FUN_0006610c();
      *puVar4 = *puVar4 + iVar2;
      *piVar10 = *piVar10 + iStack_d0 + -2;
      goto LAB_00066d4c;
    }
  }
  else if (piVar7 < (int *)puVar4[1]) {
    if (*(char *)piVar7 != '\x01') {
      do {
        piVar9 = &iStack_d0;
        iVar2 = FUN_0006610c();
        piVar7 = (int *)(*puVar4 + iVar2);
        *puVar4 = (uint)piVar7;
        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;
      } while (*(char *)piVar7 != '\x01');
    }
    piVar7 = (int *)((int)piVar7 + 1);
    iVar2 = FUN_0006610c();
    *puVar4 = *puVar4 + iVar2 + 1;
    piVar9 = piVar10;
    goto LAB_00066d4c;
  }
LAB_00066d48:
  *piVar10 = -1;
LAB_00066d4c:
  puVar15 = (uint *)*puVar16;
  if (puStack_cc == puVar15) {
    return puVar15;
  }
  pcVar19 = *(code **)(pcStack_d8 + -0x7b28);
  uVar20 = 0x66df8;
  (*pcVar19)();
  pcVar21 = pcVar19 + 0x131b28;
  piVar10 = *(int **)(pcVar19 + 0x12a02c);
  uVar14 = *puVar6;
  puStack_f4 = (uint *)*piVar10;
  uStack_ec = uVar20;
  if ((int)uVar14 < (int)piVar9) {
    iVar2 = (*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))
                      ((char *)((int)piVar7 + uVar14),&piStack_100);
    *puVar6 = iVar2 + uVar14;
    uVar14 = piVar13[1];
    uVar11 = uVar14 + iStack_fc;
    piVar7 = (int *)(*piVar13 + (int)piStack_100);
    piVar13[1] = uVar11;
    *piVar13 = (int)((uint)(uVar11 < uVar14) + (int)piVar7);
    piVar13 = piStack_100;
  }
  else {
    *puVar6 = 0xffffffff;
    piVar13 = (int *)0x0;
  }
  if (puStack_f4 != (uint *)*piVar10) {
    (**(code **)(pcVar19 + 0x12a000))();
    uVar14 = *puVar6;
    uVar11 = puVar6[1];
    puVar8 = (undefined1 *)(*piVar7 + *piVar13);
    if (((uVar14 ^ (uint)pcVar21) & 0x7fffffff) != 0) {
      *piVar13 = *piVar13 + 1;
      *puVar8 = 1;
      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {
        iVar2 = FUN_00053284();
      }
      else {
        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;
        iVar2 = 1;
      }
      uVar14 = (uint)pcVar21 & 0x7fffffff;
      uVar11 = 0;
      *piVar13 = *piVar13 + iVar2;
      *puVar6 = uVar14;
      puVar6[1] = 0;
      puVar8 = (undefined1 *)(*piVar7 + *piVar13);
    }
    uVar11 = uStack_10c - uVar11;
    uVar12 = uVar11 + 2;
    if ((pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)
       && (uVar12 < 0x80)) {
      *puVar8 = (char)uVar12;
      *piVar13 = *piVar13 + 1;
      *puVar6 = (uint)pcVar21;
      puVar6[1] = uStack_10c;
      return (uint *)0x1;
    }
    puVar15 = (uint *)FUN_00053284();
    *piVar13 = *piVar13 + (int)puVar15;
    *puVar6 = (uint)pcVar21;
    puVar6[1] = uStack_10c;
    return puVar15;
  }
  return (uint *)*piVar10;
}


lui gp,0x13
addiu gp,gp,0x20a4
addu gp,gp,t9
addiu sp,sp,-0x38
sw s2,0x30(sp)
sw s0,0x28(sp)
or s0,a0,zero
sw gp,0x10(sp)
sw ra,0x34(sp)
sw s1,0x2c(sp)
lw s2,-0x7afc(gp)
lw a2,0x4(a0)
lw s1,0x0(a0)
lw v0,0x0(s2)
sw v0,0x24(sp)
beq a2,zero,0x00066938
_li v0,0x1
lw v1,0x4(s1)
slt v0,a2,v1
beq v0,zero,0x00066908
_li v0,0x1
lw a1,0x0(s1)
addu v0,a1,a2
lbu v0,0x0(v0)
bne v0,zero,0x00066a00
_or a0,a2,zero
b 0x000668f8
_or t4,a2,zero
lbu v0,0x0(v0)
bne v0,zero,0x00066998
_or a0,t4,zero
addiu t4,t4,0x1
bne t4,v1,0x000668ec
_addu v0,a1,t4
li v0,0x1
li v1,0x1
sw v0,0x8(s0)
lw a0,0x24(sp)
or v0,v1,zero
lw v1,0x0(s2)
bne a0,v1,0x00066a0c
_lw ra,0x34(sp)
lw s2,0x30(sp)
lw s1,0x2c(sp)
lw s0,0x28(sp)
jr ra
_addiu sp,sp,0x38
lw t9,-0x7d7c(gp)
addiu a1,a0,0x10
sw v0,0x4(a0)
lw a0,0x0(s1)
addiu t9,t9,0x610c
bal 0x0006610c
_addiu a0,a0,0x1
addiu a1,s0,0x18
lw a0,0x4(s0)
lw gp,0x10(sp)
addu v0,v0,a0
lw t9,-0x7de0(gp)
sw v0,0x4(s0)
lw a0,0x0(s1)
addiu t9,t9,-0x80
jalr t9
_addu a0,a0,v0
lw a0,0x4(s0)
lw gp,0x10(sp)
lw v1,0x8(s0)
addu v0,v0,a0
sw v0,0x4(s0)
b 0x00066910
_sw v0,0xc(s0)
subu a2,t4,a2
addiu a2,a2,0x1
lw v0,0x10(s0)
addiu a1,sp,0x18
lw t9,-0x7de0(gp)
addu a2,v0,a2
addiu t9,t9,-0x80
sw a2,0x10(s0)
lw v0,0x0(s1)
jalr t9
_addu a0,v0,a0
addu v0,v0,t4
lw a2,0x1c(s0)
lw a0,0x1c(sp)
lw gp,0x10(sp)
lw a1,0x18(s0)
sw v0,0x4(s0)
addu a0,a2,a0
lw v0,0x18(sp)
lw v1,0x8(s0)
sw a0,0x1c(s0)
sltu a0,a0,a2
addu a1,a1,v0
addu a0,a0,a1
b 0x00066910
_sw a0,0x18(s0)
li a2,0x1
b 0x000669a0
_or t4,a0,zero
lw t9,-0x7b28(gp)
jalr t9
_nop
lui gp,0x13
addiu gp,gp,0x1f08
addu gp,gp,t9
addiu sp,sp,-0x40
sw s2,0x38(sp)
sw s0,0x30(sp)
or s0,a0,zero
sw gp,0x10(sp)
sw ra,0x3c(sp)
sw s1,0x34(sp)
lw v1,0x18(a0)
lw a0,0x14(a0)
lw s2,-0x7afc(gp)
lw t4,0x10(s0)
addu v1,v1,a0
lw v0,0x0(s0)
lw a0,0x0(s2)
addu t4,t4,v1
sltu v0,t4,v0
sw a0,0x2c(sp)
bne v0,zero,0x00066a98
_lw t9,-0x7de0(gp)
sw zero,0x10(s0)
lw v1,0x2c(sp)
lw v0,0x0(s2)
bne v1,v0,0x00066b2c
_lw ra,0x3c(sp)
lw s2,0x38(sp)
lw s1,0x34(sp)
lw s0,0x30(sp)
jr ra
_addiu sp,sp,0x40
addiu a1,sp,0x20
addiu t9,t9,-0x80
jalr t9
_or a0,t4,zero
lw a0,0xc(s0)
addu s1,t4,v0
lw v0,0x24(sp)
lw v1,0x8(s0)
lw a1,0x20(sp)
addu v0,a0,v0
lw gp,0x10(sp)
addu v1,v1,a1
sw v0,0xc(s0)
sltu v0,v0,a0
addu v0,v0,v1
sw v0,0x8(s0)
lbu v0,0x0(s1)
seb v1,v0
bltz v1,0x00066afc
_srl v0,v0,0x1
sw s1,0x10(s0)
sw v0,0x14(s0)
li v0,0x1
b 0x00066a74
_sw v0,0x18(s0)
lw t9,-0x7d7c(gp)
addiu a1,sp,0x1c
addiu t9,t9,0x610c
bal 0x0006610c
_or a0,s1,zero
lw gp,0x10(sp)
sw v0,0x18(s0)
lw v0,0x1c(sp)
sw s1,0x10(s0)
sra v0,v0,0x1
b 0x00066a74
_sw v0,0x14(s0)
lw t9,-0x7b28(gp)
jalr t9
_nop
(translation_unit "uint * FUN_0006687c(undefined4 *param_1,int *param_2)\n\n{\n  undefined *puVar1;\n  byte bVar3;\n  int iVar2;\n  uint *puVar4;\n  int iVar5;\n  uint *puVar6;\n  int *piVar7;\n  undefined1 *puVar8;\n  int *piVar9;\n  int *piVar10;\n  uint uVar11;\n  uint uVar12;\n  int *piVar13;\n  uint uVar14;\n  uint *puVar15;\n  undefined4 *puVar16;\n  int *piVar17;\n  undefined *puVar18;\n  code *pcVar19;\n  undefined4 uVar20;\n  code *pcVar21;\n  uint uStack_10c;\n  int *piStack_100;\n  int iStack_fc;\n  uint *puStack_f4;\n  undefined4 uStack_ec;\n  code *pcStack_d8;\n  int iStack_d0;\n  uint *puStack_cc;\n  int *piStack_c4;\n  uint *puStack_c0;\n  int *piStack_bc;\n  uint uStack_90;\n  uint *puStack_8c;\n  uint *puStack_88;\n  uint *puStack_84;\n  undefined4 *puStack_80;\n  code *pcStack_7c;\n  undefined *local_68;\n  int local_5c;\n  int *local_58;\n  int local_54;\n  uint *local_4c;\n  undefined4 *local_48;\n  uint *local_44;\n  undefined *local_40;\n  undefined4 local_3c;\n  int local_20;\n  int local_1c;\n  uint *local_14;\n  \n  puVar1 = PTR___stack_chk_guard_00190e24;\n  piVar10 = (int *)param_1[1];\n  puVar15 = (uint *)*param_1;\n  local_14 = *(uint **)PTR___stack_chk_guard_00190e24;\n  if (piVar10 == (int *)0x0) {\n    param_1[1] = 1;\n    iVar2 = FUN_0006610c(*puVar15 + 1,param_1 + 4);\n    puVar18 = PTR_LAB_00190b40;\n    param_2 = param_1 + 6;\n    iVar5 = param_1[1];\n    param_1[1] = iVar2 + iVar5;\n    iVar2 = (*(code *)(puVar18 + -0x80))(*puVar15 + iVar2 + iVar5);\n    iVar5 = param_1[1];\n    puVar4 = (uint *)param_1[2];\n    param_1[1] = iVar2 + iVar5;\n    param_1[3] = iVar2 + iVar5;\n  }\n  else if ((int)piVar10 < (int)puVar15[1]) {\n    param_2 = (int *)*puVar15;\n    piVar13 = piVar10;\n    if (*(char *)((int)param_2 + (int)piVar10) == '\0') {\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }\n    else {\n      iVar2 = 1;\n    }\n    pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80);\n    param_1[4] = param_1[4] + iVar2;\n    iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20);\n    iVar2 = iVar2 + (int)piVar10;\n    piVar10 = (int *)param_1[7];\n    param_1[1] = iVar2;\n    puVar4 = (uint *)param_1[2];\n    param_1[7] = (int *)((int)piVar10 + local_1c);\n    param_2 = (int *)(param_1[6] + local_20);\n    param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2;\n  }\n  else {\nLAB_00066908:\n    puVar4 = (uint *)0x1;\n    param_1[2] = 1;\n  }\n  if (local_14 == *(uint **)puVar1) {\n    return puVar4;\n  }\n  uVar20 = 0x66a18;\n  puVar4 = local_14;\n  puVar18 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  local_68 = puVar18 + 0x131f08;\n  local_40 = puVar1;\n  puVar16 = *(undefined4 **)(puVar18 + 0x12a40c);\n  puVar6 = (uint *)*puVar16;\n  uVar14 = puVar4[4] + puVar4[6] + puVar4[5];\n  local_4c = puVar6;\n  local_48 = param_1;\n  local_44 = puVar15;\n  local_3c = uVar20;\n  if (uVar14 < *puVar4) {\n    iVar2 = (*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))(uVar14,&local_58);\n    puVar6 = (uint *)puVar4[3];\n    puVar15 = (uint *)(uVar14 + iVar2);\n    puVar4[3] = (uint)((int)puVar6 + local_54);\n    puVar4[2] = (int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6) + puVar4[2];\n    bVar3 = *(byte *)puVar15;\n    if ((char)bVar3 < '\0') {\n      param_2 = &local_5c;\n      puVar6 = puVar15;\n      uVar14 = FUN_0006610c();\n      puVar4[6] = uVar14;\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = local_5c >> 1;\n    }\n    else {\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = (uint)(bVar3 >> 1);\n      puVar4[6] = 1;\n      param_2 = local_58;\n    }\n  }\n  else {\n    puVar4[4] = 0;\n  }\n  if (local_4c == (uint *)*puVar16) {\n    return (uint *)*puVar16;\n  }\n  pcVar19 = *(code **)(local_68 + -0x7b28);\n  pcVar21 = FUN_00066b38;\n  (*pcVar19)();\n  puStack_80 = puVar16;\n  puStack_88 = puVar4;\n  pcStack_7c = pcVar21;\n  puStack_84 = puVar15;\n  piVar17 = *(int **)(pcVar19 + 0x12a2ec);\n  puVar15 = (uint *)param_2[5];\n  piVar13 = (int *)param_2[3];\n  puStack_8c = (uint *)*piVar17;\n  if (puVar6[0xc] == 1) {\n    piVar10 = (int *)piVar13[2];\n    *(undefined1 *)(param_2 + 0x15) = 0;\n    piVar9 = (int *)param_2[10];\n    if ((int)piVar10 <= param_2[10]) {\n      piVar9 = piVar10;\n    }\n    puVar4 = (uint *)(uint)((int)puVar15 < (int)piVar9);\n    param_2[0x14] = 1;\n    if ((puVar4 != (uint *)0x0) &&\n       (puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0')) {\n      *(undefined1 *)(param_2 + 0x15) = 1;\n      if (((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')) {\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }\n      else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }\n    }\n  }\n  else {\n    bVar3 = *(byte *)(*piVar13 + (int)puVar15);\n    uStack_90 = (uint)bVar3;\n    puVar4 = (uint *)(int)(char)bVar3;\n    if ((int)puVar4 < 0) {\n      puVar4 = &uStack_90;\n      piVar13 = (int *)(*piVar13 + (int)puVar15);\n      iVar2 = FUN_0006610c();\n      puVar15 = (uint *)((int)puVar15 + iVar2);\n      bVar3 = (byte)uStack_90;\n    }\n    else {\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }\n    *(byte *)(param_2 + 0x15) = bVar3 & 1;\n    param_2[0x14] = (int)uStack_90 >> 1;\n  }\n  puVar6 = (uint *)*piVar17;\n  param_2[5] = (int)puVar15;\n  if (puStack_8c == puVar6) {\n    return puVar6;\n  }\n  pcVar19 = *(code **)(pcVar19 + 0x12a2c0);\n  (*pcVar19)();\n  pcStack_d8 = pcVar19 + 0x131ca0;\n  piVar13 = (int *)*piVar13;\n  piVar7 = (int *)*puVar4;\n  puVar16 = *(undefined4 **)(pcVar19 + 0x12a1a4);\n  puVar6 = (uint *)*puVar16;\n  piVar9 = *(int **)(piVar13[3] + 0x30);\n  puStack_cc = puVar6;\n  piStack_c4 = param_2;\n  puStack_c0 = puVar15;\n  piStack_bc = piVar17;\n  if (piVar9 == (int *)0x2) {\n    if (piVar7 < (int *)puVar4[1]) {\n      piVar9 = &iStack_d0;\n      iVar2 = FUN_0006610c();\n      *puVar4 = *puVar4 + iVar2;\n      *piVar10 = *piVar10 + iStack_d0 + -2;\n      goto LAB_00066d4c;\n    }\n  }\n  else if (piVar7 < (int *)puVar4[1]) {\n    if (*(char *)piVar7 != '\x01') {\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }\n    piVar7 = (int *)((int)piVar7 + 1);\n    iVar2 = FUN_0006610c();\n    *puVar4 = *puVar4 + iVar2 + 1;\n    piVar9 = piVar10;\n    goto LAB_00066d4c;\n  }\nLAB_00066d48:\n  *piVar10 = -1;\nLAB_00066d4c:\n  puVar15 = (uint *)*puVar16;\n  if (puStack_cc == puVar15) {\n    return puVar15;\n  }\n  pcVar19 = *(code **)(pcStack_d8 + -0x7b28);\n  uVar20 = 0x66df8;\n  (*pcVar19)();\n  pcVar21 = pcVar19 + 0x131b28;\n  piVar10 = *(int **)(pcVar19 + 0x12a02c);\n  uVar14 = *puVar6;\n  puStack_f4 = (uint *)*piVar10;\n  uStack_ec = uVar20;\n  if ((int)uVar14 < (int)piVar9) {\n    iVar2 = (*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))\n                      ((char *)((int)piVar7 + uVar14),&piStack_100);\n    *puVar6 = iVar2 + uVar14;\n    uVar14 = piVar13[1];\n    uVar11 = uVar14 + iStack_fc;\n    piVar7 = (int *)(*piVar13 + (int)piStack_100);\n    piVar13[1] = uVar11;\n    *piVar13 = (int)((uint)(uVar11 < uVar14) + (int)piVar7);\n    piVar13 = piStack_100;\n  }\n  else {\n    *puVar6 = 0xffffffff;\n    piVar13 = (int *)0x0;\n  }\n  if (puStack_f4 != (uint *)*piVar10) {\n    (**(code **)(pcVar19 + 0x12a000))();\n    uVar14 = *puVar6;\n    uVar11 = puVar6[1];\n    puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    if (((uVar14 ^ (uint)pcVar21) & 0x7fffffff) != 0) {\n      *piVar13 = *piVar13 + 1;\n      *puVar8 = 1;\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar2 = FUN_00053284();\n      }\n      else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }\n      uVar14 = (uint)pcVar21 & 0x7fffffff;\n      uVar11 = 0;\n      *piVar13 = *piVar13 + iVar2;\n      *puVar6 = uVar14;\n      puVar6[1] = 0;\n      puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    }\n    uVar11 = uStack_10c - uVar11;\n    uVar12 = uVar11 + 2;\n    if ((pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)\n       && (uVar12 < 0x80)) {\n      *puVar8 = (char)uVar12;\n      *piVar13 = *piVar13 + 1;\n      *puVar6 = (uint)pcVar21;\n      puVar6[1] = uStack_10c;\n      return (uint *)0x1;\n    }\n    puVar15 = (uint *)FUN_00053284();\n    *piVar13 = *piVar13 + (int)puVar15;\n    *puVar6 = (uint)pcVar21;\n    puVar6[1] = uStack_10c;\n    return puVar15;\n  }\n  return (uint *)*piVar10;\n}\n\n" (function_definition "uint * FUN_0006687c(undefined4 *param_1,int *param_2)\n\n{\n  undefined *puVar1;\n  byte bVar3;\n  int iVar2;\n  uint *puVar4;\n  int iVar5;\n  uint *puVar6;\n  int *piVar7;\n  undefined1 *puVar8;\n  int *piVar9;\n  int *piVar10;\n  uint uVar11;\n  uint uVar12;\n  int *piVar13;\n  uint uVar14;\n  uint *puVar15;\n  undefined4 *puVar16;\n  int *piVar17;\n  undefined *puVar18;\n  code *pcVar19;\n  undefined4 uVar20;\n  code *pcVar21;\n  uint uStack_10c;\n  int *piStack_100;\n  int iStack_fc;\n  uint *puStack_f4;\n  undefined4 uStack_ec;\n  code *pcStack_d8;\n  int iStack_d0;\n  uint *puStack_cc;\n  int *piStack_c4;\n  uint *puStack_c0;\n  int *piStack_bc;\n  uint uStack_90;\n  uint *puStack_8c;\n  uint *puStack_88;\n  uint *puStack_84;\n  undefined4 *puStack_80;\n  code *pcStack_7c;\n  undefined *local_68;\n  int local_5c;\n  int *local_58;\n  int local_54;\n  uint *local_4c;\n  undefined4 *local_48;\n  uint *local_44;\n  undefined *local_40;\n  undefined4 local_3c;\n  int local_20;\n  int local_1c;\n  uint *local_14;\n  \n  puVar1 = PTR___stack_chk_guard_00190e24;\n  piVar10 = (int *)param_1[1];\n  puVar15 = (uint *)*param_1;\n  local_14 = *(uint **)PTR___stack_chk_guard_00190e24;\n  if (piVar10 == (int *)0x0) {\n    param_1[1] = 1;\n    iVar2 = FUN_0006610c(*puVar15 + 1,param_1 + 4);\n    puVar18 = PTR_LAB_00190b40;\n    param_2 = param_1 + 6;\n    iVar5 = param_1[1];\n    param_1[1] = iVar2 + iVar5;\n    iVar2 = (*(code *)(puVar18 + -0x80))(*puVar15 + iVar2 + iVar5);\n    iVar5 = param_1[1];\n    puVar4 = (uint *)param_1[2];\n    param_1[1] = iVar2 + iVar5;\n    param_1[3] = iVar2 + iVar5;\n  }\n  else if ((int)piVar10 < (int)puVar15[1]) {\n    param_2 = (int *)*puVar15;\n    piVar13 = piVar10;\n    if (*(char *)((int)param_2 + (int)piVar10) == '\0') {\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }\n    else {\n      iVar2 = 1;\n    }\n    pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80);\n    param_1[4] = param_1[4] + iVar2;\n    iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20);\n    iVar2 = iVar2 + (int)piVar10;\n    piVar10 = (int *)param_1[7];\n    param_1[1] = iVar2;\n    puVar4 = (uint *)param_1[2];\n    param_1[7] = (int *)((int)piVar10 + local_1c);\n    param_2 = (int *)(param_1[6] + local_20);\n    param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2;\n  }\n  else {\nLAB_00066908:\n    puVar4 = (uint *)0x1;\n    param_1[2] = 1;\n  }\n  if (local_14 == *(uint **)puVar1) {\n    return puVar4;\n  }\n  uVar20 = 0x66a18;\n  puVar4 = local_14;\n  puVar18 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  local_68 = puVar18 + 0x131f08;\n  local_40 = puVar1;\n  puVar16 = *(undefined4 **)(puVar18 + 0x12a40c);\n  puVar6 = (uint *)*puVar16;\n  uVar14 = puVar4[4] + puVar4[6] + puVar4[5];\n  local_4c = puVar6;\n  local_48 = param_1;\n  local_44 = puVar15;\n  local_3c = uVar20;\n  if (uVar14 < *puVar4) {\n    iVar2 = (*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))(uVar14,&local_58);\n    puVar6 = (uint *)puVar4[3];\n    puVar15 = (uint *)(uVar14 + iVar2);\n    puVar4[3] = (uint)((int)puVar6 + local_54);\n    puVar4[2] = (int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6) + puVar4[2];\n    bVar3 = *(byte *)puVar15;\n    if ((char)bVar3 < '\0') {\n      param_2 = &local_5c;\n      puVar6 = puVar15;\n      uVar14 = FUN_0006610c();\n      puVar4[6] = uVar14;\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = local_5c >> 1;\n    }\n    else {\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = (uint)(bVar3 >> 1);\n      puVar4[6] = 1;\n      param_2 = local_58;\n    }\n  }\n  else {\n    puVar4[4] = 0;\n  }\n  if (local_4c == (uint *)*puVar16) {\n    return (uint *)*puVar16;\n  }\n  pcVar19 = *(code **)(local_68 + -0x7b28);\n  pcVar21 = FUN_00066b38;\n  (*pcVar19)();\n  puStack_80 = puVar16;\n  puStack_88 = puVar4;\n  pcStack_7c = pcVar21;\n  puStack_84 = puVar15;\n  piVar17 = *(int **)(pcVar19 + 0x12a2ec);\n  puVar15 = (uint *)param_2[5];\n  piVar13 = (int *)param_2[3];\n  puStack_8c = (uint *)*piVar17;\n  if (puVar6[0xc] == 1) {\n    piVar10 = (int *)piVar13[2];\n    *(undefined1 *)(param_2 + 0x15) = 0;\n    piVar9 = (int *)param_2[10];\n    if ((int)piVar10 <= param_2[10]) {\n      piVar9 = piVar10;\n    }\n    puVar4 = (uint *)(uint)((int)puVar15 < (int)piVar9);\n    param_2[0x14] = 1;\n    if ((puVar4 != (uint *)0x0) &&\n       (puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0')) {\n      *(undefined1 *)(param_2 + 0x15) = 1;\n      if (((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')) {\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }\n      else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }\n    }\n  }\n  else {\n    bVar3 = *(byte *)(*piVar13 + (int)puVar15);\n    uStack_90 = (uint)bVar3;\n    puVar4 = (uint *)(int)(char)bVar3;\n    if ((int)puVar4 < 0) {\n      puVar4 = &uStack_90;\n      piVar13 = (int *)(*piVar13 + (int)puVar15);\n      iVar2 = FUN_0006610c();\n      puVar15 = (uint *)((int)puVar15 + iVar2);\n      bVar3 = (byte)uStack_90;\n    }\n    else {\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }\n    *(byte *)(param_2 + 0x15) = bVar3 & 1;\n    param_2[0x14] = (int)uStack_90 >> 1;\n  }\n  puVar6 = (uint *)*piVar17;\n  param_2[5] = (int)puVar15;\n  if (puStack_8c == puVar6) {\n    return puVar6;\n  }\n  pcVar19 = *(code **)(pcVar19 + 0x12a2c0);\n  (*pcVar19)();\n  pcStack_d8 = pcVar19 + 0x131ca0;\n  piVar13 = (int *)*piVar13;\n  piVar7 = (int *)*puVar4;\n  puVar16 = *(undefined4 **)(pcVar19 + 0x12a1a4);\n  puVar6 = (uint *)*puVar16;\n  piVar9 = *(int **)(piVar13[3] + 0x30);\n  puStack_cc = puVar6;\n  piStack_c4 = param_2;\n  puStack_c0 = puVar15;\n  piStack_bc = piVar17;\n  if (piVar9 == (int *)0x2) {\n    if (piVar7 < (int *)puVar4[1]) {\n      piVar9 = &iStack_d0;\n      iVar2 = FUN_0006610c();\n      *puVar4 = *puVar4 + iVar2;\n      *piVar10 = *piVar10 + iStack_d0 + -2;\n      goto LAB_00066d4c;\n    }\n  }\n  else if (piVar7 < (int *)puVar4[1]) {\n    if (*(char *)piVar7 != '\x01') {\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }\n    piVar7 = (int *)((int)piVar7 + 1);\n    iVar2 = FUN_0006610c();\n    *puVar4 = *puVar4 + iVar2 + 1;\n    piVar9 = piVar10;\n    goto LAB_00066d4c;\n  }\nLAB_00066d48:\n  *piVar10 = -1;\nLAB_00066d4c:\n  puVar15 = (uint *)*puVar16;\n  if (puStack_cc == puVar15) {\n    return puVar15;\n  }\n  pcVar19 = *(code **)(pcStack_d8 + -0x7b28);\n  uVar20 = 0x66df8;\n  (*pcVar19)();\n  pcVar21 = pcVar19 + 0x131b28;\n  piVar10 = *(int **)(pcVar19 + 0x12a02c);\n  uVar14 = *puVar6;\n  puStack_f4 = (uint *)*piVar10;\n  uStack_ec = uVar20;\n  if ((int)uVar14 < (int)piVar9) {\n    iVar2 = (*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))\n                      ((char *)((int)piVar7 + uVar14),&piStack_100);\n    *puVar6 = iVar2 + uVar14;\n    uVar14 = piVar13[1];\n    uVar11 = uVar14 + iStack_fc;\n    piVar7 = (int *)(*piVar13 + (int)piStack_100);\n    piVar13[1] = uVar11;\n    *piVar13 = (int)((uint)(uVar11 < uVar14) + (int)piVar7);\n    piVar13 = piStack_100;\n  }\n  else {\n    *puVar6 = 0xffffffff;\n    piVar13 = (int *)0x0;\n  }\n  if (puStack_f4 != (uint *)*piVar10) {\n    (**(code **)(pcVar19 + 0x12a000))();\n    uVar14 = *puVar6;\n    uVar11 = puVar6[1];\n    puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    if (((uVar14 ^ (uint)pcVar21) & 0x7fffffff) != 0) {\n      *piVar13 = *piVar13 + 1;\n      *puVar8 = 1;\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar2 = FUN_00053284();\n      }\n      else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }\n      uVar14 = (uint)pcVar21 & 0x7fffffff;\n      uVar11 = 0;\n      *piVar13 = *piVar13 + iVar2;\n      *puVar6 = uVar14;\n      puVar6[1] = 0;\n      puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    }\n    uVar11 = uStack_10c - uVar11;\n    uVar12 = uVar11 + 2;\n    if ((pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)\n       && (uVar12 < 0x80)) {\n      *puVar8 = (char)uVar12;\n      *piVar13 = *piVar13 + 1;\n      *puVar6 = (uint)pcVar21;\n      puVar6[1] = uStack_10c;\n      return (uint *)0x1;\n    }\n    puVar15 = (uint *)FUN_00053284();\n    *piVar13 = *piVar13 + (int)puVar15;\n    *puVar6 = (uint)pcVar21;\n    puVar6[1] = uStack_10c;\n    return puVar15;\n  }\n  return (uint *)*piVar10;\n}" type_identifier (pointer_declarator "* FUN_0006687c(undefined4 *param_1,int *param_2)" * (function_declarator "FUN_0006687c(undefined4 *param_1,int *param_2)" identifier (parameter_list "(undefined4 *param_1,int *param_2)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  undefined *puVar1;\n  byte bVar3;\n  int iVar2;\n  uint *puVar4;\n  int iVar5;\n  uint *puVar6;\n  int *piVar7;\n  undefined1 *puVar8;\n  int *piVar9;\n  int *piVar10;\n  uint uVar11;\n  uint uVar12;\n  int *piVar13;\n  uint uVar14;\n  uint *puVar15;\n  undefined4 *puVar16;\n  int *piVar17;\n  undefined *puVar18;\n  code *pcVar19;\n  undefined4 uVar20;\n  code *pcVar21;\n  uint uStack_10c;\n  int *piStack_100;\n  int iStack_fc;\n  uint *puStack_f4;\n  undefined4 uStack_ec;\n  code *pcStack_d8;\n  int iStack_d0;\n  uint *puStack_cc;\n  int *piStack_c4;\n  uint *puStack_c0;\n  int *piStack_bc;\n  uint uStack_90;\n  uint *puStack_8c;\n  uint *puStack_88;\n  uint *puStack_84;\n  undefined4 *puStack_80;\n  code *pcStack_7c;\n  undefined *local_68;\n  int local_5c;\n  int *local_58;\n  int local_54;\n  uint *local_4c;\n  undefined4 *local_48;\n  uint *local_44;\n  undefined *local_40;\n  undefined4 local_3c;\n  int local_20;\n  int local_1c;\n  uint *local_14;\n  \n  puVar1 = PTR___stack_chk_guard_00190e24;\n  piVar10 = (int *)param_1[1];\n  puVar15 = (uint *)*param_1;\n  local_14 = *(uint **)PTR___stack_chk_guard_00190e24;\n  if (piVar10 == (int *)0x0) {\n    param_1[1] = 1;\n    iVar2 = FUN_0006610c(*puVar15 + 1,param_1 + 4);\n    puVar18 = PTR_LAB_00190b40;\n    param_2 = param_1 + 6;\n    iVar5 = param_1[1];\n    param_1[1] = iVar2 + iVar5;\n    iVar2 = (*(code *)(puVar18 + -0x80))(*puVar15 + iVar2 + iVar5);\n    iVar5 = param_1[1];\n    puVar4 = (uint *)param_1[2];\n    param_1[1] = iVar2 + iVar5;\n    param_1[3] = iVar2 + iVar5;\n  }\n  else if ((int)piVar10 < (int)puVar15[1]) {\n    param_2 = (int *)*puVar15;\n    piVar13 = piVar10;\n    if (*(char *)((int)param_2 + (int)piVar10) == '\0') {\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }\n    else {\n      iVar2 = 1;\n    }\n    pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80);\n    param_1[4] = param_1[4] + iVar2;\n    iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20);\n    iVar2 = iVar2 + (int)piVar10;\n    piVar10 = (int *)param_1[7];\n    param_1[1] = iVar2;\n    puVar4 = (uint *)param_1[2];\n    param_1[7] = (int *)((int)piVar10 + local_1c);\n    param_2 = (int *)(param_1[6] + local_20);\n    param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2;\n  }\n  else {\nLAB_00066908:\n    puVar4 = (uint *)0x1;\n    param_1[2] = 1;\n  }\n  if (local_14 == *(uint **)puVar1) {\n    return puVar4;\n  }\n  uVar20 = 0x66a18;\n  puVar4 = local_14;\n  puVar18 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  local_68 = puVar18 + 0x131f08;\n  local_40 = puVar1;\n  puVar16 = *(undefined4 **)(puVar18 + 0x12a40c);\n  puVar6 = (uint *)*puVar16;\n  uVar14 = puVar4[4] + puVar4[6] + puVar4[5];\n  local_4c = puVar6;\n  local_48 = param_1;\n  local_44 = puVar15;\n  local_3c = uVar20;\n  if (uVar14 < *puVar4) {\n    iVar2 = (*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))(uVar14,&local_58);\n    puVar6 = (uint *)puVar4[3];\n    puVar15 = (uint *)(uVar14 + iVar2);\n    puVar4[3] = (uint)((int)puVar6 + local_54);\n    puVar4[2] = (int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6) + puVar4[2];\n    bVar3 = *(byte *)puVar15;\n    if ((char)bVar3 < '\0') {\n      param_2 = &local_5c;\n      puVar6 = puVar15;\n      uVar14 = FUN_0006610c();\n      puVar4[6] = uVar14;\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = local_5c >> 1;\n    }\n    else {\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = (uint)(bVar3 >> 1);\n      puVar4[6] = 1;\n      param_2 = local_58;\n    }\n  }\n  else {\n    puVar4[4] = 0;\n  }\n  if (local_4c == (uint *)*puVar16) {\n    return (uint *)*puVar16;\n  }\n  pcVar19 = *(code **)(local_68 + -0x7b28);\n  pcVar21 = FUN_00066b38;\n  (*pcVar19)();\n  puStack_80 = puVar16;\n  puStack_88 = puVar4;\n  pcStack_7c = pcVar21;\n  puStack_84 = puVar15;\n  piVar17 = *(int **)(pcVar19 + 0x12a2ec);\n  puVar15 = (uint *)param_2[5];\n  piVar13 = (int *)param_2[3];\n  puStack_8c = (uint *)*piVar17;\n  if (puVar6[0xc] == 1) {\n    piVar10 = (int *)piVar13[2];\n    *(undefined1 *)(param_2 + 0x15) = 0;\n    piVar9 = (int *)param_2[10];\n    if ((int)piVar10 <= param_2[10]) {\n      piVar9 = piVar10;\n    }\n    puVar4 = (uint *)(uint)((int)puVar15 < (int)piVar9);\n    param_2[0x14] = 1;\n    if ((puVar4 != (uint *)0x0) &&\n       (puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0')) {\n      *(undefined1 *)(param_2 + 0x15) = 1;\n      if (((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')) {\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }\n      else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }\n    }\n  }\n  else {\n    bVar3 = *(byte *)(*piVar13 + (int)puVar15);\n    uStack_90 = (uint)bVar3;\n    puVar4 = (uint *)(int)(char)bVar3;\n    if ((int)puVar4 < 0) {\n      puVar4 = &uStack_90;\n      piVar13 = (int *)(*piVar13 + (int)puVar15);\n      iVar2 = FUN_0006610c();\n      puVar15 = (uint *)((int)puVar15 + iVar2);\n      bVar3 = (byte)uStack_90;\n    }\n    else {\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }\n    *(byte *)(param_2 + 0x15) = bVar3 & 1;\n    param_2[0x14] = (int)uStack_90 >> 1;\n  }\n  puVar6 = (uint *)*piVar17;\n  param_2[5] = (int)puVar15;\n  if (puStack_8c == puVar6) {\n    return puVar6;\n  }\n  pcVar19 = *(code **)(pcVar19 + 0x12a2c0);\n  (*pcVar19)();\n  pcStack_d8 = pcVar19 + 0x131ca0;\n  piVar13 = (int *)*piVar13;\n  piVar7 = (int *)*puVar4;\n  puVar16 = *(undefined4 **)(pcVar19 + 0x12a1a4);\n  puVar6 = (uint *)*puVar16;\n  piVar9 = *(int **)(piVar13[3] + 0x30);\n  puStack_cc = puVar6;\n  piStack_c4 = param_2;\n  puStack_c0 = puVar15;\n  piStack_bc = piVar17;\n  if (piVar9 == (int *)0x2) {\n    if (piVar7 < (int *)puVar4[1]) {\n      piVar9 = &iStack_d0;\n      iVar2 = FUN_0006610c();\n      *puVar4 = *puVar4 + iVar2;\n      *piVar10 = *piVar10 + iStack_d0 + -2;\n      goto LAB_00066d4c;\n    }\n  }\n  else if (piVar7 < (int *)puVar4[1]) {\n    if (*(char *)piVar7 != '\x01') {\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }\n    piVar7 = (int *)((int)piVar7 + 1);\n    iVar2 = FUN_0006610c();\n    *puVar4 = *puVar4 + iVar2 + 1;\n    piVar9 = piVar10;\n    goto LAB_00066d4c;\n  }\nLAB_00066d48:\n  *piVar10 = -1;\nLAB_00066d4c:\n  puVar15 = (uint *)*puVar16;\n  if (puStack_cc == puVar15) {\n    return puVar15;\n  }\n  pcVar19 = *(code **)(pcStack_d8 + -0x7b28);\n  uVar20 = 0x66df8;\n  (*pcVar19)();\n  pcVar21 = pcVar19 + 0x131b28;\n  piVar10 = *(int **)(pcVar19 + 0x12a02c);\n  uVar14 = *puVar6;\n  puStack_f4 = (uint *)*piVar10;\n  uStack_ec = uVar20;\n  if ((int)uVar14 < (int)piVar9) {\n    iVar2 = (*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))\n                      ((char *)((int)piVar7 + uVar14),&piStack_100);\n    *puVar6 = iVar2 + uVar14;\n    uVar14 = piVar13[1];\n    uVar11 = uVar14 + iStack_fc;\n    piVar7 = (int *)(*piVar13 + (int)piStack_100);\n    piVar13[1] = uVar11;\n    *piVar13 = (int)((uint)(uVar11 < uVar14) + (int)piVar7);\n    piVar13 = piStack_100;\n  }\n  else {\n    *puVar6 = 0xffffffff;\n    piVar13 = (int *)0x0;\n  }\n  if (puStack_f4 != (uint *)*piVar10) {\n    (**(code **)(pcVar19 + 0x12a000))();\n    uVar14 = *puVar6;\n    uVar11 = puVar6[1];\n    puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    if (((uVar14 ^ (uint)pcVar21) & 0x7fffffff) != 0) {\n      *piVar13 = *piVar13 + 1;\n      *puVar8 = 1;\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar2 = FUN_00053284();\n      }\n      else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }\n      uVar14 = (uint)pcVar21 & 0x7fffffff;\n      uVar11 = 0;\n      *piVar13 = *piVar13 + iVar2;\n      *puVar6 = uVar14;\n      puVar6[1] = 0;\n      puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    }\n    uVar11 = uStack_10c - uVar11;\n    uVar12 = uVar11 + 2;\n    if ((pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)\n       && (uVar12 < 0x80)) {\n      *puVar8 = (char)uVar12;\n      *piVar13 = *piVar13 + 1;\n      *puVar6 = (uint)pcVar21;\n      puVar6[1] = uStack_10c;\n      return (uint *)0x1;\n    }\n    puVar15 = (uint *)FUN_00053284();\n    *piVar13 = *piVar13 + (int)puVar15;\n    *puVar6 = (uint)pcVar21;\n    puVar6[1] = uStack_10c;\n    return puVar15;\n  }\n  return (uint *)*piVar10;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "uint *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined4 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "undefined *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "code *pcVar19;" type_identifier (pointer_declarator "*pcVar19" * identifier) ;) (declaration "undefined4 uVar20;" type_identifier identifier ;) (declaration "code *pcVar21;" type_identifier (pointer_declarator "*pcVar21" * identifier) ;) (declaration "uint uStack_10c;" type_identifier identifier ;) (declaration "int *piStack_100;" primitive_type (pointer_declarator "*piStack_100" * identifier) ;) (declaration "int iStack_fc;" primitive_type identifier ;) (declaration "uint *puStack_f4;" type_identifier (pointer_declarator "*puStack_f4" * identifier) ;) (declaration "undefined4 uStack_ec;" type_identifier identifier ;) (declaration "code *pcStack_d8;" type_identifier (pointer_declarator "*pcStack_d8" * identifier) ;) (declaration "int iStack_d0;" primitive_type identifier ;) (declaration "uint *puStack_cc;" type_identifier (pointer_declarator "*puStack_cc" * identifier) ;) (declaration "int *piStack_c4;" primitive_type (pointer_declarator "*piStack_c4" * identifier) ;) (declaration "uint *puStack_c0;" type_identifier (pointer_declarator "*puStack_c0" * identifier) ;) (declaration "int *piStack_bc;" primitive_type (pointer_declarator "*piStack_bc" * identifier) ;) (declaration "uint uStack_90;" type_identifier identifier ;) (declaration "uint *puStack_8c;" type_identifier (pointer_declarator "*puStack_8c" * identifier) ;) (declaration "uint *puStack_88;" type_identifier (pointer_declarator "*puStack_88" * identifier) ;) (declaration "uint *puStack_84;" type_identifier (pointer_declarator "*puStack_84" * identifier) ;) (declaration "undefined4 *puStack_80;" type_identifier (pointer_declarator "*puStack_80" * identifier) ;) (declaration "code *pcStack_7c;" type_identifier (pointer_declarator "*pcStack_7c" * identifier) ;) (declaration "undefined *local_68;" type_identifier (pointer_declarator "*local_68" * identifier) ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "int *local_58;" primitive_type (pointer_declarator "*local_58" * identifier) ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "uint *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "undefined4 *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "uint *local_44;" type_identifier (pointer_declarator "*local_44" * identifier) ;) (declaration "undefined *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "int local_1c;" primitive_type identifier ;) (declaration "uint *local_14;" type_identifier (pointer_declarator "*local_14" * identifier) ;) (expression_statement "puVar1 = PTR___stack_chk_guard_00190e24;" (assignment_expression "puVar1 = PTR___stack_chk_guard_00190e24" identifier = identifier) ;) (expression_statement "piVar10 = (int *)param_1[1];" (assignment_expression "piVar10 = (int *)param_1[1]" identifier = (cast_expression "(int *)param_1[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "puVar15 = (uint *)*param_1;" (assignment_expression "puVar15 = (uint *)*param_1" identifier = (cast_expression "(uint *)*param_1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "local_14 = *(uint **)PTR___stack_chk_guard_00190e24;" (assignment_expression "local_14 = *(uint **)PTR___stack_chk_guard_00190e24" identifier = (pointer_expression "*(uint **)PTR___stack_chk_guard_00190e24" * (cast_expression "(uint **)PTR___stack_chk_guard_00190e24" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (piVar10 == (int *)0x0) {\n    param_1[1] = 1;\n    iVar2 = FUN_0006610c(*puVar15 + 1,param_1 + 4);\n    puVar18 = PTR_LAB_00190b40;\n    param_2 = param_1 + 6;\n    iVar5 = param_1[1];\n    param_1[1] = iVar2 + iVar5;\n    iVar2 = (*(code *)(puVar18 + -0x80))(*puVar15 + iVar2 + iVar5);\n    iVar5 = param_1[1];\n    puVar4 = (uint *)param_1[2];\n    param_1[1] = iVar2 + iVar5;\n    param_1[3] = iVar2 + iVar5;\n  }\n  else if ((int)piVar10 < (int)puVar15[1]) {\n    param_2 = (int *)*puVar15;\n    piVar13 = piVar10;\n    if (*(char *)((int)param_2 + (int)piVar10) == '\0') {\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }\n    else {\n      iVar2 = 1;\n    }\n    pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80);\n    param_1[4] = param_1[4] + iVar2;\n    iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20);\n    iVar2 = iVar2 + (int)piVar10;\n    piVar10 = (int *)param_1[7];\n    param_1[1] = iVar2;\n    puVar4 = (uint *)param_1[2];\n    param_1[7] = (int *)((int)piVar10 + local_1c);\n    param_2 = (int *)(param_1[6] + local_20);\n    param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2;\n  }\n  else {\nLAB_00066908:\n    puVar4 = (uint *)0x1;\n    param_1[2] = 1;\n  }" if (parenthesized_expression "(piVar10 == (int *)0x0)" ( (binary_expression "piVar10 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    param_1[1] = 1;\n    iVar2 = FUN_0006610c(*puVar15 + 1,param_1 + 4);\n    puVar18 = PTR_LAB_00190b40;\n    param_2 = param_1 + 6;\n    iVar5 = param_1[1];\n    param_1[1] = iVar2 + iVar5;\n    iVar2 = (*(code *)(puVar18 + -0x80))(*puVar15 + iVar2 + iVar5);\n    iVar5 = param_1[1];\n    puVar4 = (uint *)param_1[2];\n    param_1[1] = iVar2 + iVar5;\n    param_1[3] = iVar2 + iVar5;\n  }" { (expression_statement "param_1[1] = 1;" (assignment_expression "param_1[1] = 1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar2 = FUN_0006610c(*puVar15 + 1,param_1 + 4);" (assignment_expression "iVar2 = FUN_0006610c(*puVar15 + 1,param_1 + 4)" identifier = (call_expression "FUN_0006610c(*puVar15 + 1,param_1 + 4)" identifier (argument_list "(*puVar15 + 1,param_1 + 4)" ( (binary_expression "*puVar15 + 1" (pointer_expression "*puVar15" * identifier) + number_literal) , (binary_expression "param_1 + 4" identifier + number_literal) )))) ;) (expression_statement "puVar18 = PTR_LAB_00190b40;" (assignment_expression "puVar18 = PTR_LAB_00190b40" identifier = identifier) ;) (expression_statement "param_2 = param_1 + 6;" (assignment_expression "param_2 = param_1 + 6" identifier = (binary_expression "param_1 + 6" identifier + number_literal)) ;) (expression_statement "iVar5 = param_1[1];" (assignment_expression "iVar5 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "param_1[1] = iVar2 + iVar5;" (assignment_expression "param_1[1] = iVar2 + iVar5" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "iVar2 + iVar5" identifier + identifier)) ;) (expression_statement "iVar2 = (*(code *)(puVar18 + -0x80))(*puVar15 + iVar2 + iVar5);" (assignment_expression "iVar2 = (*(code *)(puVar18 + -0x80))(*puVar15 + iVar2 + iVar5)" identifier = (call_expression "(*(code *)(puVar18 + -0x80))(*puVar15 + iVar2 + iVar5)" (parenthesized_expression "(*(code *)(puVar18 + -0x80))" ( (pointer_expression "*(code *)(puVar18 + -0x80)" * (cast_expression "(code *)(puVar18 + -0x80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + -0x80)" ( (binary_expression "puVar18 + -0x80" identifier + number_literal) )))) )) (argument_list "(*puVar15 + iVar2 + iVar5)" ( (binary_expression "*puVar15 + iVar2 + iVar5" (binary_expression "*puVar15 + iVar2" (pointer_expression "*puVar15" * identifier) + identifier) + identifier) )))) ;) (expression_statement "iVar5 = param_1[1];" (assignment_expression "iVar5 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "puVar4 = (uint *)param_1[2];" (assignment_expression "puVar4 = (uint *)param_1[2]" identifier = (cast_expression "(uint *)param_1[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "param_1[1] = iVar2 + iVar5;" (assignment_expression "param_1[1] = iVar2 + iVar5" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "iVar2 + iVar5" identifier + identifier)) ;) (expression_statement "param_1[3] = iVar2 + iVar5;" (assignment_expression "param_1[3] = iVar2 + iVar5" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (binary_expression "iVar2 + iVar5" identifier + identifier)) ;) }) (else_clause "else if ((int)piVar10 < (int)puVar15[1]) {\n    param_2 = (int *)*puVar15;\n    piVar13 = piVar10;\n    if (*(char *)((int)param_2 + (int)piVar10) == '\0') {\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }\n    else {\n      iVar2 = 1;\n    }\n    pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80);\n    param_1[4] = param_1[4] + iVar2;\n    iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20);\n    iVar2 = iVar2 + (int)piVar10;\n    piVar10 = (int *)param_1[7];\n    param_1[1] = iVar2;\n    puVar4 = (uint *)param_1[2];\n    param_1[7] = (int *)((int)piVar10 + local_1c);\n    param_2 = (int *)(param_1[6] + local_20);\n    param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2;\n  }\n  else {\nLAB_00066908:\n    puVar4 = (uint *)0x1;\n    param_1[2] = 1;\n  }" else (if_statement "if ((int)piVar10 < (int)puVar15[1]) {\n    param_2 = (int *)*puVar15;\n    piVar13 = piVar10;\n    if (*(char *)((int)param_2 + (int)piVar10) == '\0') {\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }\n    else {\n      iVar2 = 1;\n    }\n    pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80);\n    param_1[4] = param_1[4] + iVar2;\n    iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20);\n    iVar2 = iVar2 + (int)piVar10;\n    piVar10 = (int *)param_1[7];\n    param_1[1] = iVar2;\n    puVar4 = (uint *)param_1[2];\n    param_1[7] = (int *)((int)piVar10 + local_1c);\n    param_2 = (int *)(param_1[6] + local_20);\n    param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2;\n  }\n  else {\nLAB_00066908:\n    puVar4 = (uint *)0x1;\n    param_1[2] = 1;\n  }" if (parenthesized_expression "((int)piVar10 < (int)puVar15[1])" ( (binary_expression "(int)piVar10 < (int)puVar15[1]" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar15[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar15[1]" identifier [ number_literal ]))) )) (compound_statement "{\n    param_2 = (int *)*puVar15;\n    piVar13 = piVar10;\n    if (*(char *)((int)param_2 + (int)piVar10) == '\0') {\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }\n    else {\n      iVar2 = 1;\n    }\n    pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80);\n    param_1[4] = param_1[4] + iVar2;\n    iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20);\n    iVar2 = iVar2 + (int)piVar10;\n    piVar10 = (int *)param_1[7];\n    param_1[1] = iVar2;\n    puVar4 = (uint *)param_1[2];\n    param_1[7] = (int *)((int)piVar10 + local_1c);\n    param_2 = (int *)(param_1[6] + local_20);\n    param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2;\n  }" { (expression_statement "param_2 = (int *)*puVar15;" (assignment_expression "param_2 = (int *)*puVar15" identifier = (cast_expression "(int *)*puVar15" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar15" * identifier))) ;) (expression_statement "piVar13 = piVar10;" (assignment_expression "piVar13 = piVar10" identifier = identifier) ;) (if_statement "if (*(char *)((int)param_2 + (int)piVar10) == '\0') {\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }\n    else {\n      iVar2 = 1;\n    }" if (parenthesized_expression "(*(char *)((int)param_2 + (int)piVar10) == '\0')" ( (binary_expression "*(char *)((int)param_2 + (int)piVar10) == '\0'" (pointer_expression "*(char *)((int)param_2 + (int)piVar10)" * (cast_expression "(char *)((int)param_2 + (int)piVar10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + (int)piVar10)" ( (binary_expression "(int)param_2 + (int)piVar10" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }" { (do_statement "do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');" do (compound_statement "{\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      }" { (expression_statement "piVar13 = (int *)((int)piVar13 + 1);" (assignment_expression "piVar13 = (int *)((int)piVar13 + 1)" identifier = (cast_expression "(int *)((int)piVar13 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar13 + 1)" ( (binary_expression "(int)piVar13 + 1" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;" if (parenthesized_expression "(piVar13 == (int *)puVar15[1])" ( (binary_expression "piVar13 == (int *)puVar15[1]" identifier == (cast_expression "(int *)puVar15[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar15[1]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_00066908;" goto statement_identifier ;)) }) while (parenthesized_expression "(*(char *)((int)param_2 + (int)piVar13) == '\0')" ( (binary_expression "*(char *)((int)param_2 + (int)piVar13) == '\0'" (pointer_expression "*(char *)((int)param_2 + (int)piVar13)" * (cast_expression "(char *)((int)param_2 + (int)piVar13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + (int)piVar13)" ( (binary_expression "(int)param_2 + (int)piVar13" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )))) == (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "iVar2 = (int)piVar13 + (1 - (int)piVar10);" (assignment_expression "iVar2 = (int)piVar13 + (1 - (int)piVar10)" identifier = (binary_expression "(int)piVar13 + (1 - (int)piVar10)" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(1 - (int)piVar10)" ( (binary_expression "1 - (int)piVar10" number_literal - (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "piVar10 = piVar13;" (assignment_expression "piVar10 = piVar13" identifier = identifier) ;) }) (else_clause "else {\n      iVar2 = 1;\n    }" else (compound_statement "{\n      iVar2 = 1;\n    }" { (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) }))) (expression_statement "pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80);" (assignment_expression "pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80)" identifier = (cast_expression "(code *)(PTR_LAB_00190b40 + -0x80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190b40 + -0x80)" ( (binary_expression "PTR_LAB_00190b40 + -0x80" identifier + number_literal) )))) ;) (expression_statement "param_1[4] = param_1[4] + iVar2;" (assignment_expression "param_1[4] = param_1[4] + iVar2" (subscript_expression "param_1[4]" identifier [ number_literal ]) = (binary_expression "param_1[4] + iVar2" (subscript_expression "param_1[4]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20);" (assignment_expression "iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20)" identifier = (call_expression "(*pcVar19)(*puVar15 + (int)piVar10,&local_20)" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "(*puVar15 + (int)piVar10,&local_20)" ( (binary_expression "*puVar15 + (int)piVar10" (pointer_expression "*puVar15" * identifier) + (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier)) , (pointer_expression "&local_20" & identifier) )))) ;) (expression_statement "iVar2 = iVar2 + (int)piVar10;" (assignment_expression "iVar2 = iVar2 + (int)piVar10" identifier = (binary_expression "iVar2 + (int)piVar10" identifier + (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar10 = (int *)param_1[7];" (assignment_expression "piVar10 = (int *)param_1[7]" identifier = (cast_expression "(int *)param_1[7]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[7]" identifier [ number_literal ]))) ;) (expression_statement "param_1[1] = iVar2;" (assignment_expression "param_1[1] = iVar2" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4 = (uint *)param_1[2];" (assignment_expression "puVar4 = (uint *)param_1[2]" identifier = (cast_expression "(uint *)param_1[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "param_1[7] = (int *)((int)piVar10 + local_1c);" (assignment_expression "param_1[7] = (int *)((int)piVar10 + local_1c)" (subscript_expression "param_1[7]" identifier [ number_literal ]) = (cast_expression "(int *)((int)piVar10 + local_1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar10 + local_1c)" ( (binary_expression "(int)piVar10 + local_1c" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "param_2 = (int *)(param_1[6] + local_20);" (assignment_expression "param_2 = (int *)(param_1[6] + local_20)" identifier = (cast_expression "(int *)(param_1[6] + local_20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[6] + local_20)" ( (binary_expression "param_1[6] + local_20" (subscript_expression "param_1[6]" identifier [ number_literal ]) + identifier) )))) ;) (expression_statement "param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2;" (assignment_expression "param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (binary_expression "(uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2" (call_expression "(uint)((int *)((int)piVar10 + local_1c) < piVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int *)((int)piVar10 + local_1c) < piVar10)" ( (binary_expression "(int *)((int)piVar10 + local_1c) < piVar10" (cast_expression "(int *)((int)piVar10 + local_1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar10 + local_1c)" ( (binary_expression "(int)piVar10 + local_1c" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) < identifier) ))) + (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) (else_clause "else {\nLAB_00066908:\n    puVar4 = (uint *)0x1;\n    param_1[2] = 1;\n  }" else (compound_statement "{\nLAB_00066908:\n    puVar4 = (uint *)0x1;\n    param_1[2] = 1;\n  }" { (labeled_statement "LAB_00066908:\n    puVar4 = (uint *)0x1;" statement_identifier : (expression_statement "puVar4 = (uint *)0x1;" (assignment_expression "puVar4 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "param_1[2] = 1;" (assignment_expression "param_1[2] = 1" (subscript_expression "param_1[2]" identifier [ number_literal ]) = number_literal) ;) }))))) (if_statement "if (local_14 == *(uint **)puVar1) {\n    return puVar4;\n  }" if (parenthesized_expression "(local_14 == *(uint **)puVar1)" ( (binary_expression "local_14 == *(uint **)puVar1" identifier == (pointer_expression "*(uint **)puVar1" * (cast_expression "(uint **)puVar1" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return puVar4;\n  }" { (return_statement "return puVar4;" return identifier ;) })) (expression_statement "uVar20 = 0x66a18;" (assignment_expression "uVar20 = 0x66a18" identifier = number_literal) ;) (expression_statement "puVar4 = local_14;" (assignment_expression "puVar4 = local_14" identifier = identifier) ;) (expression_statement "puVar18 = PTR___stack_chk_fail_00190df8;" (assignment_expression "puVar18 = PTR___stack_chk_fail_00190df8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00190df8)();" (call_expression "(*(code *)PTR___stack_chk_fail_00190df8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00190df8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00190df8" * (cast_expression "(code *)PTR___stack_chk_fail_00190df8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "local_68 = puVar18 + 0x131f08;" (assignment_expression "local_68 = puVar18 + 0x131f08" identifier = (binary_expression "puVar18 + 0x131f08" identifier + number_literal)) ;) (expression_statement "local_40 = puVar1;" (assignment_expression "local_40 = puVar1" identifier = identifier) ;) (expression_statement "puVar16 = *(undefined4 **)(puVar18 + 0x12a40c);" (assignment_expression "puVar16 = *(undefined4 **)(puVar18 + 0x12a40c)" identifier = (pointer_expression "*(undefined4 **)(puVar18 + 0x12a40c)" * (cast_expression "(undefined4 **)(puVar18 + 0x12a40c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x12a40c)" ( (binary_expression "puVar18 + 0x12a40c" identifier + number_literal) ))))) ;) (expression_statement "puVar6 = (uint *)*puVar16;" (assignment_expression "puVar6 = (uint *)*puVar16" identifier = (cast_expression "(uint *)*puVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier))) ;) (expression_statement "uVar14 = puVar4[4] + puVar4[6] + puVar4[5];" (assignment_expression "uVar14 = puVar4[4] + puVar4[6] + puVar4[5]" identifier = (binary_expression "puVar4[4] + puVar4[6] + puVar4[5]" (binary_expression "puVar4[4] + puVar4[6]" (subscript_expression "puVar4[4]" identifier [ number_literal ]) + (subscript_expression "puVar4[6]" identifier [ number_literal ])) + (subscript_expression "puVar4[5]" identifier [ number_literal ]))) ;) (expression_statement "local_4c = puVar6;" (assignment_expression "local_4c = puVar6" identifier = identifier) ;) (expression_statement "local_48 = param_1;" (assignment_expression "local_48 = param_1" identifier = identifier) ;) (expression_statement "local_44 = puVar15;" (assignment_expression "local_44 = puVar15" identifier = identifier) ;) (expression_statement "local_3c = uVar20;" (assignment_expression "local_3c = uVar20" identifier = identifier) ;) (if_statement "if (uVar14 < *puVar4) {\n    iVar2 = (*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))(uVar14,&local_58);\n    puVar6 = (uint *)puVar4[3];\n    puVar15 = (uint *)(uVar14 + iVar2);\n    puVar4[3] = (uint)((int)puVar6 + local_54);\n    puVar4[2] = (int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6) + puVar4[2];\n    bVar3 = *(byte *)puVar15;\n    if ((char)bVar3 < '\0') {\n      param_2 = &local_5c;\n      puVar6 = puVar15;\n      uVar14 = FUN_0006610c();\n      puVar4[6] = uVar14;\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = local_5c >> 1;\n    }\n    else {\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = (uint)(bVar3 >> 1);\n      puVar4[6] = 1;\n      param_2 = local_58;\n    }\n  }\n  else {\n    puVar4[4] = 0;\n  }" if (parenthesized_expression "(uVar14 < *puVar4)" ( (binary_expression "uVar14 < *puVar4" identifier < (pointer_expression "*puVar4" * identifier)) )) (compound_statement "{\n    iVar2 = (*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))(uVar14,&local_58);\n    puVar6 = (uint *)puVar4[3];\n    puVar15 = (uint *)(uVar14 + iVar2);\n    puVar4[3] = (uint)((int)puVar6 + local_54);\n    puVar4[2] = (int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6) + puVar4[2];\n    bVar3 = *(byte *)puVar15;\n    if ((char)bVar3 < '\0') {\n      param_2 = &local_5c;\n      puVar6 = puVar15;\n      uVar14 = FUN_0006610c();\n      puVar4[6] = uVar14;\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = local_5c >> 1;\n    }\n    else {\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = (uint)(bVar3 >> 1);\n      puVar4[6] = 1;\n      param_2 = local_58;\n    }\n  }" { (expression_statement "iVar2 = (*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))(uVar14,&local_58);" (assignment_expression "iVar2 = (*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))(uVar14,&local_58)" identifier = (call_expression "(*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))(uVar14,&local_58)" (parenthesized_expression "(*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))" ( (pointer_expression "*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80)" * (cast_expression "(code *)(*(int *)(puVar18 + 0x12a128) + -0x80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar18 + 0x12a128) + -0x80)" ( (binary_expression "*(int *)(puVar18 + 0x12a128) + -0x80" (pointer_expression "*(int *)(puVar18 + 0x12a128)" * (cast_expression "(int *)(puVar18 + 0x12a128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x12a128)" ( (binary_expression "puVar18 + 0x12a128" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(uVar14,&local_58)" ( identifier , (pointer_expression "&local_58" & identifier) )))) ;) (expression_statement "puVar6 = (uint *)puVar4[3];" (assignment_expression "puVar6 = (uint *)puVar4[3]" identifier = (cast_expression "(uint *)puVar4[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[3]" identifier [ number_literal ]))) ;) (expression_statement "puVar15 = (uint *)(uVar14 + iVar2);" (assignment_expression "puVar15 = (uint *)(uVar14 + iVar2)" identifier = (cast_expression "(uint *)(uVar14 + iVar2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar14 + iVar2)" ( (binary_expression "uVar14 + iVar2" identifier + identifier) )))) ;) (expression_statement "puVar4[3] = (uint)((int)puVar6 + local_54);" (assignment_expression "puVar4[3] = (uint)((int)puVar6 + local_54)" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = (call_expression "(uint)((int)puVar6 + local_54)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar6 + local_54)" ( (binary_expression "(int)puVar6 + local_54" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar4[2] = (int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6) + puVar4[2];" (assignment_expression "puVar4[2] = (int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6) + puVar4[2]" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = (binary_expression "(int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6) + puVar4[2]" (binary_expression "(int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6)" (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier) + (call_expression "(uint)((uint *)((int)puVar6 + local_54) < puVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint *)((int)puVar6 + local_54) < puVar6)" ( (binary_expression "(uint *)((int)puVar6 + local_54) < puVar6" (cast_expression "(uint *)((int)puVar6 + local_54)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + local_54)" ( (binary_expression "(int)puVar6 + local_54" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) < identifier) )))) + (subscript_expression "puVar4[2]" identifier [ number_literal ]))) ;) (expression_statement "bVar3 = *(byte *)puVar15;" (assignment_expression "bVar3 = *(byte *)puVar15" identifier = (pointer_expression "*(byte *)puVar15" * (cast_expression "(byte *)puVar15" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if ((char)bVar3 < '\0') {\n      param_2 = &local_5c;\n      puVar6 = puVar15;\n      uVar14 = FUN_0006610c();\n      puVar4[6] = uVar14;\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = local_5c >> 1;\n    }\n    else {\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = (uint)(bVar3 >> 1);\n      puVar4[6] = 1;\n      param_2 = local_58;\n    }" if (parenthesized_expression "((char)bVar3 < '\0')" ( (binary_expression "(char)bVar3 < '\0'" (cast_expression "(char)bVar3" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      param_2 = &local_5c;\n      puVar6 = puVar15;\n      uVar14 = FUN_0006610c();\n      puVar4[6] = uVar14;\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = local_5c >> 1;\n    }" { (expression_statement "param_2 = &local_5c;" (assignment_expression "param_2 = &local_5c" identifier = (pointer_expression "&local_5c" & identifier)) ;) (expression_statement "puVar6 = puVar15;" (assignment_expression "puVar6 = puVar15" identifier = identifier) ;) (expression_statement "uVar14 = FUN_0006610c();" (assignment_expression "uVar14 = FUN_0006610c()" identifier = (call_expression "FUN_0006610c()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar4[6] = uVar14;" (assignment_expression "puVar4[6] = uVar14" (subscript_expression "puVar4[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[4] = (uint)puVar15;" (assignment_expression "puVar4[4] = (uint)puVar15" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = (cast_expression "(uint)puVar15" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar4[5] = local_5c >> 1;" (assignment_expression "puVar4[5] = local_5c >> 1" (subscript_expression "puVar4[5]" identifier [ number_literal ]) = (binary_expression "local_5c >> 1" identifier >> number_literal)) ;) }) (else_clause "else {\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = (uint)(bVar3 >> 1);\n      puVar4[6] = 1;\n      param_2 = local_58;\n    }" else (compound_statement "{\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = (uint)(bVar3 >> 1);\n      puVar4[6] = 1;\n      param_2 = local_58;\n    }" { (expression_statement "puVar4[4] = (uint)puVar15;" (assignment_expression "puVar4[4] = (uint)puVar15" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = (cast_expression "(uint)puVar15" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar4[5] = (uint)(bVar3 >> 1);" (assignment_expression "puVar4[5] = (uint)(bVar3 >> 1)" (subscript_expression "puVar4[5]" identifier [ number_literal ]) = (call_expression "(uint)(bVar3 >> 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar3 >> 1)" ( (binary_expression "bVar3 >> 1" identifier >> number_literal) )))) ;) (expression_statement "puVar4[6] = 1;" (assignment_expression "puVar4[6] = 1" (subscript_expression "puVar4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2 = local_58;" (assignment_expression "param_2 = local_58" identifier = identifier) ;) }))) }) (else_clause "else {\n    puVar4[4] = 0;\n  }" else (compound_statement "{\n    puVar4[4] = 0;\n  }" { (expression_statement "puVar4[4] = 0;" (assignment_expression "puVar4[4] = 0" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = number_literal) ;) }))) (if_statement "if (local_4c == (uint *)*puVar16) {\n    return (uint *)*puVar16;\n  }" if (parenthesized_expression "(local_4c == (uint *)*puVar16)" ( (binary_expression "local_4c == (uint *)*puVar16" identifier == (cast_expression "(uint *)*puVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier))) )) (compound_statement "{\n    return (uint *)*puVar16;\n  }" { (return_statement "return (uint *)*puVar16;" return (cast_expression "(uint *)*puVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier)) ;) })) (expression_statement "pcVar19 = *(code **)(local_68 + -0x7b28);" (assignment_expression "pcVar19 = *(code **)(local_68 + -0x7b28)" identifier = (pointer_expression "*(code **)(local_68 + -0x7b28)" * (cast_expression "(code **)(local_68 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_68 + -0x7b28)" ( (binary_expression "local_68 + -0x7b28" identifier + number_literal) ))))) ;) (expression_statement "pcVar21 = FUN_00066b38;" (assignment_expression "pcVar21 = FUN_00066b38" identifier = identifier) ;) (expression_statement "(*pcVar19)();" (call_expression "(*pcVar19)()" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_80 = puVar16;" (assignment_expression "puStack_80 = puVar16" identifier = identifier) ;) (expression_statement "puStack_88 = puVar4;" (assignment_expression "puStack_88 = puVar4" identifier = identifier) ;) (expression_statement "pcStack_7c = pcVar21;" (assignment_expression "pcStack_7c = pcVar21" identifier = identifier) ;) (expression_statement "puStack_84 = puVar15;" (assignment_expression "puStack_84 = puVar15" identifier = identifier) ;) (expression_statement "piVar17 = *(int **)(pcVar19 + 0x12a2ec);" (assignment_expression "piVar17 = *(int **)(pcVar19 + 0x12a2ec)" identifier = (pointer_expression "*(int **)(pcVar19 + 0x12a2ec)" * (cast_expression "(int **)(pcVar19 + 0x12a2ec)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x12a2ec)" ( (binary_expression "pcVar19 + 0x12a2ec" identifier + number_literal) ))))) ;) (expression_statement "puVar15 = (uint *)param_2[5];" (assignment_expression "puVar15 = (uint *)param_2[5]" identifier = (cast_expression "(uint *)param_2[5]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[5]" identifier [ number_literal ]))) ;) (expression_statement "piVar13 = (int *)param_2[3];" (assignment_expression "piVar13 = (int *)param_2[3]" identifier = (cast_expression "(int *)param_2[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) ;) (expression_statement "puStack_8c = (uint *)*piVar17;" (assignment_expression "puStack_8c = (uint *)*piVar17" identifier = (cast_expression "(uint *)*piVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar17" * identifier))) ;) (if_statement "if (puVar6[0xc] == 1) {\n    piVar10 = (int *)piVar13[2];\n    *(undefined1 *)(param_2 + 0x15) = 0;\n    piVar9 = (int *)param_2[10];\n    if ((int)piVar10 <= param_2[10]) {\n      piVar9 = piVar10;\n    }\n    puVar4 = (uint *)(uint)((int)puVar15 < (int)piVar9);\n    param_2[0x14] = 1;\n    if ((puVar4 != (uint *)0x0) &&\n       (puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0')) {\n      *(undefined1 *)(param_2 + 0x15) = 1;\n      if (((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')) {\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }\n      else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }\n    }\n  }\n  else {\n    bVar3 = *(byte *)(*piVar13 + (int)puVar15);\n    uStack_90 = (uint)bVar3;\n    puVar4 = (uint *)(int)(char)bVar3;\n    if ((int)puVar4 < 0) {\n      puVar4 = &uStack_90;\n      piVar13 = (int *)(*piVar13 + (int)puVar15);\n      iVar2 = FUN_0006610c();\n      puVar15 = (uint *)((int)puVar15 + iVar2);\n      bVar3 = (byte)uStack_90;\n    }\n    else {\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }\n    *(byte *)(param_2 + 0x15) = bVar3 & 1;\n    param_2[0x14] = (int)uStack_90 >> 1;\n  }" if (parenthesized_expression "(puVar6[0xc] == 1)" ( (binary_expression "puVar6[0xc] == 1" (subscript_expression "puVar6[0xc]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    piVar10 = (int *)piVar13[2];\n    *(undefined1 *)(param_2 + 0x15) = 0;\n    piVar9 = (int *)param_2[10];\n    if ((int)piVar10 <= param_2[10]) {\n      piVar9 = piVar10;\n    }\n    puVar4 = (uint *)(uint)((int)puVar15 < (int)piVar9);\n    param_2[0x14] = 1;\n    if ((puVar4 != (uint *)0x0) &&\n       (puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0')) {\n      *(undefined1 *)(param_2 + 0x15) = 1;\n      if (((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')) {\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }\n      else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }\n    }\n  }" { (expression_statement "piVar10 = (int *)piVar13[2];" (assignment_expression "piVar10 = (int *)piVar13[2]" identifier = (cast_expression "(int *)piVar13[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar13[2]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined1 *)(param_2 + 0x15) = 0;" (assignment_expression "*(undefined1 *)(param_2 + 0x15) = 0" (pointer_expression "*(undefined1 *)(param_2 + 0x15)" * (cast_expression "(undefined1 *)(param_2 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x15)" ( (binary_expression "param_2 + 0x15" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar9 = (int *)param_2[10];" (assignment_expression "piVar9 = (int *)param_2[10]" identifier = (cast_expression "(int *)param_2[10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[10]" identifier [ number_literal ]))) ;) (if_statement "if ((int)piVar10 <= param_2[10]) {\n      piVar9 = piVar10;\n    }" if (parenthesized_expression "((int)piVar10 <= param_2[10])" ( (binary_expression "(int)piVar10 <= param_2[10]" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) <= (subscript_expression "param_2[10]" identifier [ number_literal ])) )) (compound_statement "{\n      piVar9 = piVar10;\n    }" { (expression_statement "piVar9 = piVar10;" (assignment_expression "piVar9 = piVar10" identifier = identifier) ;) })) (expression_statement "puVar4 = (uint *)(uint)((int)puVar15 < (int)piVar9);" (assignment_expression "puVar4 = (uint *)(uint)((int)puVar15 < (int)piVar9)" identifier = (cast_expression "(uint *)(uint)((int)puVar15 < (int)piVar9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)((int)puVar15 < (int)piVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar15 < (int)piVar9)" ( (binary_expression "(int)puVar15 < (int)piVar9" (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "param_2[0x14] = 1;" (assignment_expression "param_2[0x14] = 1" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if ((puVar4 != (uint *)0x0) &&\n       (puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0')) {\n      *(undefined1 *)(param_2 + 0x15) = 1;\n      if (((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')) {\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }\n      else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }\n    }" if (parenthesized_expression "((puVar4 != (uint *)0x0) &&\n       (puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0'))" ( (binary_expression "(puVar4 != (uint *)0x0) &&\n       (puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0')" (parenthesized_expression "(puVar4 != (uint *)0x0)" ( (binary_expression "puVar4 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0')" ( (comma_expression "puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0'" (assignment_expression "puVar4 = (uint *)((int)puVar15 + 1)" identifier = (cast_expression "(uint *)((int)puVar15 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar15 + 1)" ( (binary_expression "(int)puVar15 + 1" (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (binary_expression "*(char *)(*piVar13 + (int)puVar15) == '\0'" (pointer_expression "*(char *)(*piVar13 + (int)puVar15)" * (cast_expression "(char *)(*piVar13 + (int)puVar15)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar13 + (int)puVar15)" ( (binary_expression "*piVar13 + (int)puVar15" (pointer_expression "*piVar13" * identifier) + (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )))) == (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n      *(undefined1 *)(param_2 + 0x15) = 1;\n      if (((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')) {\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }\n      else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }\n    }" { (expression_statement "*(undefined1 *)(param_2 + 0x15) = 1;" (assignment_expression "*(undefined1 *)(param_2 + 0x15) = 1" (pointer_expression "*(undefined1 *)(param_2 + 0x15)" * (cast_expression "(undefined1 *)(param_2 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x15)" ( (binary_expression "param_2 + 0x15" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')) {\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }\n      else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }" if (parenthesized_expression "(((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0'))" ( (binary_expression "((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')" (parenthesized_expression "((int)puVar4 < (int)piVar9)" ( (binary_expression "(int)puVar4 < (int)piVar9" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(*(char *)(*piVar13 + (int)puVar4) == '\0')" ( (binary_expression "*(char *)(*piVar13 + (int)puVar4) == '\0'" (pointer_expression "*(char *)(*piVar13 + (int)puVar4)" * (cast_expression "(char *)(*piVar13 + (int)puVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar13 + (int)puVar4)" ( (binary_expression "*piVar13 + (int)puVar4" (pointer_expression "*piVar13" * identifier) + (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }" { (expression_statement "puVar15 = (uint *)((int)puVar15 + 2);" (assignment_expression "puVar15 = (uint *)((int)puVar15 + 2)" identifier = (cast_expression "(uint *)((int)puVar15 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar15 + 2)" ( (binary_expression "(int)puVar15 + 2" (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) (else_clause "else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }" else (compound_statement "{\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }" { (expression_statement "param_2[0x14] = 0;" (assignment_expression "param_2[0x14] = 0" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar15 = puVar4;" (assignment_expression "puVar15 = puVar4" identifier = identifier) ;) }))) })) }) (else_clause "else {\n    bVar3 = *(byte *)(*piVar13 + (int)puVar15);\n    uStack_90 = (uint)bVar3;\n    puVar4 = (uint *)(int)(char)bVar3;\n    if ((int)puVar4 < 0) {\n      puVar4 = &uStack_90;\n      piVar13 = (int *)(*piVar13 + (int)puVar15);\n      iVar2 = FUN_0006610c();\n      puVar15 = (uint *)((int)puVar15 + iVar2);\n      bVar3 = (byte)uStack_90;\n    }\n    else {\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }\n    *(byte *)(param_2 + 0x15) = bVar3 & 1;\n    param_2[0x14] = (int)uStack_90 >> 1;\n  }" else (compound_statement "{\n    bVar3 = *(byte *)(*piVar13 + (int)puVar15);\n    uStack_90 = (uint)bVar3;\n    puVar4 = (uint *)(int)(char)bVar3;\n    if ((int)puVar4 < 0) {\n      puVar4 = &uStack_90;\n      piVar13 = (int *)(*piVar13 + (int)puVar15);\n      iVar2 = FUN_0006610c();\n      puVar15 = (uint *)((int)puVar15 + iVar2);\n      bVar3 = (byte)uStack_90;\n    }\n    else {\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }\n    *(byte *)(param_2 + 0x15) = bVar3 & 1;\n    param_2[0x14] = (int)uStack_90 >> 1;\n  }" { (expression_statement "bVar3 = *(byte *)(*piVar13 + (int)puVar15);" (assignment_expression "bVar3 = *(byte *)(*piVar13 + (int)puVar15)" identifier = (pointer_expression "*(byte *)(*piVar13 + (int)puVar15)" * (cast_expression "(byte *)(*piVar13 + (int)puVar15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar13 + (int)puVar15)" ( (binary_expression "*piVar13 + (int)puVar15" (pointer_expression "*piVar13" * identifier) + (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "uStack_90 = (uint)bVar3;" (assignment_expression "uStack_90 = (uint)bVar3" identifier = (cast_expression "(uint)bVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar4 = (uint *)(int)(char)bVar3;" (assignment_expression "puVar4 = (uint *)(int)(char)bVar3" identifier = (cast_expression "(uint *)(int)(char)bVar3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)bVar3" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar3" ( (type_descriptor "char" primitive_type) ) identifier)))) ;) (if_statement "if ((int)puVar4 < 0) {\n      puVar4 = &uStack_90;\n      piVar13 = (int *)(*piVar13 + (int)puVar15);\n      iVar2 = FUN_0006610c();\n      puVar15 = (uint *)((int)puVar15 + iVar2);\n      bVar3 = (byte)uStack_90;\n    }\n    else {\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }" if (parenthesized_expression "((int)puVar4 < 0)" ( (binary_expression "(int)puVar4 < 0" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      puVar4 = &uStack_90;\n      piVar13 = (int *)(*piVar13 + (int)puVar15);\n      iVar2 = FUN_0006610c();\n      puVar15 = (uint *)((int)puVar15 + iVar2);\n      bVar3 = (byte)uStack_90;\n    }" { (expression_statement "puVar4 = &uStack_90;" (assignment_expression "puVar4 = &uStack_90" identifier = (pointer_expression "&uStack_90" & identifier)) ;) (expression_statement "piVar13 = (int *)(*piVar13 + (int)puVar15);" (assignment_expression "piVar13 = (int *)(*piVar13 + (int)puVar15)" identifier = (cast_expression "(int *)(*piVar13 + (int)puVar15)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar13 + (int)puVar15)" ( (binary_expression "*piVar13 + (int)puVar15" (pointer_expression "*piVar13" * identifier) + (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "iVar2 = FUN_0006610c();" (assignment_expression "iVar2 = FUN_0006610c()" identifier = (call_expression "FUN_0006610c()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar15 = (uint *)((int)puVar15 + iVar2);" (assignment_expression "puVar15 = (uint *)((int)puVar15 + iVar2)" identifier = (cast_expression "(uint *)((int)puVar15 + iVar2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar15 + iVar2)" ( (binary_expression "(int)puVar15 + iVar2" (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "bVar3 = (byte)uStack_90;" (assignment_expression "bVar3 = (byte)uStack_90" identifier = (cast_expression "(byte)uStack_90" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }) (else_clause "else {\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }" else (compound_statement "{\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }" { (expression_statement "puVar15 = (uint *)((int)puVar15 + 1);" (assignment_expression "puVar15 = (uint *)((int)puVar15 + 1)" identifier = (cast_expression "(uint *)((int)puVar15 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar15 + 1)" ( (binary_expression "(int)puVar15 + 1" (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }))) (expression_statement "*(byte *)(param_2 + 0x15) = bVar3 & 1;" (assignment_expression "*(byte *)(param_2 + 0x15) = bVar3 & 1" (pointer_expression "*(byte *)(param_2 + 0x15)" * (cast_expression "(byte *)(param_2 + 0x15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x15)" ( (binary_expression "param_2 + 0x15" identifier + number_literal) )))) = (binary_expression "bVar3 & 1" identifier & number_literal)) ;) (expression_statement "param_2[0x14] = (int)uStack_90 >> 1;" (assignment_expression "param_2[0x14] = (int)uStack_90 >> 1" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = (binary_expression "(int)uStack_90 >> 1" (cast_expression "(int)uStack_90" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) }))) (expression_statement "puVar6 = (uint *)*piVar17;" (assignment_expression "puVar6 = (uint *)*piVar17" identifier = (cast_expression "(uint *)*piVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar17" * identifier))) ;) (expression_statement "param_2[5] = (int)puVar15;" (assignment_expression "param_2[5] = (int)puVar15" (subscript_expression "param_2[5]" identifier [ number_literal ]) = (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (puStack_8c == puVar6) {\n    return puVar6;\n  }" if (parenthesized_expression "(puStack_8c == puVar6)" ( (binary_expression "puStack_8c == puVar6" identifier == identifier) )) (compound_statement "{\n    return puVar6;\n  }" { (return_statement "return puVar6;" return identifier ;) })) (expression_statement "pcVar19 = *(code **)(pcVar19 + 0x12a2c0);" (assignment_expression "pcVar19 = *(code **)(pcVar19 + 0x12a2c0)" identifier = (pointer_expression "*(code **)(pcVar19 + 0x12a2c0)" * (cast_expression "(code **)(pcVar19 + 0x12a2c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x12a2c0)" ( (binary_expression "pcVar19 + 0x12a2c0" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar19)();" (call_expression "(*pcVar19)()" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcStack_d8 = pcVar19 + 0x131ca0;" (assignment_expression "pcStack_d8 = pcVar19 + 0x131ca0" identifier = (binary_expression "pcVar19 + 0x131ca0" identifier + number_literal)) ;) (expression_statement "piVar13 = (int *)*piVar13;" (assignment_expression "piVar13 = (int *)*piVar13" identifier = (cast_expression "(int *)*piVar13" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar13" * identifier))) ;) (expression_statement "piVar7 = (int *)*puVar4;" (assignment_expression "piVar7 = (int *)*puVar4" identifier = (cast_expression "(int *)*puVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar4" * identifier))) ;) (expression_statement "puVar16 = *(undefined4 **)(pcVar19 + 0x12a1a4);" (assignment_expression "puVar16 = *(undefined4 **)(pcVar19 + 0x12a1a4)" identifier = (pointer_expression "*(undefined4 **)(pcVar19 + 0x12a1a4)" * (cast_expression "(undefined4 **)(pcVar19 + 0x12a1a4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x12a1a4)" ( (binary_expression "pcVar19 + 0x12a1a4" identifier + number_literal) ))))) ;) (expression_statement "puVar6 = (uint *)*puVar16;" (assignment_expression "puVar6 = (uint *)*puVar16" identifier = (cast_expression "(uint *)*puVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier))) ;) (expression_statement "piVar9 = *(int **)(piVar13[3] + 0x30);" (assignment_expression "piVar9 = *(int **)(piVar13[3] + 0x30)" identifier = (pointer_expression "*(int **)(piVar13[3] + 0x30)" * (cast_expression "(int **)(piVar13[3] + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar13[3] + 0x30)" ( (binary_expression "piVar13[3] + 0x30" (subscript_expression "piVar13[3]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "puStack_cc = puVar6;" (assignment_expression "puStack_cc = puVar6" identifier = identifier) ;) (expression_statement "piStack_c4 = param_2;" (assignment_expression "piStack_c4 = param_2" identifier = identifier) ;) (expression_statement "puStack_c0 = puVar15;" (assignment_expression "puStack_c0 = puVar15" identifier = identifier) ;) (expression_statement "piStack_bc = piVar17;" (assignment_expression "piStack_bc = piVar17" identifier = identifier) ;) (if_statement "if (piVar9 == (int *)0x2) {\n    if (piVar7 < (int *)puVar4[1]) {\n      piVar9 = &iStack_d0;\n      iVar2 = FUN_0006610c();\n      *puVar4 = *puVar4 + iVar2;\n      *piVar10 = *piVar10 + iStack_d0 + -2;\n      goto LAB_00066d4c;\n    }\n  }\n  else if (piVar7 < (int *)puVar4[1]) {\n    if (*(char *)piVar7 != '\x01') {\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }\n    piVar7 = (int *)((int)piVar7 + 1);\n    iVar2 = FUN_0006610c();\n    *puVar4 = *puVar4 + iVar2 + 1;\n    piVar9 = piVar10;\n    goto LAB_00066d4c;\n  }" if (parenthesized_expression "(piVar9 == (int *)0x2)" ( (binary_expression "piVar9 == (int *)0x2" identifier == (cast_expression "(int *)0x2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (piVar7 < (int *)puVar4[1]) {\n      piVar9 = &iStack_d0;\n      iVar2 = FUN_0006610c();\n      *puVar4 = *puVar4 + iVar2;\n      *piVar10 = *piVar10 + iStack_d0 + -2;\n      goto LAB_00066d4c;\n    }\n  }" { (if_statement "if (piVar7 < (int *)puVar4[1]) {\n      piVar9 = &iStack_d0;\n      iVar2 = FUN_0006610c();\n      *puVar4 = *puVar4 + iVar2;\n      *piVar10 = *piVar10 + iStack_d0 + -2;\n      goto LAB_00066d4c;\n    }" if (parenthesized_expression "(piVar7 < (int *)puVar4[1])" ( (binary_expression "piVar7 < (int *)puVar4[1]" identifier < (cast_expression "(int *)puVar4[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[1]" identifier [ number_literal ]))) )) (compound_statement "{\n      piVar9 = &iStack_d0;\n      iVar2 = FUN_0006610c();\n      *puVar4 = *puVar4 + iVar2;\n      *piVar10 = *piVar10 + iStack_d0 + -2;\n      goto LAB_00066d4c;\n    }" { (expression_statement "piVar9 = &iStack_d0;" (assignment_expression "piVar9 = &iStack_d0" identifier = (pointer_expression "&iStack_d0" & identifier)) ;) (expression_statement "iVar2 = FUN_0006610c();" (assignment_expression "iVar2 = FUN_0006610c()" identifier = (call_expression "FUN_0006610c()" identifier (argument_list "()" ( )))) ;) (expression_statement "*puVar4 = *puVar4 + iVar2;" (assignment_expression "*puVar4 = *puVar4 + iVar2" (pointer_expression "*puVar4" * identifier) = (binary_expression "*puVar4 + iVar2" (pointer_expression "*puVar4" * identifier) + identifier)) ;) (expression_statement "*piVar10 = *piVar10 + iStack_d0 + -2;" (assignment_expression "*piVar10 = *piVar10 + iStack_d0 + -2" (pointer_expression "*piVar10" * identifier) = (binary_expression "*piVar10 + iStack_d0 + -2" (binary_expression "*piVar10 + iStack_d0" (pointer_expression "*piVar10" * identifier) + identifier) + number_literal)) ;) (goto_statement "goto LAB_00066d4c;" goto statement_identifier ;) })) }) (else_clause "else if (piVar7 < (int *)puVar4[1]) {\n    if (*(char *)piVar7 != '\x01') {\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }\n    piVar7 = (int *)((int)piVar7 + 1);\n    iVar2 = FUN_0006610c();\n    *puVar4 = *puVar4 + iVar2 + 1;\n    piVar9 = piVar10;\n    goto LAB_00066d4c;\n  }" else (if_statement "if (piVar7 < (int *)puVar4[1]) {\n    if (*(char *)piVar7 != '\x01') {\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }\n    piVar7 = (int *)((int)piVar7 + 1);\n    iVar2 = FUN_0006610c();\n    *puVar4 = *puVar4 + iVar2 + 1;\n    piVar9 = piVar10;\n    goto LAB_00066d4c;\n  }" if (parenthesized_expression "(piVar7 < (int *)puVar4[1])" ( (binary_expression "piVar7 < (int *)puVar4[1]" identifier < (cast_expression "(int *)puVar4[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[1]" identifier [ number_literal ]))) )) (compound_statement "{\n    if (*(char *)piVar7 != '\x01') {\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }\n    piVar7 = (int *)((int)piVar7 + 1);\n    iVar2 = FUN_0006610c();\n    *puVar4 = *puVar4 + iVar2 + 1;\n    piVar9 = piVar10;\n    goto LAB_00066d4c;\n  }" { (if_statement "if (*(char *)piVar7 != '\x01') {\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }" if (parenthesized_expression "(*(char *)piVar7 != '\x01')" ( (binary_expression "*(char *)piVar7 != '\x01'" (pointer_expression "*(char *)piVar7" * (cast_expression "(char *)piVar7" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) != (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }" { (do_statement "do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');" do (compound_statement "{\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      }" { (expression_statement "piVar9 = &iStack_d0;" (assignment_expression "piVar9 = &iStack_d0" identifier = (pointer_expression "&iStack_d0" & identifier)) ;) (expression_statement "iVar2 = FUN_0006610c();" (assignment_expression "iVar2 = FUN_0006610c()" identifier = (call_expression "FUN_0006610c()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar7 = (int *)(*puVar4 + iVar2);" (assignment_expression "piVar7 = (int *)(*puVar4 + iVar2)" identifier = (cast_expression "(int *)(*puVar4 + iVar2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar4 + iVar2)" ( (binary_expression "*puVar4 + iVar2" (pointer_expression "*puVar4" * identifier) + identifier) )))) ;) (expression_statement "*puVar4 = (uint)piVar7;" (assignment_expression "*puVar4 = (uint)piVar7" (pointer_expression "*puVar4" * identifier) = (cast_expression "(uint)piVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;" if (parenthesized_expression "((int *)puVar4[1] <= piVar7)" ( (binary_expression "(int *)puVar4[1] <= piVar7" (cast_expression "(int *)puVar4[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[1]" identifier [ number_literal ])) <= identifier) )) (goto_statement "goto LAB_00066d48;" goto statement_identifier ;)) }) while (parenthesized_expression "(*(char *)piVar7 != '\x01')" ( (binary_expression "*(char *)piVar7 != '\x01'" (pointer_expression "*(char *)piVar7" * (cast_expression "(char *)piVar7" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) != (char_literal "'\x01'" ' escape_sequence ')) )) ;) })) (expression_statement "piVar7 = (int *)((int)piVar7 + 1);" (assignment_expression "piVar7 = (int *)((int)piVar7 + 1)" identifier = (cast_expression "(int *)((int)piVar7 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar7 + 1)" ( (binary_expression "(int)piVar7 + 1" (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "iVar2 = FUN_0006610c();" (assignment_expression "iVar2 = FUN_0006610c()" identifier = (call_expression "FUN_0006610c()" identifier (argument_list "()" ( )))) ;) (expression_statement "*puVar4 = *puVar4 + iVar2 + 1;" (assignment_expression "*puVar4 = *puVar4 + iVar2 + 1" (pointer_expression "*puVar4" * identifier) = (binary_expression "*puVar4 + iVar2 + 1" (binary_expression "*puVar4 + iVar2" (pointer_expression "*puVar4" * identifier) + identifier) + number_literal)) ;) (expression_statement "piVar9 = piVar10;" (assignment_expression "piVar9 = piVar10" identifier = identifier) ;) (goto_statement "goto LAB_00066d4c;" goto statement_identifier ;) })))) (labeled_statement "LAB_00066d48:\n  *piVar10 = -1;" statement_identifier : (expression_statement "*piVar10 = -1;" (assignment_expression "*piVar10 = -1" (pointer_expression "*piVar10" * identifier) = number_literal) ;)) (labeled_statement "LAB_00066d4c:\n  puVar15 = (uint *)*puVar16;" statement_identifier : (expression_statement "puVar15 = (uint *)*puVar16;" (assignment_expression "puVar15 = (uint *)*puVar16" identifier = (cast_expression "(uint *)*puVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier))) ;)) (if_statement "if (puStack_cc == puVar15) {\n    return puVar15;\n  }" if (parenthesized_expression "(puStack_cc == puVar15)" ( (binary_expression "puStack_cc == puVar15" identifier == identifier) )) (compound_statement "{\n    return puVar15;\n  }" { (return_statement "return puVar15;" return identifier ;) })) (expression_statement "pcVar19 = *(code **)(pcStack_d8 + -0x7b28);" (assignment_expression "pcVar19 = *(code **)(pcStack_d8 + -0x7b28)" identifier = (pointer_expression "*(code **)(pcStack_d8 + -0x7b28)" * (cast_expression "(code **)(pcStack_d8 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcStack_d8 + -0x7b28)" ( (binary_expression "pcStack_d8 + -0x7b28" identifier + number_literal) ))))) ;) (expression_statement "uVar20 = 0x66df8;" (assignment_expression "uVar20 = 0x66df8" identifier = number_literal) ;) (expression_statement "(*pcVar19)();" (call_expression "(*pcVar19)()" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar21 = pcVar19 + 0x131b28;" (assignment_expression "pcVar21 = pcVar19 + 0x131b28" identifier = (binary_expression "pcVar19 + 0x131b28" identifier + number_literal)) ;) (expression_statement "piVar10 = *(int **)(pcVar19 + 0x12a02c);" (assignment_expression "piVar10 = *(int **)(pcVar19 + 0x12a02c)" identifier = (pointer_expression "*(int **)(pcVar19 + 0x12a02c)" * (cast_expression "(int **)(pcVar19 + 0x12a02c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x12a02c)" ( (binary_expression "pcVar19 + 0x12a02c" identifier + number_literal) ))))) ;) (expression_statement "uVar14 = *puVar6;" (assignment_expression "uVar14 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puStack_f4 = (uint *)*piVar10;" (assignment_expression "puStack_f4 = (uint *)*piVar10" identifier = (cast_expression "(uint *)*piVar10" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar10" * identifier))) ;) (expression_statement "uStack_ec = uVar20;" (assignment_expression "uStack_ec = uVar20" identifier = identifier) ;) (if_statement "if ((int)uVar14 < (int)piVar9) {\n    iVar2 = (*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))\n                      ((char *)((int)piVar7 + uVar14),&piStack_100);\n    *puVar6 = iVar2 + uVar14;\n    uVar14 = piVar13[1];\n    uVar11 = uVar14 + iStack_fc;\n    piVar7 = (int *)(*piVar13 + (int)piStack_100);\n    piVar13[1] = uVar11;\n    *piVar13 = (int)((uint)(uVar11 < uVar14) + (int)piVar7);\n    piVar13 = piStack_100;\n  }\n  else {\n    *puVar6 = 0xffffffff;\n    piVar13 = (int *)0x0;\n  }" if (parenthesized_expression "((int)uVar14 < (int)piVar9)" ( (binary_expression "(int)uVar14 < (int)piVar9" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    iVar2 = (*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))\n                      ((char *)((int)piVar7 + uVar14),&piStack_100);\n    *puVar6 = iVar2 + uVar14;\n    uVar14 = piVar13[1];\n    uVar11 = uVar14 + iStack_fc;\n    piVar7 = (int *)(*piVar13 + (int)piStack_100);\n    piVar13[1] = uVar11;\n    *piVar13 = (int)((uint)(uVar11 < uVar14) + (int)piVar7);\n    piVar13 = piStack_100;\n  }" { (expression_statement "iVar2 = (*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))\n                      ((char *)((int)piVar7 + uVar14),&piStack_100);" (assignment_expression "iVar2 = (*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))\n                      ((char *)((int)piVar7 + uVar14),&piStack_100)" identifier = (call_expression "(*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))\n                      ((char *)((int)piVar7 + uVar14),&piStack_100)" (parenthesized_expression "(*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))" ( (pointer_expression "*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80)" * (cast_expression "(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar19 + 0x129d48) + -0x80)" ( (binary_expression "*(int *)(pcVar19 + 0x129d48) + -0x80" (pointer_expression "*(int *)(pcVar19 + 0x129d48)" * (cast_expression "(int *)(pcVar19 + 0x129d48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x129d48)" ( (binary_expression "pcVar19 + 0x129d48" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "((char *)((int)piVar7 + uVar14),&piStack_100)" ( (cast_expression "(char *)((int)piVar7 + uVar14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar7 + uVar14)" ( (binary_expression "(int)piVar7 + uVar14" (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) , (pointer_expression "&piStack_100" & identifier) )))) ;) (expression_statement "*puVar6 = iVar2 + uVar14;" (assignment_expression "*puVar6 = iVar2 + uVar14" (pointer_expression "*puVar6" * identifier) = (binary_expression "iVar2 + uVar14" identifier + identifier)) ;) (expression_statement "uVar14 = piVar13[1];" (assignment_expression "uVar14 = piVar13[1]" identifier = (subscript_expression "piVar13[1]" identifier [ number_literal ])) ;) (expression_statement "uVar11 = uVar14 + iStack_fc;" (assignment_expression "uVar11 = uVar14 + iStack_fc" identifier = (binary_expression "uVar14 + iStack_fc" identifier + identifier)) ;) (expression_statement "piVar7 = (int *)(*piVar13 + (int)piStack_100);" (assignment_expression "piVar7 = (int *)(*piVar13 + (int)piStack_100)" identifier = (cast_expression "(int *)(*piVar13 + (int)piStack_100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar13 + (int)piStack_100)" ( (binary_expression "*piVar13 + (int)piStack_100" (pointer_expression "*piVar13" * identifier) + (cast_expression "(int)piStack_100" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "piVar13[1] = uVar11;" (assignment_expression "piVar13[1] = uVar11" (subscript_expression "piVar13[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*piVar13 = (int)((uint)(uVar11 < uVar14) + (int)piVar7);" (assignment_expression "*piVar13 = (int)((uint)(uVar11 < uVar14) + (int)piVar7)" (pointer_expression "*piVar13" * identifier) = (cast_expression "(int)((uint)(uVar11 < uVar14) + (int)piVar7)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(uVar11 < uVar14) + (int)piVar7)" ( (binary_expression "(uint)(uVar11 < uVar14) + (int)piVar7" (call_expression "(uint)(uVar11 < uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar11 < uVar14)" ( (binary_expression "uVar11 < uVar14" identifier < identifier) ))) + (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "piVar13 = piStack_100;" (assignment_expression "piVar13 = piStack_100" identifier = identifier) ;) }) (else_clause "else {\n    *puVar6 = 0xffffffff;\n    piVar13 = (int *)0x0;\n  }" else (compound_statement "{\n    *puVar6 = 0xffffffff;\n    piVar13 = (int *)0x0;\n  }" { (expression_statement "*puVar6 = 0xffffffff;" (assignment_expression "*puVar6 = 0xffffffff" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "piVar13 = (int *)0x0;" (assignment_expression "piVar13 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (if_statement "if (puStack_f4 != (uint *)*piVar10) {\n    (**(code **)(pcVar19 + 0x12a000))();\n    uVar14 = *puVar6;\n    uVar11 = puVar6[1];\n    puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    if (((uVar14 ^ (uint)pcVar21) & 0x7fffffff) != 0) {\n      *piVar13 = *piVar13 + 1;\n      *puVar8 = 1;\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar2 = FUN_00053284();\n      }\n      else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }\n      uVar14 = (uint)pcVar21 & 0x7fffffff;\n      uVar11 = 0;\n      *piVar13 = *piVar13 + iVar2;\n      *puVar6 = uVar14;\n      puVar6[1] = 0;\n      puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    }\n    uVar11 = uStack_10c - uVar11;\n    uVar12 = uVar11 + 2;\n    if ((pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)\n       && (uVar12 < 0x80)) {\n      *puVar8 = (char)uVar12;\n      *piVar13 = *piVar13 + 1;\n      *puVar6 = (uint)pcVar21;\n      puVar6[1] = uStack_10c;\n      return (uint *)0x1;\n    }\n    puVar15 = (uint *)FUN_00053284();\n    *piVar13 = *piVar13 + (int)puVar15;\n    *puVar6 = (uint)pcVar21;\n    puVar6[1] = uStack_10c;\n    return puVar15;\n  }" if (parenthesized_expression "(puStack_f4 != (uint *)*piVar10)" ( (binary_expression "puStack_f4 != (uint *)*piVar10" identifier != (cast_expression "(uint *)*piVar10" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar10" * identifier))) )) (compound_statement "{\n    (**(code **)(pcVar19 + 0x12a000))();\n    uVar14 = *puVar6;\n    uVar11 = puVar6[1];\n    puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    if (((uVar14 ^ (uint)pcVar21) & 0x7fffffff) != 0) {\n      *piVar13 = *piVar13 + 1;\n      *puVar8 = 1;\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar2 = FUN_00053284();\n      }\n      else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }\n      uVar14 = (uint)pcVar21 & 0x7fffffff;\n      uVar11 = 0;\n      *piVar13 = *piVar13 + iVar2;\n      *puVar6 = uVar14;\n      puVar6[1] = 0;\n      puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    }\n    uVar11 = uStack_10c - uVar11;\n    uVar12 = uVar11 + 2;\n    if ((pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)\n       && (uVar12 < 0x80)) {\n      *puVar8 = (char)uVar12;\n      *piVar13 = *piVar13 + 1;\n      *puVar6 = (uint)pcVar21;\n      puVar6[1] = uStack_10c;\n      return (uint *)0x1;\n    }\n    puVar15 = (uint *)FUN_00053284();\n    *piVar13 = *piVar13 + (int)puVar15;\n    *puVar6 = (uint)pcVar21;\n    puVar6[1] = uStack_10c;\n    return puVar15;\n  }" { (expression_statement "(**(code **)(pcVar19 + 0x12a000))();" (call_expression "(**(code **)(pcVar19 + 0x12a000))()" (parenthesized_expression "(**(code **)(pcVar19 + 0x12a000))" ( (pointer_expression "**(code **)(pcVar19 + 0x12a000)" * (pointer_expression "*(code **)(pcVar19 + 0x12a000)" * (cast_expression "(code **)(pcVar19 + 0x12a000)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x12a000)" ( (binary_expression "pcVar19 + 0x12a000" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "uVar14 = *puVar6;" (assignment_expression "uVar14 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "uVar11 = puVar6[1];" (assignment_expression "uVar11 = puVar6[1]" identifier = (subscript_expression "puVar6[1]" identifier [ number_literal ])) ;) (expression_statement "puVar8 = (undefined1 *)(*piVar7 + *piVar13);" (assignment_expression "puVar8 = (undefined1 *)(*piVar7 + *piVar13)" identifier = (cast_expression "(undefined1 *)(*piVar7 + *piVar13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar7 + *piVar13)" ( (binary_expression "*piVar7 + *piVar13" (pointer_expression "*piVar7" * identifier) + (pointer_expression "*piVar13" * identifier)) )))) ;) (if_statement "if (((uVar14 ^ (uint)pcVar21) & 0x7fffffff) != 0) {\n      *piVar13 = *piVar13 + 1;\n      *puVar8 = 1;\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar2 = FUN_00053284();\n      }\n      else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }\n      uVar14 = (uint)pcVar21 & 0x7fffffff;\n      uVar11 = 0;\n      *piVar13 = *piVar13 + iVar2;\n      *puVar6 = uVar14;\n      puVar6[1] = 0;\n      puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    }" if (parenthesized_expression "(((uVar14 ^ (uint)pcVar21) & 0x7fffffff) != 0)" ( (binary_expression "((uVar14 ^ (uint)pcVar21) & 0x7fffffff) != 0" (parenthesized_expression "((uVar14 ^ (uint)pcVar21) & 0x7fffffff)" ( (binary_expression "(uVar14 ^ (uint)pcVar21) & 0x7fffffff" (parenthesized_expression "(uVar14 ^ (uint)pcVar21)" ( (binary_expression "uVar14 ^ (uint)pcVar21" identifier ^ (cast_expression "(uint)pcVar21" ( (type_descriptor "uint" type_identifier) ) identifier)) )) & number_literal) )) != number_literal) )) (compound_statement "{\n      *piVar13 = *piVar13 + 1;\n      *puVar8 = 1;\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar2 = FUN_00053284();\n      }\n      else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }\n      uVar14 = (uint)pcVar21 & 0x7fffffff;\n      uVar11 = 0;\n      *piVar13 = *piVar13 + iVar2;\n      *puVar6 = uVar14;\n      puVar6[1] = 0;\n      puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    }" { (expression_statement "*piVar13 = *piVar13 + 1;" (assignment_expression "*piVar13 = *piVar13 + 1" (pointer_expression "*piVar13" * identifier) = (binary_expression "*piVar13 + 1" (pointer_expression "*piVar13" * identifier) + number_literal)) ;) (expression_statement "*puVar8 = 1;" (assignment_expression "*puVar8 = 1" (pointer_expression "*puVar8" * identifier) = number_literal) ;) (if_statement "if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar2 = FUN_00053284();\n      }\n      else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }" if (parenthesized_expression "(((int)pcVar21 < 0) || ((code *)0x7f < pcVar21))" ( (binary_expression "((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)" (parenthesized_expression "((int)pcVar21 < 0)" ( (binary_expression "(int)pcVar21 < 0" (cast_expression "(int)pcVar21" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "((code *)0x7f < pcVar21)" ( (binary_expression "(code *)0x7f < pcVar21" (cast_expression "(code *)0x7f" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) ))) )) (compound_statement "{\n        iVar2 = FUN_00053284();\n      }" { (expression_statement "iVar2 = FUN_00053284();" (assignment_expression "iVar2 = FUN_00053284()" identifier = (call_expression "FUN_00053284()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }" else (compound_statement "{\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }" { (expression_statement "*(char *)(*piVar7 + *piVar13) = (char)pcVar21;" (assignment_expression "*(char *)(*piVar7 + *piVar13) = (char)pcVar21" (pointer_expression "*(char *)(*piVar7 + *piVar13)" * (cast_expression "(char *)(*piVar7 + *piVar13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar7 + *piVar13)" ( (binary_expression "*piVar7 + *piVar13" (pointer_expression "*piVar7" * identifier) + (pointer_expression "*piVar13" * identifier)) )))) = (cast_expression "(char)pcVar21" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) }))) (expression_statement "uVar14 = (uint)pcVar21 & 0x7fffffff;" (assignment_expression "uVar14 = (uint)pcVar21 & 0x7fffffff" identifier = (binary_expression "(uint)pcVar21 & 0x7fffffff" (cast_expression "(uint)pcVar21" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "*piVar13 = *piVar13 + iVar2;" (assignment_expression "*piVar13 = *piVar13 + iVar2" (pointer_expression "*piVar13" * identifier) = (binary_expression "*piVar13 + iVar2" (pointer_expression "*piVar13" * identifier) + identifier)) ;) (expression_statement "*puVar6 = uVar14;" (assignment_expression "*puVar6 = uVar14" (pointer_expression "*puVar6" * identifier) = identifier) ;) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8 = (undefined1 *)(*piVar7 + *piVar13);" (assignment_expression "puVar8 = (undefined1 *)(*piVar7 + *piVar13)" identifier = (cast_expression "(undefined1 *)(*piVar7 + *piVar13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar7 + *piVar13)" ( (binary_expression "*piVar7 + *piVar13" (pointer_expression "*piVar7" * identifier) + (pointer_expression "*piVar13" * identifier)) )))) ;) })) (expression_statement "uVar11 = uStack_10c - uVar11;" (assignment_expression "uVar11 = uStack_10c - uVar11" identifier = (binary_expression "uStack_10c - uVar11" identifier - identifier)) ;) (expression_statement "uVar12 = uVar11 + 2;" (assignment_expression "uVar12 = uVar11 + 2" identifier = (binary_expression "uVar11 + 2" identifier + number_literal)) ;) (if_statement "if ((pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)\n       && (uVar12 < 0x80)) {\n      *puVar8 = (char)uVar12;\n      *piVar13 = *piVar13 + 1;\n      *puVar6 = (uint)pcVar21;\n      puVar6[1] = uStack_10c;\n      return (uint *)0x1;\n    }" if (parenthesized_expression "((pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)\n       && (uVar12 < 0x80))" ( (binary_expression "(pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)\n       && (uVar12 < 0x80)" (parenthesized_expression "(pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)" ( (binary_expression "pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0" (binary_expression "pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14)" (binary_expression "pcVar21 + (uint)(uVar12 < uVar11)" identifier + (call_expression "(uint)(uVar12 < uVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar12 < uVar11)" ( (binary_expression "uVar12 < uVar11" identifier < identifier) )))) + (parenthesized_expression "(-(uint)(uStack_10c < uVar11) - uVar14)" ( (binary_expression "-(uint)(uStack_10c < uVar11) - uVar14" (unary_expression "-(uint)(uStack_10c < uVar11)" - (call_expression "(uint)(uStack_10c < uVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uStack_10c < uVar11)" ( (binary_expression "uStack_10c < uVar11" identifier < identifier) )))) - identifier) ))) == (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(uVar12 < 0x80)" ( (binary_expression "uVar12 < 0x80" identifier < number_literal) ))) )) (compound_statement "{\n      *puVar8 = (char)uVar12;\n      *piVar13 = *piVar13 + 1;\n      *puVar6 = (uint)pcVar21;\n      puVar6[1] = uStack_10c;\n      return (uint *)0x1;\n    }" { (expression_statement "*puVar8 = (char)uVar12;" (assignment_expression "*puVar8 = (char)uVar12" (pointer_expression "*puVar8" * identifier) = (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*piVar13 = *piVar13 + 1;" (assignment_expression "*piVar13 = *piVar13 + 1" (pointer_expression "*piVar13" * identifier) = (binary_expression "*piVar13 + 1" (pointer_expression "*piVar13" * identifier) + number_literal)) ;) (expression_statement "*puVar6 = (uint)pcVar21;" (assignment_expression "*puVar6 = (uint)pcVar21" (pointer_expression "*puVar6" * identifier) = (cast_expression "(uint)pcVar21" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar6[1] = uStack_10c;" (assignment_expression "puVar6[1] = uStack_10c" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return (uint *)0x1;" return (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "puVar15 = (uint *)FUN_00053284();" (assignment_expression "puVar15 = (uint *)FUN_00053284()" identifier = (cast_expression "(uint *)FUN_00053284()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00053284()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*piVar13 = *piVar13 + (int)puVar15;" (assignment_expression "*piVar13 = *piVar13 + (int)puVar15" (pointer_expression "*piVar13" * identifier) = (binary_expression "*piVar13 + (int)puVar15" (pointer_expression "*piVar13" * identifier) + (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*puVar6 = (uint)pcVar21;" (assignment_expression "*puVar6 = (uint)pcVar21" (pointer_expression "*puVar6" * identifier) = (cast_expression "(uint)pcVar21" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar6[1] = uStack_10c;" (assignment_expression "puVar6[1] = uStack_10c" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return puVar15;" return identifier ;) })) (return_statement "return (uint *)*piVar10;" return (cast_expression "(uint *)*piVar10" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar10" * identifier)) ;) })))
(translation_unit "int fts5DlidxLvlNext(Fts5DlidxLvl *pLvl)\n\n{\n  u8 *puVar1;\n  undefined *puVar2;\n  Fts5Data *pFVar3;\n  int iVar4;\n  byte bVar6;\n  uint *puVar5;\n  int iVar7;\n  Fts5Data *pFVar8;\n  int *p;\n  uchar *p_00;\n  i64 *in_a1;\n  int iVar9;\n  u32 *v;\n  u32 *puVar10;\n  u32 *v_00;\n  uint *puVar11;\n  uint uVar12;\n  uint uVar13;\n  u32 *puVar14;\n  uint uVar15;\n  Fts5Data *p_01;\n  int *piVar16;\n  int *piVar17;\n  undefined4 *puVar18;\n  undefined *puVar19;\n  code *pcVar20;\n  code *pcVar21;\n  code *pcVar22;\n  undefined4 in_stack_fffffec4;\n  uint uStack_10c;\n  int *piStack_100;\n  int iStack_fc;\n  int iStack_f4;\n  code *pcStack_ec;\n  code *pcStack_d8;\n  u32 uStack_d0;\n  uint *puStack_cc;\n  i64 *piStack_c4;\n  u32 *puStack_c0;\n  int *piStack_bc;\n  uint uStack_90;\n  int iStack_8c;\n  uint *puStack_88;\n  Fts5Data *pFStack_84;\n  int *piStack_80;\n  code *pcStack_7c;\n  undefined *puStack_68;\n  int iStack_5c;\n  i64 *piStack_58;\n  int iStack_54;\n  Fts5Data *pFStack_4c;\n  Fts5DlidxLvl *pFStack_48;\n  Fts5Data *pFStack_44;\n  undefined *puStack_40;\n  code *pcStack_3c;\n  i64 iVal;\n  uint *puStack_14;\n  \n  puVar2 = PTR___stack_chk_guard_00190e24;\n  v_00 = (u32 *)pLvl->iOff;\n  p_01 = pLvl->pData;\n  puStack_14 = *(uint **)PTR___stack_chk_guard_00190e24;\n  if (v_00 == (u32 *)0x0) {\n    pLvl->iOff = 1;\n    iVar4 = sqlite3Fts5GetVarint32(p_01->p + 1,(u32 *)&pLvl->iLeafPgno);\n    puVar19 = PTR_LAB_00190b40;\n    in_a1 = &pLvl->iRowid;\n    iVar4 = iVar4 + pLvl->iOff;\n    pLvl->iOff = iVar4;\n    iVar4 = (*(code *)(puVar19 + -0x80))(p_01->p + iVar4);\n    iVar7 = pLvl->bEof;\n    iVar4 = iVar4 + pLvl->iOff;\n    pLvl->iOff = iVar4;\n    pLvl->iFirstOff = iVar4;\n  }\n  else if ((int)v_00 < p_01->nn) {\n    in_a1 = (i64 *)p_01->p;\n    puVar14 = v_00;\n    if (*(u8 *)((int)in_a1 + (int)v_00) == '\0') {\n      do {\n        puVar14 = (u32 *)((int)puVar14 + 1);\n        if (puVar14 == (u32 *)p_01->nn) goto LAB_00066908;\n      } while (*(u8 *)((int)in_a1 + (int)puVar14) == '\0');\n      iVar4 = (int)puVar14 + (1 - (int)v_00);\n      v_00 = puVar14;\n    }\n    else {\n      iVar4 = 1;\n    }\n    pcVar20 = (code *)(PTR_LAB_00190b40 + -0x80);\n    pLvl->iLeafPgno = pLvl->iLeafPgno + iVar4;\n    iVar4 = (*pcVar20)(p_01->p + (int)v_00,&iVal);\n    iVar4 = iVar4 + (int)v_00;\n    v_00 = *(u32 **)((int)&pLvl->iRowid + 4);\n    iVar9 = *(int *)&pLvl->iRowid;\n    pLvl->iOff = iVar4;\n    iVar7 = pLvl->bEof;\n    *(u32 **)((int)&pLvl->iRowid + 4) = (u32 *)((int)v_00 + iVal._4_4_);\n    in_a1 = (i64 *)(iVar9 + iVal._0_4_);\n    *(u8 **)&pLvl->iRowid = (u8 *)((uint)((u32 *)((int)v_00 + iVal._4_4_) < v_00) + (int)in_a1);\n  }\n  else {\nLAB_00066908:\n    iVar7 = 1;\n    pLvl->bEof = 1;\n  }\n  if (puStack_14 == *(uint **)puVar2) {\n    return iVar7;\n  }\n  pcVar20 = fts5DoclistIterNext;\n  puVar11 = puStack_14;\n  puVar19 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  puStack_68 = puVar19 + 0x131f08;\n  puStack_40 = puVar2;\n  piVar16 = *(int **)(puVar19 + 0x12a40c);\n  pFVar8 = (Fts5Data *)*piVar16;\n  uVar15 = puVar11[4] + puVar11[6] + puVar11[5];\n  pFStack_4c = pFVar8;\n  pFStack_48 = pLvl;\n  pFStack_44 = p_01;\n  pcStack_3c = pcVar20;\n  if (uVar15 < *puVar11) {\n    iVar4 = (*(code *)(*(int *)(puVar19 + 0x12a128) + -0x80))(uVar15,&piStack_58);\n    pFVar8 = (Fts5Data *)puVar11[3];\n    p_01 = (Fts5Data *)(uVar15 + iVar4);\n    pFVar3 = (Fts5Data *)((int)&pFVar8->p + iStack_54);\n    puVar11[3] = (uint)pFVar3;\n    puVar11[2] = (uint)((int)piStack_58 + (uint)(pFVar3 < pFVar8) + puVar11[2]);\n    bVar6 = *(byte *)&p_01->p;\n    if ((char)bVar6 < '\0') {\n      in_a1 = (i64 *)&iStack_5c;\n      pFVar8 = p_01;\n      uVar15 = sqlite3Fts5GetVarint32((uchar *)p_01,(u32 *)in_a1);\n      puVar11[6] = uVar15;\n      puVar11[4] = (uint)p_01;\n      puVar11[5] = iStack_5c >> 1;\n    }\n    else {\n      puVar11[4] = (uint)p_01;\n      puVar11[5] = (uint)(bVar6 >> 1);\n      puVar11[6] = 1;\n      in_a1 = piStack_58;\n    }\n  }\n  else {\n    puVar11[4] = 0;\n  }\n  if (pFStack_4c == (Fts5Data *)*piVar16) {\n    return *piVar16;\n  }\n  pcVar20 = *(code **)(puStack_68 + -0x7b28);\n  pcVar21 = fts5SegIterLoadNPos;\n  (*pcVar20)();\n  piStack_80 = piVar16;\n  puStack_88 = puVar11;\n  pcStack_7c = pcVar21;\n  pFStack_84 = p_01;\n  piVar17 = *(int **)(pcVar20 + 0x12a2ec);\n  puVar14 = *(u32 **)((int)in_a1 + 0x14);\n  piVar16 = *(int **)((int)in_a1 + 0xc);\n  iStack_8c = *piVar17;\n  if (pFVar8[4].p == (u8 *)0x1) {\n    v_00 = (u32 *)piVar16[2];\n    *(u8 *)((int)in_a1 + 0x54) = '\0';\n    puVar10 = *(u32 **)(in_a1 + 5);\n    if ((int)v_00 <= (int)*(u32 **)(in_a1 + 5)) {\n      puVar10 = v_00;\n    }\n    v = (u32 *)(uint)((int)puVar14 < (int)puVar10);\n    puVar1 = (u8 *)(in_a1 + 10);\n    puVar1[0] = '\0';\n    puVar1[1] = '\0';\n    puVar1[2] = '\0';\n    puVar1[3] = '\x01';\n    if ((v != (u32 *)0x0) &&\n       (v = (u32 *)((int)puVar14 + 1), *(char *)(*piVar16 + (int)puVar14) == '\0')) {\n      *(u8 *)((int)in_a1 + 0x54) = '\x01';\n      if (((int)v < (int)puVar10) && (*(char *)(*piVar16 + (int)v) == '\0')) {\n        puVar14 = (u32 *)((int)puVar14 + 2);\n      }\n      else {\n        puVar1 = (u8 *)(in_a1 + 10);\n        puVar1[0] = '\0';\n        puVar1[1] = '\0';\n        puVar1[2] = '\0';\n        puVar1[3] = '\0';\n        puVar14 = v;\n      }\n    }\n  }\n  else {\n    bVar6 = *(byte *)(*piVar16 + (int)puVar14);\n    uStack_90 = (uint)bVar6;\n    v = (u32 *)(int)(char)bVar6;\n    if ((int)v < 0) {\n      v = &uStack_90;\n      piVar16 = (int *)(*piVar16 + (int)puVar14);\n      iVar4 = sqlite3Fts5GetVarint32((uchar *)piVar16,v);\n      puVar14 = (u32 *)((int)puVar14 + iVar4);\n      bVar6 = (byte)uStack_90;\n    }\n    else {\n      puVar14 = (u32 *)((int)puVar14 + 1);\n    }\n    *(byte *)((int)in_a1 + 0x54) = bVar6 & 1;\n    *(int *)(in_a1 + 10) = (int)uStack_90 >> 1;\n  }\n  iVar4 = *piVar17;\n  *(u32 **)((int)in_a1 + 0x14) = puVar14;\n  if (iStack_8c == iVar4) {\n    return iVar4;\n  }\n  pcVar20 = *(code **)(pcVar20 + 0x12a2c0);\n  (*pcVar20)();\n  pcStack_d8 = pcVar20 + 0x131ca0;\n  piVar16 = (int *)*piVar16;\n  p = (int *)*v;\n  puVar18 = *(undefined4 **)(pcVar20 + 0x12a1a4);\n  puVar11 = (uint *)*puVar18;\n  puVar10 = *(u32 **)(piVar16[3] + 0x30);\n  puStack_cc = puVar11;\n  piStack_c4 = in_a1;\n  puStack_c0 = puVar14;\n  piStack_bc = piVar17;\n  if (puVar10 == (u32 *)&SUB_00000002) {\n    if (p < (int *)v[1]) {\n      puVar10 = &uStack_d0;\n      iVar4 = sqlite3Fts5GetVarint32((uchar *)p,puVar10);\n      *v = *v + iVar4;\n      *v_00 = *v_00 + (uStack_d0 - 2);\n      goto LAB_00066d4c;\n    }\n  }\n  else if (p < (int *)v[1]) {\n    if (*(uchar *)p != '\x01') {\n      do {\n        puVar10 = &uStack_d0;\n        iVar4 = sqlite3Fts5GetVarint32((uchar *)p,&uStack_d0);\n        p = (int *)(*v + iVar4);\n        *v = (u32)p;\n        if ((int *)v[1] <= p) goto LAB_00066d48;\n      } while (*(uchar *)p != '\x01');\n    }\n    p = (int *)((int)p + 1);\n    iVar4 = sqlite3Fts5GetVarint32((uchar *)p,v_00);\n    *v = *v + iVar4 + 1;\n    puVar10 = v_00;\n    goto LAB_00066d4c;\n  }\nLAB_00066d48:\n  *v_00 = 0xffffffff;\nLAB_00066d4c:\n  puVar5 = (uint *)*puVar18;\n  if (puStack_cc == puVar5) {\n    return (int)puVar5;\n  }\n  pcVar20 = *(code **)(pcStack_d8 + -0x7b28);\n  pcVar22 = fts5NextRowid;\n  (*pcVar20)();\n  pcVar21 = pcVar20 + 0x131b28;\n  piVar17 = *(int **)(pcVar20 + 0x12a02c);\n  uVar15 = *puVar11;\n  iStack_f4 = *piVar17;\n  pcStack_ec = pcVar22;\n  if ((int)uVar15 < (int)puVar10) {\n    iVar4 = (*(code *)(*(int *)(pcVar20 + 0x129d48) + -0x80))\n                      ((uchar *)((int)p + uVar15),&piStack_100);\n    *puVar11 = iVar4 + uVar15;\n    uVar15 = piVar16[1];\n    uVar12 = uVar15 + iStack_fc;\n    p = (int *)(*piVar16 + (int)piStack_100);\n    piVar16[1] = uVar12;\n    *piVar16 = (int)((uint)(uVar12 < uVar15) + (int)p);\n    piVar16 = piStack_100;\n  }\n  else {\n    *puVar11 = 0xffffffff;\n    piVar16 = (int *)0x0;\n  }\n  if (iStack_f4 != *piVar17) {\n    pcVar20 = *(code **)(pcVar20 + 0x12a000);\n    (*pcVar20)();\n    pcVar20 = pcVar20 + 0x131a70;\n    uVar15 = *puVar11;\n    uVar12 = puVar11[1];\n    p_00 = (uchar *)(*p + *piVar16);\n    if (((uVar15 ^ (uint)pcVar21) & 0x7fffffff) != 0) {\n      *piVar16 = *piVar16 + 1;\n      *p_00 = '\x01';\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar4 = sqlite3PutVarint((uchar *)(*p + *piVar16),CONCAT44(pcVar20,in_stack_fffffec4));\n      }\n      else {\n        *(uchar *)(*p + *piVar16) = (uchar)pcVar21;\n        iVar4 = 1;\n      }\n      uVar15 = (uint)pcVar21 & 0x7fffffff;\n      uVar12 = 0;\n      *piVar16 = *piVar16 + iVar4;\n      *puVar11 = uVar15;\n      puVar11[1] = 0;\n      p_00 = (uchar *)(*p + *piVar16);\n    }\n    uVar12 = uStack_10c - uVar12;\n    uVar13 = uVar12 + 2;\n    if ((pcVar21 + (uint)(uVar13 < uVar12) + (-(uint)(uStack_10c < uVar12) - uVar15) == (code *)0x0)\n       && (uVar13 < 0x80)) {\n      *p_00 = (uchar)uVar13;\n      *piVar16 = *piVar16 + 1;\n      *puVar11 = (uint)pcVar21;\n      puVar11[1] = uStack_10c;\n      return 1;\n    }\n    iVar4 = sqlite3PutVarint(p_00,CONCAT44(pcVar20,in_stack_fffffec4));\n    *piVar16 = *piVar16 + iVar4;\n    *puVar11 = (uint)pcVar21;\n    puVar11[1] = uStack_10c;\n    return iVar4;\n  }\n  return *piVar17;\n}\n\n" (function_definition "int fts5DlidxLvlNext(Fts5DlidxLvl *pLvl)\n\n{\n  u8 *puVar1;\n  undefined *puVar2;\n  Fts5Data *pFVar3;\n  int iVar4;\n  byte bVar6;\n  uint *puVar5;\n  int iVar7;\n  Fts5Data *pFVar8;\n  int *p;\n  uchar *p_00;\n  i64 *in_a1;\n  int iVar9;\n  u32 *v;\n  u32 *puVar10;\n  u32 *v_00;\n  uint *puVar11;\n  uint uVar12;\n  uint uVar13;\n  u32 *puVar14;\n  uint uVar15;\n  Fts5Data *p_01;\n  int *piVar16;\n  int *piVar17;\n  undefined4 *puVar18;\n  undefined *puVar19;\n  code *pcVar20;\n  code *pcVar21;\n  code *pcVar22;\n  undefined4 in_stack_fffffec4;\n  uint uStack_10c;\n  int *piStack_100;\n  int iStack_fc;\n  int iStack_f4;\n  code *pcStack_ec;\n  code *pcStack_d8;\n  u32 uStack_d0;\n  uint *puStack_cc;\n  i64 *piStack_c4;\n  u32 *puStack_c0;\n  int *piStack_bc;\n  uint uStack_90;\n  int iStack_8c;\n  uint *puStack_88;\n  Fts5Data *pFStack_84;\n  int *piStack_80;\n  code *pcStack_7c;\n  undefined *puStack_68;\n  int iStack_5c;\n  i64 *piStack_58;\n  int iStack_54;\n  Fts5Data *pFStack_4c;\n  Fts5DlidxLvl *pFStack_48;\n  Fts5Data *pFStack_44;\n  undefined *puStack_40;\n  code *pcStack_3c;\n  i64 iVal;\n  uint *puStack_14;\n  \n  puVar2 = PTR___stack_chk_guard_00190e24;\n  v_00 = (u32 *)pLvl->iOff;\n  p_01 = pLvl->pData;\n  puStack_14 = *(uint **)PTR___stack_chk_guard_00190e24;\n  if (v_00 == (u32 *)0x0) {\n    pLvl->iOff = 1;\n    iVar4 = sqlite3Fts5GetVarint32(p_01->p + 1,(u32 *)&pLvl->iLeafPgno);\n    puVar19 = PTR_LAB_00190b40;\n    in_a1 = &pLvl->iRowid;\n    iVar4 = iVar4 + pLvl->iOff;\n    pLvl->iOff = iVar4;\n    iVar4 = (*(code *)(puVar19 + -0x80))(p_01->p + iVar4);\n    iVar7 = pLvl->bEof;\n    iVar4 = iVar4 + pLvl->iOff;\n    pLvl->iOff = iVar4;\n    pLvl->iFirstOff = iVar4;\n  }\n  else if ((int)v_00 < p_01->nn) {\n    in_a1 = (i64 *)p_01->p;\n    puVar14 = v_00;\n    if (*(u8 *)((int)in_a1 + (int)v_00) == '\0') {\n      do {\n        puVar14 = (u32 *)((int)puVar14 + 1);\n        if (puVar14 == (u32 *)p_01->nn) goto LAB_00066908;\n      } while (*(u8 *)((int)in_a1 + (int)puVar14) == '\0');\n      iVar4 = (int)puVar14 + (1 - (int)v_00);\n      v_00 = puVar14;\n    }\n    else {\n      iVar4 = 1;\n    }\n    pcVar20 = (code *)(PTR_LAB_00190b40 + -0x80);\n    pLvl->iLeafPgno = pLvl->iLeafPgno + iVar4;\n    iVar4 = (*pcVar20)(p_01->p + (int)v_00,&iVal);\n    iVar4 = iVar4 + (int)v_00;\n    v_00 = *(u32 **)((int)&pLvl->iRowid + 4);\n    iVar9 = *(int *)&pLvl->iRowid;\n    pLvl->iOff = iVar4;\n    iVar7 = pLvl->bEof;\n    *(u32 **)((int)&pLvl->iRowid + 4) = (u32 *)((int)v_00 + iVal._4_4_);\n    in_a1 = (i64 *)(iVar9 + iVal._0_4_);\n    *(u8 **)&pLvl->iRowid = (u8 *)((uint)((u32 *)((int)v_00 + iVal._4_4_) < v_00) + (int)in_a1);\n  }\n  else {\nLAB_00066908:\n    iVar7 = 1;\n    pLvl->bEof = 1;\n  }\n  if (puStack_14 == *(uint **)puVar2) {\n    return iVar7;\n  }\n  pcVar20 = fts5DoclistIterNext;\n  puVar11 = puStack_14;\n  puVar19 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  puStack_68 = puVar19 + 0x131f08;\n  puStack_40 = puVar2;\n  piVar16 = *(int **)(puVar19 + 0x12a40c);\n  pFVar8 = (Fts5Data *)*piVar16;\n  uVar15 = puVar11[4] + puVar11[6] + puVar11[5];\n  pFStack_4c = pFVar8;\n  pFStack_48 = pLvl;\n  pFStack_44 = p_01;\n  pcStack_3c = pcVar20;\n  if (uVar15 < *puVar11) {\n    iVar4 = (*(code *)(*(int *)(puVar19 + 0x12a128) + -0x80))(uVar15,&piStack_58);\n    pFVar8 = (Fts5Data *)puVar11[3];\n    p_01 = (Fts5Data *)(uVar15 + iVar4);\n    pFVar3 = (Fts5Data *)((int)&pFVar8->p + iStack_54);\n    puVar11[3] = (uint)pFVar3;\n    puVar11[2] = (uint)((int)piStack_58 + (uint)(pFVar3 < pFVar8) + puVar11[2]);\n    bVar6 = *(byte *)&p_01->p;\n    if ((char)bVar6 < '\0') {\n      in_a1 = (i64 *)&iStack_5c;\n      pFVar8 = p_01;\n      uVar15 = sqlite3Fts5GetVarint32((uchar *)p_01,(u32 *)in_a1);\n      puVar11[6] = uVar15;\n      puVar11[4] = (uint)p_01;\n      puVar11[5] = iStack_5c >> 1;\n    }\n    else {\n      puVar11[4] = (uint)p_01;\n      puVar11[5] = (uint)(bVar6 >> 1);\n      puVar11[6] = 1;\n      in_a1 = piStack_58;\n    }\n  }\n  else {\n    puVar11[4] = 0;\n  }\n  if (pFStack_4c == (Fts5Data *)*piVar16) {\n    return *piVar16;\n  }\n  pcVar20 = *(code **)(puStack_68 + -0x7b28);\n  pcVar21 = fts5SegIterLoadNPos;\n  (*pcVar20)();\n  piStack_80 = piVar16;\n  puStack_88 = puVar11;\n  pcStack_7c = pcVar21;\n  pFStack_84 = p_01;\n  piVar17 = *(int **)(pcVar20 + 0x12a2ec);\n  puVar14 = *(u32 **)((int)in_a1 + 0x14);\n  piVar16 = *(int **)((int)in_a1 + 0xc);\n  iStack_8c = *piVar17;\n  if (pFVar8[4].p == (u8 *)0x1) {\n    v_00 = (u32 *)piVar16[2];\n    *(u8 *)((int)in_a1 + 0x54) = '\0';\n    puVar10 = *(u32 **)(in_a1 + 5);\n    if ((int)v_00 <= (int)*(u32 **)(in_a1 + 5)) {\n      puVar10 = v_00;\n    }\n    v = (u32 *)(uint)((int)puVar14 < (int)puVar10);\n    puVar1 = (u8 *)(in_a1 + 10);\n    puVar1[0] = '\0';\n    puVar1[1] = '\0';\n    puVar1[2] = '\0';\n    puVar1[3] = '\x01';\n    if ((v != (u32 *)0x0) &&\n       (v = (u32 *)((int)puVar14 + 1), *(char *)(*piVar16 + (int)puVar14) == '\0')) {\n      *(u8 *)((int)in_a1 + 0x54) = '\x01';\n      if (((int)v < (int)puVar10) && (*(char *)(*piVar16 + (int)v) == '\0')) {\n        puVar14 = (u32 *)((int)puVar14 + 2);\n      }\n      else {\n        puVar1 = (u8 *)(in_a1 + 10);\n        puVar1[0] = '\0';\n        puVar1[1] = '\0';\n        puVar1[2] = '\0';\n        puVar1[3] = '\0';\n        puVar14 = v;\n      }\n    }\n  }\n  else {\n    bVar6 = *(byte *)(*piVar16 + (int)puVar14);\n    uStack_90 = (uint)bVar6;\n    v = (u32 *)(int)(char)bVar6;\n    if ((int)v < 0) {\n      v = &uStack_90;\n      piVar16 = (int *)(*piVar16 + (int)puVar14);\n      iVar4 = sqlite3Fts5GetVarint32((uchar *)piVar16,v);\n      puVar14 = (u32 *)((int)puVar14 + iVar4);\n      bVar6 = (byte)uStack_90;\n    }\n    else {\n      puVar14 = (u32 *)((int)puVar14 + 1);\n    }\n    *(byte *)((int)in_a1 + 0x54) = bVar6 & 1;\n    *(int *)(in_a1 + 10) = (int)uStack_90 >> 1;\n  }\n  iVar4 = *piVar17;\n  *(u32 **)((int)in_a1 + 0x14) = puVar14;\n  if (iStack_8c == iVar4) {\n    return iVar4;\n  }\n  pcVar20 = *(code **)(pcVar20 + 0x12a2c0);\n  (*pcVar20)();\n  pcStack_d8 = pcVar20 + 0x131ca0;\n  piVar16 = (int *)*piVar16;\n  p = (int *)*v;\n  puVar18 = *(undefined4 **)(pcVar20 + 0x12a1a4);\n  puVar11 = (uint *)*puVar18;\n  puVar10 = *(u32 **)(piVar16[3] + 0x30);\n  puStack_cc = puVar11;\n  piStack_c4 = in_a1;\n  puStack_c0 = puVar14;\n  piStack_bc = piVar17;\n  if (puVar10 == (u32 *)&SUB_00000002) {\n    if (p < (int *)v[1]) {\n      puVar10 = &uStack_d0;\n      iVar4 = sqlite3Fts5GetVarint32((uchar *)p,puVar10);\n      *v = *v + iVar4;\n      *v_00 = *v_00 + (uStack_d0 - 2);\n      goto LAB_00066d4c;\n    }\n  }\n  else if (p < (int *)v[1]) {\n    if (*(uchar *)p != '\x01') {\n      do {\n        puVar10 = &uStack_d0;\n        iVar4 = sqlite3Fts5GetVarint32((uchar *)p,&uStack_d0);\n        p = (int *)(*v + iVar4);\n        *v = (u32)p;\n        if ((int *)v[1] <= p) goto LAB_00066d48;\n      } while (*(uchar *)p != '\x01');\n    }\n    p = (int *)((int)p + 1);\n    iVar4 = sqlite3Fts5GetVarint32((uchar *)p,v_00);\n    *v = *v + iVar4 + 1;\n    puVar10 = v_00;\n    goto LAB_00066d4c;\n  }\nLAB_00066d48:\n  *v_00 = 0xffffffff;\nLAB_00066d4c:\n  puVar5 = (uint *)*puVar18;\n  if (puStack_cc == puVar5) {\n    return (int)puVar5;\n  }\n  pcVar20 = *(code **)(pcStack_d8 + -0x7b28);\n  pcVar22 = fts5NextRowid;\n  (*pcVar20)();\n  pcVar21 = pcVar20 + 0x131b28;\n  piVar17 = *(int **)(pcVar20 + 0x12a02c);\n  uVar15 = *puVar11;\n  iStack_f4 = *piVar17;\n  pcStack_ec = pcVar22;\n  if ((int)uVar15 < (int)puVar10) {\n    iVar4 = (*(code *)(*(int *)(pcVar20 + 0x129d48) + -0x80))\n                      ((uchar *)((int)p + uVar15),&piStack_100);\n    *puVar11 = iVar4 + uVar15;\n    uVar15 = piVar16[1];\n    uVar12 = uVar15 + iStack_fc;\n    p = (int *)(*piVar16 + (int)piStack_100);\n    piVar16[1] = uVar12;\n    *piVar16 = (int)((uint)(uVar12 < uVar15) + (int)p);\n    piVar16 = piStack_100;\n  }\n  else {\n    *puVar11 = 0xffffffff;\n    piVar16 = (int *)0x0;\n  }\n  if (iStack_f4 != *piVar17) {\n    pcVar20 = *(code **)(pcVar20 + 0x12a000);\n    (*pcVar20)();\n    pcVar20 = pcVar20 + 0x131a70;\n    uVar15 = *puVar11;\n    uVar12 = puVar11[1];\n    p_00 = (uchar *)(*p + *piVar16);\n    if (((uVar15 ^ (uint)pcVar21) & 0x7fffffff) != 0) {\n      *piVar16 = *piVar16 + 1;\n      *p_00 = '\x01';\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar4 = sqlite3PutVarint((uchar *)(*p + *piVar16),CONCAT44(pcVar20,in_stack_fffffec4));\n      }\n      else {\n        *(uchar *)(*p + *piVar16) = (uchar)pcVar21;\n        iVar4 = 1;\n      }\n      uVar15 = (uint)pcVar21 & 0x7fffffff;\n      uVar12 = 0;\n      *piVar16 = *piVar16 + iVar4;\n      *puVar11 = uVar15;\n      puVar11[1] = 0;\n      p_00 = (uchar *)(*p + *piVar16);\n    }\n    uVar12 = uStack_10c - uVar12;\n    uVar13 = uVar12 + 2;\n    if ((pcVar21 + (uint)(uVar13 < uVar12) + (-(uint)(uStack_10c < uVar12) - uVar15) == (code *)0x0)\n       && (uVar13 < 0x80)) {\n      *p_00 = (uchar)uVar13;\n      *piVar16 = *piVar16 + 1;\n      *puVar11 = (uint)pcVar21;\n      puVar11[1] = uStack_10c;\n      return 1;\n    }\n    iVar4 = sqlite3PutVarint(p_00,CONCAT44(pcVar20,in_stack_fffffec4));\n    *piVar16 = *piVar16 + iVar4;\n    *puVar11 = (uint)pcVar21;\n    puVar11[1] = uStack_10c;\n    return iVar4;\n  }\n  return *piVar17;\n}" primitive_type (function_declarator "fts5DlidxLvlNext(Fts5DlidxLvl *pLvl)" identifier (parameter_list "(Fts5DlidxLvl *pLvl)" ( (parameter_declaration "Fts5DlidxLvl *pLvl" type_identifier (pointer_declarator "*pLvl" * identifier)) ))) (compound_statement "{\n  u8 *puVar1;\n  undefined *puVar2;\n  Fts5Data *pFVar3;\n  int iVar4;\n  byte bVar6;\n  uint *puVar5;\n  int iVar7;\n  Fts5Data *pFVar8;\n  int *p;\n  uchar *p_00;\n  i64 *in_a1;\n  int iVar9;\n  u32 *v;\n  u32 *puVar10;\n  u32 *v_00;\n  uint *puVar11;\n  uint uVar12;\n  uint uVar13;\n  u32 *puVar14;\n  uint uVar15;\n  Fts5Data *p_01;\n  int *piVar16;\n  int *piVar17;\n  undefined4 *puVar18;\n  undefined *puVar19;\n  code *pcVar20;\n  code *pcVar21;\n  code *pcVar22;\n  undefined4 in_stack_fffffec4;\n  uint uStack_10c;\n  int *piStack_100;\n  int iStack_fc;\n  int iStack_f4;\n  code *pcStack_ec;\n  code *pcStack_d8;\n  u32 uStack_d0;\n  uint *puStack_cc;\n  i64 *piStack_c4;\n  u32 *puStack_c0;\n  int *piStack_bc;\n  uint uStack_90;\n  int iStack_8c;\n  uint *puStack_88;\n  Fts5Data *pFStack_84;\n  int *piStack_80;\n  code *pcStack_7c;\n  undefined *puStack_68;\n  int iStack_5c;\n  i64 *piStack_58;\n  int iStack_54;\n  Fts5Data *pFStack_4c;\n  Fts5DlidxLvl *pFStack_48;\n  Fts5Data *pFStack_44;\n  undefined *puStack_40;\n  code *pcStack_3c;\n  i64 iVal;\n  uint *puStack_14;\n  \n  puVar2 = PTR___stack_chk_guard_00190e24;\n  v_00 = (u32 *)pLvl->iOff;\n  p_01 = pLvl->pData;\n  puStack_14 = *(uint **)PTR___stack_chk_guard_00190e24;\n  if (v_00 == (u32 *)0x0) {\n    pLvl->iOff = 1;\n    iVar4 = sqlite3Fts5GetVarint32(p_01->p + 1,(u32 *)&pLvl->iLeafPgno);\n    puVar19 = PTR_LAB_00190b40;\n    in_a1 = &pLvl->iRowid;\n    iVar4 = iVar4 + pLvl->iOff;\n    pLvl->iOff = iVar4;\n    iVar4 = (*(code *)(puVar19 + -0x80))(p_01->p + iVar4);\n    iVar7 = pLvl->bEof;\n    iVar4 = iVar4 + pLvl->iOff;\n    pLvl->iOff = iVar4;\n    pLvl->iFirstOff = iVar4;\n  }\n  else if ((int)v_00 < p_01->nn) {\n    in_a1 = (i64 *)p_01->p;\n    puVar14 = v_00;\n    if (*(u8 *)((int)in_a1 + (int)v_00) == '\0') {\n      do {\n        puVar14 = (u32 *)((int)puVar14 + 1);\n        if (puVar14 == (u32 *)p_01->nn) goto LAB_00066908;\n      } while (*(u8 *)((int)in_a1 + (int)puVar14) == '\0');\n      iVar4 = (int)puVar14 + (1 - (int)v_00);\n      v_00 = puVar14;\n    }\n    else {\n      iVar4 = 1;\n    }\n    pcVar20 = (code *)(PTR_LAB_00190b40 + -0x80);\n    pLvl->iLeafPgno = pLvl->iLeafPgno + iVar4;\n    iVar4 = (*pcVar20)(p_01->p + (int)v_00,&iVal);\n    iVar4 = iVar4 + (int)v_00;\n    v_00 = *(u32 **)((int)&pLvl->iRowid + 4);\n    iVar9 = *(int *)&pLvl->iRowid;\n    pLvl->iOff = iVar4;\n    iVar7 = pLvl->bEof;\n    *(u32 **)((int)&pLvl->iRowid + 4) = (u32 *)((int)v_00 + iVal._4_4_);\n    in_a1 = (i64 *)(iVar9 + iVal._0_4_);\n    *(u8 **)&pLvl->iRowid = (u8 *)((uint)((u32 *)((int)v_00 + iVal._4_4_) < v_00) + (int)in_a1);\n  }\n  else {\nLAB_00066908:\n    iVar7 = 1;\n    pLvl->bEof = 1;\n  }\n  if (puStack_14 == *(uint **)puVar2) {\n    return iVar7;\n  }\n  pcVar20 = fts5DoclistIterNext;\n  puVar11 = puStack_14;\n  puVar19 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  puStack_68 = puVar19 + 0x131f08;\n  puStack_40 = puVar2;\n  piVar16 = *(int **)(puVar19 + 0x12a40c);\n  pFVar8 = (Fts5Data *)*piVar16;\n  uVar15 = puVar11[4] + puVar11[6] + puVar11[5];\n  pFStack_4c = pFVar8;\n  pFStack_48 = pLvl;\n  pFStack_44 = p_01;\n  pcStack_3c = pcVar20;\n  if (uVar15 < *puVar11) {\n    iVar4 = (*(code *)(*(int *)(puVar19 + 0x12a128) + -0x80))(uVar15,&piStack_58);\n    pFVar8 = (Fts5Data *)puVar11[3];\n    p_01 = (Fts5Data *)(uVar15 + iVar4);\n    pFVar3 = (Fts5Data *)((int)&pFVar8->p + iStack_54);\n    puVar11[3] = (uint)pFVar3;\n    puVar11[2] = (uint)((int)piStack_58 + (uint)(pFVar3 < pFVar8) + puVar11[2]);\n    bVar6 = *(byte *)&p_01->p;\n    if ((char)bVar6 < '\0') {\n      in_a1 = (i64 *)&iStack_5c;\n      pFVar8 = p_01;\n      uVar15 = sqlite3Fts5GetVarint32((uchar *)p_01,(u32 *)in_a1);\n      puVar11[6] = uVar15;\n      puVar11[4] = (uint)p_01;\n      puVar11[5] = iStack_5c >> 1;\n    }\n    else {\n      puVar11[4] = (uint)p_01;\n      puVar11[5] = (uint)(bVar6 >> 1);\n      puVar11[6] = 1;\n      in_a1 = piStack_58;\n    }\n  }\n  else {\n    puVar11[4] = 0;\n  }\n  if (pFStack_4c == (Fts5Data *)*piVar16) {\n    return *piVar16;\n  }\n  pcVar20 = *(code **)(puStack_68 + -0x7b28);\n  pcVar21 = fts5SegIterLoadNPos;\n  (*pcVar20)();\n  piStack_80 = piVar16;\n  puStack_88 = puVar11;\n  pcStack_7c = pcVar21;\n  pFStack_84 = p_01;\n  piVar17 = *(int **)(pcVar20 + 0x12a2ec);\n  puVar14 = *(u32 **)((int)in_a1 + 0x14);\n  piVar16 = *(int **)((int)in_a1 + 0xc);\n  iStack_8c = *piVar17;\n  if (pFVar8[4].p == (u8 *)0x1) {\n    v_00 = (u32 *)piVar16[2];\n    *(u8 *)((int)in_a1 + 0x54) = '\0';\n    puVar10 = *(u32 **)(in_a1 + 5);\n    if ((int)v_00 <= (int)*(u32 **)(in_a1 + 5)) {\n      puVar10 = v_00;\n    }\n    v = (u32 *)(uint)((int)puVar14 < (int)puVar10);\n    puVar1 = (u8 *)(in_a1 + 10);\n    puVar1[0] = '\0';\n    puVar1[1] = '\0';\n    puVar1[2] = '\0';\n    puVar1[3] = '\x01';\n    if ((v != (u32 *)0x0) &&\n       (v = (u32 *)((int)puVar14 + 1), *(char *)(*piVar16 + (int)puVar14) == '\0')) {\n      *(u8 *)((int)in_a1 + 0x54) = '\x01';\n      if (((int)v < (int)puVar10) && (*(char *)(*piVar16 + (int)v) == '\0')) {\n        puVar14 = (u32 *)((int)puVar14 + 2);\n      }\n      else {\n        puVar1 = (u8 *)(in_a1 + 10);\n        puVar1[0] = '\0';\n        puVar1[1] = '\0';\n        puVar1[2] = '\0';\n        puVar1[3] = '\0';\n        puVar14 = v;\n      }\n    }\n  }\n  else {\n    bVar6 = *(byte *)(*piVar16 + (int)puVar14);\n    uStack_90 = (uint)bVar6;\n    v = (u32 *)(int)(char)bVar6;\n    if ((int)v < 0) {\n      v = &uStack_90;\n      piVar16 = (int *)(*piVar16 + (int)puVar14);\n      iVar4 = sqlite3Fts5GetVarint32((uchar *)piVar16,v);\n      puVar14 = (u32 *)((int)puVar14 + iVar4);\n      bVar6 = (byte)uStack_90;\n    }\n    else {\n      puVar14 = (u32 *)((int)puVar14 + 1);\n    }\n    *(byte *)((int)in_a1 + 0x54) = bVar6 & 1;\n    *(int *)(in_a1 + 10) = (int)uStack_90 >> 1;\n  }\n  iVar4 = *piVar17;\n  *(u32 **)((int)in_a1 + 0x14) = puVar14;\n  if (iStack_8c == iVar4) {\n    return iVar4;\n  }\n  pcVar20 = *(code **)(pcVar20 + 0x12a2c0);\n  (*pcVar20)();\n  pcStack_d8 = pcVar20 + 0x131ca0;\n  piVar16 = (int *)*piVar16;\n  p = (int *)*v;\n  puVar18 = *(undefined4 **)(pcVar20 + 0x12a1a4);\n  puVar11 = (uint *)*puVar18;\n  puVar10 = *(u32 **)(piVar16[3] + 0x30);\n  puStack_cc = puVar11;\n  piStack_c4 = in_a1;\n  puStack_c0 = puVar14;\n  piStack_bc = piVar17;\n  if (puVar10 == (u32 *)&SUB_00000002) {\n    if (p < (int *)v[1]) {\n      puVar10 = &uStack_d0;\n      iVar4 = sqlite3Fts5GetVarint32((uchar *)p,puVar10);\n      *v = *v + iVar4;\n      *v_00 = *v_00 + (uStack_d0 - 2);\n      goto LAB_00066d4c;\n    }\n  }\n  else if (p < (int *)v[1]) {\n    if (*(uchar *)p != '\x01') {\n      do {\n        puVar10 = &uStack_d0;\n        iVar4 = sqlite3Fts5GetVarint32((uchar *)p,&uStack_d0);\n        p = (int *)(*v + iVar4);\n        *v = (u32)p;\n        if ((int *)v[1] <= p) goto LAB_00066d48;\n      } while (*(uchar *)p != '\x01');\n    }\n    p = (int *)((int)p + 1);\n    iVar4 = sqlite3Fts5GetVarint32((uchar *)p,v_00);\n    *v = *v + iVar4 + 1;\n    puVar10 = v_00;\n    goto LAB_00066d4c;\n  }\nLAB_00066d48:\n  *v_00 = 0xffffffff;\nLAB_00066d4c:\n  puVar5 = (uint *)*puVar18;\n  if (puStack_cc == puVar5) {\n    return (int)puVar5;\n  }\n  pcVar20 = *(code **)(pcStack_d8 + -0x7b28);\n  pcVar22 = fts5NextRowid;\n  (*pcVar20)();\n  pcVar21 = pcVar20 + 0x131b28;\n  piVar17 = *(int **)(pcVar20 + 0x12a02c);\n  uVar15 = *puVar11;\n  iStack_f4 = *piVar17;\n  pcStack_ec = pcVar22;\n  if ((int)uVar15 < (int)puVar10) {\n    iVar4 = (*(code *)(*(int *)(pcVar20 + 0x129d48) + -0x80))\n                      ((uchar *)((int)p + uVar15),&piStack_100);\n    *puVar11 = iVar4 + uVar15;\n    uVar15 = piVar16[1];\n    uVar12 = uVar15 + iStack_fc;\n    p = (int *)(*piVar16 + (int)piStack_100);\n    piVar16[1] = uVar12;\n    *piVar16 = (int)((uint)(uVar12 < uVar15) + (int)p);\n    piVar16 = piStack_100;\n  }\n  else {\n    *puVar11 = 0xffffffff;\n    piVar16 = (int *)0x0;\n  }\n  if (iStack_f4 != *piVar17) {\n    pcVar20 = *(code **)(pcVar20 + 0x12a000);\n    (*pcVar20)();\n    pcVar20 = pcVar20 + 0x131a70;\n    uVar15 = *puVar11;\n    uVar12 = puVar11[1];\n    p_00 = (uchar *)(*p + *piVar16);\n    if (((uVar15 ^ (uint)pcVar21) & 0x7fffffff) != 0) {\n      *piVar16 = *piVar16 + 1;\n      *p_00 = '\x01';\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar4 = sqlite3PutVarint((uchar *)(*p + *piVar16),CONCAT44(pcVar20,in_stack_fffffec4));\n      }\n      else {\n        *(uchar *)(*p + *piVar16) = (uchar)pcVar21;\n        iVar4 = 1;\n      }\n      uVar15 = (uint)pcVar21 & 0x7fffffff;\n      uVar12 = 0;\n      *piVar16 = *piVar16 + iVar4;\n      *puVar11 = uVar15;\n      puVar11[1] = 0;\n      p_00 = (uchar *)(*p + *piVar16);\n    }\n    uVar12 = uStack_10c - uVar12;\n    uVar13 = uVar12 + 2;\n    if ((pcVar21 + (uint)(uVar13 < uVar12) + (-(uint)(uStack_10c < uVar12) - uVar15) == (code *)0x0)\n       && (uVar13 < 0x80)) {\n      *p_00 = (uchar)uVar13;\n      *piVar16 = *piVar16 + 1;\n      *puVar11 = (uint)pcVar21;\n      puVar11[1] = uStack_10c;\n      return 1;\n    }\n    iVar4 = sqlite3PutVarint(p_00,CONCAT44(pcVar20,in_stack_fffffec4));\n    *piVar16 = *piVar16 + iVar4;\n    *puVar11 = (uint)pcVar21;\n    puVar11[1] = uStack_10c;\n    return iVar4;\n  }\n  return *piVar17;\n}" { (declaration "u8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "Fts5Data *pFVar3;" type_identifier (pointer_declarator "*pFVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "Fts5Data *pFVar8;" type_identifier (pointer_declarator "*pFVar8" * identifier) ;) (declaration "int *p;" primitive_type (pointer_declarator "*p" * identifier) ;) (declaration "uchar *p_00;" type_identifier (pointer_declarator "*p_00" * identifier) ;) (declaration "i64 *in_a1;" type_identifier (pointer_declarator "*in_a1" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "u32 *v;" type_identifier (pointer_declarator "*v" * identifier) ;) (declaration "u32 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "u32 *v_00;" type_identifier (pointer_declarator "*v_00" * identifier) ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "u32 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "Fts5Data *p_01;" type_identifier (pointer_declarator "*p_01" * identifier) ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "undefined4 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "undefined *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "code *pcVar20;" type_identifier (pointer_declarator "*pcVar20" * identifier) ;) (declaration "code *pcVar21;" type_identifier (pointer_declarator "*pcVar21" * identifier) ;) (declaration "code *pcVar22;" type_identifier (pointer_declarator "*pcVar22" * identifier) ;) (declaration "undefined4 in_stack_fffffec4;" type_identifier identifier ;) (declaration "uint uStack_10c;" type_identifier identifier ;) (declaration "int *piStack_100;" primitive_type (pointer_declarator "*piStack_100" * identifier) ;) (declaration "int iStack_fc;" primitive_type identifier ;) (declaration "int iStack_f4;" primitive_type identifier ;) (declaration "code *pcStack_ec;" type_identifier (pointer_declarator "*pcStack_ec" * identifier) ;) (declaration "code *pcStack_d8;" type_identifier (pointer_declarator "*pcStack_d8" * identifier) ;) (declaration "u32 uStack_d0;" type_identifier identifier ;) (declaration "uint *puStack_cc;" type_identifier (pointer_declarator "*puStack_cc" * identifier) ;) (declaration "i64 *piStack_c4;" type_identifier (pointer_declarator "*piStack_c4" * identifier) ;) (declaration "u32 *puStack_c0;" type_identifier (pointer_declarator "*puStack_c0" * identifier) ;) (declaration "int *piStack_bc;" primitive_type (pointer_declarator "*piStack_bc" * identifier) ;) (declaration "uint uStack_90;" type_identifier identifier ;) (declaration "int iStack_8c;" primitive_type identifier ;) (declaration "uint *puStack_88;" type_identifier (pointer_declarator "*puStack_88" * identifier) ;) (declaration "Fts5Data *pFStack_84;" type_identifier (pointer_declarator "*pFStack_84" * identifier) ;) (declaration "int *piStack_80;" primitive_type (pointer_declarator "*piStack_80" * identifier) ;) (declaration "code *pcStack_7c;" type_identifier (pointer_declarator "*pcStack_7c" * identifier) ;) (declaration "undefined *puStack_68;" type_identifier (pointer_declarator "*puStack_68" * identifier) ;) (declaration "int iStack_5c;" primitive_type identifier ;) (declaration "i64 *piStack_58;" type_identifier (pointer_declarator "*piStack_58" * identifier) ;) (declaration "int iStack_54;" primitive_type identifier ;) (declaration "Fts5Data *pFStack_4c;" type_identifier (pointer_declarator "*pFStack_4c" * identifier) ;) (declaration "Fts5DlidxLvl *pFStack_48;" type_identifier (pointer_declarator "*pFStack_48" * identifier) ;) (declaration "Fts5Data *pFStack_44;" type_identifier (pointer_declarator "*pFStack_44" * identifier) ;) (declaration "undefined *puStack_40;" type_identifier (pointer_declarator "*puStack_40" * identifier) ;) (declaration "code *pcStack_3c;" type_identifier (pointer_declarator "*pcStack_3c" * identifier) ;) (declaration "i64 iVal;" type_identifier identifier ;) (declaration "uint *puStack_14;" type_identifier (pointer_declarator "*puStack_14" * identifier) ;) (expression_statement "puVar2 = PTR___stack_chk_guard_00190e24;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00190e24" identifier = identifier) ;) (expression_statement "v_00 = (u32 *)pLvl->iOff;" (assignment_expression "v_00 = (u32 *)pLvl->iOff" identifier = (cast_expression "(u32 *)pLvl->iOff" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pLvl->iOff" identifier -> field_identifier))) ;) (expression_statement "p_01 = pLvl->pData;" (assignment_expression "p_01 = pLvl->pData" identifier = (field_expression "pLvl->pData" identifier -> field_identifier)) ;) (expression_statement "puStack_14 = *(uint **)PTR___stack_chk_guard_00190e24;" (assignment_expression "puStack_14 = *(uint **)PTR___stack_chk_guard_00190e24" identifier = (pointer_expression "*(uint **)PTR___stack_chk_guard_00190e24" * (cast_expression "(uint **)PTR___stack_chk_guard_00190e24" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (v_00 == (u32 *)0x0) {\n    pLvl->iOff = 1;\n    iVar4 = sqlite3Fts5GetVarint32(p_01->p + 1,(u32 *)&pLvl->iLeafPgno);\n    puVar19 = PTR_LAB_00190b40;\n    in_a1 = &pLvl->iRowid;\n    iVar4 = iVar4 + pLvl->iOff;\n    pLvl->iOff = iVar4;\n    iVar4 = (*(code *)(puVar19 + -0x80))(p_01->p + iVar4);\n    iVar7 = pLvl->bEof;\n    iVar4 = iVar4 + pLvl->iOff;\n    pLvl->iOff = iVar4;\n    pLvl->iFirstOff = iVar4;\n  }\n  else if ((int)v_00 < p_01->nn) {\n    in_a1 = (i64 *)p_01->p;\n    puVar14 = v_00;\n    if (*(u8 *)((int)in_a1 + (int)v_00) == '\0') {\n      do {\n        puVar14 = (u32 *)((int)puVar14 + 1);\n        if (puVar14 == (u32 *)p_01->nn) goto LAB_00066908;\n      } while (*(u8 *)((int)in_a1 + (int)puVar14) == '\0');\n      iVar4 = (int)puVar14 + (1 - (int)v_00);\n      v_00 = puVar14;\n    }\n    else {\n      iVar4 = 1;\n    }\n    pcVar20 = (code *)(PTR_LAB_00190b40 + -0x80);\n    pLvl->iLeafPgno = pLvl->iLeafPgno + iVar4;\n    iVar4 = (*pcVar20)(p_01->p + (int)v_00,&iVal);\n    iVar4 = iVar4 + (int)v_00;\n    v_00 = *(u32 **)((int)&pLvl->iRowid + 4);\n    iVar9 = *(int *)&pLvl->iRowid;\n    pLvl->iOff = iVar4;\n    iVar7 = pLvl->bEof;\n    *(u32 **)((int)&pLvl->iRowid + 4) = (u32 *)((int)v_00 + iVal._4_4_);\n    in_a1 = (i64 *)(iVar9 + iVal._0_4_);\n    *(u8 **)&pLvl->iRowid = (u8 *)((uint)((u32 *)((int)v_00 + iVal._4_4_) < v_00) + (int)in_a1);\n  }\n  else {\nLAB_00066908:\n    iVar7 = 1;\n    pLvl->bEof = 1;\n  }" if (parenthesized_expression "(v_00 == (u32 *)0x0)" ( (binary_expression "v_00 == (u32 *)0x0" identifier == (cast_expression "(u32 *)0x0" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pLvl->iOff = 1;\n    iVar4 = sqlite3Fts5GetVarint32(p_01->p + 1,(u32 *)&pLvl->iLeafPgno);\n    puVar19 = PTR_LAB_00190b40;\n    in_a1 = &pLvl->iRowid;\n    iVar4 = iVar4 + pLvl->iOff;\n    pLvl->iOff = iVar4;\n    iVar4 = (*(code *)(puVar19 + -0x80))(p_01->p + iVar4);\n    iVar7 = pLvl->bEof;\n    iVar4 = iVar4 + pLvl->iOff;\n    pLvl->iOff = iVar4;\n    pLvl->iFirstOff = iVar4;\n  }" { (expression_statement "pLvl->iOff = 1;" (assignment_expression "pLvl->iOff = 1" (field_expression "pLvl->iOff" identifier -> field_identifier) = number_literal) ;) (expression_statement "iVar4 = sqlite3Fts5GetVarint32(p_01->p + 1,(u32 *)&pLvl->iLeafPgno);" (assignment_expression "iVar4 = sqlite3Fts5GetVarint32(p_01->p + 1,(u32 *)&pLvl->iLeafPgno)" identifier = (call_expression "sqlite3Fts5GetVarint32(p_01->p + 1,(u32 *)&pLvl->iLeafPgno)" identifier (argument_list "(p_01->p + 1,(u32 *)&pLvl->iLeafPgno)" ( (binary_expression "p_01->p + 1" (field_expression "p_01->p" identifier -> field_identifier) + number_literal) , (cast_expression "(u32 *)&pLvl->iLeafPgno" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pLvl->iLeafPgno" & (field_expression "pLvl->iLeafPgno" identifier -> field_identifier))) )))) ;) (expression_statement "puVar19 = PTR_LAB_00190b40;" (assignment_expression "puVar19 = PTR_LAB_00190b40" identifier = identifier) ;) (expression_statement "in_a1 = &pLvl->iRowid;" (assignment_expression "in_a1 = &pLvl->iRowid" identifier = (pointer_expression "&pLvl->iRowid" & (field_expression "pLvl->iRowid" identifier -> field_identifier))) ;) (expression_statement "iVar4 = iVar4 + pLvl->iOff;" (assignment_expression "iVar4 = iVar4 + pLvl->iOff" identifier = (binary_expression "iVar4 + pLvl->iOff" identifier + (field_expression "pLvl->iOff" identifier -> field_identifier))) ;) (expression_statement "pLvl->iOff = iVar4;" (assignment_expression "pLvl->iOff = iVar4" (field_expression "pLvl->iOff" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar4 = (*(code *)(puVar19 + -0x80))(p_01->p + iVar4);" (assignment_expression "iVar4 = (*(code *)(puVar19 + -0x80))(p_01->p + iVar4)" identifier = (call_expression "(*(code *)(puVar19 + -0x80))(p_01->p + iVar4)" (parenthesized_expression "(*(code *)(puVar19 + -0x80))" ( (pointer_expression "*(code *)(puVar19 + -0x80)" * (cast_expression "(code *)(puVar19 + -0x80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x80)" ( (binary_expression "puVar19 + -0x80" identifier + number_literal) )))) )) (argument_list "(p_01->p + iVar4)" ( (binary_expression "p_01->p + iVar4" (field_expression "p_01->p" identifier -> field_identifier) + identifier) )))) ;) (expression_statement "iVar7 = pLvl->bEof;" (assignment_expression "iVar7 = pLvl->bEof" identifier = (field_expression "pLvl->bEof" identifier -> field_identifier)) ;) (expression_statement "iVar4 = iVar4 + pLvl->iOff;" (assignment_expression "iVar4 = iVar4 + pLvl->iOff" identifier = (binary_expression "iVar4 + pLvl->iOff" identifier + (field_expression "pLvl->iOff" identifier -> field_identifier))) ;) (expression_statement "pLvl->iOff = iVar4;" (assignment_expression "pLvl->iOff = iVar4" (field_expression "pLvl->iOff" identifier -> field_identifier) = identifier) ;) (expression_statement "pLvl->iFirstOff = iVar4;" (assignment_expression "pLvl->iFirstOff = iVar4" (field_expression "pLvl->iFirstOff" identifier -> field_identifier) = identifier) ;) }) (else_clause "else if ((int)v_00 < p_01->nn) {\n    in_a1 = (i64 *)p_01->p;\n    puVar14 = v_00;\n    if (*(u8 *)((int)in_a1 + (int)v_00) == '\0') {\n      do {\n        puVar14 = (u32 *)((int)puVar14 + 1);\n        if (puVar14 == (u32 *)p_01->nn) goto LAB_00066908;\n      } while (*(u8 *)((int)in_a1 + (int)puVar14) == '\0');\n      iVar4 = (int)puVar14 + (1 - (int)v_00);\n      v_00 = puVar14;\n    }\n    else {\n      iVar4 = 1;\n    }\n    pcVar20 = (code *)(PTR_LAB_00190b40 + -0x80);\n    pLvl->iLeafPgno = pLvl->iLeafPgno + iVar4;\n    iVar4 = (*pcVar20)(p_01->p + (int)v_00,&iVal);\n    iVar4 = iVar4 + (int)v_00;\n    v_00 = *(u32 **)((int)&pLvl->iRowid + 4);\n    iVar9 = *(int *)&pLvl->iRowid;\n    pLvl->iOff = iVar4;\n    iVar7 = pLvl->bEof;\n    *(u32 **)((int)&pLvl->iRowid + 4) = (u32 *)((int)v_00 + iVal._4_4_);\n    in_a1 = (i64 *)(iVar9 + iVal._0_4_);\n    *(u8 **)&pLvl->iRowid = (u8 *)((uint)((u32 *)((int)v_00 + iVal._4_4_) < v_00) + (int)in_a1);\n  }\n  else {\nLAB_00066908:\n    iVar7 = 1;\n    pLvl->bEof = 1;\n  }" else (if_statement "if ((int)v_00 < p_01->nn) {\n    in_a1 = (i64 *)p_01->p;\n    puVar14 = v_00;\n    if (*(u8 *)((int)in_a1 + (int)v_00) == '\0') {\n      do {\n        puVar14 = (u32 *)((int)puVar14 + 1);\n        if (puVar14 == (u32 *)p_01->nn) goto LAB_00066908;\n      } while (*(u8 *)((int)in_a1 + (int)puVar14) == '\0');\n      iVar4 = (int)puVar14 + (1 - (int)v_00);\n      v_00 = puVar14;\n    }\n    else {\n      iVar4 = 1;\n    }\n    pcVar20 = (code *)(PTR_LAB_00190b40 + -0x80);\n    pLvl->iLeafPgno = pLvl->iLeafPgno + iVar4;\n    iVar4 = (*pcVar20)(p_01->p + (int)v_00,&iVal);\n    iVar4 = iVar4 + (int)v_00;\n    v_00 = *(u32 **)((int)&pLvl->iRowid + 4);\n    iVar9 = *(int *)&pLvl->iRowid;\n    pLvl->iOff = iVar4;\n    iVar7 = pLvl->bEof;\n    *(u32 **)((int)&pLvl->iRowid + 4) = (u32 *)((int)v_00 + iVal._4_4_);\n    in_a1 = (i64 *)(iVar9 + iVal._0_4_);\n    *(u8 **)&pLvl->iRowid = (u8 *)((uint)((u32 *)((int)v_00 + iVal._4_4_) < v_00) + (int)in_a1);\n  }\n  else {\nLAB_00066908:\n    iVar7 = 1;\n    pLvl->bEof = 1;\n  }" if (parenthesized_expression "((int)v_00 < p_01->nn)" ( (binary_expression "(int)v_00 < p_01->nn" (cast_expression "(int)v_00" ( (type_descriptor "int" primitive_type) ) identifier) < (field_expression "p_01->nn" identifier -> field_identifier)) )) (compound_statement "{\n    in_a1 = (i64 *)p_01->p;\n    puVar14 = v_00;\n    if (*(u8 *)((int)in_a1 + (int)v_00) == '\0') {\n      do {\n        puVar14 = (u32 *)((int)puVar14 + 1);\n        if (puVar14 == (u32 *)p_01->nn) goto LAB_00066908;\n      } while (*(u8 *)((int)in_a1 + (int)puVar14) == '\0');\n      iVar4 = (int)puVar14 + (1 - (int)v_00);\n      v_00 = puVar14;\n    }\n    else {\n      iVar4 = 1;\n    }\n    pcVar20 = (code *)(PTR_LAB_00190b40 + -0x80);\n    pLvl->iLeafPgno = pLvl->iLeafPgno + iVar4;\n    iVar4 = (*pcVar20)(p_01->p + (int)v_00,&iVal);\n    iVar4 = iVar4 + (int)v_00;\n    v_00 = *(u32 **)((int)&pLvl->iRowid + 4);\n    iVar9 = *(int *)&pLvl->iRowid;\n    pLvl->iOff = iVar4;\n    iVar7 = pLvl->bEof;\n    *(u32 **)((int)&pLvl->iRowid + 4) = (u32 *)((int)v_00 + iVal._4_4_);\n    in_a1 = (i64 *)(iVar9 + iVal._0_4_);\n    *(u8 **)&pLvl->iRowid = (u8 *)((uint)((u32 *)((int)v_00 + iVal._4_4_) < v_00) + (int)in_a1);\n  }" { (expression_statement "in_a1 = (i64 *)p_01->p;" (assignment_expression "in_a1 = (i64 *)p_01->p" identifier = (cast_expression "(i64 *)p_01->p" ( (type_descriptor "i64 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_01->p" identifier -> field_identifier))) ;) (expression_statement "puVar14 = v_00;" (assignment_expression "puVar14 = v_00" identifier = identifier) ;) (if_statement "if (*(u8 *)((int)in_a1 + (int)v_00) == '\0') {\n      do {\n        puVar14 = (u32 *)((int)puVar14 + 1);\n        if (puVar14 == (u32 *)p_01->nn) goto LAB_00066908;\n      } while (*(u8 *)((int)in_a1 + (int)puVar14) == '\0');\n      iVar4 = (int)puVar14 + (1 - (int)v_00);\n      v_00 = puVar14;\n    }\n    else {\n      iVar4 = 1;\n    }" if (parenthesized_expression "(*(u8 *)((int)in_a1 + (int)v_00) == '\0')" ( (binary_expression "*(u8 *)((int)in_a1 + (int)v_00) == '\0'" (pointer_expression "*(u8 *)((int)in_a1 + (int)v_00)" * (cast_expression "(u8 *)((int)in_a1 + (int)v_00)" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)in_a1 + (int)v_00)" ( (binary_expression "(int)in_a1 + (int)v_00" (cast_expression "(int)in_a1" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)v_00" ( (type_descriptor "int" primitive_type) ) identifier)) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      do {\n        puVar14 = (u32 *)((int)puVar14 + 1);\n        if (puVar14 == (u32 *)p_01->nn) goto LAB_00066908;\n      } while (*(u8 *)((int)in_a1 + (int)puVar14) == '\0');\n      iVar4 = (int)puVar14 + (1 - (int)v_00);\n      v_00 = puVar14;\n    }" { (do_statement "do {\n        puVar14 = (u32 *)((int)puVar14 + 1);\n        if (puVar14 == (u32 *)p_01->nn) goto LAB_00066908;\n      } while (*(u8 *)((int)in_a1 + (int)puVar14) == '\0');" do (compound_statement "{\n        puVar14 = (u32 *)((int)puVar14 + 1);\n        if (puVar14 == (u32 *)p_01->nn) goto LAB_00066908;\n      }" { (expression_statement "puVar14 = (u32 *)((int)puVar14 + 1);" (assignment_expression "puVar14 = (u32 *)((int)puVar14 + 1)" identifier = (cast_expression "(u32 *)((int)puVar14 + 1)" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar14 + 1)" ( (binary_expression "(int)puVar14 + 1" (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (puVar14 == (u32 *)p_01->nn) goto LAB_00066908;" if (parenthesized_expression "(puVar14 == (u32 *)p_01->nn)" ( (binary_expression "puVar14 == (u32 *)p_01->nn" identifier == (cast_expression "(u32 *)p_01->nn" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_01->nn" identifier -> field_identifier))) )) (goto_statement "goto LAB_00066908;" goto statement_identifier ;)) }) while (parenthesized_expression "(*(u8 *)((int)in_a1 + (int)puVar14) == '\0')" ( (binary_expression "*(u8 *)((int)in_a1 + (int)puVar14) == '\0'" (pointer_expression "*(u8 *)((int)in_a1 + (int)puVar14)" * (cast_expression "(u8 *)((int)in_a1 + (int)puVar14)" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)in_a1 + (int)puVar14)" ( (binary_expression "(int)in_a1 + (int)puVar14" (cast_expression "(int)in_a1" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )))) == (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "iVar4 = (int)puVar14 + (1 - (int)v_00);" (assignment_expression "iVar4 = (int)puVar14 + (1 - (int)v_00)" identifier = (binary_expression "(int)puVar14 + (1 - (int)v_00)" (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(1 - (int)v_00)" ( (binary_expression "1 - (int)v_00" number_literal - (cast_expression "(int)v_00" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "v_00 = puVar14;" (assignment_expression "v_00 = puVar14" identifier = identifier) ;) }) (else_clause "else {\n      iVar4 = 1;\n    }" else (compound_statement "{\n      iVar4 = 1;\n    }" { (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) }))) (expression_statement "pcVar20 = (code *)(PTR_LAB_00190b40 + -0x80);" (assignment_expression "pcVar20 = (code *)(PTR_LAB_00190b40 + -0x80)" identifier = (cast_expression "(code *)(PTR_LAB_00190b40 + -0x80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190b40 + -0x80)" ( (binary_expression "PTR_LAB_00190b40 + -0x80" identifier + number_literal) )))) ;) (expression_statement "pLvl->iLeafPgno = pLvl->iLeafPgno + iVar4;" (assignment_expression "pLvl->iLeafPgno = pLvl->iLeafPgno + iVar4" (field_expression "pLvl->iLeafPgno" identifier -> field_identifier) = (binary_expression "pLvl->iLeafPgno + iVar4" (field_expression "pLvl->iLeafPgno" identifier -> field_identifier) + identifier)) ;) (expression_statement "iVar4 = (*pcVar20)(p_01->p + (int)v_00,&iVal);" (assignment_expression "iVar4 = (*pcVar20)(p_01->p + (int)v_00,&iVal)" identifier = (call_expression "(*pcVar20)(p_01->p + (int)v_00,&iVal)" (parenthesized_expression "(*pcVar20)" ( (pointer_expression "*pcVar20" * identifier) )) (argument_list "(p_01->p + (int)v_00,&iVal)" ( (binary_expression "p_01->p + (int)v_00" (field_expression "p_01->p" identifier -> field_identifier) + (cast_expression "(int)v_00" ( (type_descriptor "int" primitive_type) ) identifier)) , (pointer_expression "&iVal" & identifier) )))) ;) (expression_statement "iVar4 = iVar4 + (int)v_00;" (assignment_expression "iVar4 = iVar4 + (int)v_00" identifier = (binary_expression "iVar4 + (int)v_00" identifier + (cast_expression "(int)v_00" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "v_00 = *(u32 **)((int)&pLvl->iRowid + 4);" (assignment_expression "v_00 = *(u32 **)((int)&pLvl->iRowid + 4)" identifier = (pointer_expression "*(u32 **)((int)&pLvl->iRowid + 4)" * (cast_expression "(u32 **)((int)&pLvl->iRowid + 4)" ( (type_descriptor "u32 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)&pLvl->iRowid + 4)" ( (binary_expression "(int)&pLvl->iRowid + 4" (cast_expression "(int)&pLvl->iRowid" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pLvl->iRowid" & (field_expression "pLvl->iRowid" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "iVar9 = *(int *)&pLvl->iRowid;" (assignment_expression "iVar9 = *(int *)&pLvl->iRowid" identifier = (pointer_expression "*(int *)&pLvl->iRowid" * (cast_expression "(int *)&pLvl->iRowid" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pLvl->iRowid" & (field_expression "pLvl->iRowid" identifier -> field_identifier))))) ;) (expression_statement "pLvl->iOff = iVar4;" (assignment_expression "pLvl->iOff = iVar4" (field_expression "pLvl->iOff" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar7 = pLvl->bEof;" (assignment_expression "iVar7 = pLvl->bEof" identifier = (field_expression "pLvl->bEof" identifier -> field_identifier)) ;) (expression_statement "*(u32 **)((int)&pLvl->iRowid + 4) = (u32 *)((int)v_00 + iVal._4_4_);" (assignment_expression "*(u32 **)((int)&pLvl->iRowid + 4) = (u32 *)((int)v_00 + iVal._4_4_)" (pointer_expression "*(u32 **)((int)&pLvl->iRowid + 4)" * (cast_expression "(u32 **)((int)&pLvl->iRowid + 4)" ( (type_descriptor "u32 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)&pLvl->iRowid + 4)" ( (binary_expression "(int)&pLvl->iRowid + 4" (cast_expression "(int)&pLvl->iRowid" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pLvl->iRowid" & (field_expression "pLvl->iRowid" identifier -> field_identifier))) + number_literal) )))) = (cast_expression "(u32 *)((int)v_00 + iVal._4_4_)" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)v_00 + iVal._4_4_)" ( (binary_expression "(int)v_00 + iVal._4_4_" (cast_expression "(int)v_00" ( (type_descriptor "int" primitive_type) ) identifier) + (field_expression "iVal._4_4_" identifier . field_identifier)) )))) ;) (expression_statement "in_a1 = (i64 *)(iVar9 + iVal._0_4_);" (assignment_expression "in_a1 = (i64 *)(iVar9 + iVal._0_4_)" identifier = (cast_expression "(i64 *)(iVar9 + iVal._0_4_)" ( (type_descriptor "i64 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + iVal._0_4_)" ( (binary_expression "iVar9 + iVal._0_4_" identifier + (field_expression "iVal._0_4_" identifier . field_identifier)) )))) ;) (expression_statement "*(u8 **)&pLvl->iRowid = (u8 *)((uint)((u32 *)((int)v_00 + iVal._4_4_) < v_00) + (int)in_a1);" (assignment_expression "*(u8 **)&pLvl->iRowid = (u8 *)((uint)((u32 *)((int)v_00 + iVal._4_4_) < v_00) + (int)in_a1)" (pointer_expression "*(u8 **)&pLvl->iRowid" * (cast_expression "(u8 **)&pLvl->iRowid" ( (type_descriptor "u8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&pLvl->iRowid" & (field_expression "pLvl->iRowid" identifier -> field_identifier)))) = (cast_expression "(u8 *)((uint)((u32 *)((int)v_00 + iVal._4_4_) < v_00) + (int)in_a1)" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)((u32 *)((int)v_00 + iVal._4_4_) < v_00) + (int)in_a1)" ( (binary_expression "(uint)((u32 *)((int)v_00 + iVal._4_4_) < v_00) + (int)in_a1" (call_expression "(uint)((u32 *)((int)v_00 + iVal._4_4_) < v_00)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((u32 *)((int)v_00 + iVal._4_4_) < v_00)" ( (binary_expression "(u32 *)((int)v_00 + iVal._4_4_) < v_00" (cast_expression "(u32 *)((int)v_00 + iVal._4_4_)" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)v_00 + iVal._4_4_)" ( (binary_expression "(int)v_00 + iVal._4_4_" (cast_expression "(int)v_00" ( (type_descriptor "int" primitive_type) ) identifier) + (field_expression "iVal._4_4_" identifier . field_identifier)) ))) < identifier) ))) + (cast_expression "(int)in_a1" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) }) (else_clause "else {\nLAB_00066908:\n    iVar7 = 1;\n    pLvl->bEof = 1;\n  }" else (compound_statement "{\nLAB_00066908:\n    iVar7 = 1;\n    pLvl->bEof = 1;\n  }" { (labeled_statement "LAB_00066908:\n    iVar7 = 1;" statement_identifier : (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;)) (expression_statement "pLvl->bEof = 1;" (assignment_expression "pLvl->bEof = 1" (field_expression "pLvl->bEof" identifier -> field_identifier) = number_literal) ;) }))))) (if_statement "if (puStack_14 == *(uint **)puVar2) {\n    return iVar7;\n  }" if (parenthesized_expression "(puStack_14 == *(uint **)puVar2)" ( (binary_expression "puStack_14 == *(uint **)puVar2" identifier == (pointer_expression "*(uint **)puVar2" * (cast_expression "(uint **)puVar2" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return iVar7;\n  }" { (return_statement "return iVar7;" return identifier ;) })) (expression_statement "pcVar20 = fts5DoclistIterNext;" (assignment_expression "pcVar20 = fts5DoclistIterNext" identifier = identifier) ;) (expression_statement "puVar11 = puStack_14;" (assignment_expression "puVar11 = puStack_14" identifier = identifier) ;) (expression_statement "puVar19 = PTR___stack_chk_fail_00190df8;" (assignment_expression "puVar19 = PTR___stack_chk_fail_00190df8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00190df8)();" (call_expression "(*(code *)PTR___stack_chk_fail_00190df8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00190df8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00190df8" * (cast_expression "(code *)PTR___stack_chk_fail_00190df8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_68 = puVar19 + 0x131f08;" (assignment_expression "puStack_68 = puVar19 + 0x131f08" identifier = (binary_expression "puVar19 + 0x131f08" identifier + number_literal)) ;) (expression_statement "puStack_40 = puVar2;" (assignment_expression "puStack_40 = puVar2" identifier = identifier) ;) (expression_statement "piVar16 = *(int **)(puVar19 + 0x12a40c);" (assignment_expression "piVar16 = *(int **)(puVar19 + 0x12a40c)" identifier = (pointer_expression "*(int **)(puVar19 + 0x12a40c)" * (cast_expression "(int **)(puVar19 + 0x12a40c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + 0x12a40c)" ( (binary_expression "puVar19 + 0x12a40c" identifier + number_literal) ))))) ;) (expression_statement "pFVar8 = (Fts5Data *)*piVar16;" (assignment_expression "pFVar8 = (Fts5Data *)*piVar16" identifier = (cast_expression "(Fts5Data *)*piVar16" ( (type_descriptor "Fts5Data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar16" * identifier))) ;) (expression_statement "uVar15 = puVar11[4] + puVar11[6] + puVar11[5];" (assignment_expression "uVar15 = puVar11[4] + puVar11[6] + puVar11[5]" identifier = (binary_expression "puVar11[4] + puVar11[6] + puVar11[5]" (binary_expression "puVar11[4] + puVar11[6]" (subscript_expression "puVar11[4]" identifier [ number_literal ]) + (subscript_expression "puVar11[6]" identifier [ number_literal ])) + (subscript_expression "puVar11[5]" identifier [ number_literal ]))) ;) (expression_statement "pFStack_4c = pFVar8;" (assignment_expression "pFStack_4c = pFVar8" identifier = identifier) ;) (expression_statement "pFStack_48 = pLvl;" (assignment_expression "pFStack_48 = pLvl" identifier = identifier) ;) (expression_statement "pFStack_44 = p_01;" (assignment_expression "pFStack_44 = p_01" identifier = identifier) ;) (expression_statement "pcStack_3c = pcVar20;" (assignment_expression "pcStack_3c = pcVar20" identifier = identifier) ;) (if_statement "if (uVar15 < *puVar11) {\n    iVar4 = (*(code *)(*(int *)(puVar19 + 0x12a128) + -0x80))(uVar15,&piStack_58);\n    pFVar8 = (Fts5Data *)puVar11[3];\n    p_01 = (Fts5Data *)(uVar15 + iVar4);\n    pFVar3 = (Fts5Data *)((int)&pFVar8->p + iStack_54);\n    puVar11[3] = (uint)pFVar3;\n    puVar11[2] = (uint)((int)piStack_58 + (uint)(pFVar3 < pFVar8) + puVar11[2]);\n    bVar6 = *(byte *)&p_01->p;\n    if ((char)bVar6 < '\0') {\n      in_a1 = (i64 *)&iStack_5c;\n      pFVar8 = p_01;\n      uVar15 = sqlite3Fts5GetVarint32((uchar *)p_01,(u32 *)in_a1);\n      puVar11[6] = uVar15;\n      puVar11[4] = (uint)p_01;\n      puVar11[5] = iStack_5c >> 1;\n    }\n    else {\n      puVar11[4] = (uint)p_01;\n      puVar11[5] = (uint)(bVar6 >> 1);\n      puVar11[6] = 1;\n      in_a1 = piStack_58;\n    }\n  }\n  else {\n    puVar11[4] = 0;\n  }" if (parenthesized_expression "(uVar15 < *puVar11)" ( (binary_expression "uVar15 < *puVar11" identifier < (pointer_expression "*puVar11" * identifier)) )) (compound_statement "{\n    iVar4 = (*(code *)(*(int *)(puVar19 + 0x12a128) + -0x80))(uVar15,&piStack_58);\n    pFVar8 = (Fts5Data *)puVar11[3];\n    p_01 = (Fts5Data *)(uVar15 + iVar4);\n    pFVar3 = (Fts5Data *)((int)&pFVar8->p + iStack_54);\n    puVar11[3] = (uint)pFVar3;\n    puVar11[2] = (uint)((int)piStack_58 + (uint)(pFVar3 < pFVar8) + puVar11[2]);\n    bVar6 = *(byte *)&p_01->p;\n    if ((char)bVar6 < '\0') {\n      in_a1 = (i64 *)&iStack_5c;\n      pFVar8 = p_01;\n      uVar15 = sqlite3Fts5GetVarint32((uchar *)p_01,(u32 *)in_a1);\n      puVar11[6] = uVar15;\n      puVar11[4] = (uint)p_01;\n      puVar11[5] = iStack_5c >> 1;\n    }\n    else {\n      puVar11[4] = (uint)p_01;\n      puVar11[5] = (uint)(bVar6 >> 1);\n      puVar11[6] = 1;\n      in_a1 = piStack_58;\n    }\n  }" { (expression_statement "iVar4 = (*(code *)(*(int *)(puVar19 + 0x12a128) + -0x80))(uVar15,&piStack_58);" (assignment_expression "iVar4 = (*(code *)(*(int *)(puVar19 + 0x12a128) + -0x80))(uVar15,&piStack_58)" identifier = (call_expression "(*(code *)(*(int *)(puVar19 + 0x12a128) + -0x80))(uVar15,&piStack_58)" (parenthesized_expression "(*(code *)(*(int *)(puVar19 + 0x12a128) + -0x80))" ( (pointer_expression "*(code *)(*(int *)(puVar19 + 0x12a128) + -0x80)" * (cast_expression "(code *)(*(int *)(puVar19 + 0x12a128) + -0x80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar19 + 0x12a128) + -0x80)" ( (binary_expression "*(int *)(puVar19 + 0x12a128) + -0x80" (pointer_expression "*(int *)(puVar19 + 0x12a128)" * (cast_expression "(int *)(puVar19 + 0x12a128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + 0x12a128)" ( (binary_expression "puVar19 + 0x12a128" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(uVar15,&piStack_58)" ( identifier , (pointer_expression "&piStack_58" & identifier) )))) ;) (expression_statement "pFVar8 = (Fts5Data *)puVar11[3];" (assignment_expression "pFVar8 = (Fts5Data *)puVar11[3]" identifier = (cast_expression "(Fts5Data *)puVar11[3]" ( (type_descriptor "Fts5Data *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar11[3]" identifier [ number_literal ]))) ;) (expression_statement "p_01 = (Fts5Data *)(uVar15 + iVar4);" (assignment_expression "p_01 = (Fts5Data *)(uVar15 + iVar4)" identifier = (cast_expression "(Fts5Data *)(uVar15 + iVar4)" ( (type_descriptor "Fts5Data *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar15 + iVar4)" ( (binary_expression "uVar15 + iVar4" identifier + identifier) )))) ;) (expression_statement "pFVar3 = (Fts5Data *)((int)&pFVar8->p + iStack_54);" (assignment_expression "pFVar3 = (Fts5Data *)((int)&pFVar8->p + iStack_54)" identifier = (cast_expression "(Fts5Data *)((int)&pFVar8->p + iStack_54)" ( (type_descriptor "Fts5Data *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pFVar8->p + iStack_54)" ( (binary_expression "(int)&pFVar8->p + iStack_54" (cast_expression "(int)&pFVar8->p" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pFVar8->p" & (field_expression "pFVar8->p" identifier -> field_identifier))) + identifier) )))) ;) (expression_statement "puVar11[3] = (uint)pFVar3;" (assignment_expression "puVar11[3] = (uint)pFVar3" (subscript_expression "puVar11[3]" identifier [ number_literal ]) = (cast_expression "(uint)pFVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar11[2] = (uint)((int)piStack_58 + (uint)(pFVar3 < pFVar8) + puVar11[2]);" (assignment_expression "puVar11[2] = (uint)((int)piStack_58 + (uint)(pFVar3 < pFVar8) + puVar11[2])" (subscript_expression "puVar11[2]" identifier [ number_literal ]) = (call_expression "(uint)((int)piStack_58 + (uint)(pFVar3 < pFVar8) + puVar11[2])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)piStack_58 + (uint)(pFVar3 < pFVar8) + puVar11[2])" ( (binary_expression "(int)piStack_58 + (uint)(pFVar3 < pFVar8) + puVar11[2]" (binary_expression "(int)piStack_58 + (uint)(pFVar3 < pFVar8)" (cast_expression "(int)piStack_58" ( (type_descriptor "int" primitive_type) ) identifier) + (call_expression "(uint)(pFVar3 < pFVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pFVar3 < pFVar8)" ( (binary_expression "pFVar3 < pFVar8" identifier < identifier) )))) + (subscript_expression "puVar11[2]" identifier [ number_literal ])) )))) ;) (expression_statement "bVar6 = *(byte *)&p_01->p;" (assignment_expression "bVar6 = *(byte *)&p_01->p" identifier = (pointer_expression "*(byte *)&p_01->p" * (cast_expression "(byte *)&p_01->p" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p_01->p" & (field_expression "p_01->p" identifier -> field_identifier))))) ;) (if_statement "if ((char)bVar6 < '\0') {\n      in_a1 = (i64 *)&iStack_5c;\n      pFVar8 = p_01;\n      uVar15 = sqlite3Fts5GetVarint32((uchar *)p_01,(u32 *)in_a1);\n      puVar11[6] = uVar15;\n      puVar11[4] = (uint)p_01;\n      puVar11[5] = iStack_5c >> 1;\n    }\n    else {\n      puVar11[4] = (uint)p_01;\n      puVar11[5] = (uint)(bVar6 >> 1);\n      puVar11[6] = 1;\n      in_a1 = piStack_58;\n    }" if (parenthesized_expression "((char)bVar6 < '\0')" ( (binary_expression "(char)bVar6 < '\0'" (cast_expression "(char)bVar6" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      in_a1 = (i64 *)&iStack_5c;\n      pFVar8 = p_01;\n      uVar15 = sqlite3Fts5GetVarint32((uchar *)p_01,(u32 *)in_a1);\n      puVar11[6] = uVar15;\n      puVar11[4] = (uint)p_01;\n      puVar11[5] = iStack_5c >> 1;\n    }" { (expression_statement "in_a1 = (i64 *)&iStack_5c;" (assignment_expression "in_a1 = (i64 *)&iStack_5c" identifier = (cast_expression "(i64 *)&iStack_5c" ( (type_descriptor "i64 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&iStack_5c" & identifier))) ;) (expression_statement "pFVar8 = p_01;" (assignment_expression "pFVar8 = p_01" identifier = identifier) ;) (expression_statement "uVar15 = sqlite3Fts5GetVarint32((uchar *)p_01,(u32 *)in_a1);" (assignment_expression "uVar15 = sqlite3Fts5GetVarint32((uchar *)p_01,(u32 *)in_a1)" identifier = (call_expression "sqlite3Fts5GetVarint32((uchar *)p_01,(u32 *)in_a1)" identifier (argument_list "((uchar *)p_01,(u32 *)in_a1)" ( (cast_expression "(uchar *)p_01" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(u32 *)in_a1" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "puVar11[6] = uVar15;" (assignment_expression "puVar11[6] = uVar15" (subscript_expression "puVar11[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11[4] = (uint)p_01;" (assignment_expression "puVar11[4] = (uint)p_01" (subscript_expression "puVar11[4]" identifier [ number_literal ]) = (cast_expression "(uint)p_01" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar11[5] = iStack_5c >> 1;" (assignment_expression "puVar11[5] = iStack_5c >> 1" (subscript_expression "puVar11[5]" identifier [ number_literal ]) = (binary_expression "iStack_5c >> 1" identifier >> number_literal)) ;) }) (else_clause "else {\n      puVar11[4] = (uint)p_01;\n      puVar11[5] = (uint)(bVar6 >> 1);\n      puVar11[6] = 1;\n      in_a1 = piStack_58;\n    }" else (compound_statement "{\n      puVar11[4] = (uint)p_01;\n      puVar11[5] = (uint)(bVar6 >> 1);\n      puVar11[6] = 1;\n      in_a1 = piStack_58;\n    }" { (expression_statement "puVar11[4] = (uint)p_01;" (assignment_expression "puVar11[4] = (uint)p_01" (subscript_expression "puVar11[4]" identifier [ number_literal ]) = (cast_expression "(uint)p_01" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar11[5] = (uint)(bVar6 >> 1);" (assignment_expression "puVar11[5] = (uint)(bVar6 >> 1)" (subscript_expression "puVar11[5]" identifier [ number_literal ]) = (call_expression "(uint)(bVar6 >> 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar6 >> 1)" ( (binary_expression "bVar6 >> 1" identifier >> number_literal) )))) ;) (expression_statement "puVar11[6] = 1;" (assignment_expression "puVar11[6] = 1" (subscript_expression "puVar11[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "in_a1 = piStack_58;" (assignment_expression "in_a1 = piStack_58" identifier = identifier) ;) }))) }) (else_clause "else {\n    puVar11[4] = 0;\n  }" else (compound_statement "{\n    puVar11[4] = 0;\n  }" { (expression_statement "puVar11[4] = 0;" (assignment_expression "puVar11[4] = 0" (subscript_expression "puVar11[4]" identifier [ number_literal ]) = number_literal) ;) }))) (if_statement "if (pFStack_4c == (Fts5Data *)*piVar16) {\n    return *piVar16;\n  }" if (parenthesized_expression "(pFStack_4c == (Fts5Data *)*piVar16)" ( (binary_expression "pFStack_4c == (Fts5Data *)*piVar16" identifier == (cast_expression "(Fts5Data *)*piVar16" ( (type_descriptor "Fts5Data *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar16" * identifier))) )) (compound_statement "{\n    return *piVar16;\n  }" { (return_statement "return *piVar16;" return (pointer_expression "*piVar16" * identifier) ;) })) (expression_statement "pcVar20 = *(code **)(puStack_68 + -0x7b28);" (assignment_expression "pcVar20 = *(code **)(puStack_68 + -0x7b28)" identifier = (pointer_expression "*(code **)(puStack_68 + -0x7b28)" * (cast_expression "(code **)(puStack_68 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_68 + -0x7b28)" ( (binary_expression "puStack_68 + -0x7b28" identifier + number_literal) ))))) ;) (expression_statement "pcVar21 = fts5SegIterLoadNPos;" (assignment_expression "pcVar21 = fts5SegIterLoadNPos" identifier = identifier) ;) (expression_statement "(*pcVar20)();" (call_expression "(*pcVar20)()" (parenthesized_expression "(*pcVar20)" ( (pointer_expression "*pcVar20" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "piStack_80 = piVar16;" (assignment_expression "piStack_80 = piVar16" identifier = identifier) ;) (expression_statement "puStack_88 = puVar11;" (assignment_expression "puStack_88 = puVar11" identifier = identifier) ;) (expression_statement "pcStack_7c = pcVar21;" (assignment_expression "pcStack_7c = pcVar21" identifier = identifier) ;) (expression_statement "pFStack_84 = p_01;" (assignment_expression "pFStack_84 = p_01" identifier = identifier) ;) (expression_statement "piVar17 = *(int **)(pcVar20 + 0x12a2ec);" (assignment_expression "piVar17 = *(int **)(pcVar20 + 0x12a2ec)" identifier = (pointer_expression "*(int **)(pcVar20 + 0x12a2ec)" * (cast_expression "(int **)(pcVar20 + 0x12a2ec)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + 0x12a2ec)" ( (binary_expression "pcVar20 + 0x12a2ec" identifier + number_literal) ))))) ;) (expression_statement "puVar14 = *(u32 **)((int)in_a1 + 0x14);" (assignment_expression "puVar14 = *(u32 **)((int)in_a1 + 0x14)" identifier = (pointer_expression "*(u32 **)((int)in_a1 + 0x14)" * (cast_expression "(u32 **)((int)in_a1 + 0x14)" ( (type_descriptor "u32 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)in_a1 + 0x14)" ( (binary_expression "(int)in_a1 + 0x14" (cast_expression "(int)in_a1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "piVar16 = *(int **)((int)in_a1 + 0xc);" (assignment_expression "piVar16 = *(int **)((int)in_a1 + 0xc)" identifier = (pointer_expression "*(int **)((int)in_a1 + 0xc)" * (cast_expression "(int **)((int)in_a1 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)in_a1 + 0xc)" ( (binary_expression "(int)in_a1 + 0xc" (cast_expression "(int)in_a1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iStack_8c = *piVar17;" (assignment_expression "iStack_8c = *piVar17" identifier = (pointer_expression "*piVar17" * identifier)) ;) (if_statement "if (pFVar8[4].p == (u8 *)0x1) {\n    v_00 = (u32 *)piVar16[2];\n    *(u8 *)((int)in_a1 + 0x54) = '\0';\n    puVar10 = *(u32 **)(in_a1 + 5);\n    if ((int)v_00 <= (int)*(u32 **)(in_a1 + 5)) {\n      puVar10 = v_00;\n    }\n    v = (u32 *)(uint)((int)puVar14 < (int)puVar10);\n    puVar1 = (u8 *)(in_a1 + 10);\n    puVar1[0] = '\0';\n    puVar1[1] = '\0';\n    puVar1[2] = '\0';\n    puVar1[3] = '\x01';\n    if ((v != (u32 *)0x0) &&\n       (v = (u32 *)((int)puVar14 + 1), *(char *)(*piVar16 + (int)puVar14) == '\0')) {\n      *(u8 *)((int)in_a1 + 0x54) = '\x01';\n      if (((int)v < (int)puVar10) && (*(char *)(*piVar16 + (int)v) == '\0')) {\n        puVar14 = (u32 *)((int)puVar14 + 2);\n      }\n      else {\n        puVar1 = (u8 *)(in_a1 + 10);\n        puVar1[0] = '\0';\n        puVar1[1] = '\0';\n        puVar1[2] = '\0';\n        puVar1[3] = '\0';\n        puVar14 = v;\n      }\n    }\n  }\n  else {\n    bVar6 = *(byte *)(*piVar16 + (int)puVar14);\n    uStack_90 = (uint)bVar6;\n    v = (u32 *)(int)(char)bVar6;\n    if ((int)v < 0) {\n      v = &uStack_90;\n      piVar16 = (int *)(*piVar16 + (int)puVar14);\n      iVar4 = sqlite3Fts5GetVarint32((uchar *)piVar16,v);\n      puVar14 = (u32 *)((int)puVar14 + iVar4);\n      bVar6 = (byte)uStack_90;\n    }\n    else {\n      puVar14 = (u32 *)((int)puVar14 + 1);\n    }\n    *(byte *)((int)in_a1 + 0x54) = bVar6 & 1;\n    *(int *)(in_a1 + 10) = (int)uStack_90 >> 1;\n  }" if (parenthesized_expression "(pFVar8[4].p == (u8 *)0x1)" ( (binary_expression "pFVar8[4].p == (u8 *)0x1" (field_expression "pFVar8[4].p" (subscript_expression "pFVar8[4]" identifier [ number_literal ]) . field_identifier) == (cast_expression "(u8 *)0x1" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    v_00 = (u32 *)piVar16[2];\n    *(u8 *)((int)in_a1 + 0x54) = '\0';\n    puVar10 = *(u32 **)(in_a1 + 5);\n    if ((int)v_00 <= (int)*(u32 **)(in_a1 + 5)) {\n      puVar10 = v_00;\n    }\n    v = (u32 *)(uint)((int)puVar14 < (int)puVar10);\n    puVar1 = (u8 *)(in_a1 + 10);\n    puVar1[0] = '\0';\n    puVar1[1] = '\0';\n    puVar1[2] = '\0';\n    puVar1[3] = '\x01';\n    if ((v != (u32 *)0x0) &&\n       (v = (u32 *)((int)puVar14 + 1), *(char *)(*piVar16 + (int)puVar14) == '\0')) {\n      *(u8 *)((int)in_a1 + 0x54) = '\x01';\n      if (((int)v < (int)puVar10) && (*(char *)(*piVar16 + (int)v) == '\0')) {\n        puVar14 = (u32 *)((int)puVar14 + 2);\n      }\n      else {\n        puVar1 = (u8 *)(in_a1 + 10);\n        puVar1[0] = '\0';\n        puVar1[1] = '\0';\n        puVar1[2] = '\0';\n        puVar1[3] = '\0';\n        puVar14 = v;\n      }\n    }\n  }" { (expression_statement "v_00 = (u32 *)piVar16[2];" (assignment_expression "v_00 = (u32 *)piVar16[2]" identifier = (cast_expression "(u32 *)piVar16[2]" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar16[2]" identifier [ number_literal ]))) ;) (expression_statement "*(u8 *)((int)in_a1 + 0x54) = '\0';" (assignment_expression "*(u8 *)((int)in_a1 + 0x54) = '\0'" (pointer_expression "*(u8 *)((int)in_a1 + 0x54)" * (cast_expression "(u8 *)((int)in_a1 + 0x54)" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)in_a1 + 0x54)" ( (binary_expression "(int)in_a1 + 0x54" (cast_expression "(int)in_a1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar10 = *(u32 **)(in_a1 + 5);" (assignment_expression "puVar10 = *(u32 **)(in_a1 + 5)" identifier = (pointer_expression "*(u32 **)(in_a1 + 5)" * (cast_expression "(u32 **)(in_a1 + 5)" ( (type_descriptor "u32 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_a1 + 5)" ( (binary_expression "in_a1 + 5" identifier + number_literal) ))))) ;) (if_statement "if ((int)v_00 <= (int)*(u32 **)(in_a1 + 5)) {\n      puVar10 = v_00;\n    }" if (parenthesized_expression "((int)v_00 <= (int)*(u32 **)(in_a1 + 5))" ( (binary_expression "(int)v_00 <= (int)*(u32 **)(in_a1 + 5)" (cast_expression "(int)v_00" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)*(u32 **)(in_a1 + 5)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(u32 **)(in_a1 + 5)" * (cast_expression "(u32 **)(in_a1 + 5)" ( (type_descriptor "u32 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_a1 + 5)" ( (binary_expression "in_a1 + 5" identifier + number_literal) )))))) )) (compound_statement "{\n      puVar10 = v_00;\n    }" { (expression_statement "puVar10 = v_00;" (assignment_expression "puVar10 = v_00" identifier = identifier) ;) })) (expression_statement "v = (u32 *)(uint)((int)puVar14 < (int)puVar10);" (assignment_expression "v = (u32 *)(uint)((int)puVar14 < (int)puVar10)" identifier = (cast_expression "(u32 *)(uint)((int)puVar14 < (int)puVar10)" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)((int)puVar14 < (int)puVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar14 < (int)puVar10)" ( (binary_expression "(int)puVar14 < (int)puVar10" (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "puVar1 = (u8 *)(in_a1 + 10);" (assignment_expression "puVar1 = (u8 *)(in_a1 + 10)" identifier = (cast_expression "(u8 *)(in_a1 + 10)" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_a1 + 10)" ( (binary_expression "in_a1 + 10" identifier + number_literal) )))) ;) (expression_statement "puVar1[0] = '\0';" (assignment_expression "puVar1[0] = '\0'" (subscript_expression "puVar1[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar1[1] = '\0';" (assignment_expression "puVar1[1] = '\0'" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar1[2] = '\0';" (assignment_expression "puVar1[2] = '\0'" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar1[3] = '\x01';" (assignment_expression "puVar1[3] = '\x01'" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = (char_literal "'\x01'" ' escape_sequence ')) ;) (if_statement "if ((v != (u32 *)0x0) &&\n       (v = (u32 *)((int)puVar14 + 1), *(char *)(*piVar16 + (int)puVar14) == '\0')) {\n      *(u8 *)((int)in_a1 + 0x54) = '\x01';\n      if (((int)v < (int)puVar10) && (*(char *)(*piVar16 + (int)v) == '\0')) {\n        puVar14 = (u32 *)((int)puVar14 + 2);\n      }\n      else {\n        puVar1 = (u8 *)(in_a1 + 10);\n        puVar1[0] = '\0';\n        puVar1[1] = '\0';\n        puVar1[2] = '\0';\n        puVar1[3] = '\0';\n        puVar14 = v;\n      }\n    }" if (parenthesized_expression "((v != (u32 *)0x0) &&\n       (v = (u32 *)((int)puVar14 + 1), *(char *)(*piVar16 + (int)puVar14) == '\0'))" ( (binary_expression "(v != (u32 *)0x0) &&\n       (v = (u32 *)((int)puVar14 + 1), *(char *)(*piVar16 + (int)puVar14) == '\0')" (parenthesized_expression "(v != (u32 *)0x0)" ( (binary_expression "v != (u32 *)0x0" identifier != (cast_expression "(u32 *)0x0" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(v = (u32 *)((int)puVar14 + 1), *(char *)(*piVar16 + (int)puVar14) == '\0')" ( (comma_expression "v = (u32 *)((int)puVar14 + 1), *(char *)(*piVar16 + (int)puVar14) == '\0'" (assignment_expression "v = (u32 *)((int)puVar14 + 1)" identifier = (cast_expression "(u32 *)((int)puVar14 + 1)" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar14 + 1)" ( (binary_expression "(int)puVar14 + 1" (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (binary_expression "*(char *)(*piVar16 + (int)puVar14) == '\0'" (pointer_expression "*(char *)(*piVar16 + (int)puVar14)" * (cast_expression "(char *)(*piVar16 + (int)puVar14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar16 + (int)puVar14)" ( (binary_expression "*piVar16 + (int)puVar14" (pointer_expression "*piVar16" * identifier) + (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )))) == (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n      *(u8 *)((int)in_a1 + 0x54) = '\x01';\n      if (((int)v < (int)puVar10) && (*(char *)(*piVar16 + (int)v) == '\0')) {\n        puVar14 = (u32 *)((int)puVar14 + 2);\n      }\n      else {\n        puVar1 = (u8 *)(in_a1 + 10);\n        puVar1[0] = '\0';\n        puVar1[1] = '\0';\n        puVar1[2] = '\0';\n        puVar1[3] = '\0';\n        puVar14 = v;\n      }\n    }" { (expression_statement "*(u8 *)((int)in_a1 + 0x54) = '\x01';" (assignment_expression "*(u8 *)((int)in_a1 + 0x54) = '\x01'" (pointer_expression "*(u8 *)((int)in_a1 + 0x54)" * (cast_expression "(u8 *)((int)in_a1 + 0x54)" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)in_a1 + 0x54)" ( (binary_expression "(int)in_a1 + 0x54" (cast_expression "(int)in_a1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (char_literal "'\x01'" ' escape_sequence ')) ;) (if_statement "if (((int)v < (int)puVar10) && (*(char *)(*piVar16 + (int)v) == '\0')) {\n        puVar14 = (u32 *)((int)puVar14 + 2);\n      }\n      else {\n        puVar1 = (u8 *)(in_a1 + 10);\n        puVar1[0] = '\0';\n        puVar1[1] = '\0';\n        puVar1[2] = '\0';\n        puVar1[3] = '\0';\n        puVar14 = v;\n      }" if (parenthesized_expression "(((int)v < (int)puVar10) && (*(char *)(*piVar16 + (int)v) == '\0'))" ( (binary_expression "((int)v < (int)puVar10) && (*(char *)(*piVar16 + (int)v) == '\0')" (parenthesized_expression "((int)v < (int)puVar10)" ( (binary_expression "(int)v < (int)puVar10" (cast_expression "(int)v" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(*(char *)(*piVar16 + (int)v) == '\0')" ( (binary_expression "*(char *)(*piVar16 + (int)v) == '\0'" (pointer_expression "*(char *)(*piVar16 + (int)v)" * (cast_expression "(char *)(*piVar16 + (int)v)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar16 + (int)v)" ( (binary_expression "*piVar16 + (int)v" (pointer_expression "*piVar16" * identifier) + (cast_expression "(int)v" ( (type_descriptor "int" primitive_type) ) identifier)) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        puVar14 = (u32 *)((int)puVar14 + 2);\n      }" { (expression_statement "puVar14 = (u32 *)((int)puVar14 + 2);" (assignment_expression "puVar14 = (u32 *)((int)puVar14 + 2)" identifier = (cast_expression "(u32 *)((int)puVar14 + 2)" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar14 + 2)" ( (binary_expression "(int)puVar14 + 2" (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) (else_clause "else {\n        puVar1 = (u8 *)(in_a1 + 10);\n        puVar1[0] = '\0';\n        puVar1[1] = '\0';\n        puVar1[2] = '\0';\n        puVar1[3] = '\0';\n        puVar14 = v;\n      }" else (compound_statement "{\n        puVar1 = (u8 *)(in_a1 + 10);\n        puVar1[0] = '\0';\n        puVar1[1] = '\0';\n        puVar1[2] = '\0';\n        puVar1[3] = '\0';\n        puVar14 = v;\n      }" { (expression_statement "puVar1 = (u8 *)(in_a1 + 10);" (assignment_expression "puVar1 = (u8 *)(in_a1 + 10)" identifier = (cast_expression "(u8 *)(in_a1 + 10)" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_a1 + 10)" ( (binary_expression "in_a1 + 10" identifier + number_literal) )))) ;) (expression_statement "puVar1[0] = '\0';" (assignment_expression "puVar1[0] = '\0'" (subscript_expression "puVar1[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar1[1] = '\0';" (assignment_expression "puVar1[1] = '\0'" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar1[2] = '\0';" (assignment_expression "puVar1[2] = '\0'" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar1[3] = '\0';" (assignment_expression "puVar1[3] = '\0'" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar14 = v;" (assignment_expression "puVar14 = v" identifier = identifier) ;) }))) })) }) (else_clause "else {\n    bVar6 = *(byte *)(*piVar16 + (int)puVar14);\n    uStack_90 = (uint)bVar6;\n    v = (u32 *)(int)(char)bVar6;\n    if ((int)v < 0) {\n      v = &uStack_90;\n      piVar16 = (int *)(*piVar16 + (int)puVar14);\n      iVar4 = sqlite3Fts5GetVarint32((uchar *)piVar16,v);\n      puVar14 = (u32 *)((int)puVar14 + iVar4);\n      bVar6 = (byte)uStack_90;\n    }\n    else {\n      puVar14 = (u32 *)((int)puVar14 + 1);\n    }\n    *(byte *)((int)in_a1 + 0x54) = bVar6 & 1;\n    *(int *)(in_a1 + 10) = (int)uStack_90 >> 1;\n  }" else (compound_statement "{\n    bVar6 = *(byte *)(*piVar16 + (int)puVar14);\n    uStack_90 = (uint)bVar6;\n    v = (u32 *)(int)(char)bVar6;\n    if ((int)v < 0) {\n      v = &uStack_90;\n      piVar16 = (int *)(*piVar16 + (int)puVar14);\n      iVar4 = sqlite3Fts5GetVarint32((uchar *)piVar16,v);\n      puVar14 = (u32 *)((int)puVar14 + iVar4);\n      bVar6 = (byte)uStack_90;\n    }\n    else {\n      puVar14 = (u32 *)((int)puVar14 + 1);\n    }\n    *(byte *)((int)in_a1 + 0x54) = bVar6 & 1;\n    *(int *)(in_a1 + 10) = (int)uStack_90 >> 1;\n  }" { (expression_statement "bVar6 = *(byte *)(*piVar16 + (int)puVar14);" (assignment_expression "bVar6 = *(byte *)(*piVar16 + (int)puVar14)" identifier = (pointer_expression "*(byte *)(*piVar16 + (int)puVar14)" * (cast_expression "(byte *)(*piVar16 + (int)puVar14)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar16 + (int)puVar14)" ( (binary_expression "*piVar16 + (int)puVar14" (pointer_expression "*piVar16" * identifier) + (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "uStack_90 = (uint)bVar6;" (assignment_expression "uStack_90 = (uint)bVar6" identifier = (cast_expression "(uint)bVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "v = (u32 *)(int)(char)bVar6;" (assignment_expression "v = (u32 *)(int)(char)bVar6" identifier = (cast_expression "(u32 *)(int)(char)bVar6" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)bVar6" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar6" ( (type_descriptor "char" primitive_type) ) identifier)))) ;) (if_statement "if ((int)v < 0) {\n      v = &uStack_90;\n      piVar16 = (int *)(*piVar16 + (int)puVar14);\n      iVar4 = sqlite3Fts5GetVarint32((uchar *)piVar16,v);\n      puVar14 = (u32 *)((int)puVar14 + iVar4);\n      bVar6 = (byte)uStack_90;\n    }\n    else {\n      puVar14 = (u32 *)((int)puVar14 + 1);\n    }" if (parenthesized_expression "((int)v < 0)" ( (binary_expression "(int)v < 0" (cast_expression "(int)v" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      v = &uStack_90;\n      piVar16 = (int *)(*piVar16 + (int)puVar14);\n      iVar4 = sqlite3Fts5GetVarint32((uchar *)piVar16,v);\n      puVar14 = (u32 *)((int)puVar14 + iVar4);\n      bVar6 = (byte)uStack_90;\n    }" { (expression_statement "v = &uStack_90;" (assignment_expression "v = &uStack_90" identifier = (pointer_expression "&uStack_90" & identifier)) ;) (expression_statement "piVar16 = (int *)(*piVar16 + (int)puVar14);" (assignment_expression "piVar16 = (int *)(*piVar16 + (int)puVar14)" identifier = (cast_expression "(int *)(*piVar16 + (int)puVar14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar16 + (int)puVar14)" ( (binary_expression "*piVar16 + (int)puVar14" (pointer_expression "*piVar16" * identifier) + (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "iVar4 = sqlite3Fts5GetVarint32((uchar *)piVar16,v);" (assignment_expression "iVar4 = sqlite3Fts5GetVarint32((uchar *)piVar16,v)" identifier = (call_expression "sqlite3Fts5GetVarint32((uchar *)piVar16,v)" identifier (argument_list "((uchar *)piVar16,v)" ( (cast_expression "(uchar *)piVar16" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (expression_statement "puVar14 = (u32 *)((int)puVar14 + iVar4);" (assignment_expression "puVar14 = (u32 *)((int)puVar14 + iVar4)" identifier = (cast_expression "(u32 *)((int)puVar14 + iVar4)" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar14 + iVar4)" ( (binary_expression "(int)puVar14 + iVar4" (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "bVar6 = (byte)uStack_90;" (assignment_expression "bVar6 = (byte)uStack_90" identifier = (cast_expression "(byte)uStack_90" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }) (else_clause "else {\n      puVar14 = (u32 *)((int)puVar14 + 1);\n    }" else (compound_statement "{\n      puVar14 = (u32 *)((int)puVar14 + 1);\n    }" { (expression_statement "puVar14 = (u32 *)((int)puVar14 + 1);" (assignment_expression "puVar14 = (u32 *)((int)puVar14 + 1)" identifier = (cast_expression "(u32 *)((int)puVar14 + 1)" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar14 + 1)" ( (binary_expression "(int)puVar14 + 1" (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }))) (expression_statement "*(byte *)((int)in_a1 + 0x54) = bVar6 & 1;" (assignment_expression "*(byte *)((int)in_a1 + 0x54) = bVar6 & 1" (pointer_expression "*(byte *)((int)in_a1 + 0x54)" * (cast_expression "(byte *)((int)in_a1 + 0x54)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)in_a1 + 0x54)" ( (binary_expression "(int)in_a1 + 0x54" (cast_expression "(int)in_a1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "bVar6 & 1" identifier & number_literal)) ;) (expression_statement "*(int *)(in_a1 + 10) = (int)uStack_90 >> 1;" (assignment_expression "*(int *)(in_a1 + 10) = (int)uStack_90 >> 1" (pointer_expression "*(int *)(in_a1 + 10)" * (cast_expression "(int *)(in_a1 + 10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_a1 + 10)" ( (binary_expression "in_a1 + 10" identifier + number_literal) )))) = (binary_expression "(int)uStack_90 >> 1" (cast_expression "(int)uStack_90" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) }))) (expression_statement "iVar4 = *piVar17;" (assignment_expression "iVar4 = *piVar17" identifier = (pointer_expression "*piVar17" * identifier)) ;) (expression_statement "*(u32 **)((int)in_a1 + 0x14) = puVar14;" (assignment_expression "*(u32 **)((int)in_a1 + 0x14) = puVar14" (pointer_expression "*(u32 **)((int)in_a1 + 0x14)" * (cast_expression "(u32 **)((int)in_a1 + 0x14)" ( (type_descriptor "u32 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)in_a1 + 0x14)" ( (binary_expression "(int)in_a1 + 0x14" (cast_expression "(int)in_a1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if (iStack_8c == iVar4) {\n    return iVar4;\n  }" if (parenthesized_expression "(iStack_8c == iVar4)" ( (binary_expression "iStack_8c == iVar4" identifier == identifier) )) (compound_statement "{\n    return iVar4;\n  }" { (return_statement "return iVar4;" return identifier ;) })) (expression_statement "pcVar20 = *(code **)(pcVar20 + 0x12a2c0);" (assignment_expression "pcVar20 = *(code **)(pcVar20 + 0x12a2c0)" identifier = (pointer_expression "*(code **)(pcVar20 + 0x12a2c0)" * (cast_expression "(code **)(pcVar20 + 0x12a2c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + 0x12a2c0)" ( (binary_expression "pcVar20 + 0x12a2c0" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar20)();" (call_expression "(*pcVar20)()" (parenthesized_expression "(*pcVar20)" ( (pointer_expression "*pcVar20" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcStack_d8 = pcVar20 + 0x131ca0;" (assignment_expression "pcStack_d8 = pcVar20 + 0x131ca0" identifier = (binary_expression "pcVar20 + 0x131ca0" identifier + number_literal)) ;) (expression_statement "piVar16 = (int *)*piVar16;" (assignment_expression "piVar16 = (int *)*piVar16" identifier = (cast_expression "(int *)*piVar16" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar16" * identifier))) ;) (expression_statement "p = (int *)*v;" (assignment_expression "p = (int *)*v" identifier = (cast_expression "(int *)*v" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*v" * identifier))) ;) (expression_statement "puVar18 = *(undefined4 **)(pcVar20 + 0x12a1a4);" (assignment_expression "puVar18 = *(undefined4 **)(pcVar20 + 0x12a1a4)" identifier = (pointer_expression "*(undefined4 **)(pcVar20 + 0x12a1a4)" * (cast_expression "(undefined4 **)(pcVar20 + 0x12a1a4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + 0x12a1a4)" ( (binary_expression "pcVar20 + 0x12a1a4" identifier + number_literal) ))))) ;) (expression_statement "puVar11 = (uint *)*puVar18;" (assignment_expression "puVar11 = (uint *)*puVar18" identifier = (cast_expression "(uint *)*puVar18" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar18" * identifier))) ;) (expression_statement "puVar10 = *(u32 **)(piVar16[3] + 0x30);" (assignment_expression "puVar10 = *(u32 **)(piVar16[3] + 0x30)" identifier = (pointer_expression "*(u32 **)(piVar16[3] + 0x30)" * (cast_expression "(u32 **)(piVar16[3] + 0x30)" ( (type_descriptor "u32 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar16[3] + 0x30)" ( (binary_expression "piVar16[3] + 0x30" (subscript_expression "piVar16[3]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "puStack_cc = puVar11;" (assignment_expression "puStack_cc = puVar11" identifier = identifier) ;) (expression_statement "piStack_c4 = in_a1;" (assignment_expression "piStack_c4 = in_a1" identifier = identifier) ;) (expression_statement "puStack_c0 = puVar14;" (assignment_expression "puStack_c0 = puVar14" identifier = identifier) ;) (expression_statement "piStack_bc = piVar17;" (assignment_expression "piStack_bc = piVar17" identifier = identifier) ;) (if_statement "if (puVar10 == (u32 *)&SUB_00000002) {\n    if (p < (int *)v[1]) {\n      puVar10 = &uStack_d0;\n      iVar4 = sqlite3Fts5GetVarint32((uchar *)p,puVar10);\n      *v = *v + iVar4;\n      *v_00 = *v_00 + (uStack_d0 - 2);\n      goto LAB_00066d4c;\n    }\n  }\n  else if (p < (int *)v[1]) {\n    if (*(uchar *)p != '\x01') {\n      do {\n        puVar10 = &uStack_d0;\n        iVar4 = sqlite3Fts5GetVarint32((uchar *)p,&uStack_d0);\n        p = (int *)(*v + iVar4);\n        *v = (u32)p;\n        if ((int *)v[1] <= p) goto LAB_00066d48;\n      } while (*(uchar *)p != '\x01');\n    }\n    p = (int *)((int)p + 1);\n    iVar4 = sqlite3Fts5GetVarint32((uchar *)p,v_00);\n    *v = *v + iVar4 + 1;\n    puVar10 = v_00;\n    goto LAB_00066d4c;\n  }" if (parenthesized_expression "(puVar10 == (u32 *)&SUB_00000002)" ( (binary_expression "puVar10 == (u32 *)&SUB_00000002" identifier == (cast_expression "(u32 *)&SUB_00000002" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&SUB_00000002" & identifier))) )) (compound_statement "{\n    if (p < (int *)v[1]) {\n      puVar10 = &uStack_d0;\n      iVar4 = sqlite3Fts5GetVarint32((uchar *)p,puVar10);\n      *v = *v + iVar4;\n      *v_00 = *v_00 + (uStack_d0 - 2);\n      goto LAB_00066d4c;\n    }\n  }" { (if_statement "if (p < (int *)v[1]) {\n      puVar10 = &uStack_d0;\n      iVar4 = sqlite3Fts5GetVarint32((uchar *)p,puVar10);\n      *v = *v + iVar4;\n      *v_00 = *v_00 + (uStack_d0 - 2);\n      goto LAB_00066d4c;\n    }" if (parenthesized_expression "(p < (int *)v[1])" ( (binary_expression "p < (int *)v[1]" identifier < (cast_expression "(int *)v[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "v[1]" identifier [ number_literal ]))) )) (compound_statement "{\n      puVar10 = &uStack_d0;\n      iVar4 = sqlite3Fts5GetVarint32((uchar *)p,puVar10);\n      *v = *v + iVar4;\n      *v_00 = *v_00 + (uStack_d0 - 2);\n      goto LAB_00066d4c;\n    }" { (expression_statement "puVar10 = &uStack_d0;" (assignment_expression "puVar10 = &uStack_d0" identifier = (pointer_expression "&uStack_d0" & identifier)) ;) (expression_statement "iVar4 = sqlite3Fts5GetVarint32((uchar *)p,puVar10);" (assignment_expression "iVar4 = sqlite3Fts5GetVarint32((uchar *)p,puVar10)" identifier = (call_expression "sqlite3Fts5GetVarint32((uchar *)p,puVar10)" identifier (argument_list "((uchar *)p,puVar10)" ( (cast_expression "(uchar *)p" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (expression_statement "*v = *v + iVar4;" (assignment_expression "*v = *v + iVar4" (pointer_expression "*v" * identifier) = (binary_expression "*v + iVar4" (pointer_expression "*v" * identifier) + identifier)) ;) (expression_statement "*v_00 = *v_00 + (uStack_d0 - 2);" (assignment_expression "*v_00 = *v_00 + (uStack_d0 - 2)" (pointer_expression "*v_00" * identifier) = (binary_expression "*v_00 + (uStack_d0 - 2)" (pointer_expression "*v_00" * identifier) + (parenthesized_expression "(uStack_d0 - 2)" ( (binary_expression "uStack_d0 - 2" identifier - number_literal) )))) ;) (goto_statement "goto LAB_00066d4c;" goto statement_identifier ;) })) }) (else_clause "else if (p < (int *)v[1]) {\n    if (*(uchar *)p != '\x01') {\n      do {\n        puVar10 = &uStack_d0;\n        iVar4 = sqlite3Fts5GetVarint32((uchar *)p,&uStack_d0);\n        p = (int *)(*v + iVar4);\n        *v = (u32)p;\n        if ((int *)v[1] <= p) goto LAB_00066d48;\n      } while (*(uchar *)p != '\x01');\n    }\n    p = (int *)((int)p + 1);\n    iVar4 = sqlite3Fts5GetVarint32((uchar *)p,v_00);\n    *v = *v + iVar4 + 1;\n    puVar10 = v_00;\n    goto LAB_00066d4c;\n  }" else (if_statement "if (p < (int *)v[1]) {\n    if (*(uchar *)p != '\x01') {\n      do {\n        puVar10 = &uStack_d0;\n        iVar4 = sqlite3Fts5GetVarint32((uchar *)p,&uStack_d0);\n        p = (int *)(*v + iVar4);\n        *v = (u32)p;\n        if ((int *)v[1] <= p) goto LAB_00066d48;\n      } while (*(uchar *)p != '\x01');\n    }\n    p = (int *)((int)p + 1);\n    iVar4 = sqlite3Fts5GetVarint32((uchar *)p,v_00);\n    *v = *v + iVar4 + 1;\n    puVar10 = v_00;\n    goto LAB_00066d4c;\n  }" if (parenthesized_expression "(p < (int *)v[1])" ( (binary_expression "p < (int *)v[1]" identifier < (cast_expression "(int *)v[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "v[1]" identifier [ number_literal ]))) )) (compound_statement "{\n    if (*(uchar *)p != '\x01') {\n      do {\n        puVar10 = &uStack_d0;\n        iVar4 = sqlite3Fts5GetVarint32((uchar *)p,&uStack_d0);\n        p = (int *)(*v + iVar4);\n        *v = (u32)p;\n        if ((int *)v[1] <= p) goto LAB_00066d48;\n      } while (*(uchar *)p != '\x01');\n    }\n    p = (int *)((int)p + 1);\n    iVar4 = sqlite3Fts5GetVarint32((uchar *)p,v_00);\n    *v = *v + iVar4 + 1;\n    puVar10 = v_00;\n    goto LAB_00066d4c;\n  }" { (if_statement "if (*(uchar *)p != '\x01') {\n      do {\n        puVar10 = &uStack_d0;\n        iVar4 = sqlite3Fts5GetVarint32((uchar *)p,&uStack_d0);\n        p = (int *)(*v + iVar4);\n        *v = (u32)p;\n        if ((int *)v[1] <= p) goto LAB_00066d48;\n      } while (*(uchar *)p != '\x01');\n    }" if (parenthesized_expression "(*(uchar *)p != '\x01')" ( (binary_expression "*(uchar *)p != '\x01'" (pointer_expression "*(uchar *)p" * (cast_expression "(uchar *)p" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) != (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n      do {\n        puVar10 = &uStack_d0;\n        iVar4 = sqlite3Fts5GetVarint32((uchar *)p,&uStack_d0);\n        p = (int *)(*v + iVar4);\n        *v = (u32)p;\n        if ((int *)v[1] <= p) goto LAB_00066d48;\n      } while (*(uchar *)p != '\x01');\n    }" { (do_statement "do {\n        puVar10 = &uStack_d0;\n        iVar4 = sqlite3Fts5GetVarint32((uchar *)p,&uStack_d0);\n        p = (int *)(*v + iVar4);\n        *v = (u32)p;\n        if ((int *)v[1] <= p) goto LAB_00066d48;\n      } while (*(uchar *)p != '\x01');" do (compound_statement "{\n        puVar10 = &uStack_d0;\n        iVar4 = sqlite3Fts5GetVarint32((uchar *)p,&uStack_d0);\n        p = (int *)(*v + iVar4);\n        *v = (u32)p;\n        if ((int *)v[1] <= p) goto LAB_00066d48;\n      }" { (expression_statement "puVar10 = &uStack_d0;" (assignment_expression "puVar10 = &uStack_d0" identifier = (pointer_expression "&uStack_d0" & identifier)) ;) (expression_statement "iVar4 = sqlite3Fts5GetVarint32((uchar *)p,&uStack_d0);" (assignment_expression "iVar4 = sqlite3Fts5GetVarint32((uchar *)p,&uStack_d0)" identifier = (call_expression "sqlite3Fts5GetVarint32((uchar *)p,&uStack_d0)" identifier (argument_list "((uchar *)p,&uStack_d0)" ( (cast_expression "(uchar *)p" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&uStack_d0" & identifier) )))) ;) (expression_statement "p = (int *)(*v + iVar4);" (assignment_expression "p = (int *)(*v + iVar4)" identifier = (cast_expression "(int *)(*v + iVar4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*v + iVar4)" ( (binary_expression "*v + iVar4" (pointer_expression "*v" * identifier) + identifier) )))) ;) (expression_statement "*v = (u32)p;" (assignment_expression "*v = (u32)p" (pointer_expression "*v" * identifier) = (cast_expression "(u32)p" ( (type_descriptor "u32" type_identifier) ) identifier)) ;) (if_statement "if ((int *)v[1] <= p) goto LAB_00066d48;" if (parenthesized_expression "((int *)v[1] <= p)" ( (binary_expression "(int *)v[1] <= p" (cast_expression "(int *)v[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "v[1]" identifier [ number_literal ])) <= identifier) )) (goto_statement "goto LAB_00066d48;" goto statement_identifier ;)) }) while (parenthesized_expression "(*(uchar *)p != '\x01')" ( (binary_expression "*(uchar *)p != '\x01'" (pointer_expression "*(uchar *)p" * (cast_expression "(uchar *)p" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) != (char_literal "'\x01'" ' escape_sequence ')) )) ;) })) (expression_statement "p = (int *)((int)p + 1);" (assignment_expression "p = (int *)((int)p + 1)" identifier = (cast_expression "(int *)((int)p + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 1)" ( (binary_expression "(int)p + 1" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "iVar4 = sqlite3Fts5GetVarint32((uchar *)p,v_00);" (assignment_expression "iVar4 = sqlite3Fts5GetVarint32((uchar *)p,v_00)" identifier = (call_expression "sqlite3Fts5GetVarint32((uchar *)p,v_00)" identifier (argument_list "((uchar *)p,v_00)" ( (cast_expression "(uchar *)p" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (expression_statement "*v = *v + iVar4 + 1;" (assignment_expression "*v = *v + iVar4 + 1" (pointer_expression "*v" * identifier) = (binary_expression "*v + iVar4 + 1" (binary_expression "*v + iVar4" (pointer_expression "*v" * identifier) + identifier) + number_literal)) ;) (expression_statement "puVar10 = v_00;" (assignment_expression "puVar10 = v_00" identifier = identifier) ;) (goto_statement "goto LAB_00066d4c;" goto statement_identifier ;) })))) (labeled_statement "LAB_00066d48:\n  *v_00 = 0xffffffff;" statement_identifier : (expression_statement "*v_00 = 0xffffffff;" (assignment_expression "*v_00 = 0xffffffff" (pointer_expression "*v_00" * identifier) = number_literal) ;)) (labeled_statement "LAB_00066d4c:\n  puVar5 = (uint *)*puVar18;" statement_identifier : (expression_statement "puVar5 = (uint *)*puVar18;" (assignment_expression "puVar5 = (uint *)*puVar18" identifier = (cast_expression "(uint *)*puVar18" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar18" * identifier))) ;)) (if_statement "if (puStack_cc == puVar5) {\n    return (int)puVar5;\n  }" if (parenthesized_expression "(puStack_cc == puVar5)" ( (binary_expression "puStack_cc == puVar5" identifier == identifier) )) (compound_statement "{\n    return (int)puVar5;\n  }" { (return_statement "return (int)puVar5;" return (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) ;) })) (expression_statement "pcVar20 = *(code **)(pcStack_d8 + -0x7b28);" (assignment_expression "pcVar20 = *(code **)(pcStack_d8 + -0x7b28)" identifier = (pointer_expression "*(code **)(pcStack_d8 + -0x7b28)" * (cast_expression "(code **)(pcStack_d8 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcStack_d8 + -0x7b28)" ( (binary_expression "pcStack_d8 + -0x7b28" identifier + number_literal) ))))) ;) (expression_statement "pcVar22 = fts5NextRowid;" (assignment_expression "pcVar22 = fts5NextRowid" identifier = identifier) ;) (expression_statement "(*pcVar20)();" (call_expression "(*pcVar20)()" (parenthesized_expression "(*pcVar20)" ( (pointer_expression "*pcVar20" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar21 = pcVar20 + 0x131b28;" (assignment_expression "pcVar21 = pcVar20 + 0x131b28" identifier = (binary_expression "pcVar20 + 0x131b28" identifier + number_literal)) ;) (expression_statement "piVar17 = *(int **)(pcVar20 + 0x12a02c);" (assignment_expression "piVar17 = *(int **)(pcVar20 + 0x12a02c)" identifier = (pointer_expression "*(int **)(pcVar20 + 0x12a02c)" * (cast_expression "(int **)(pcVar20 + 0x12a02c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + 0x12a02c)" ( (binary_expression "pcVar20 + 0x12a02c" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = *puVar11;" (assignment_expression "uVar15 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "iStack_f4 = *piVar17;" (assignment_expression "iStack_f4 = *piVar17" identifier = (pointer_expression "*piVar17" * identifier)) ;) (expression_statement "pcStack_ec = pcVar22;" (assignment_expression "pcStack_ec = pcVar22" identifier = identifier) ;) (if_statement "if ((int)uVar15 < (int)puVar10) {\n    iVar4 = (*(code *)(*(int *)(pcVar20 + 0x129d48) + -0x80))\n                      ((uchar *)((int)p + uVar15),&piStack_100);\n    *puVar11 = iVar4 + uVar15;\n    uVar15 = piVar16[1];\n    uVar12 = uVar15 + iStack_fc;\n    p = (int *)(*piVar16 + (int)piStack_100);\n    piVar16[1] = uVar12;\n    *piVar16 = (int)((uint)(uVar12 < uVar15) + (int)p);\n    piVar16 = piStack_100;\n  }\n  else {\n    *puVar11 = 0xffffffff;\n    piVar16 = (int *)0x0;\n  }" if (parenthesized_expression "((int)uVar15 < (int)puVar10)" ( (binary_expression "(int)uVar15 < (int)puVar10" (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    iVar4 = (*(code *)(*(int *)(pcVar20 + 0x129d48) + -0x80))\n                      ((uchar *)((int)p + uVar15),&piStack_100);\n    *puVar11 = iVar4 + uVar15;\n    uVar15 = piVar16[1];\n    uVar12 = uVar15 + iStack_fc;\n    p = (int *)(*piVar16 + (int)piStack_100);\n    piVar16[1] = uVar12;\n    *piVar16 = (int)((uint)(uVar12 < uVar15) + (int)p);\n    piVar16 = piStack_100;\n  }" { (expression_statement "iVar4 = (*(code *)(*(int *)(pcVar20 + 0x129d48) + -0x80))\n                      ((uchar *)((int)p + uVar15),&piStack_100);" (assignment_expression "iVar4 = (*(code *)(*(int *)(pcVar20 + 0x129d48) + -0x80))\n                      ((uchar *)((int)p + uVar15),&piStack_100)" identifier = (call_expression "(*(code *)(*(int *)(pcVar20 + 0x129d48) + -0x80))\n                      ((uchar *)((int)p + uVar15),&piStack_100)" (parenthesized_expression "(*(code *)(*(int *)(pcVar20 + 0x129d48) + -0x80))" ( (pointer_expression "*(code *)(*(int *)(pcVar20 + 0x129d48) + -0x80)" * (cast_expression "(code *)(*(int *)(pcVar20 + 0x129d48) + -0x80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar20 + 0x129d48) + -0x80)" ( (binary_expression "*(int *)(pcVar20 + 0x129d48) + -0x80" (pointer_expression "*(int *)(pcVar20 + 0x129d48)" * (cast_expression "(int *)(pcVar20 + 0x129d48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar20 + 0x129d48)" ( (binary_expression "pcVar20 + 0x129d48" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "((uchar *)((int)p + uVar15),&piStack_100)" ( (cast_expression "(uchar *)((int)p + uVar15)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + uVar15)" ( (binary_expression "(int)p + uVar15" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) , (pointer_expression "&piStack_100" & identifier) )))) ;) (expression_statement "*puVar11 = iVar4 + uVar15;" (assignment_expression "*puVar11 = iVar4 + uVar15" (pointer_expression "*puVar11" * identifier) = (binary_expression "iVar4 + uVar15" identifier + identifier)) ;) (expression_statement "uVar15 = piVar16[1];" (assignment_expression "uVar15 = piVar16[1]" identifier = (subscript_expression "piVar16[1]" identifier [ number_literal ])) ;) (expression_statement "uVar12 = uVar15 + iStack_fc;" (assignment_expression "uVar12 = uVar15 + iStack_fc" identifier = (binary_expression "uVar15 + iStack_fc" identifier + identifier)) ;) (expression_statement "p = (int *)(*piVar16 + (int)piStack_100);" (assignment_expression "p = (int *)(*piVar16 + (int)piStack_100)" identifier = (cast_expression "(int *)(*piVar16 + (int)piStack_100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar16 + (int)piStack_100)" ( (binary_expression "*piVar16 + (int)piStack_100" (pointer_expression "*piVar16" * identifier) + (cast_expression "(int)piStack_100" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "piVar16[1] = uVar12;" (assignment_expression "piVar16[1] = uVar12" (subscript_expression "piVar16[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*piVar16 = (int)((uint)(uVar12 < uVar15) + (int)p);" (assignment_expression "*piVar16 = (int)((uint)(uVar12 < uVar15) + (int)p)" (pointer_expression "*piVar16" * identifier) = (cast_expression "(int)((uint)(uVar12 < uVar15) + (int)p)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(uVar12 < uVar15) + (int)p)" ( (binary_expression "(uint)(uVar12 < uVar15) + (int)p" (call_expression "(uint)(uVar12 < uVar15)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar12 < uVar15)" ( (binary_expression "uVar12 < uVar15" identifier < identifier) ))) + (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "piVar16 = piStack_100;" (assignment_expression "piVar16 = piStack_100" identifier = identifier) ;) }) (else_clause "else {\n    *puVar11 = 0xffffffff;\n    piVar16 = (int *)0x0;\n  }" else (compound_statement "{\n    *puVar11 = 0xffffffff;\n    piVar16 = (int *)0x0;\n  }" { (expression_statement "*puVar11 = 0xffffffff;" (assignment_expression "*puVar11 = 0xffffffff" (pointer_expression "*puVar11" * identifier) = number_literal) ;) (expression_statement "piVar16 = (int *)0x0;" (assignment_expression "piVar16 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (if_statement "if (iStack_f4 != *piVar17) {\n    pcVar20 = *(code **)(pcVar20 + 0x12a000);\n    (*pcVar20)();\n    pcVar20 = pcVar20 + 0x131a70;\n    uVar15 = *puVar11;\n    uVar12 = puVar11[1];\n    p_00 = (uchar *)(*p + *piVar16);\n    if (((uVar15 ^ (uint)pcVar21) & 0x7fffffff) != 0) {\n      *piVar16 = *piVar16 + 1;\n      *p_00 = '\x01';\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar4 = sqlite3PutVarint((uchar *)(*p + *piVar16),CONCAT44(pcVar20,in_stack_fffffec4));\n      }\n      else {\n        *(uchar *)(*p + *piVar16) = (uchar)pcVar21;\n        iVar4 = 1;\n      }\n      uVar15 = (uint)pcVar21 & 0x7fffffff;\n      uVar12 = 0;\n      *piVar16 = *piVar16 + iVar4;\n      *puVar11 = uVar15;\n      puVar11[1] = 0;\n      p_00 = (uchar *)(*p + *piVar16);\n    }\n    uVar12 = uStack_10c - uVar12;\n    uVar13 = uVar12 + 2;\n    if ((pcVar21 + (uint)(uVar13 < uVar12) + (-(uint)(uStack_10c < uVar12) - uVar15) == (code *)0x0)\n       && (uVar13 < 0x80)) {\n      *p_00 = (uchar)uVar13;\n      *piVar16 = *piVar16 + 1;\n      *puVar11 = (uint)pcVar21;\n      puVar11[1] = uStack_10c;\n      return 1;\n    }\n    iVar4 = sqlite3PutVarint(p_00,CONCAT44(pcVar20,in_stack_fffffec4));\n    *piVar16 = *piVar16 + iVar4;\n    *puVar11 = (uint)pcVar21;\n    puVar11[1] = uStack_10c;\n    return iVar4;\n  }" if (parenthesized_expression "(iStack_f4 != *piVar17)" ( (binary_expression "iStack_f4 != *piVar17" identifier != (pointer_expression "*piVar17" * identifier)) )) (compound_statement "{\n    pcVar20 = *(code **)(pcVar20 + 0x12a000);\n    (*pcVar20)();\n    pcVar20 = pcVar20 + 0x131a70;\n    uVar15 = *puVar11;\n    uVar12 = puVar11[1];\n    p_00 = (uchar *)(*p + *piVar16);\n    if (((uVar15 ^ (uint)pcVar21) & 0x7fffffff) != 0) {\n      *piVar16 = *piVar16 + 1;\n      *p_00 = '\x01';\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar4 = sqlite3PutVarint((uchar *)(*p + *piVar16),CONCAT44(pcVar20,in_stack_fffffec4));\n      }\n      else {\n        *(uchar *)(*p + *piVar16) = (uchar)pcVar21;\n        iVar4 = 1;\n      }\n      uVar15 = (uint)pcVar21 & 0x7fffffff;\n      uVar12 = 0;\n      *piVar16 = *piVar16 + iVar4;\n      *puVar11 = uVar15;\n      puVar11[1] = 0;\n      p_00 = (uchar *)(*p + *piVar16);\n    }\n    uVar12 = uStack_10c - uVar12;\n    uVar13 = uVar12 + 2;\n    if ((pcVar21 + (uint)(uVar13 < uVar12) + (-(uint)(uStack_10c < uVar12) - uVar15) == (code *)0x0)\n       && (uVar13 < 0x80)) {\n      *p_00 = (uchar)uVar13;\n      *piVar16 = *piVar16 + 1;\n      *puVar11 = (uint)pcVar21;\n      puVar11[1] = uStack_10c;\n      return 1;\n    }\n    iVar4 = sqlite3PutVarint(p_00,CONCAT44(pcVar20,in_stack_fffffec4));\n    *piVar16 = *piVar16 + iVar4;\n    *puVar11 = (uint)pcVar21;\n    puVar11[1] = uStack_10c;\n    return iVar4;\n  }" { (expression_statement "pcVar20 = *(code **)(pcVar20 + 0x12a000);" (assignment_expression "pcVar20 = *(code **)(pcVar20 + 0x12a000)" identifier = (pointer_expression "*(code **)(pcVar20 + 0x12a000)" * (cast_expression "(code **)(pcVar20 + 0x12a000)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar20 + 0x12a000)" ( (binary_expression "pcVar20 + 0x12a000" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar20)();" (call_expression "(*pcVar20)()" (parenthesized_expression "(*pcVar20)" ( (pointer_expression "*pcVar20" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar20 = pcVar20 + 0x131a70;" (assignment_expression "pcVar20 = pcVar20 + 0x131a70" identifier = (binary_expression "pcVar20 + 0x131a70" identifier + number_literal)) ;) (expression_statement "uVar15 = *puVar11;" (assignment_expression "uVar15 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "uVar12 = puVar11[1];" (assignment_expression "uVar12 = puVar11[1]" identifier = (subscript_expression "puVar11[1]" identifier [ number_literal ])) ;) (expression_statement "p_00 = (uchar *)(*p + *piVar16);" (assignment_expression "p_00 = (uchar *)(*p + *piVar16)" identifier = (cast_expression "(uchar *)(*p + *piVar16)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*p + *piVar16)" ( (binary_expression "*p + *piVar16" (pointer_expression "*p" * identifier) + (pointer_expression "*piVar16" * identifier)) )))) ;) (if_statement "if (((uVar15 ^ (uint)pcVar21) & 0x7fffffff) != 0) {\n      *piVar16 = *piVar16 + 1;\n      *p_00 = '\x01';\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar4 = sqlite3PutVarint((uchar *)(*p + *piVar16),CONCAT44(pcVar20,in_stack_fffffec4));\n      }\n      else {\n        *(uchar *)(*p + *piVar16) = (uchar)pcVar21;\n        iVar4 = 1;\n      }\n      uVar15 = (uint)pcVar21 & 0x7fffffff;\n      uVar12 = 0;\n      *piVar16 = *piVar16 + iVar4;\n      *puVar11 = uVar15;\n      puVar11[1] = 0;\n      p_00 = (uchar *)(*p + *piVar16);\n    }" if (parenthesized_expression "(((uVar15 ^ (uint)pcVar21) & 0x7fffffff) != 0)" ( (binary_expression "((uVar15 ^ (uint)pcVar21) & 0x7fffffff) != 0" (parenthesized_expression "((uVar15 ^ (uint)pcVar21) & 0x7fffffff)" ( (binary_expression "(uVar15 ^ (uint)pcVar21) & 0x7fffffff" (parenthesized_expression "(uVar15 ^ (uint)pcVar21)" ( (binary_expression "uVar15 ^ (uint)pcVar21" identifier ^ (cast_expression "(uint)pcVar21" ( (type_descriptor "uint" type_identifier) ) identifier)) )) & number_literal) )) != number_literal) )) (compound_statement "{\n      *piVar16 = *piVar16 + 1;\n      *p_00 = '\x01';\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar4 = sqlite3PutVarint((uchar *)(*p + *piVar16),CONCAT44(pcVar20,in_stack_fffffec4));\n      }\n      else {\n        *(uchar *)(*p + *piVar16) = (uchar)pcVar21;\n        iVar4 = 1;\n      }\n      uVar15 = (uint)pcVar21 & 0x7fffffff;\n      uVar12 = 0;\n      *piVar16 = *piVar16 + iVar4;\n      *puVar11 = uVar15;\n      puVar11[1] = 0;\n      p_00 = (uchar *)(*p + *piVar16);\n    }" { (expression_statement "*piVar16 = *piVar16 + 1;" (assignment_expression "*piVar16 = *piVar16 + 1" (pointer_expression "*piVar16" * identifier) = (binary_expression "*piVar16 + 1" (pointer_expression "*piVar16" * identifier) + number_literal)) ;) (expression_statement "*p_00 = '\x01';" (assignment_expression "*p_00 = '\x01'" (pointer_expression "*p_00" * identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (if_statement "if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar4 = sqlite3PutVarint((uchar *)(*p + *piVar16),CONCAT44(pcVar20,in_stack_fffffec4));\n      }\n      else {\n        *(uchar *)(*p + *piVar16) = (uchar)pcVar21;\n        iVar4 = 1;\n      }" if (parenthesized_expression "(((int)pcVar21 < 0) || ((code *)0x7f < pcVar21))" ( (binary_expression "((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)" (parenthesized_expression "((int)pcVar21 < 0)" ( (binary_expression "(int)pcVar21 < 0" (cast_expression "(int)pcVar21" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "((code *)0x7f < pcVar21)" ( (binary_expression "(code *)0x7f < pcVar21" (cast_expression "(code *)0x7f" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) ))) )) (compound_statement "{\n        iVar4 = sqlite3PutVarint((uchar *)(*p + *piVar16),CONCAT44(pcVar20,in_stack_fffffec4));\n      }" { (expression_statement "iVar4 = sqlite3PutVarint((uchar *)(*p + *piVar16),CONCAT44(pcVar20,in_stack_fffffec4));" (assignment_expression "iVar4 = sqlite3PutVarint((uchar *)(*p + *piVar16),CONCAT44(pcVar20,in_stack_fffffec4))" identifier = (call_expression "sqlite3PutVarint((uchar *)(*p + *piVar16),CONCAT44(pcVar20,in_stack_fffffec4))" identifier (argument_list "((uchar *)(*p + *piVar16),CONCAT44(pcVar20,in_stack_fffffec4))" ( (cast_expression "(uchar *)(*p + *piVar16)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*p + *piVar16)" ( (binary_expression "*p + *piVar16" (pointer_expression "*p" * identifier) + (pointer_expression "*piVar16" * identifier)) ))) , (call_expression "CONCAT44(pcVar20,in_stack_fffffec4)" identifier (argument_list "(pcVar20,in_stack_fffffec4)" ( identifier , identifier ))) )))) ;) }) (else_clause "else {\n        *(uchar *)(*p + *piVar16) = (uchar)pcVar21;\n        iVar4 = 1;\n      }" else (compound_statement "{\n        *(uchar *)(*p + *piVar16) = (uchar)pcVar21;\n        iVar4 = 1;\n      }" { (expression_statement "*(uchar *)(*p + *piVar16) = (uchar)pcVar21;" (assignment_expression "*(uchar *)(*p + *piVar16) = (uchar)pcVar21" (pointer_expression "*(uchar *)(*p + *piVar16)" * (cast_expression "(uchar *)(*p + *piVar16)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*p + *piVar16)" ( (binary_expression "*p + *piVar16" (pointer_expression "*p" * identifier) + (pointer_expression "*piVar16" * identifier)) )))) = (cast_expression "(uchar)pcVar21" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) }))) (expression_statement "uVar15 = (uint)pcVar21 & 0x7fffffff;" (assignment_expression "uVar15 = (uint)pcVar21 & 0x7fffffff" identifier = (binary_expression "(uint)pcVar21 & 0x7fffffff" (cast_expression "(uint)pcVar21" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "*piVar16 = *piVar16 + iVar4;" (assignment_expression "*piVar16 = *piVar16 + iVar4" (pointer_expression "*piVar16" * identifier) = (binary_expression "*piVar16 + iVar4" (pointer_expression "*piVar16" * identifier) + identifier)) ;) (expression_statement "*puVar11 = uVar15;" (assignment_expression "*puVar11 = uVar15" (pointer_expression "*puVar11" * identifier) = identifier) ;) (expression_statement "puVar11[1] = 0;" (assignment_expression "puVar11[1] = 0" (subscript_expression "puVar11[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "p_00 = (uchar *)(*p + *piVar16);" (assignment_expression "p_00 = (uchar *)(*p + *piVar16)" identifier = (cast_expression "(uchar *)(*p + *piVar16)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*p + *piVar16)" ( (binary_expression "*p + *piVar16" (pointer_expression "*p" * identifier) + (pointer_expression "*piVar16" * identifier)) )))) ;) })) (expression_statement "uVar12 = uStack_10c - uVar12;" (assignment_expression "uVar12 = uStack_10c - uVar12" identifier = (binary_expression "uStack_10c - uVar12" identifier - identifier)) ;) (expression_statement "uVar13 = uVar12 + 2;" (assignment_expression "uVar13 = uVar12 + 2" identifier = (binary_expression "uVar12 + 2" identifier + number_literal)) ;) (if_statement "if ((pcVar21 + (uint)(uVar13 < uVar12) + (-(uint)(uStack_10c < uVar12) - uVar15) == (code *)0x0)\n       && (uVar13 < 0x80)) {\n      *p_00 = (uchar)uVar13;\n      *piVar16 = *piVar16 + 1;\n      *puVar11 = (uint)pcVar21;\n      puVar11[1] = uStack_10c;\n      return 1;\n    }" if (parenthesized_expression "((pcVar21 + (uint)(uVar13 < uVar12) + (-(uint)(uStack_10c < uVar12) - uVar15) == (code *)0x0)\n       && (uVar13 < 0x80))" ( (binary_expression "(pcVar21 + (uint)(uVar13 < uVar12) + (-(uint)(uStack_10c < uVar12) - uVar15) == (code *)0x0)\n       && (uVar13 < 0x80)" (parenthesized_expression "(pcVar21 + (uint)(uVar13 < uVar12) + (-(uint)(uStack_10c < uVar12) - uVar15) == (code *)0x0)" ( (binary_expression "pcVar21 + (uint)(uVar13 < uVar12) + (-(uint)(uStack_10c < uVar12) - uVar15) == (code *)0x0" (binary_expression "pcVar21 + (uint)(uVar13 < uVar12) + (-(uint)(uStack_10c < uVar12) - uVar15)" (binary_expression "pcVar21 + (uint)(uVar13 < uVar12)" identifier + (call_expression "(uint)(uVar13 < uVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar13 < uVar12)" ( (binary_expression "uVar13 < uVar12" identifier < identifier) )))) + (parenthesized_expression "(-(uint)(uStack_10c < uVar12) - uVar15)" ( (binary_expression "-(uint)(uStack_10c < uVar12) - uVar15" (unary_expression "-(uint)(uStack_10c < uVar12)" - (call_expression "(uint)(uStack_10c < uVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uStack_10c < uVar12)" ( (binary_expression "uStack_10c < uVar12" identifier < identifier) )))) - identifier) ))) == (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(uVar13 < 0x80)" ( (binary_expression "uVar13 < 0x80" identifier < number_literal) ))) )) (compound_statement "{\n      *p_00 = (uchar)uVar13;\n      *piVar16 = *piVar16 + 1;\n      *puVar11 = (uint)pcVar21;\n      puVar11[1] = uStack_10c;\n      return 1;\n    }" { (expression_statement "*p_00 = (uchar)uVar13;" (assignment_expression "*p_00 = (uchar)uVar13" (pointer_expression "*p_00" * identifier) = (cast_expression "(uchar)uVar13" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "*piVar16 = *piVar16 + 1;" (assignment_expression "*piVar16 = *piVar16 + 1" (pointer_expression "*piVar16" * identifier) = (binary_expression "*piVar16 + 1" (pointer_expression "*piVar16" * identifier) + number_literal)) ;) (expression_statement "*puVar11 = (uint)pcVar21;" (assignment_expression "*puVar11 = (uint)pcVar21" (pointer_expression "*puVar11" * identifier) = (cast_expression "(uint)pcVar21" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar11[1] = uStack_10c;" (assignment_expression "puVar11[1] = uStack_10c" (subscript_expression "puVar11[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "iVar4 = sqlite3PutVarint(p_00,CONCAT44(pcVar20,in_stack_fffffec4));" (assignment_expression "iVar4 = sqlite3PutVarint(p_00,CONCAT44(pcVar20,in_stack_fffffec4))" identifier = (call_expression "sqlite3PutVarint(p_00,CONCAT44(pcVar20,in_stack_fffffec4))" identifier (argument_list "(p_00,CONCAT44(pcVar20,in_stack_fffffec4))" ( identifier , (call_expression "CONCAT44(pcVar20,in_stack_fffffec4)" identifier (argument_list "(pcVar20,in_stack_fffffec4)" ( identifier , identifier ))) )))) ;) (expression_statement "*piVar16 = *piVar16 + iVar4;" (assignment_expression "*piVar16 = *piVar16 + iVar4" (pointer_expression "*piVar16" * identifier) = (binary_expression "*piVar16 + iVar4" (pointer_expression "*piVar16" * identifier) + identifier)) ;) (expression_statement "*puVar11 = (uint)pcVar21;" (assignment_expression "*puVar11 = (uint)pcVar21" (pointer_expression "*puVar11" * identifier) = (cast_expression "(uint)pcVar21" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar11[1] = uStack_10c;" (assignment_expression "puVar11[1] = uStack_10c" (subscript_expression "puVar11[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return iVar4;" return identifier ;) })) (return_statement "return *piVar17;" return (pointer_expression "*piVar17" * identifier) ;) })))
(translation_unit "uint * FUN_0006687c(undefined4 *param_1,int *param_2)\n\n{\n  undefined *puVar1;\n  byte bVar3;\n  int iVar2;\n  uint *puVar4;\n  int iVar5;\n  uint *puVar6;\n  int *piVar7;\n  undefined1 *puVar8;\n  int *piVar9;\n  int *piVar10;\n  uint uVar11;\n  uint uVar12;\n  int *piVar13;\n  uint uVar14;\n  uint *puVar15;\n  undefined4 *puVar16;\n  int *piVar17;\n  undefined *puVar18;\n  code *pcVar19;\n  undefined4 uVar20;\n  code *pcVar21;\n  uint uStack_10c;\n  int *piStack_100;\n  int iStack_fc;\n  uint *puStack_f4;\n  undefined4 uStack_ec;\n  code *pcStack_d8;\n  int iStack_d0;\n  uint *puStack_cc;\n  int *piStack_c4;\n  uint *puStack_c0;\n  int *piStack_bc;\n  uint uStack_90;\n  uint *puStack_8c;\n  uint *puStack_88;\n  uint *puStack_84;\n  undefined4 *puStack_80;\n  code *pcStack_7c;\n  undefined *local_68;\n  int local_5c;\n  int *local_58;\n  int local_54;\n  uint *local_4c;\n  undefined4 *local_48;\n  uint *local_44;\n  undefined *local_40;\n  undefined4 local_3c;\n  int local_20;\n  int local_1c;\n  uint *local_14;\n  \n  puVar1 = PTR___stack_chk_guard_00190e24;\n  piVar10 = (int *)param_1[1];\n  puVar15 = (uint *)*param_1;\n  local_14 = *(uint **)PTR___stack_chk_guard_00190e24;\n  if (piVar10 == (int *)0x0) {\n    param_1[1] = 1;\n    iVar2 = FUN_0006610c(*puVar15 + 1,param_1 + 4);\n    puVar18 = PTR_LAB_00190b40;\n    param_2 = param_1 + 6;\n    iVar5 = param_1[1];\n    param_1[1] = iVar2 + iVar5;\n    iVar2 = (*(code *)(puVar18 + -0x80))(*puVar15 + iVar2 + iVar5);\n    iVar5 = param_1[1];\n    puVar4 = (uint *)param_1[2];\n    param_1[1] = iVar2 + iVar5;\n    param_1[3] = iVar2 + iVar5;\n  }\n  else if ((int)piVar10 < (int)puVar15[1]) {\n    param_2 = (int *)*puVar15;\n    piVar13 = piVar10;\n    if (*(char *)((int)param_2 + (int)piVar10) == '\0') {\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }\n    else {\n      iVar2 = 1;\n    }\n    pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80);\n    param_1[4] = param_1[4] + iVar2;\n    iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20);\n    iVar2 = iVar2 + (int)piVar10;\n    piVar10 = (int *)param_1[7];\n    param_1[1] = iVar2;\n    puVar4 = (uint *)param_1[2];\n    param_1[7] = (int *)((int)piVar10 + local_1c);\n    param_2 = (int *)(param_1[6] + local_20);\n    param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2;\n  }\n  else {\nLAB_00066908:\n    puVar4 = (uint *)0x1;\n    param_1[2] = 1;\n  }\n  if (local_14 == *(uint **)puVar1) {\n    return puVar4;\n  }\n  uVar20 = 0x66a18;\n  puVar4 = local_14;\n  puVar18 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  local_68 = puVar18 + 0x131f08;\n  local_40 = puVar1;\n  puVar16 = *(undefined4 **)(puVar18 + 0x12a40c);\n  puVar6 = (uint *)*puVar16;\n  uVar14 = puVar4[4] + puVar4[6] + puVar4[5];\n  local_4c = puVar6;\n  local_48 = param_1;\n  local_44 = puVar15;\n  local_3c = uVar20;\n  if (uVar14 < *puVar4) {\n    iVar2 = (*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))(uVar14,&local_58);\n    puVar6 = (uint *)puVar4[3];\n    puVar15 = (uint *)(uVar14 + iVar2);\n    puVar4[3] = (uint)((int)puVar6 + local_54);\n    puVar4[2] = (int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6) + puVar4[2];\n    bVar3 = *(byte *)puVar15;\n    if ((char)bVar3 < '\0') {\n      param_2 = &local_5c;\n      puVar6 = puVar15;\n      uVar14 = FUN_0006610c();\n      puVar4[6] = uVar14;\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = local_5c >> 1;\n    }\n    else {\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = (uint)(bVar3 >> 1);\n      puVar4[6] = 1;\n      param_2 = local_58;\n    }\n  }\n  else {\n    puVar4[4] = 0;\n  }\n  if (local_4c == (uint *)*puVar16) {\n    return (uint *)*puVar16;\n  }\n  pcVar19 = *(code **)(local_68 + -0x7b28);\n  pcVar21 = FUN_00066b38;\n  (*pcVar19)();\n  puStack_80 = puVar16;\n  puStack_88 = puVar4;\n  pcStack_7c = pcVar21;\n  puStack_84 = puVar15;\n  piVar17 = *(int **)(pcVar19 + 0x12a2ec);\n  puVar15 = (uint *)param_2[5];\n  piVar13 = (int *)param_2[3];\n  puStack_8c = (uint *)*piVar17;\n  if (puVar6[0xc] == 1) {\n    piVar10 = (int *)piVar13[2];\n    *(undefined1 *)(param_2 + 0x15) = 0;\n    piVar9 = (int *)param_2[10];\n    if ((int)piVar10 <= param_2[10]) {\n      piVar9 = piVar10;\n    }\n    puVar4 = (uint *)(uint)((int)puVar15 < (int)piVar9);\n    param_2[0x14] = 1;\n    if ((puVar4 != (uint *)0x0) &&\n       (puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0')) {\n      *(undefined1 *)(param_2 + 0x15) = 1;\n      if (((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')) {\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }\n      else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }\n    }\n  }\n  else {\n    bVar3 = *(byte *)(*piVar13 + (int)puVar15);\n    uStack_90 = (uint)bVar3;\n    puVar4 = (uint *)(int)(char)bVar3;\n    if ((int)puVar4 < 0) {\n      puVar4 = &uStack_90;\n      piVar13 = (int *)(*piVar13 + (int)puVar15);\n      iVar2 = FUN_0006610c();\n      puVar15 = (uint *)((int)puVar15 + iVar2);\n      bVar3 = (byte)uStack_90;\n    }\n    else {\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }\n    *(byte *)(param_2 + 0x15) = bVar3 & 1;\n    param_2[0x14] = (int)uStack_90 >> 1;\n  }\n  puVar6 = (uint *)*piVar17;\n  param_2[5] = (int)puVar15;\n  if (puStack_8c == puVar6) {\n    return puVar6;\n  }\n  pcVar19 = *(code **)(pcVar19 + 0x12a2c0);\n  (*pcVar19)();\n  pcStack_d8 = pcVar19 + 0x131ca0;\n  piVar13 = (int *)*piVar13;\n  piVar7 = (int *)*puVar4;\n  puVar16 = *(undefined4 **)(pcVar19 + 0x12a1a4);\n  puVar6 = (uint *)*puVar16;\n  piVar9 = *(int **)(piVar13[3] + 0x30);\n  puStack_cc = puVar6;\n  piStack_c4 = param_2;\n  puStack_c0 = puVar15;\n  piStack_bc = piVar17;\n  if (piVar9 == (int *)0x2) {\n    if (piVar7 < (int *)puVar4[1]) {\n      piVar9 = &iStack_d0;\n      iVar2 = FUN_0006610c();\n      *puVar4 = *puVar4 + iVar2;\n      *piVar10 = *piVar10 + iStack_d0 + -2;\n      goto LAB_00066d4c;\n    }\n  }\n  else if (piVar7 < (int *)puVar4[1]) {\n    if (*(char *)piVar7 != '\x01') {\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }\n    piVar7 = (int *)((int)piVar7 + 1);\n    iVar2 = FUN_0006610c();\n    *puVar4 = *puVar4 + iVar2 + 1;\n    piVar9 = piVar10;\n    goto LAB_00066d4c;\n  }\nLAB_00066d48:\n  *piVar10 = -1;\nLAB_00066d4c:\n  puVar15 = (uint *)*puVar16;\n  if (puStack_cc == puVar15) {\n    return puVar15;\n  }\n  pcVar19 = *(code **)(pcStack_d8 + -0x7b28);\n  uVar20 = 0x66df8;\n  (*pcVar19)();\n  pcVar21 = pcVar19 + 0x131b28;\n  piVar10 = *(int **)(pcVar19 + 0x12a02c);\n  uVar14 = *puVar6;\n  puStack_f4 = (uint *)*piVar10;\n  uStack_ec = uVar20;\n  if ((int)uVar14 < (int)piVar9) {\n    iVar2 = (*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))\n                      ((char *)((int)piVar7 + uVar14),&piStack_100);\n    *puVar6 = iVar2 + uVar14;\n    uVar14 = piVar13[1];\n    uVar11 = uVar14 + iStack_fc;\n    piVar7 = (int *)(*piVar13 + (int)piStack_100);\n    piVar13[1] = uVar11;\n    *piVar13 = (int)((uint)(uVar11 < uVar14) + (int)piVar7);\n    piVar13 = piStack_100;\n  }\n  else {\n    *puVar6 = 0xffffffff;\n    piVar13 = (int *)0x0;\n  }\n  if (puStack_f4 != (uint *)*piVar10) {\n    (**(code **)(pcVar19 + 0x12a000))();\n    uVar14 = *puVar6;\n    uVar11 = puVar6[1];\n    puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    if (((uVar14 ^ (uint)pcVar21) & 0x7fffffff) != 0) {\n      *piVar13 = *piVar13 + 1;\n      *puVar8 = 1;\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar2 = FUN_00053284();\n      }\n      else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }\n      uVar14 = (uint)pcVar21 & 0x7fffffff;\n      uVar11 = 0;\n      *piVar13 = *piVar13 + iVar2;\n      *puVar6 = uVar14;\n      puVar6[1] = 0;\n      puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    }\n    uVar11 = uStack_10c - uVar11;\n    uVar12 = uVar11 + 2;\n    if ((pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)\n       && (uVar12 < 0x80)) {\n      *puVar8 = (char)uVar12;\n      *piVar13 = *piVar13 + 1;\n      *puVar6 = (uint)pcVar21;\n      puVar6[1] = uStack_10c;\n      return (uint *)0x1;\n    }\n    puVar15 = (uint *)FUN_00053284();\n    *piVar13 = *piVar13 + (int)puVar15;\n    *puVar6 = (uint)pcVar21;\n    puVar6[1] = uStack_10c;\n    return puVar15;\n  }\n  return (uint *)*piVar10;\n}\n\n" (function_definition "uint * FUN_0006687c(undefined4 *param_1,int *param_2)\n\n{\n  undefined *puVar1;\n  byte bVar3;\n  int iVar2;\n  uint *puVar4;\n  int iVar5;\n  uint *puVar6;\n  int *piVar7;\n  undefined1 *puVar8;\n  int *piVar9;\n  int *piVar10;\n  uint uVar11;\n  uint uVar12;\n  int *piVar13;\n  uint uVar14;\n  uint *puVar15;\n  undefined4 *puVar16;\n  int *piVar17;\n  undefined *puVar18;\n  code *pcVar19;\n  undefined4 uVar20;\n  code *pcVar21;\n  uint uStack_10c;\n  int *piStack_100;\n  int iStack_fc;\n  uint *puStack_f4;\n  undefined4 uStack_ec;\n  code *pcStack_d8;\n  int iStack_d0;\n  uint *puStack_cc;\n  int *piStack_c4;\n  uint *puStack_c0;\n  int *piStack_bc;\n  uint uStack_90;\n  uint *puStack_8c;\n  uint *puStack_88;\n  uint *puStack_84;\n  undefined4 *puStack_80;\n  code *pcStack_7c;\n  undefined *local_68;\n  int local_5c;\n  int *local_58;\n  int local_54;\n  uint *local_4c;\n  undefined4 *local_48;\n  uint *local_44;\n  undefined *local_40;\n  undefined4 local_3c;\n  int local_20;\n  int local_1c;\n  uint *local_14;\n  \n  puVar1 = PTR___stack_chk_guard_00190e24;\n  piVar10 = (int *)param_1[1];\n  puVar15 = (uint *)*param_1;\n  local_14 = *(uint **)PTR___stack_chk_guard_00190e24;\n  if (piVar10 == (int *)0x0) {\n    param_1[1] = 1;\n    iVar2 = FUN_0006610c(*puVar15 + 1,param_1 + 4);\n    puVar18 = PTR_LAB_00190b40;\n    param_2 = param_1 + 6;\n    iVar5 = param_1[1];\n    param_1[1] = iVar2 + iVar5;\n    iVar2 = (*(code *)(puVar18 + -0x80))(*puVar15 + iVar2 + iVar5);\n    iVar5 = param_1[1];\n    puVar4 = (uint *)param_1[2];\n    param_1[1] = iVar2 + iVar5;\n    param_1[3] = iVar2 + iVar5;\n  }\n  else if ((int)piVar10 < (int)puVar15[1]) {\n    param_2 = (int *)*puVar15;\n    piVar13 = piVar10;\n    if (*(char *)((int)param_2 + (int)piVar10) == '\0') {\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }\n    else {\n      iVar2 = 1;\n    }\n    pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80);\n    param_1[4] = param_1[4] + iVar2;\n    iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20);\n    iVar2 = iVar2 + (int)piVar10;\n    piVar10 = (int *)param_1[7];\n    param_1[1] = iVar2;\n    puVar4 = (uint *)param_1[2];\n    param_1[7] = (int *)((int)piVar10 + local_1c);\n    param_2 = (int *)(param_1[6] + local_20);\n    param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2;\n  }\n  else {\nLAB_00066908:\n    puVar4 = (uint *)0x1;\n    param_1[2] = 1;\n  }\n  if (local_14 == *(uint **)puVar1) {\n    return puVar4;\n  }\n  uVar20 = 0x66a18;\n  puVar4 = local_14;\n  puVar18 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  local_68 = puVar18 + 0x131f08;\n  local_40 = puVar1;\n  puVar16 = *(undefined4 **)(puVar18 + 0x12a40c);\n  puVar6 = (uint *)*puVar16;\n  uVar14 = puVar4[4] + puVar4[6] + puVar4[5];\n  local_4c = puVar6;\n  local_48 = param_1;\n  local_44 = puVar15;\n  local_3c = uVar20;\n  if (uVar14 < *puVar4) {\n    iVar2 = (*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))(uVar14,&local_58);\n    puVar6 = (uint *)puVar4[3];\n    puVar15 = (uint *)(uVar14 + iVar2);\n    puVar4[3] = (uint)((int)puVar6 + local_54);\n    puVar4[2] = (int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6) + puVar4[2];\n    bVar3 = *(byte *)puVar15;\n    if ((char)bVar3 < '\0') {\n      param_2 = &local_5c;\n      puVar6 = puVar15;\n      uVar14 = FUN_0006610c();\n      puVar4[6] = uVar14;\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = local_5c >> 1;\n    }\n    else {\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = (uint)(bVar3 >> 1);\n      puVar4[6] = 1;\n      param_2 = local_58;\n    }\n  }\n  else {\n    puVar4[4] = 0;\n  }\n  if (local_4c == (uint *)*puVar16) {\n    return (uint *)*puVar16;\n  }\n  pcVar19 = *(code **)(local_68 + -0x7b28);\n  pcVar21 = FUN_00066b38;\n  (*pcVar19)();\n  puStack_80 = puVar16;\n  puStack_88 = puVar4;\n  pcStack_7c = pcVar21;\n  puStack_84 = puVar15;\n  piVar17 = *(int **)(pcVar19 + 0x12a2ec);\n  puVar15 = (uint *)param_2[5];\n  piVar13 = (int *)param_2[3];\n  puStack_8c = (uint *)*piVar17;\n  if (puVar6[0xc] == 1) {\n    piVar10 = (int *)piVar13[2];\n    *(undefined1 *)(param_2 + 0x15) = 0;\n    piVar9 = (int *)param_2[10];\n    if ((int)piVar10 <= param_2[10]) {\n      piVar9 = piVar10;\n    }\n    puVar4 = (uint *)(uint)((int)puVar15 < (int)piVar9);\n    param_2[0x14] = 1;\n    if ((puVar4 != (uint *)0x0) &&\n       (puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0')) {\n      *(undefined1 *)(param_2 + 0x15) = 1;\n      if (((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')) {\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }\n      else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }\n    }\n  }\n  else {\n    bVar3 = *(byte *)(*piVar13 + (int)puVar15);\n    uStack_90 = (uint)bVar3;\n    puVar4 = (uint *)(int)(char)bVar3;\n    if ((int)puVar4 < 0) {\n      puVar4 = &uStack_90;\n      piVar13 = (int *)(*piVar13 + (int)puVar15);\n      iVar2 = FUN_0006610c();\n      puVar15 = (uint *)((int)puVar15 + iVar2);\n      bVar3 = (byte)uStack_90;\n    }\n    else {\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }\n    *(byte *)(param_2 + 0x15) = bVar3 & 1;\n    param_2[0x14] = (int)uStack_90 >> 1;\n  }\n  puVar6 = (uint *)*piVar17;\n  param_2[5] = (int)puVar15;\n  if (puStack_8c == puVar6) {\n    return puVar6;\n  }\n  pcVar19 = *(code **)(pcVar19 + 0x12a2c0);\n  (*pcVar19)();\n  pcStack_d8 = pcVar19 + 0x131ca0;\n  piVar13 = (int *)*piVar13;\n  piVar7 = (int *)*puVar4;\n  puVar16 = *(undefined4 **)(pcVar19 + 0x12a1a4);\n  puVar6 = (uint *)*puVar16;\n  piVar9 = *(int **)(piVar13[3] + 0x30);\n  puStack_cc = puVar6;\n  piStack_c4 = param_2;\n  puStack_c0 = puVar15;\n  piStack_bc = piVar17;\n  if (piVar9 == (int *)0x2) {\n    if (piVar7 < (int *)puVar4[1]) {\n      piVar9 = &iStack_d0;\n      iVar2 = FUN_0006610c();\n      *puVar4 = *puVar4 + iVar2;\n      *piVar10 = *piVar10 + iStack_d0 + -2;\n      goto LAB_00066d4c;\n    }\n  }\n  else if (piVar7 < (int *)puVar4[1]) {\n    if (*(char *)piVar7 != '\x01') {\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }\n    piVar7 = (int *)((int)piVar7 + 1);\n    iVar2 = FUN_0006610c();\n    *puVar4 = *puVar4 + iVar2 + 1;\n    piVar9 = piVar10;\n    goto LAB_00066d4c;\n  }\nLAB_00066d48:\n  *piVar10 = -1;\nLAB_00066d4c:\n  puVar15 = (uint *)*puVar16;\n  if (puStack_cc == puVar15) {\n    return puVar15;\n  }\n  pcVar19 = *(code **)(pcStack_d8 + -0x7b28);\n  uVar20 = 0x66df8;\n  (*pcVar19)();\n  pcVar21 = pcVar19 + 0x131b28;\n  piVar10 = *(int **)(pcVar19 + 0x12a02c);\n  uVar14 = *puVar6;\n  puStack_f4 = (uint *)*piVar10;\n  uStack_ec = uVar20;\n  if ((int)uVar14 < (int)piVar9) {\n    iVar2 = (*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))\n                      ((char *)((int)piVar7 + uVar14),&piStack_100);\n    *puVar6 = iVar2 + uVar14;\n    uVar14 = piVar13[1];\n    uVar11 = uVar14 + iStack_fc;\n    piVar7 = (int *)(*piVar13 + (int)piStack_100);\n    piVar13[1] = uVar11;\n    *piVar13 = (int)((uint)(uVar11 < uVar14) + (int)piVar7);\n    piVar13 = piStack_100;\n  }\n  else {\n    *puVar6 = 0xffffffff;\n    piVar13 = (int *)0x0;\n  }\n  if (puStack_f4 != (uint *)*piVar10) {\n    (**(code **)(pcVar19 + 0x12a000))();\n    uVar14 = *puVar6;\n    uVar11 = puVar6[1];\n    puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    if (((uVar14 ^ (uint)pcVar21) & 0x7fffffff) != 0) {\n      *piVar13 = *piVar13 + 1;\n      *puVar8 = 1;\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar2 = FUN_00053284();\n      }\n      else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }\n      uVar14 = (uint)pcVar21 & 0x7fffffff;\n      uVar11 = 0;\n      *piVar13 = *piVar13 + iVar2;\n      *puVar6 = uVar14;\n      puVar6[1] = 0;\n      puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    }\n    uVar11 = uStack_10c - uVar11;\n    uVar12 = uVar11 + 2;\n    if ((pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)\n       && (uVar12 < 0x80)) {\n      *puVar8 = (char)uVar12;\n      *piVar13 = *piVar13 + 1;\n      *puVar6 = (uint)pcVar21;\n      puVar6[1] = uStack_10c;\n      return (uint *)0x1;\n    }\n    puVar15 = (uint *)FUN_00053284();\n    *piVar13 = *piVar13 + (int)puVar15;\n    *puVar6 = (uint)pcVar21;\n    puVar6[1] = uStack_10c;\n    return puVar15;\n  }\n  return (uint *)*piVar10;\n}" type_identifier (pointer_declarator "* FUN_0006687c(undefined4 *param_1,int *param_2)" * (function_declarator "FUN_0006687c(undefined4 *param_1,int *param_2)" identifier (parameter_list "(undefined4 *param_1,int *param_2)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  undefined *puVar1;\n  byte bVar3;\n  int iVar2;\n  uint *puVar4;\n  int iVar5;\n  uint *puVar6;\n  int *piVar7;\n  undefined1 *puVar8;\n  int *piVar9;\n  int *piVar10;\n  uint uVar11;\n  uint uVar12;\n  int *piVar13;\n  uint uVar14;\n  uint *puVar15;\n  undefined4 *puVar16;\n  int *piVar17;\n  undefined *puVar18;\n  code *pcVar19;\n  undefined4 uVar20;\n  code *pcVar21;\n  uint uStack_10c;\n  int *piStack_100;\n  int iStack_fc;\n  uint *puStack_f4;\n  undefined4 uStack_ec;\n  code *pcStack_d8;\n  int iStack_d0;\n  uint *puStack_cc;\n  int *piStack_c4;\n  uint *puStack_c0;\n  int *piStack_bc;\n  uint uStack_90;\n  uint *puStack_8c;\n  uint *puStack_88;\n  uint *puStack_84;\n  undefined4 *puStack_80;\n  code *pcStack_7c;\n  undefined *local_68;\n  int local_5c;\n  int *local_58;\n  int local_54;\n  uint *local_4c;\n  undefined4 *local_48;\n  uint *local_44;\n  undefined *local_40;\n  undefined4 local_3c;\n  int local_20;\n  int local_1c;\n  uint *local_14;\n  \n  puVar1 = PTR___stack_chk_guard_00190e24;\n  piVar10 = (int *)param_1[1];\n  puVar15 = (uint *)*param_1;\n  local_14 = *(uint **)PTR___stack_chk_guard_00190e24;\n  if (piVar10 == (int *)0x0) {\n    param_1[1] = 1;\n    iVar2 = FUN_0006610c(*puVar15 + 1,param_1 + 4);\n    puVar18 = PTR_LAB_00190b40;\n    param_2 = param_1 + 6;\n    iVar5 = param_1[1];\n    param_1[1] = iVar2 + iVar5;\n    iVar2 = (*(code *)(puVar18 + -0x80))(*puVar15 + iVar2 + iVar5);\n    iVar5 = param_1[1];\n    puVar4 = (uint *)param_1[2];\n    param_1[1] = iVar2 + iVar5;\n    param_1[3] = iVar2 + iVar5;\n  }\n  else if ((int)piVar10 < (int)puVar15[1]) {\n    param_2 = (int *)*puVar15;\n    piVar13 = piVar10;\n    if (*(char *)((int)param_2 + (int)piVar10) == '\0') {\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }\n    else {\n      iVar2 = 1;\n    }\n    pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80);\n    param_1[4] = param_1[4] + iVar2;\n    iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20);\n    iVar2 = iVar2 + (int)piVar10;\n    piVar10 = (int *)param_1[7];\n    param_1[1] = iVar2;\n    puVar4 = (uint *)param_1[2];\n    param_1[7] = (int *)((int)piVar10 + local_1c);\n    param_2 = (int *)(param_1[6] + local_20);\n    param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2;\n  }\n  else {\nLAB_00066908:\n    puVar4 = (uint *)0x1;\n    param_1[2] = 1;\n  }\n  if (local_14 == *(uint **)puVar1) {\n    return puVar4;\n  }\n  uVar20 = 0x66a18;\n  puVar4 = local_14;\n  puVar18 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  local_68 = puVar18 + 0x131f08;\n  local_40 = puVar1;\n  puVar16 = *(undefined4 **)(puVar18 + 0x12a40c);\n  puVar6 = (uint *)*puVar16;\n  uVar14 = puVar4[4] + puVar4[6] + puVar4[5];\n  local_4c = puVar6;\n  local_48 = param_1;\n  local_44 = puVar15;\n  local_3c = uVar20;\n  if (uVar14 < *puVar4) {\n    iVar2 = (*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))(uVar14,&local_58);\n    puVar6 = (uint *)puVar4[3];\n    puVar15 = (uint *)(uVar14 + iVar2);\n    puVar4[3] = (uint)((int)puVar6 + local_54);\n    puVar4[2] = (int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6) + puVar4[2];\n    bVar3 = *(byte *)puVar15;\n    if ((char)bVar3 < '\0') {\n      param_2 = &local_5c;\n      puVar6 = puVar15;\n      uVar14 = FUN_0006610c();\n      puVar4[6] = uVar14;\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = local_5c >> 1;\n    }\n    else {\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = (uint)(bVar3 >> 1);\n      puVar4[6] = 1;\n      param_2 = local_58;\n    }\n  }\n  else {\n    puVar4[4] = 0;\n  }\n  if (local_4c == (uint *)*puVar16) {\n    return (uint *)*puVar16;\n  }\n  pcVar19 = *(code **)(local_68 + -0x7b28);\n  pcVar21 = FUN_00066b38;\n  (*pcVar19)();\n  puStack_80 = puVar16;\n  puStack_88 = puVar4;\n  pcStack_7c = pcVar21;\n  puStack_84 = puVar15;\n  piVar17 = *(int **)(pcVar19 + 0x12a2ec);\n  puVar15 = (uint *)param_2[5];\n  piVar13 = (int *)param_2[3];\n  puStack_8c = (uint *)*piVar17;\n  if (puVar6[0xc] == 1) {\n    piVar10 = (int *)piVar13[2];\n    *(undefined1 *)(param_2 + 0x15) = 0;\n    piVar9 = (int *)param_2[10];\n    if ((int)piVar10 <= param_2[10]) {\n      piVar9 = piVar10;\n    }\n    puVar4 = (uint *)(uint)((int)puVar15 < (int)piVar9);\n    param_2[0x14] = 1;\n    if ((puVar4 != (uint *)0x0) &&\n       (puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0')) {\n      *(undefined1 *)(param_2 + 0x15) = 1;\n      if (((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')) {\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }\n      else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }\n    }\n  }\n  else {\n    bVar3 = *(byte *)(*piVar13 + (int)puVar15);\n    uStack_90 = (uint)bVar3;\n    puVar4 = (uint *)(int)(char)bVar3;\n    if ((int)puVar4 < 0) {\n      puVar4 = &uStack_90;\n      piVar13 = (int *)(*piVar13 + (int)puVar15);\n      iVar2 = FUN_0006610c();\n      puVar15 = (uint *)((int)puVar15 + iVar2);\n      bVar3 = (byte)uStack_90;\n    }\n    else {\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }\n    *(byte *)(param_2 + 0x15) = bVar3 & 1;\n    param_2[0x14] = (int)uStack_90 >> 1;\n  }\n  puVar6 = (uint *)*piVar17;\n  param_2[5] = (int)puVar15;\n  if (puStack_8c == puVar6) {\n    return puVar6;\n  }\n  pcVar19 = *(code **)(pcVar19 + 0x12a2c0);\n  (*pcVar19)();\n  pcStack_d8 = pcVar19 + 0x131ca0;\n  piVar13 = (int *)*piVar13;\n  piVar7 = (int *)*puVar4;\n  puVar16 = *(undefined4 **)(pcVar19 + 0x12a1a4);\n  puVar6 = (uint *)*puVar16;\n  piVar9 = *(int **)(piVar13[3] + 0x30);\n  puStack_cc = puVar6;\n  piStack_c4 = param_2;\n  puStack_c0 = puVar15;\n  piStack_bc = piVar17;\n  if (piVar9 == (int *)0x2) {\n    if (piVar7 < (int *)puVar4[1]) {\n      piVar9 = &iStack_d0;\n      iVar2 = FUN_0006610c();\n      *puVar4 = *puVar4 + iVar2;\n      *piVar10 = *piVar10 + iStack_d0 + -2;\n      goto LAB_00066d4c;\n    }\n  }\n  else if (piVar7 < (int *)puVar4[1]) {\n    if (*(char *)piVar7 != '\x01') {\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }\n    piVar7 = (int *)((int)piVar7 + 1);\n    iVar2 = FUN_0006610c();\n    *puVar4 = *puVar4 + iVar2 + 1;\n    piVar9 = piVar10;\n    goto LAB_00066d4c;\n  }\nLAB_00066d48:\n  *piVar10 = -1;\nLAB_00066d4c:\n  puVar15 = (uint *)*puVar16;\n  if (puStack_cc == puVar15) {\n    return puVar15;\n  }\n  pcVar19 = *(code **)(pcStack_d8 + -0x7b28);\n  uVar20 = 0x66df8;\n  (*pcVar19)();\n  pcVar21 = pcVar19 + 0x131b28;\n  piVar10 = *(int **)(pcVar19 + 0x12a02c);\n  uVar14 = *puVar6;\n  puStack_f4 = (uint *)*piVar10;\n  uStack_ec = uVar20;\n  if ((int)uVar14 < (int)piVar9) {\n    iVar2 = (*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))\n                      ((char *)((int)piVar7 + uVar14),&piStack_100);\n    *puVar6 = iVar2 + uVar14;\n    uVar14 = piVar13[1];\n    uVar11 = uVar14 + iStack_fc;\n    piVar7 = (int *)(*piVar13 + (int)piStack_100);\n    piVar13[1] = uVar11;\n    *piVar13 = (int)((uint)(uVar11 < uVar14) + (int)piVar7);\n    piVar13 = piStack_100;\n  }\n  else {\n    *puVar6 = 0xffffffff;\n    piVar13 = (int *)0x0;\n  }\n  if (puStack_f4 != (uint *)*piVar10) {\n    (**(code **)(pcVar19 + 0x12a000))();\n    uVar14 = *puVar6;\n    uVar11 = puVar6[1];\n    puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    if (((uVar14 ^ (uint)pcVar21) & 0x7fffffff) != 0) {\n      *piVar13 = *piVar13 + 1;\n      *puVar8 = 1;\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar2 = FUN_00053284();\n      }\n      else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }\n      uVar14 = (uint)pcVar21 & 0x7fffffff;\n      uVar11 = 0;\n      *piVar13 = *piVar13 + iVar2;\n      *puVar6 = uVar14;\n      puVar6[1] = 0;\n      puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    }\n    uVar11 = uStack_10c - uVar11;\n    uVar12 = uVar11 + 2;\n    if ((pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)\n       && (uVar12 < 0x80)) {\n      *puVar8 = (char)uVar12;\n      *piVar13 = *piVar13 + 1;\n      *puVar6 = (uint)pcVar21;\n      puVar6[1] = uStack_10c;\n      return (uint *)0x1;\n    }\n    puVar15 = (uint *)FUN_00053284();\n    *piVar13 = *piVar13 + (int)puVar15;\n    *puVar6 = (uint)pcVar21;\n    puVar6[1] = uStack_10c;\n    return puVar15;\n  }\n  return (uint *)*piVar10;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "uint *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined4 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "undefined *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "code *pcVar19;" type_identifier (pointer_declarator "*pcVar19" * identifier) ;) (declaration "undefined4 uVar20;" type_identifier identifier ;) (declaration "code *pcVar21;" type_identifier (pointer_declarator "*pcVar21" * identifier) ;) (declaration "uint uStack_10c;" type_identifier identifier ;) (declaration "int *piStack_100;" primitive_type (pointer_declarator "*piStack_100" * identifier) ;) (declaration "int iStack_fc;" primitive_type identifier ;) (declaration "uint *puStack_f4;" type_identifier (pointer_declarator "*puStack_f4" * identifier) ;) (declaration "undefined4 uStack_ec;" type_identifier identifier ;) (declaration "code *pcStack_d8;" type_identifier (pointer_declarator "*pcStack_d8" * identifier) ;) (declaration "int iStack_d0;" primitive_type identifier ;) (declaration "uint *puStack_cc;" type_identifier (pointer_declarator "*puStack_cc" * identifier) ;) (declaration "int *piStack_c4;" primitive_type (pointer_declarator "*piStack_c4" * identifier) ;) (declaration "uint *puStack_c0;" type_identifier (pointer_declarator "*puStack_c0" * identifier) ;) (declaration "int *piStack_bc;" primitive_type (pointer_declarator "*piStack_bc" * identifier) ;) (declaration "uint uStack_90;" type_identifier identifier ;) (declaration "uint *puStack_8c;" type_identifier (pointer_declarator "*puStack_8c" * identifier) ;) (declaration "uint *puStack_88;" type_identifier (pointer_declarator "*puStack_88" * identifier) ;) (declaration "uint *puStack_84;" type_identifier (pointer_declarator "*puStack_84" * identifier) ;) (declaration "undefined4 *puStack_80;" type_identifier (pointer_declarator "*puStack_80" * identifier) ;) (declaration "code *pcStack_7c;" type_identifier (pointer_declarator "*pcStack_7c" * identifier) ;) (declaration "undefined *local_68;" type_identifier (pointer_declarator "*local_68" * identifier) ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "int *local_58;" primitive_type (pointer_declarator "*local_58" * identifier) ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "uint *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "undefined4 *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "uint *local_44;" type_identifier (pointer_declarator "*local_44" * identifier) ;) (declaration "undefined *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "int local_1c;" primitive_type identifier ;) (declaration "uint *local_14;" type_identifier (pointer_declarator "*local_14" * identifier) ;) (expression_statement "puVar1 = PTR___stack_chk_guard_00190e24;" (assignment_expression "puVar1 = PTR___stack_chk_guard_00190e24" identifier = identifier) ;) (expression_statement "piVar10 = (int *)param_1[1];" (assignment_expression "piVar10 = (int *)param_1[1]" identifier = (cast_expression "(int *)param_1[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "puVar15 = (uint *)*param_1;" (assignment_expression "puVar15 = (uint *)*param_1" identifier = (cast_expression "(uint *)*param_1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "local_14 = *(uint **)PTR___stack_chk_guard_00190e24;" (assignment_expression "local_14 = *(uint **)PTR___stack_chk_guard_00190e24" identifier = (pointer_expression "*(uint **)PTR___stack_chk_guard_00190e24" * (cast_expression "(uint **)PTR___stack_chk_guard_00190e24" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (piVar10 == (int *)0x0) {\n    param_1[1] = 1;\n    iVar2 = FUN_0006610c(*puVar15 + 1,param_1 + 4);\n    puVar18 = PTR_LAB_00190b40;\n    param_2 = param_1 + 6;\n    iVar5 = param_1[1];\n    param_1[1] = iVar2 + iVar5;\n    iVar2 = (*(code *)(puVar18 + -0x80))(*puVar15 + iVar2 + iVar5);\n    iVar5 = param_1[1];\n    puVar4 = (uint *)param_1[2];\n    param_1[1] = iVar2 + iVar5;\n    param_1[3] = iVar2 + iVar5;\n  }\n  else if ((int)piVar10 < (int)puVar15[1]) {\n    param_2 = (int *)*puVar15;\n    piVar13 = piVar10;\n    if (*(char *)((int)param_2 + (int)piVar10) == '\0') {\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }\n    else {\n      iVar2 = 1;\n    }\n    pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80);\n    param_1[4] = param_1[4] + iVar2;\n    iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20);\n    iVar2 = iVar2 + (int)piVar10;\n    piVar10 = (int *)param_1[7];\n    param_1[1] = iVar2;\n    puVar4 = (uint *)param_1[2];\n    param_1[7] = (int *)((int)piVar10 + local_1c);\n    param_2 = (int *)(param_1[6] + local_20);\n    param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2;\n  }\n  else {\nLAB_00066908:\n    puVar4 = (uint *)0x1;\n    param_1[2] = 1;\n  }" if (parenthesized_expression "(piVar10 == (int *)0x0)" ( (binary_expression "piVar10 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    param_1[1] = 1;\n    iVar2 = FUN_0006610c(*puVar15 + 1,param_1 + 4);\n    puVar18 = PTR_LAB_00190b40;\n    param_2 = param_1 + 6;\n    iVar5 = param_1[1];\n    param_1[1] = iVar2 + iVar5;\n    iVar2 = (*(code *)(puVar18 + -0x80))(*puVar15 + iVar2 + iVar5);\n    iVar5 = param_1[1];\n    puVar4 = (uint *)param_1[2];\n    param_1[1] = iVar2 + iVar5;\n    param_1[3] = iVar2 + iVar5;\n  }" { (expression_statement "param_1[1] = 1;" (assignment_expression "param_1[1] = 1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar2 = FUN_0006610c(*puVar15 + 1,param_1 + 4);" (assignment_expression "iVar2 = FUN_0006610c(*puVar15 + 1,param_1 + 4)" identifier = (call_expression "FUN_0006610c(*puVar15 + 1,param_1 + 4)" identifier (argument_list "(*puVar15 + 1,param_1 + 4)" ( (binary_expression "*puVar15 + 1" (pointer_expression "*puVar15" * identifier) + number_literal) , (binary_expression "param_1 + 4" identifier + number_literal) )))) ;) (expression_statement "puVar18 = PTR_LAB_00190b40;" (assignment_expression "puVar18 = PTR_LAB_00190b40" identifier = identifier) ;) (expression_statement "param_2 = param_1 + 6;" (assignment_expression "param_2 = param_1 + 6" identifier = (binary_expression "param_1 + 6" identifier + number_literal)) ;) (expression_statement "iVar5 = param_1[1];" (assignment_expression "iVar5 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "param_1[1] = iVar2 + iVar5;" (assignment_expression "param_1[1] = iVar2 + iVar5" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "iVar2 + iVar5" identifier + identifier)) ;) (expression_statement "iVar2 = (*(code *)(puVar18 + -0x80))(*puVar15 + iVar2 + iVar5);" (assignment_expression "iVar2 = (*(code *)(puVar18 + -0x80))(*puVar15 + iVar2 + iVar5)" identifier = (call_expression "(*(code *)(puVar18 + -0x80))(*puVar15 + iVar2 + iVar5)" (parenthesized_expression "(*(code *)(puVar18 + -0x80))" ( (pointer_expression "*(code *)(puVar18 + -0x80)" * (cast_expression "(code *)(puVar18 + -0x80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + -0x80)" ( (binary_expression "puVar18 + -0x80" identifier + number_literal) )))) )) (argument_list "(*puVar15 + iVar2 + iVar5)" ( (binary_expression "*puVar15 + iVar2 + iVar5" (binary_expression "*puVar15 + iVar2" (pointer_expression "*puVar15" * identifier) + identifier) + identifier) )))) ;) (expression_statement "iVar5 = param_1[1];" (assignment_expression "iVar5 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "puVar4 = (uint *)param_1[2];" (assignment_expression "puVar4 = (uint *)param_1[2]" identifier = (cast_expression "(uint *)param_1[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "param_1[1] = iVar2 + iVar5;" (assignment_expression "param_1[1] = iVar2 + iVar5" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "iVar2 + iVar5" identifier + identifier)) ;) (expression_statement "param_1[3] = iVar2 + iVar5;" (assignment_expression "param_1[3] = iVar2 + iVar5" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (binary_expression "iVar2 + iVar5" identifier + identifier)) ;) }) (else_clause "else if ((int)piVar10 < (int)puVar15[1]) {\n    param_2 = (int *)*puVar15;\n    piVar13 = piVar10;\n    if (*(char *)((int)param_2 + (int)piVar10) == '\0') {\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }\n    else {\n      iVar2 = 1;\n    }\n    pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80);\n    param_1[4] = param_1[4] + iVar2;\n    iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20);\n    iVar2 = iVar2 + (int)piVar10;\n    piVar10 = (int *)param_1[7];\n    param_1[1] = iVar2;\n    puVar4 = (uint *)param_1[2];\n    param_1[7] = (int *)((int)piVar10 + local_1c);\n    param_2 = (int *)(param_1[6] + local_20);\n    param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2;\n  }\n  else {\nLAB_00066908:\n    puVar4 = (uint *)0x1;\n    param_1[2] = 1;\n  }" else (if_statement "if ((int)piVar10 < (int)puVar15[1]) {\n    param_2 = (int *)*puVar15;\n    piVar13 = piVar10;\n    if (*(char *)((int)param_2 + (int)piVar10) == '\0') {\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }\n    else {\n      iVar2 = 1;\n    }\n    pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80);\n    param_1[4] = param_1[4] + iVar2;\n    iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20);\n    iVar2 = iVar2 + (int)piVar10;\n    piVar10 = (int *)param_1[7];\n    param_1[1] = iVar2;\n    puVar4 = (uint *)param_1[2];\n    param_1[7] = (int *)((int)piVar10 + local_1c);\n    param_2 = (int *)(param_1[6] + local_20);\n    param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2;\n  }\n  else {\nLAB_00066908:\n    puVar4 = (uint *)0x1;\n    param_1[2] = 1;\n  }" if (parenthesized_expression "((int)piVar10 < (int)puVar15[1])" ( (binary_expression "(int)piVar10 < (int)puVar15[1]" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar15[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar15[1]" identifier [ number_literal ]))) )) (compound_statement "{\n    param_2 = (int *)*puVar15;\n    piVar13 = piVar10;\n    if (*(char *)((int)param_2 + (int)piVar10) == '\0') {\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }\n    else {\n      iVar2 = 1;\n    }\n    pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80);\n    param_1[4] = param_1[4] + iVar2;\n    iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20);\n    iVar2 = iVar2 + (int)piVar10;\n    piVar10 = (int *)param_1[7];\n    param_1[1] = iVar2;\n    puVar4 = (uint *)param_1[2];\n    param_1[7] = (int *)((int)piVar10 + local_1c);\n    param_2 = (int *)(param_1[6] + local_20);\n    param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2;\n  }" { (expression_statement "param_2 = (int *)*puVar15;" (assignment_expression "param_2 = (int *)*puVar15" identifier = (cast_expression "(int *)*puVar15" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar15" * identifier))) ;) (expression_statement "piVar13 = piVar10;" (assignment_expression "piVar13 = piVar10" identifier = identifier) ;) (if_statement "if (*(char *)((int)param_2 + (int)piVar10) == '\0') {\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }\n    else {\n      iVar2 = 1;\n    }" if (parenthesized_expression "(*(char *)((int)param_2 + (int)piVar10) == '\0')" ( (binary_expression "*(char *)((int)param_2 + (int)piVar10) == '\0'" (pointer_expression "*(char *)((int)param_2 + (int)piVar10)" * (cast_expression "(char *)((int)param_2 + (int)piVar10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + (int)piVar10)" ( (binary_expression "(int)param_2 + (int)piVar10" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }" { (do_statement "do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');" do (compound_statement "{\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      }" { (expression_statement "piVar13 = (int *)((int)piVar13 + 1);" (assignment_expression "piVar13 = (int *)((int)piVar13 + 1)" identifier = (cast_expression "(int *)((int)piVar13 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar13 + 1)" ( (binary_expression "(int)piVar13 + 1" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;" if (parenthesized_expression "(piVar13 == (int *)puVar15[1])" ( (binary_expression "piVar13 == (int *)puVar15[1]" identifier == (cast_expression "(int *)puVar15[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar15[1]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_00066908;" goto statement_identifier ;)) }) while (parenthesized_expression "(*(char *)((int)param_2 + (int)piVar13) == '\0')" ( (binary_expression "*(char *)((int)param_2 + (int)piVar13) == '\0'" (pointer_expression "*(char *)((int)param_2 + (int)piVar13)" * (cast_expression "(char *)((int)param_2 + (int)piVar13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + (int)piVar13)" ( (binary_expression "(int)param_2 + (int)piVar13" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )))) == (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "iVar2 = (int)piVar13 + (1 - (int)piVar10);" (assignment_expression "iVar2 = (int)piVar13 + (1 - (int)piVar10)" identifier = (binary_expression "(int)piVar13 + (1 - (int)piVar10)" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(1 - (int)piVar10)" ( (binary_expression "1 - (int)piVar10" number_literal - (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "piVar10 = piVar13;" (assignment_expression "piVar10 = piVar13" identifier = identifier) ;) }) (else_clause "else {\n      iVar2 = 1;\n    }" else (compound_statement "{\n      iVar2 = 1;\n    }" { (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) }))) (expression_statement "pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80);" (assignment_expression "pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80)" identifier = (cast_expression "(code *)(PTR_LAB_00190b40 + -0x80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190b40 + -0x80)" ( (binary_expression "PTR_LAB_00190b40 + -0x80" identifier + number_literal) )))) ;) (expression_statement "param_1[4] = param_1[4] + iVar2;" (assignment_expression "param_1[4] = param_1[4] + iVar2" (subscript_expression "param_1[4]" identifier [ number_literal ]) = (binary_expression "param_1[4] + iVar2" (subscript_expression "param_1[4]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20);" (assignment_expression "iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20)" identifier = (call_expression "(*pcVar19)(*puVar15 + (int)piVar10,&local_20)" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "(*puVar15 + (int)piVar10,&local_20)" ( (binary_expression "*puVar15 + (int)piVar10" (pointer_expression "*puVar15" * identifier) + (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier)) , (pointer_expression "&local_20" & identifier) )))) ;) (expression_statement "iVar2 = iVar2 + (int)piVar10;" (assignment_expression "iVar2 = iVar2 + (int)piVar10" identifier = (binary_expression "iVar2 + (int)piVar10" identifier + (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar10 = (int *)param_1[7];" (assignment_expression "piVar10 = (int *)param_1[7]" identifier = (cast_expression "(int *)param_1[7]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[7]" identifier [ number_literal ]))) ;) (expression_statement "param_1[1] = iVar2;" (assignment_expression "param_1[1] = iVar2" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4 = (uint *)param_1[2];" (assignment_expression "puVar4 = (uint *)param_1[2]" identifier = (cast_expression "(uint *)param_1[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "param_1[7] = (int *)((int)piVar10 + local_1c);" (assignment_expression "param_1[7] = (int *)((int)piVar10 + local_1c)" (subscript_expression "param_1[7]" identifier [ number_literal ]) = (cast_expression "(int *)((int)piVar10 + local_1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar10 + local_1c)" ( (binary_expression "(int)piVar10 + local_1c" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "param_2 = (int *)(param_1[6] + local_20);" (assignment_expression "param_2 = (int *)(param_1[6] + local_20)" identifier = (cast_expression "(int *)(param_1[6] + local_20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[6] + local_20)" ( (binary_expression "param_1[6] + local_20" (subscript_expression "param_1[6]" identifier [ number_literal ]) + identifier) )))) ;) (expression_statement "param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2;" (assignment_expression "param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (binary_expression "(uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2" (call_expression "(uint)((int *)((int)piVar10 + local_1c) < piVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int *)((int)piVar10 + local_1c) < piVar10)" ( (binary_expression "(int *)((int)piVar10 + local_1c) < piVar10" (cast_expression "(int *)((int)piVar10 + local_1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar10 + local_1c)" ( (binary_expression "(int)piVar10 + local_1c" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) < identifier) ))) + (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) (else_clause "else {\nLAB_00066908:\n    puVar4 = (uint *)0x1;\n    param_1[2] = 1;\n  }" else (compound_statement "{\nLAB_00066908:\n    puVar4 = (uint *)0x1;\n    param_1[2] = 1;\n  }" { (labeled_statement "LAB_00066908:\n    puVar4 = (uint *)0x1;" statement_identifier : (expression_statement "puVar4 = (uint *)0x1;" (assignment_expression "puVar4 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "param_1[2] = 1;" (assignment_expression "param_1[2] = 1" (subscript_expression "param_1[2]" identifier [ number_literal ]) = number_literal) ;) }))))) (if_statement "if (local_14 == *(uint **)puVar1) {\n    return puVar4;\n  }" if (parenthesized_expression "(local_14 == *(uint **)puVar1)" ( (binary_expression "local_14 == *(uint **)puVar1" identifier == (pointer_expression "*(uint **)puVar1" * (cast_expression "(uint **)puVar1" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return puVar4;\n  }" { (return_statement "return puVar4;" return identifier ;) })) (expression_statement "uVar20 = 0x66a18;" (assignment_expression "uVar20 = 0x66a18" identifier = number_literal) ;) (expression_statement "puVar4 = local_14;" (assignment_expression "puVar4 = local_14" identifier = identifier) ;) (expression_statement "puVar18 = PTR___stack_chk_fail_00190df8;" (assignment_expression "puVar18 = PTR___stack_chk_fail_00190df8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00190df8)();" (call_expression "(*(code *)PTR___stack_chk_fail_00190df8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00190df8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00190df8" * (cast_expression "(code *)PTR___stack_chk_fail_00190df8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "local_68 = puVar18 + 0x131f08;" (assignment_expression "local_68 = puVar18 + 0x131f08" identifier = (binary_expression "puVar18 + 0x131f08" identifier + number_literal)) ;) (expression_statement "local_40 = puVar1;" (assignment_expression "local_40 = puVar1" identifier = identifier) ;) (expression_statement "puVar16 = *(undefined4 **)(puVar18 + 0x12a40c);" (assignment_expression "puVar16 = *(undefined4 **)(puVar18 + 0x12a40c)" identifier = (pointer_expression "*(undefined4 **)(puVar18 + 0x12a40c)" * (cast_expression "(undefined4 **)(puVar18 + 0x12a40c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x12a40c)" ( (binary_expression "puVar18 + 0x12a40c" identifier + number_literal) ))))) ;) (expression_statement "puVar6 = (uint *)*puVar16;" (assignment_expression "puVar6 = (uint *)*puVar16" identifier = (cast_expression "(uint *)*puVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier))) ;) (expression_statement "uVar14 = puVar4[4] + puVar4[6] + puVar4[5];" (assignment_expression "uVar14 = puVar4[4] + puVar4[6] + puVar4[5]" identifier = (binary_expression "puVar4[4] + puVar4[6] + puVar4[5]" (binary_expression "puVar4[4] + puVar4[6]" (subscript_expression "puVar4[4]" identifier [ number_literal ]) + (subscript_expression "puVar4[6]" identifier [ number_literal ])) + (subscript_expression "puVar4[5]" identifier [ number_literal ]))) ;) (expression_statement "local_4c = puVar6;" (assignment_expression "local_4c = puVar6" identifier = identifier) ;) (expression_statement "local_48 = param_1;" (assignment_expression "local_48 = param_1" identifier = identifier) ;) (expression_statement "local_44 = puVar15;" (assignment_expression "local_44 = puVar15" identifier = identifier) ;) (expression_statement "local_3c = uVar20;" (assignment_expression "local_3c = uVar20" identifier = identifier) ;) (if_statement "if (uVar14 < *puVar4) {\n    iVar2 = (*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))(uVar14,&local_58);\n    puVar6 = (uint *)puVar4[3];\n    puVar15 = (uint *)(uVar14 + iVar2);\n    puVar4[3] = (uint)((int)puVar6 + local_54);\n    puVar4[2] = (int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6) + puVar4[2];\n    bVar3 = *(byte *)puVar15;\n    if ((char)bVar3 < '\0') {\n      param_2 = &local_5c;\n      puVar6 = puVar15;\n      uVar14 = FUN_0006610c();\n      puVar4[6] = uVar14;\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = local_5c >> 1;\n    }\n    else {\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = (uint)(bVar3 >> 1);\n      puVar4[6] = 1;\n      param_2 = local_58;\n    }\n  }\n  else {\n    puVar4[4] = 0;\n  }" if (parenthesized_expression "(uVar14 < *puVar4)" ( (binary_expression "uVar14 < *puVar4" identifier < (pointer_expression "*puVar4" * identifier)) )) (compound_statement "{\n    iVar2 = (*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))(uVar14,&local_58);\n    puVar6 = (uint *)puVar4[3];\n    puVar15 = (uint *)(uVar14 + iVar2);\n    puVar4[3] = (uint)((int)puVar6 + local_54);\n    puVar4[2] = (int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6) + puVar4[2];\n    bVar3 = *(byte *)puVar15;\n    if ((char)bVar3 < '\0') {\n      param_2 = &local_5c;\n      puVar6 = puVar15;\n      uVar14 = FUN_0006610c();\n      puVar4[6] = uVar14;\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = local_5c >> 1;\n    }\n    else {\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = (uint)(bVar3 >> 1);\n      puVar4[6] = 1;\n      param_2 = local_58;\n    }\n  }" { (expression_statement "iVar2 = (*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))(uVar14,&local_58);" (assignment_expression "iVar2 = (*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))(uVar14,&local_58)" identifier = (call_expression "(*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))(uVar14,&local_58)" (parenthesized_expression "(*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))" ( (pointer_expression "*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80)" * (cast_expression "(code *)(*(int *)(puVar18 + 0x12a128) + -0x80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar18 + 0x12a128) + -0x80)" ( (binary_expression "*(int *)(puVar18 + 0x12a128) + -0x80" (pointer_expression "*(int *)(puVar18 + 0x12a128)" * (cast_expression "(int *)(puVar18 + 0x12a128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x12a128)" ( (binary_expression "puVar18 + 0x12a128" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(uVar14,&local_58)" ( identifier , (pointer_expression "&local_58" & identifier) )))) ;) (expression_statement "puVar6 = (uint *)puVar4[3];" (assignment_expression "puVar6 = (uint *)puVar4[3]" identifier = (cast_expression "(uint *)puVar4[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[3]" identifier [ number_literal ]))) ;) (expression_statement "puVar15 = (uint *)(uVar14 + iVar2);" (assignment_expression "puVar15 = (uint *)(uVar14 + iVar2)" identifier = (cast_expression "(uint *)(uVar14 + iVar2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar14 + iVar2)" ( (binary_expression "uVar14 + iVar2" identifier + identifier) )))) ;) (expression_statement "puVar4[3] = (uint)((int)puVar6 + local_54);" (assignment_expression "puVar4[3] = (uint)((int)puVar6 + local_54)" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = (call_expression "(uint)((int)puVar6 + local_54)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar6 + local_54)" ( (binary_expression "(int)puVar6 + local_54" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar4[2] = (int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6) + puVar4[2];" (assignment_expression "puVar4[2] = (int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6) + puVar4[2]" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = (binary_expression "(int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6) + puVar4[2]" (binary_expression "(int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6)" (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier) + (call_expression "(uint)((uint *)((int)puVar6 + local_54) < puVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint *)((int)puVar6 + local_54) < puVar6)" ( (binary_expression "(uint *)((int)puVar6 + local_54) < puVar6" (cast_expression "(uint *)((int)puVar6 + local_54)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 + local_54)" ( (binary_expression "(int)puVar6 + local_54" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) < identifier) )))) + (subscript_expression "puVar4[2]" identifier [ number_literal ]))) ;) (expression_statement "bVar3 = *(byte *)puVar15;" (assignment_expression "bVar3 = *(byte *)puVar15" identifier = (pointer_expression "*(byte *)puVar15" * (cast_expression "(byte *)puVar15" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if ((char)bVar3 < '\0') {\n      param_2 = &local_5c;\n      puVar6 = puVar15;\n      uVar14 = FUN_0006610c();\n      puVar4[6] = uVar14;\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = local_5c >> 1;\n    }\n    else {\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = (uint)(bVar3 >> 1);\n      puVar4[6] = 1;\n      param_2 = local_58;\n    }" if (parenthesized_expression "((char)bVar3 < '\0')" ( (binary_expression "(char)bVar3 < '\0'" (cast_expression "(char)bVar3" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      param_2 = &local_5c;\n      puVar6 = puVar15;\n      uVar14 = FUN_0006610c();\n      puVar4[6] = uVar14;\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = local_5c >> 1;\n    }" { (expression_statement "param_2 = &local_5c;" (assignment_expression "param_2 = &local_5c" identifier = (pointer_expression "&local_5c" & identifier)) ;) (expression_statement "puVar6 = puVar15;" (assignment_expression "puVar6 = puVar15" identifier = identifier) ;) (expression_statement "uVar14 = FUN_0006610c();" (assignment_expression "uVar14 = FUN_0006610c()" identifier = (call_expression "FUN_0006610c()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar4[6] = uVar14;" (assignment_expression "puVar4[6] = uVar14" (subscript_expression "puVar4[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[4] = (uint)puVar15;" (assignment_expression "puVar4[4] = (uint)puVar15" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = (cast_expression "(uint)puVar15" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar4[5] = local_5c >> 1;" (assignment_expression "puVar4[5] = local_5c >> 1" (subscript_expression "puVar4[5]" identifier [ number_literal ]) = (binary_expression "local_5c >> 1" identifier >> number_literal)) ;) }) (else_clause "else {\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = (uint)(bVar3 >> 1);\n      puVar4[6] = 1;\n      param_2 = local_58;\n    }" else (compound_statement "{\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = (uint)(bVar3 >> 1);\n      puVar4[6] = 1;\n      param_2 = local_58;\n    }" { (expression_statement "puVar4[4] = (uint)puVar15;" (assignment_expression "puVar4[4] = (uint)puVar15" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = (cast_expression "(uint)puVar15" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar4[5] = (uint)(bVar3 >> 1);" (assignment_expression "puVar4[5] = (uint)(bVar3 >> 1)" (subscript_expression "puVar4[5]" identifier [ number_literal ]) = (call_expression "(uint)(bVar3 >> 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar3 >> 1)" ( (binary_expression "bVar3 >> 1" identifier >> number_literal) )))) ;) (expression_statement "puVar4[6] = 1;" (assignment_expression "puVar4[6] = 1" (subscript_expression "puVar4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2 = local_58;" (assignment_expression "param_2 = local_58" identifier = identifier) ;) }))) }) (else_clause "else {\n    puVar4[4] = 0;\n  }" else (compound_statement "{\n    puVar4[4] = 0;\n  }" { (expression_statement "puVar4[4] = 0;" (assignment_expression "puVar4[4] = 0" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = number_literal) ;) }))) (if_statement "if (local_4c == (uint *)*puVar16) {\n    return (uint *)*puVar16;\n  }" if (parenthesized_expression "(local_4c == (uint *)*puVar16)" ( (binary_expression "local_4c == (uint *)*puVar16" identifier == (cast_expression "(uint *)*puVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier))) )) (compound_statement "{\n    return (uint *)*puVar16;\n  }" { (return_statement "return (uint *)*puVar16;" return (cast_expression "(uint *)*puVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier)) ;) })) (expression_statement "pcVar19 = *(code **)(local_68 + -0x7b28);" (assignment_expression "pcVar19 = *(code **)(local_68 + -0x7b28)" identifier = (pointer_expression "*(code **)(local_68 + -0x7b28)" * (cast_expression "(code **)(local_68 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_68 + -0x7b28)" ( (binary_expression "local_68 + -0x7b28" identifier + number_literal) ))))) ;) (expression_statement "pcVar21 = FUN_00066b38;" (assignment_expression "pcVar21 = FUN_00066b38" identifier = identifier) ;) (expression_statement "(*pcVar19)();" (call_expression "(*pcVar19)()" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_80 = puVar16;" (assignment_expression "puStack_80 = puVar16" identifier = identifier) ;) (expression_statement "puStack_88 = puVar4;" (assignment_expression "puStack_88 = puVar4" identifier = identifier) ;) (expression_statement "pcStack_7c = pcVar21;" (assignment_expression "pcStack_7c = pcVar21" identifier = identifier) ;) (expression_statement "puStack_84 = puVar15;" (assignment_expression "puStack_84 = puVar15" identifier = identifier) ;) (expression_statement "piVar17 = *(int **)(pcVar19 + 0x12a2ec);" (assignment_expression "piVar17 = *(int **)(pcVar19 + 0x12a2ec)" identifier = (pointer_expression "*(int **)(pcVar19 + 0x12a2ec)" * (cast_expression "(int **)(pcVar19 + 0x12a2ec)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x12a2ec)" ( (binary_expression "pcVar19 + 0x12a2ec" identifier + number_literal) ))))) ;) (expression_statement "puVar15 = (uint *)param_2[5];" (assignment_expression "puVar15 = (uint *)param_2[5]" identifier = (cast_expression "(uint *)param_2[5]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[5]" identifier [ number_literal ]))) ;) (expression_statement "piVar13 = (int *)param_2[3];" (assignment_expression "piVar13 = (int *)param_2[3]" identifier = (cast_expression "(int *)param_2[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) ;) (expression_statement "puStack_8c = (uint *)*piVar17;" (assignment_expression "puStack_8c = (uint *)*piVar17" identifier = (cast_expression "(uint *)*piVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar17" * identifier))) ;) (if_statement "if (puVar6[0xc] == 1) {\n    piVar10 = (int *)piVar13[2];\n    *(undefined1 *)(param_2 + 0x15) = 0;\n    piVar9 = (int *)param_2[10];\n    if ((int)piVar10 <= param_2[10]) {\n      piVar9 = piVar10;\n    }\n    puVar4 = (uint *)(uint)((int)puVar15 < (int)piVar9);\n    param_2[0x14] = 1;\n    if ((puVar4 != (uint *)0x0) &&\n       (puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0')) {\n      *(undefined1 *)(param_2 + 0x15) = 1;\n      if (((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')) {\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }\n      else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }\n    }\n  }\n  else {\n    bVar3 = *(byte *)(*piVar13 + (int)puVar15);\n    uStack_90 = (uint)bVar3;\n    puVar4 = (uint *)(int)(char)bVar3;\n    if ((int)puVar4 < 0) {\n      puVar4 = &uStack_90;\n      piVar13 = (int *)(*piVar13 + (int)puVar15);\n      iVar2 = FUN_0006610c();\n      puVar15 = (uint *)((int)puVar15 + iVar2);\n      bVar3 = (byte)uStack_90;\n    }\n    else {\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }\n    *(byte *)(param_2 + 0x15) = bVar3 & 1;\n    param_2[0x14] = (int)uStack_90 >> 1;\n  }" if (parenthesized_expression "(puVar6[0xc] == 1)" ( (binary_expression "puVar6[0xc] == 1" (subscript_expression "puVar6[0xc]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    piVar10 = (int *)piVar13[2];\n    *(undefined1 *)(param_2 + 0x15) = 0;\n    piVar9 = (int *)param_2[10];\n    if ((int)piVar10 <= param_2[10]) {\n      piVar9 = piVar10;\n    }\n    puVar4 = (uint *)(uint)((int)puVar15 < (int)piVar9);\n    param_2[0x14] = 1;\n    if ((puVar4 != (uint *)0x0) &&\n       (puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0')) {\n      *(undefined1 *)(param_2 + 0x15) = 1;\n      if (((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')) {\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }\n      else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }\n    }\n  }" { (expression_statement "piVar10 = (int *)piVar13[2];" (assignment_expression "piVar10 = (int *)piVar13[2]" identifier = (cast_expression "(int *)piVar13[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar13[2]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined1 *)(param_2 + 0x15) = 0;" (assignment_expression "*(undefined1 *)(param_2 + 0x15) = 0" (pointer_expression "*(undefined1 *)(param_2 + 0x15)" * (cast_expression "(undefined1 *)(param_2 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x15)" ( (binary_expression "param_2 + 0x15" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar9 = (int *)param_2[10];" (assignment_expression "piVar9 = (int *)param_2[10]" identifier = (cast_expression "(int *)param_2[10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[10]" identifier [ number_literal ]))) ;) (if_statement "if ((int)piVar10 <= param_2[10]) {\n      piVar9 = piVar10;\n    }" if (parenthesized_expression "((int)piVar10 <= param_2[10])" ( (binary_expression "(int)piVar10 <= param_2[10]" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) <= (subscript_expression "param_2[10]" identifier [ number_literal ])) )) (compound_statement "{\n      piVar9 = piVar10;\n    }" { (expression_statement "piVar9 = piVar10;" (assignment_expression "piVar9 = piVar10" identifier = identifier) ;) })) (expression_statement "puVar4 = (uint *)(uint)((int)puVar15 < (int)piVar9);" (assignment_expression "puVar4 = (uint *)(uint)((int)puVar15 < (int)piVar9)" identifier = (cast_expression "(uint *)(uint)((int)puVar15 < (int)piVar9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)((int)puVar15 < (int)piVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar15 < (int)piVar9)" ( (binary_expression "(int)puVar15 < (int)piVar9" (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "param_2[0x14] = 1;" (assignment_expression "param_2[0x14] = 1" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if ((puVar4 != (uint *)0x0) &&\n       (puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0')) {\n      *(undefined1 *)(param_2 + 0x15) = 1;\n      if (((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')) {\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }\n      else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }\n    }" if (parenthesized_expression "((puVar4 != (uint *)0x0) &&\n       (puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0'))" ( (binary_expression "(puVar4 != (uint *)0x0) &&\n       (puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0')" (parenthesized_expression "(puVar4 != (uint *)0x0)" ( (binary_expression "puVar4 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0')" ( (comma_expression "puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0'" (assignment_expression "puVar4 = (uint *)((int)puVar15 + 1)" identifier = (cast_expression "(uint *)((int)puVar15 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar15 + 1)" ( (binary_expression "(int)puVar15 + 1" (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (binary_expression "*(char *)(*piVar13 + (int)puVar15) == '\0'" (pointer_expression "*(char *)(*piVar13 + (int)puVar15)" * (cast_expression "(char *)(*piVar13 + (int)puVar15)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar13 + (int)puVar15)" ( (binary_expression "*piVar13 + (int)puVar15" (pointer_expression "*piVar13" * identifier) + (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )))) == (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n      *(undefined1 *)(param_2 + 0x15) = 1;\n      if (((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')) {\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }\n      else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }\n    }" { (expression_statement "*(undefined1 *)(param_2 + 0x15) = 1;" (assignment_expression "*(undefined1 *)(param_2 + 0x15) = 1" (pointer_expression "*(undefined1 *)(param_2 + 0x15)" * (cast_expression "(undefined1 *)(param_2 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x15)" ( (binary_expression "param_2 + 0x15" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')) {\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }\n      else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }" if (parenthesized_expression "(((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0'))" ( (binary_expression "((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')" (parenthesized_expression "((int)puVar4 < (int)piVar9)" ( (binary_expression "(int)puVar4 < (int)piVar9" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(*(char *)(*piVar13 + (int)puVar4) == '\0')" ( (binary_expression "*(char *)(*piVar13 + (int)puVar4) == '\0'" (pointer_expression "*(char *)(*piVar13 + (int)puVar4)" * (cast_expression "(char *)(*piVar13 + (int)puVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar13 + (int)puVar4)" ( (binary_expression "*piVar13 + (int)puVar4" (pointer_expression "*piVar13" * identifier) + (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }" { (expression_statement "puVar15 = (uint *)((int)puVar15 + 2);" (assignment_expression "puVar15 = (uint *)((int)puVar15 + 2)" identifier = (cast_expression "(uint *)((int)puVar15 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar15 + 2)" ( (binary_expression "(int)puVar15 + 2" (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) (else_clause "else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }" else (compound_statement "{\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }" { (expression_statement "param_2[0x14] = 0;" (assignment_expression "param_2[0x14] = 0" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar15 = puVar4;" (assignment_expression "puVar15 = puVar4" identifier = identifier) ;) }))) })) }) (else_clause "else {\n    bVar3 = *(byte *)(*piVar13 + (int)puVar15);\n    uStack_90 = (uint)bVar3;\n    puVar4 = (uint *)(int)(char)bVar3;\n    if ((int)puVar4 < 0) {\n      puVar4 = &uStack_90;\n      piVar13 = (int *)(*piVar13 + (int)puVar15);\n      iVar2 = FUN_0006610c();\n      puVar15 = (uint *)((int)puVar15 + iVar2);\n      bVar3 = (byte)uStack_90;\n    }\n    else {\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }\n    *(byte *)(param_2 + 0x15) = bVar3 & 1;\n    param_2[0x14] = (int)uStack_90 >> 1;\n  }" else (compound_statement "{\n    bVar3 = *(byte *)(*piVar13 + (int)puVar15);\n    uStack_90 = (uint)bVar3;\n    puVar4 = (uint *)(int)(char)bVar3;\n    if ((int)puVar4 < 0) {\n      puVar4 = &uStack_90;\n      piVar13 = (int *)(*piVar13 + (int)puVar15);\n      iVar2 = FUN_0006610c();\n      puVar15 = (uint *)((int)puVar15 + iVar2);\n      bVar3 = (byte)uStack_90;\n    }\n    else {\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }\n    *(byte *)(param_2 + 0x15) = bVar3 & 1;\n    param_2[0x14] = (int)uStack_90 >> 1;\n  }" { (expression_statement "bVar3 = *(byte *)(*piVar13 + (int)puVar15);" (assignment_expression "bVar3 = *(byte *)(*piVar13 + (int)puVar15)" identifier = (pointer_expression "*(byte *)(*piVar13 + (int)puVar15)" * (cast_expression "(byte *)(*piVar13 + (int)puVar15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar13 + (int)puVar15)" ( (binary_expression "*piVar13 + (int)puVar15" (pointer_expression "*piVar13" * identifier) + (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "uStack_90 = (uint)bVar3;" (assignment_expression "uStack_90 = (uint)bVar3" identifier = (cast_expression "(uint)bVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar4 = (uint *)(int)(char)bVar3;" (assignment_expression "puVar4 = (uint *)(int)(char)bVar3" identifier = (cast_expression "(uint *)(int)(char)bVar3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)bVar3" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar3" ( (type_descriptor "char" primitive_type) ) identifier)))) ;) (if_statement "if ((int)puVar4 < 0) {\n      puVar4 = &uStack_90;\n      piVar13 = (int *)(*piVar13 + (int)puVar15);\n      iVar2 = FUN_0006610c();\n      puVar15 = (uint *)((int)puVar15 + iVar2);\n      bVar3 = (byte)uStack_90;\n    }\n    else {\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }" if (parenthesized_expression "((int)puVar4 < 0)" ( (binary_expression "(int)puVar4 < 0" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      puVar4 = &uStack_90;\n      piVar13 = (int *)(*piVar13 + (int)puVar15);\n      iVar2 = FUN_0006610c();\n      puVar15 = (uint *)((int)puVar15 + iVar2);\n      bVar3 = (byte)uStack_90;\n    }" { (expression_statement "puVar4 = &uStack_90;" (assignment_expression "puVar4 = &uStack_90" identifier = (pointer_expression "&uStack_90" & identifier)) ;) (expression_statement "piVar13 = (int *)(*piVar13 + (int)puVar15);" (assignment_expression "piVar13 = (int *)(*piVar13 + (int)puVar15)" identifier = (cast_expression "(int *)(*piVar13 + (int)puVar15)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar13 + (int)puVar15)" ( (binary_expression "*piVar13 + (int)puVar15" (pointer_expression "*piVar13" * identifier) + (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "iVar2 = FUN_0006610c();" (assignment_expression "iVar2 = FUN_0006610c()" identifier = (call_expression "FUN_0006610c()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar15 = (uint *)((int)puVar15 + iVar2);" (assignment_expression "puVar15 = (uint *)((int)puVar15 + iVar2)" identifier = (cast_expression "(uint *)((int)puVar15 + iVar2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar15 + iVar2)" ( (binary_expression "(int)puVar15 + iVar2" (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "bVar3 = (byte)uStack_90;" (assignment_expression "bVar3 = (byte)uStack_90" identifier = (cast_expression "(byte)uStack_90" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }) (else_clause "else {\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }" else (compound_statement "{\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }" { (expression_statement "puVar15 = (uint *)((int)puVar15 + 1);" (assignment_expression "puVar15 = (uint *)((int)puVar15 + 1)" identifier = (cast_expression "(uint *)((int)puVar15 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar15 + 1)" ( (binary_expression "(int)puVar15 + 1" (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }))) (expression_statement "*(byte *)(param_2 + 0x15) = bVar3 & 1;" (assignment_expression "*(byte *)(param_2 + 0x15) = bVar3 & 1" (pointer_expression "*(byte *)(param_2 + 0x15)" * (cast_expression "(byte *)(param_2 + 0x15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x15)" ( (binary_expression "param_2 + 0x15" identifier + number_literal) )))) = (binary_expression "bVar3 & 1" identifier & number_literal)) ;) (expression_statement "param_2[0x14] = (int)uStack_90 >> 1;" (assignment_expression "param_2[0x14] = (int)uStack_90 >> 1" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = (binary_expression "(int)uStack_90 >> 1" (cast_expression "(int)uStack_90" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) }))) (expression_statement "puVar6 = (uint *)*piVar17;" (assignment_expression "puVar6 = (uint *)*piVar17" identifier = (cast_expression "(uint *)*piVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar17" * identifier))) ;) (expression_statement "param_2[5] = (int)puVar15;" (assignment_expression "param_2[5] = (int)puVar15" (subscript_expression "param_2[5]" identifier [ number_literal ]) = (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (puStack_8c == puVar6) {\n    return puVar6;\n  }" if (parenthesized_expression "(puStack_8c == puVar6)" ( (binary_expression "puStack_8c == puVar6" identifier == identifier) )) (compound_statement "{\n    return puVar6;\n  }" { (return_statement "return puVar6;" return identifier ;) })) (expression_statement "pcVar19 = *(code **)(pcVar19 + 0x12a2c0);" (assignment_expression "pcVar19 = *(code **)(pcVar19 + 0x12a2c0)" identifier = (pointer_expression "*(code **)(pcVar19 + 0x12a2c0)" * (cast_expression "(code **)(pcVar19 + 0x12a2c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x12a2c0)" ( (binary_expression "pcVar19 + 0x12a2c0" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar19)();" (call_expression "(*pcVar19)()" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcStack_d8 = pcVar19 + 0x131ca0;" (assignment_expression "pcStack_d8 = pcVar19 + 0x131ca0" identifier = (binary_expression "pcVar19 + 0x131ca0" identifier + number_literal)) ;) (expression_statement "piVar13 = (int *)*piVar13;" (assignment_expression "piVar13 = (int *)*piVar13" identifier = (cast_expression "(int *)*piVar13" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar13" * identifier))) ;) (expression_statement "piVar7 = (int *)*puVar4;" (assignment_expression "piVar7 = (int *)*puVar4" identifier = (cast_expression "(int *)*puVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar4" * identifier))) ;) (expression_statement "puVar16 = *(undefined4 **)(pcVar19 + 0x12a1a4);" (assignment_expression "puVar16 = *(undefined4 **)(pcVar19 + 0x12a1a4)" identifier = (pointer_expression "*(undefined4 **)(pcVar19 + 0x12a1a4)" * (cast_expression "(undefined4 **)(pcVar19 + 0x12a1a4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x12a1a4)" ( (binary_expression "pcVar19 + 0x12a1a4" identifier + number_literal) ))))) ;) (expression_statement "puVar6 = (uint *)*puVar16;" (assignment_expression "puVar6 = (uint *)*puVar16" identifier = (cast_expression "(uint *)*puVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier))) ;) (expression_statement "piVar9 = *(int **)(piVar13[3] + 0x30);" (assignment_expression "piVar9 = *(int **)(piVar13[3] + 0x30)" identifier = (pointer_expression "*(int **)(piVar13[3] + 0x30)" * (cast_expression "(int **)(piVar13[3] + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar13[3] + 0x30)" ( (binary_expression "piVar13[3] + 0x30" (subscript_expression "piVar13[3]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "puStack_cc = puVar6;" (assignment_expression "puStack_cc = puVar6" identifier = identifier) ;) (expression_statement "piStack_c4 = param_2;" (assignment_expression "piStack_c4 = param_2" identifier = identifier) ;) (expression_statement "puStack_c0 = puVar15;" (assignment_expression "puStack_c0 = puVar15" identifier = identifier) ;) (expression_statement "piStack_bc = piVar17;" (assignment_expression "piStack_bc = piVar17" identifier = identifier) ;) (if_statement "if (piVar9 == (int *)0x2) {\n    if (piVar7 < (int *)puVar4[1]) {\n      piVar9 = &iStack_d0;\n      iVar2 = FUN_0006610c();\n      *puVar4 = *puVar4 + iVar2;\n      *piVar10 = *piVar10 + iStack_d0 + -2;\n      goto LAB_00066d4c;\n    }\n  }\n  else if (piVar7 < (int *)puVar4[1]) {\n    if (*(char *)piVar7 != '\x01') {\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }\n    piVar7 = (int *)((int)piVar7 + 1);\n    iVar2 = FUN_0006610c();\n    *puVar4 = *puVar4 + iVar2 + 1;\n    piVar9 = piVar10;\n    goto LAB_00066d4c;\n  }" if (parenthesized_expression "(piVar9 == (int *)0x2)" ( (binary_expression "piVar9 == (int *)0x2" identifier == (cast_expression "(int *)0x2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (piVar7 < (int *)puVar4[1]) {\n      piVar9 = &iStack_d0;\n      iVar2 = FUN_0006610c();\n      *puVar4 = *puVar4 + iVar2;\n      *piVar10 = *piVar10 + iStack_d0 + -2;\n      goto LAB_00066d4c;\n    }\n  }" { (if_statement "if (piVar7 < (int *)puVar4[1]) {\n      piVar9 = &iStack_d0;\n      iVar2 = FUN_0006610c();\n      *puVar4 = *puVar4 + iVar2;\n      *piVar10 = *piVar10 + iStack_d0 + -2;\n      goto LAB_00066d4c;\n    }" if (parenthesized_expression "(piVar7 < (int *)puVar4[1])" ( (binary_expression "piVar7 < (int *)puVar4[1]" identifier < (cast_expression "(int *)puVar4[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[1]" identifier [ number_literal ]))) )) (compound_statement "{\n      piVar9 = &iStack_d0;\n      iVar2 = FUN_0006610c();\n      *puVar4 = *puVar4 + iVar2;\n      *piVar10 = *piVar10 + iStack_d0 + -2;\n      goto LAB_00066d4c;\n    }" { (expression_statement "piVar9 = &iStack_d0;" (assignment_expression "piVar9 = &iStack_d0" identifier = (pointer_expression "&iStack_d0" & identifier)) ;) (expression_statement "iVar2 = FUN_0006610c();" (assignment_expression "iVar2 = FUN_0006610c()" identifier = (call_expression "FUN_0006610c()" identifier (argument_list "()" ( )))) ;) (expression_statement "*puVar4 = *puVar4 + iVar2;" (assignment_expression "*puVar4 = *puVar4 + iVar2" (pointer_expression "*puVar4" * identifier) = (binary_expression "*puVar4 + iVar2" (pointer_expression "*puVar4" * identifier) + identifier)) ;) (expression_statement "*piVar10 = *piVar10 + iStack_d0 + -2;" (assignment_expression "*piVar10 = *piVar10 + iStack_d0 + -2" (pointer_expression "*piVar10" * identifier) = (binary_expression "*piVar10 + iStack_d0 + -2" (binary_expression "*piVar10 + iStack_d0" (pointer_expression "*piVar10" * identifier) + identifier) + number_literal)) ;) (goto_statement "goto LAB_00066d4c;" goto statement_identifier ;) })) }) (else_clause "else if (piVar7 < (int *)puVar4[1]) {\n    if (*(char *)piVar7 != '\x01') {\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }\n    piVar7 = (int *)((int)piVar7 + 1);\n    iVar2 = FUN_0006610c();\n    *puVar4 = *puVar4 + iVar2 + 1;\n    piVar9 = piVar10;\n    goto LAB_00066d4c;\n  }" else (if_statement "if (piVar7 < (int *)puVar4[1]) {\n    if (*(char *)piVar7 != '\x01') {\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }\n    piVar7 = (int *)((int)piVar7 + 1);\n    iVar2 = FUN_0006610c();\n    *puVar4 = *puVar4 + iVar2 + 1;\n    piVar9 = piVar10;\n    goto LAB_00066d4c;\n  }" if (parenthesized_expression "(piVar7 < (int *)puVar4[1])" ( (binary_expression "piVar7 < (int *)puVar4[1]" identifier < (cast_expression "(int *)puVar4[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[1]" identifier [ number_literal ]))) )) (compound_statement "{\n    if (*(char *)piVar7 != '\x01') {\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }\n    piVar7 = (int *)((int)piVar7 + 1);\n    iVar2 = FUN_0006610c();\n    *puVar4 = *puVar4 + iVar2 + 1;\n    piVar9 = piVar10;\n    goto LAB_00066d4c;\n  }" { (if_statement "if (*(char *)piVar7 != '\x01') {\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }" if (parenthesized_expression "(*(char *)piVar7 != '\x01')" ( (binary_expression "*(char *)piVar7 != '\x01'" (pointer_expression "*(char *)piVar7" * (cast_expression "(char *)piVar7" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) != (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }" { (do_statement "do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');" do (compound_statement "{\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      }" { (expression_statement "piVar9 = &iStack_d0;" (assignment_expression "piVar9 = &iStack_d0" identifier = (pointer_expression "&iStack_d0" & identifier)) ;) (expression_statement "iVar2 = FUN_0006610c();" (assignment_expression "iVar2 = FUN_0006610c()" identifier = (call_expression "FUN_0006610c()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar7 = (int *)(*puVar4 + iVar2);" (assignment_expression "piVar7 = (int *)(*puVar4 + iVar2)" identifier = (cast_expression "(int *)(*puVar4 + iVar2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar4 + iVar2)" ( (binary_expression "*puVar4 + iVar2" (pointer_expression "*puVar4" * identifier) + identifier) )))) ;) (expression_statement "*puVar4 = (uint)piVar7;" (assignment_expression "*puVar4 = (uint)piVar7" (pointer_expression "*puVar4" * identifier) = (cast_expression "(uint)piVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;" if (parenthesized_expression "((int *)puVar4[1] <= piVar7)" ( (binary_expression "(int *)puVar4[1] <= piVar7" (cast_expression "(int *)puVar4[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[1]" identifier [ number_literal ])) <= identifier) )) (goto_statement "goto LAB_00066d48;" goto statement_identifier ;)) }) while (parenthesized_expression "(*(char *)piVar7 != '\x01')" ( (binary_expression "*(char *)piVar7 != '\x01'" (pointer_expression "*(char *)piVar7" * (cast_expression "(char *)piVar7" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) != (char_literal "'\x01'" ' escape_sequence ')) )) ;) })) (expression_statement "piVar7 = (int *)((int)piVar7 + 1);" (assignment_expression "piVar7 = (int *)((int)piVar7 + 1)" identifier = (cast_expression "(int *)((int)piVar7 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar7 + 1)" ( (binary_expression "(int)piVar7 + 1" (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "iVar2 = FUN_0006610c();" (assignment_expression "iVar2 = FUN_0006610c()" identifier = (call_expression "FUN_0006610c()" identifier (argument_list "()" ( )))) ;) (expression_statement "*puVar4 = *puVar4 + iVar2 + 1;" (assignment_expression "*puVar4 = *puVar4 + iVar2 + 1" (pointer_expression "*puVar4" * identifier) = (binary_expression "*puVar4 + iVar2 + 1" (binary_expression "*puVar4 + iVar2" (pointer_expression "*puVar4" * identifier) + identifier) + number_literal)) ;) (expression_statement "piVar9 = piVar10;" (assignment_expression "piVar9 = piVar10" identifier = identifier) ;) (goto_statement "goto LAB_00066d4c;" goto statement_identifier ;) })))) (labeled_statement "LAB_00066d48:\n  *piVar10 = -1;" statement_identifier : (expression_statement "*piVar10 = -1;" (assignment_expression "*piVar10 = -1" (pointer_expression "*piVar10" * identifier) = number_literal) ;)) (labeled_statement "LAB_00066d4c:\n  puVar15 = (uint *)*puVar16;" statement_identifier : (expression_statement "puVar15 = (uint *)*puVar16;" (assignment_expression "puVar15 = (uint *)*puVar16" identifier = (cast_expression "(uint *)*puVar16" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier))) ;)) (if_statement "if (puStack_cc == puVar15) {\n    return puVar15;\n  }" if (parenthesized_expression "(puStack_cc == puVar15)" ( (binary_expression "puStack_cc == puVar15" identifier == identifier) )) (compound_statement "{\n    return puVar15;\n  }" { (return_statement "return puVar15;" return identifier ;) })) (expression_statement "pcVar19 = *(code **)(pcStack_d8 + -0x7b28);" (assignment_expression "pcVar19 = *(code **)(pcStack_d8 + -0x7b28)" identifier = (pointer_expression "*(code **)(pcStack_d8 + -0x7b28)" * (cast_expression "(code **)(pcStack_d8 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcStack_d8 + -0x7b28)" ( (binary_expression "pcStack_d8 + -0x7b28" identifier + number_literal) ))))) ;) (expression_statement "uVar20 = 0x66df8;" (assignment_expression "uVar20 = 0x66df8" identifier = number_literal) ;) (expression_statement "(*pcVar19)();" (call_expression "(*pcVar19)()" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar21 = pcVar19 + 0x131b28;" (assignment_expression "pcVar21 = pcVar19 + 0x131b28" identifier = (binary_expression "pcVar19 + 0x131b28" identifier + number_literal)) ;) (expression_statement "piVar10 = *(int **)(pcVar19 + 0x12a02c);" (assignment_expression "piVar10 = *(int **)(pcVar19 + 0x12a02c)" identifier = (pointer_expression "*(int **)(pcVar19 + 0x12a02c)" * (cast_expression "(int **)(pcVar19 + 0x12a02c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x12a02c)" ( (binary_expression "pcVar19 + 0x12a02c" identifier + number_literal) ))))) ;) (expression_statement "uVar14 = *puVar6;" (assignment_expression "uVar14 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puStack_f4 = (uint *)*piVar10;" (assignment_expression "puStack_f4 = (uint *)*piVar10" identifier = (cast_expression "(uint *)*piVar10" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar10" * identifier))) ;) (expression_statement "uStack_ec = uVar20;" (assignment_expression "uStack_ec = uVar20" identifier = identifier) ;) (if_statement "if ((int)uVar14 < (int)piVar9) {\n    iVar2 = (*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))\n                      ((char *)((int)piVar7 + uVar14),&piStack_100);\n    *puVar6 = iVar2 + uVar14;\n    uVar14 = piVar13[1];\n    uVar11 = uVar14 + iStack_fc;\n    piVar7 = (int *)(*piVar13 + (int)piStack_100);\n    piVar13[1] = uVar11;\n    *piVar13 = (int)((uint)(uVar11 < uVar14) + (int)piVar7);\n    piVar13 = piStack_100;\n  }\n  else {\n    *puVar6 = 0xffffffff;\n    piVar13 = (int *)0x0;\n  }" if (parenthesized_expression "((int)uVar14 < (int)piVar9)" ( (binary_expression "(int)uVar14 < (int)piVar9" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    iVar2 = (*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))\n                      ((char *)((int)piVar7 + uVar14),&piStack_100);\n    *puVar6 = iVar2 + uVar14;\n    uVar14 = piVar13[1];\n    uVar11 = uVar14 + iStack_fc;\n    piVar7 = (int *)(*piVar13 + (int)piStack_100);\n    piVar13[1] = uVar11;\n    *piVar13 = (int)((uint)(uVar11 < uVar14) + (int)piVar7);\n    piVar13 = piStack_100;\n  }" { (expression_statement "iVar2 = (*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))\n                      ((char *)((int)piVar7 + uVar14),&piStack_100);" (assignment_expression "iVar2 = (*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))\n                      ((char *)((int)piVar7 + uVar14),&piStack_100)" identifier = (call_expression "(*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))\n                      ((char *)((int)piVar7 + uVar14),&piStack_100)" (parenthesized_expression "(*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))" ( (pointer_expression "*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80)" * (cast_expression "(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar19 + 0x129d48) + -0x80)" ( (binary_expression "*(int *)(pcVar19 + 0x129d48) + -0x80" (pointer_expression "*(int *)(pcVar19 + 0x129d48)" * (cast_expression "(int *)(pcVar19 + 0x129d48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x129d48)" ( (binary_expression "pcVar19 + 0x129d48" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "((char *)((int)piVar7 + uVar14),&piStack_100)" ( (cast_expression "(char *)((int)piVar7 + uVar14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar7 + uVar14)" ( (binary_expression "(int)piVar7 + uVar14" (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) , (pointer_expression "&piStack_100" & identifier) )))) ;) (expression_statement "*puVar6 = iVar2 + uVar14;" (assignment_expression "*puVar6 = iVar2 + uVar14" (pointer_expression "*puVar6" * identifier) = (binary_expression "iVar2 + uVar14" identifier + identifier)) ;) (expression_statement "uVar14 = piVar13[1];" (assignment_expression "uVar14 = piVar13[1]" identifier = (subscript_expression "piVar13[1]" identifier [ number_literal ])) ;) (expression_statement "uVar11 = uVar14 + iStack_fc;" (assignment_expression "uVar11 = uVar14 + iStack_fc" identifier = (binary_expression "uVar14 + iStack_fc" identifier + identifier)) ;) (expression_statement "piVar7 = (int *)(*piVar13 + (int)piStack_100);" (assignment_expression "piVar7 = (int *)(*piVar13 + (int)piStack_100)" identifier = (cast_expression "(int *)(*piVar13 + (int)piStack_100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar13 + (int)piStack_100)" ( (binary_expression "*piVar13 + (int)piStack_100" (pointer_expression "*piVar13" * identifier) + (cast_expression "(int)piStack_100" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "piVar13[1] = uVar11;" (assignment_expression "piVar13[1] = uVar11" (subscript_expression "piVar13[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*piVar13 = (int)((uint)(uVar11 < uVar14) + (int)piVar7);" (assignment_expression "*piVar13 = (int)((uint)(uVar11 < uVar14) + (int)piVar7)" (pointer_expression "*piVar13" * identifier) = (cast_expression "(int)((uint)(uVar11 < uVar14) + (int)piVar7)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(uVar11 < uVar14) + (int)piVar7)" ( (binary_expression "(uint)(uVar11 < uVar14) + (int)piVar7" (call_expression "(uint)(uVar11 < uVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar11 < uVar14)" ( (binary_expression "uVar11 < uVar14" identifier < identifier) ))) + (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "piVar13 = piStack_100;" (assignment_expression "piVar13 = piStack_100" identifier = identifier) ;) }) (else_clause "else {\n    *puVar6 = 0xffffffff;\n    piVar13 = (int *)0x0;\n  }" else (compound_statement "{\n    *puVar6 = 0xffffffff;\n    piVar13 = (int *)0x0;\n  }" { (expression_statement "*puVar6 = 0xffffffff;" (assignment_expression "*puVar6 = 0xffffffff" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "piVar13 = (int *)0x0;" (assignment_expression "piVar13 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (if_statement "if (puStack_f4 != (uint *)*piVar10) {\n    (**(code **)(pcVar19 + 0x12a000))();\n    uVar14 = *puVar6;\n    uVar11 = puVar6[1];\n    puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    if (((uVar14 ^ (uint)pcVar21) & 0x7fffffff) != 0) {\n      *piVar13 = *piVar13 + 1;\n      *puVar8 = 1;\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar2 = FUN_00053284();\n      }\n      else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }\n      uVar14 = (uint)pcVar21 & 0x7fffffff;\n      uVar11 = 0;\n      *piVar13 = *piVar13 + iVar2;\n      *puVar6 = uVar14;\n      puVar6[1] = 0;\n      puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    }\n    uVar11 = uStack_10c - uVar11;\n    uVar12 = uVar11 + 2;\n    if ((pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)\n       && (uVar12 < 0x80)) {\n      *puVar8 = (char)uVar12;\n      *piVar13 = *piVar13 + 1;\n      *puVar6 = (uint)pcVar21;\n      puVar6[1] = uStack_10c;\n      return (uint *)0x1;\n    }\n    puVar15 = (uint *)FUN_00053284();\n    *piVar13 = *piVar13 + (int)puVar15;\n    *puVar6 = (uint)pcVar21;\n    puVar6[1] = uStack_10c;\n    return puVar15;\n  }" if (parenthesized_expression "(puStack_f4 != (uint *)*piVar10)" ( (binary_expression "puStack_f4 != (uint *)*piVar10" identifier != (cast_expression "(uint *)*piVar10" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar10" * identifier))) )) (compound_statement "{\n    (**(code **)(pcVar19 + 0x12a000))();\n    uVar14 = *puVar6;\n    uVar11 = puVar6[1];\n    puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    if (((uVar14 ^ (uint)pcVar21) & 0x7fffffff) != 0) {\n      *piVar13 = *piVar13 + 1;\n      *puVar8 = 1;\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar2 = FUN_00053284();\n      }\n      else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }\n      uVar14 = (uint)pcVar21 & 0x7fffffff;\n      uVar11 = 0;\n      *piVar13 = *piVar13 + iVar2;\n      *puVar6 = uVar14;\n      puVar6[1] = 0;\n      puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    }\n    uVar11 = uStack_10c - uVar11;\n    uVar12 = uVar11 + 2;\n    if ((pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)\n       && (uVar12 < 0x80)) {\n      *puVar8 = (char)uVar12;\n      *piVar13 = *piVar13 + 1;\n      *puVar6 = (uint)pcVar21;\n      puVar6[1] = uStack_10c;\n      return (uint *)0x1;\n    }\n    puVar15 = (uint *)FUN_00053284();\n    *piVar13 = *piVar13 + (int)puVar15;\n    *puVar6 = (uint)pcVar21;\n    puVar6[1] = uStack_10c;\n    return puVar15;\n  }" { (expression_statement "(**(code **)(pcVar19 + 0x12a000))();" (call_expression "(**(code **)(pcVar19 + 0x12a000))()" (parenthesized_expression "(**(code **)(pcVar19 + 0x12a000))" ( (pointer_expression "**(code **)(pcVar19 + 0x12a000)" * (pointer_expression "*(code **)(pcVar19 + 0x12a000)" * (cast_expression "(code **)(pcVar19 + 0x12a000)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x12a000)" ( (binary_expression "pcVar19 + 0x12a000" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "uVar14 = *puVar6;" (assignment_expression "uVar14 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "uVar11 = puVar6[1];" (assignment_expression "uVar11 = puVar6[1]" identifier = (subscript_expression "puVar6[1]" identifier [ number_literal ])) ;) (expression_statement "puVar8 = (undefined1 *)(*piVar7 + *piVar13);" (assignment_expression "puVar8 = (undefined1 *)(*piVar7 + *piVar13)" identifier = (cast_expression "(undefined1 *)(*piVar7 + *piVar13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar7 + *piVar13)" ( (binary_expression "*piVar7 + *piVar13" (pointer_expression "*piVar7" * identifier) + (pointer_expression "*piVar13" * identifier)) )))) ;) (if_statement "if (((uVar14 ^ (uint)pcVar21) & 0x7fffffff) != 0) {\n      *piVar13 = *piVar13 + 1;\n      *puVar8 = 1;\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar2 = FUN_00053284();\n      }\n      else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }\n      uVar14 = (uint)pcVar21 & 0x7fffffff;\n      uVar11 = 0;\n      *piVar13 = *piVar13 + iVar2;\n      *puVar6 = uVar14;\n      puVar6[1] = 0;\n      puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    }" if (parenthesized_expression "(((uVar14 ^ (uint)pcVar21) & 0x7fffffff) != 0)" ( (binary_expression "((uVar14 ^ (uint)pcVar21) & 0x7fffffff) != 0" (parenthesized_expression "((uVar14 ^ (uint)pcVar21) & 0x7fffffff)" ( (binary_expression "(uVar14 ^ (uint)pcVar21) & 0x7fffffff" (parenthesized_expression "(uVar14 ^ (uint)pcVar21)" ( (binary_expression "uVar14 ^ (uint)pcVar21" identifier ^ (cast_expression "(uint)pcVar21" ( (type_descriptor "uint" type_identifier) ) identifier)) )) & number_literal) )) != number_literal) )) (compound_statement "{\n      *piVar13 = *piVar13 + 1;\n      *puVar8 = 1;\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar2 = FUN_00053284();\n      }\n      else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }\n      uVar14 = (uint)pcVar21 & 0x7fffffff;\n      uVar11 = 0;\n      *piVar13 = *piVar13 + iVar2;\n      *puVar6 = uVar14;\n      puVar6[1] = 0;\n      puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    }" { (expression_statement "*piVar13 = *piVar13 + 1;" (assignment_expression "*piVar13 = *piVar13 + 1" (pointer_expression "*piVar13" * identifier) = (binary_expression "*piVar13 + 1" (pointer_expression "*piVar13" * identifier) + number_literal)) ;) (expression_statement "*puVar8 = 1;" (assignment_expression "*puVar8 = 1" (pointer_expression "*puVar8" * identifier) = number_literal) ;) (if_statement "if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar2 = FUN_00053284();\n      }\n      else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }" if (parenthesized_expression "(((int)pcVar21 < 0) || ((code *)0x7f < pcVar21))" ( (binary_expression "((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)" (parenthesized_expression "((int)pcVar21 < 0)" ( (binary_expression "(int)pcVar21 < 0" (cast_expression "(int)pcVar21" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "((code *)0x7f < pcVar21)" ( (binary_expression "(code *)0x7f < pcVar21" (cast_expression "(code *)0x7f" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) ))) )) (compound_statement "{\n        iVar2 = FUN_00053284();\n      }" { (expression_statement "iVar2 = FUN_00053284();" (assignment_expression "iVar2 = FUN_00053284()" identifier = (call_expression "FUN_00053284()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }" else (compound_statement "{\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }" { (expression_statement "*(char *)(*piVar7 + *piVar13) = (char)pcVar21;" (assignment_expression "*(char *)(*piVar7 + *piVar13) = (char)pcVar21" (pointer_expression "*(char *)(*piVar7 + *piVar13)" * (cast_expression "(char *)(*piVar7 + *piVar13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar7 + *piVar13)" ( (binary_expression "*piVar7 + *piVar13" (pointer_expression "*piVar7" * identifier) + (pointer_expression "*piVar13" * identifier)) )))) = (cast_expression "(char)pcVar21" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) }))) (expression_statement "uVar14 = (uint)pcVar21 & 0x7fffffff;" (assignment_expression "uVar14 = (uint)pcVar21 & 0x7fffffff" identifier = (binary_expression "(uint)pcVar21 & 0x7fffffff" (cast_expression "(uint)pcVar21" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "*piVar13 = *piVar13 + iVar2;" (assignment_expression "*piVar13 = *piVar13 + iVar2" (pointer_expression "*piVar13" * identifier) = (binary_expression "*piVar13 + iVar2" (pointer_expression "*piVar13" * identifier) + identifier)) ;) (expression_statement "*puVar6 = uVar14;" (assignment_expression "*puVar6 = uVar14" (pointer_expression "*puVar6" * identifier) = identifier) ;) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8 = (undefined1 *)(*piVar7 + *piVar13);" (assignment_expression "puVar8 = (undefined1 *)(*piVar7 + *piVar13)" identifier = (cast_expression "(undefined1 *)(*piVar7 + *piVar13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar7 + *piVar13)" ( (binary_expression "*piVar7 + *piVar13" (pointer_expression "*piVar7" * identifier) + (pointer_expression "*piVar13" * identifier)) )))) ;) })) (expression_statement "uVar11 = uStack_10c - uVar11;" (assignment_expression "uVar11 = uStack_10c - uVar11" identifier = (binary_expression "uStack_10c - uVar11" identifier - identifier)) ;) (expression_statement "uVar12 = uVar11 + 2;" (assignment_expression "uVar12 = uVar11 + 2" identifier = (binary_expression "uVar11 + 2" identifier + number_literal)) ;) (if_statement "if ((pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)\n       && (uVar12 < 0x80)) {\n      *puVar8 = (char)uVar12;\n      *piVar13 = *piVar13 + 1;\n      *puVar6 = (uint)pcVar21;\n      puVar6[1] = uStack_10c;\n      return (uint *)0x1;\n    }" if (parenthesized_expression "((pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)\n       && (uVar12 < 0x80))" ( (binary_expression "(pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)\n       && (uVar12 < 0x80)" (parenthesized_expression "(pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)" ( (binary_expression "pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0" (binary_expression "pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14)" (binary_expression "pcVar21 + (uint)(uVar12 < uVar11)" identifier + (call_expression "(uint)(uVar12 < uVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar12 < uVar11)" ( (binary_expression "uVar12 < uVar11" identifier < identifier) )))) + (parenthesized_expression "(-(uint)(uStack_10c < uVar11) - uVar14)" ( (binary_expression "-(uint)(uStack_10c < uVar11) - uVar14" (unary_expression "-(uint)(uStack_10c < uVar11)" - (call_expression "(uint)(uStack_10c < uVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uStack_10c < uVar11)" ( (binary_expression "uStack_10c < uVar11" identifier < identifier) )))) - identifier) ))) == (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(uVar12 < 0x80)" ( (binary_expression "uVar12 < 0x80" identifier < number_literal) ))) )) (compound_statement "{\n      *puVar8 = (char)uVar12;\n      *piVar13 = *piVar13 + 1;\n      *puVar6 = (uint)pcVar21;\n      puVar6[1] = uStack_10c;\n      return (uint *)0x1;\n    }" { (expression_statement "*puVar8 = (char)uVar12;" (assignment_expression "*puVar8 = (char)uVar12" (pointer_expression "*puVar8" * identifier) = (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*piVar13 = *piVar13 + 1;" (assignment_expression "*piVar13 = *piVar13 + 1" (pointer_expression "*piVar13" * identifier) = (binary_expression "*piVar13 + 1" (pointer_expression "*piVar13" * identifier) + number_literal)) ;) (expression_statement "*puVar6 = (uint)pcVar21;" (assignment_expression "*puVar6 = (uint)pcVar21" (pointer_expression "*puVar6" * identifier) = (cast_expression "(uint)pcVar21" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar6[1] = uStack_10c;" (assignment_expression "puVar6[1] = uStack_10c" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return (uint *)0x1;" return (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "puVar15 = (uint *)FUN_00053284();" (assignment_expression "puVar15 = (uint *)FUN_00053284()" identifier = (cast_expression "(uint *)FUN_00053284()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00053284()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*piVar13 = *piVar13 + (int)puVar15;" (assignment_expression "*piVar13 = *piVar13 + (int)puVar15" (pointer_expression "*piVar13" * identifier) = (binary_expression "*piVar13 + (int)puVar15" (pointer_expression "*piVar13" * identifier) + (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*puVar6 = (uint)pcVar21;" (assignment_expression "*puVar6 = (uint)pcVar21" (pointer_expression "*puVar6" * identifier) = (cast_expression "(uint)pcVar21" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar6[1] = uStack_10c;" (assignment_expression "puVar6[1] = uStack_10c" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return puVar15;" return identifier ;) })) (return_statement "return (uint *)*piVar10;" return (cast_expression "(uint *)*piVar10" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar10" * identifier)) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE 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 (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 (pointer_declarator * 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 IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * 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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * IDENT) + LIT) , (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( (binary_expression (binary_expression (pointer_expression * IDENT) + IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + IDENT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (do_statement do (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 IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) == (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression (pointer_expression * IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) , (pointer_expression & IDENT) )))) ;) (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 *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))) < IDENT) ))) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }))))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ])) + (subscript_expression IDENT [ 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) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) )) (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))) < IDENT) )))) + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT >> LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * 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 = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) == (char_literal ' escape_sequence '))) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) == (char_literal ' escape_sequence ')) ))) )) (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) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) (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) )))) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return 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 (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_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 *)) ) (pointer_expression * 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + 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) ;) (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 < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (pointer_expression * IDENT) + IDENT) + LIT)) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) != (char_literal ' escape_sequence ')) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) <= IDENT) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) != (char_literal ' escape_sequence ')) )) ;) })) (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 ( )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (pointer_expression * IDENT) + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return 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 = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))) , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (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 *)) ) (pointer_expression * IDENT))) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (pointer_expression * IDENT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT ^ (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (pointer_expression * IDENT)) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (pointer_expression * IDENT)) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) + (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) - IDENT) ))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return IDENT ;) })) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) ;) })))
(function_definition "uint * FUN_0006687c(undefined4 *param_1,int *param_2)\n\n{\n  undefined *puVar1;\n  byte bVar3;\n  int iVar2;\n  uint *puVar4;\n  int iVar5;\n  uint *puVar6;\n  int *piVar7;\n  undefined1 *puVar8;\n  int *piVar9;\n  int *piVar10;\n  uint uVar11;\n  uint uVar12;\n  int *piVar13;\n  uint uVar14;\n  uint *puVar15;\n  undefined4 *puVar16;\n  int *piVar17;\n  undefined *puVar18;\n  code *pcVar19;\n  undefined4 uVar20;\n  code *pcVar21;\n  uint uStack_10c;\n  int *piStack_100;\n  int iStack_fc;\n  uint *puStack_f4;\n  undefined4 uStack_ec;\n  code *pcStack_d8;\n  int iStack_d0;\n  uint *puStack_cc;\n  int *piStack_c4;\n  uint *puStack_c0;\n  int *piStack_bc;\n  uint uStack_90;\n  uint *puStack_8c;\n  uint *puStack_88;\n  uint *puStack_84;\n  undefined4 *puStack_80;\n  code *pcStack_7c;\n  undefined *local_68;\n  int local_5c;\n  int *local_58;\n  int local_54;\n  uint *local_4c;\n  undefined4 *local_48;\n  uint *local_44;\n  undefined *local_40;\n  undefined4 local_3c;\n  int local_20;\n  int local_1c;\n  uint *local_14;\n  \n  puVar1 = PTR___stack_chk_guard_00190e24;\n  piVar10 = (int *)param_1[1];\n  puVar15 = (uint *)*param_1;\n  local_14 = *(uint **)PTR___stack_chk_guard_00190e24;\n  if (piVar10 == (int *)0x0) {\n    param_1[1] = 1;\n    iVar2 = FUN_0006610c(*puVar15 + 1,param_1 + 4);\n    puVar18 = PTR_LAB_00190b40;\n    param_2 = param_1 + 6;\n    iVar5 = param_1[1];\n    param_1[1] = iVar2 + iVar5;\n    iVar2 = (*(code *)(puVar18 + -0x80))(*puVar15 + iVar2 + iVar5);\n    iVar5 = param_1[1];\n    puVar4 = (uint *)param_1[2];\n    param_1[1] = iVar2 + iVar5;\n    param_1[3] = iVar2 + iVar5;\n  }\n  else if ((int)piVar10 < (int)puVar15[1]) {\n    param_2 = (int *)*puVar15;\n    piVar13 = piVar10;\n    if (*(char *)((int)param_2 + (int)piVar10) == '\0') {\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }\n    else {\n      iVar2 = 1;\n    }\n    pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80);\n    param_1[4] = param_1[4] + iVar2;\n    iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20);\n    iVar2 = iVar2 + (int)piVar10;\n    piVar10 = (int *)param_1[7];\n    param_1[1] = iVar2;\n    puVar4 = (uint *)param_1[2];\n    param_1[7] = (int *)((int)piVar10 + local_1c);\n    param_2 = (int *)(param_1[6] + local_20);\n    param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2;\n  }\n  else {\nLAB_00066908:\n    puVar4 = (uint *)0x1;\n    param_1[2] = 1;\n  }\n  if (local_14 == *(uint **)puVar1) {\n    return puVar4;\n  }\n  uVar20 = 0x66a18;\n  puVar4 = local_14;\n  puVar18 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  local_68 = puVar18 + 0x131f08;\n  local_40 = puVar1;\n  puVar16 = *(undefined4 **)(puVar18 + 0x12a40c);\n  puVar6 = (uint *)*puVar16;\n  uVar14 = puVar4[4] + puVar4[6] + puVar4[5];\n  local_4c = puVar6;\n  local_48 = param_1;\n  local_44 = puVar15;\n  local_3c = uVar20;\n  if (uVar14 < *puVar4) {\n    iVar2 = (*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))(uVar14,&local_58);\n    puVar6 = (uint *)puVar4[3];\n    puVar15 = (uint *)(uVar14 + iVar2);\n    puVar4[3] = (uint)((int)puVar6 + local_54);\n    puVar4[2] = (int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6) + puVar4[2];\n    bVar3 = *(byte *)puVar15;\n    if ((char)bVar3 < '\0') {\n      param_2 = &local_5c;\n      puVar6 = puVar15;\n      uVar14 = FUN_0006610c();\n      puVar4[6] = uVar14;\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = local_5c >> 1;\n    }\n    else {\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = (uint)(bVar3 >> 1);\n      puVar4[6] = 1;\n      param_2 = local_58;\n    }\n  }\n  else {\n    puVar4[4] = 0;\n  }\n  if (local_4c == (uint *)*puVar16) {\n    return (uint *)*puVar16;\n  }\n  pcVar19 = *(code **)(local_68 + -0x7b28);\n  pcVar21 = FUN_00066b38;\n  (*pcVar19)();\n  puStack_80 = puVar16;\n  puStack_88 = puVar4;\n  pcStack_7c = pcVar21;\n  puStack_84 = puVar15;\n  piVar17 = *(int **)(pcVar19 + 0x12a2ec);\n  puVar15 = (uint *)param_2[5];\n  piVar13 = (int *)param_2[3];\n  puStack_8c = (uint *)*piVar17;\n  if (puVar6[0xc] == 1) {\n    piVar10 = (int *)piVar13[2];\n    *(undefined1 *)(param_2 + 0x15) = 0;\n    piVar9 = (int *)param_2[10];\n    if ((int)piVar10 <= param_2[10]) {\n      piVar9 = piVar10;\n    }\n    puVar4 = (uint *)(uint)((int)puVar15 < (int)piVar9);\n    param_2[0x14] = 1;\n    if ((puVar4 != (uint *)0x0) &&\n       (puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0')) {\n      *(undefined1 *)(param_2 + 0x15) = 1;\n      if (((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')) {\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }\n      else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }\n    }\n  }\n  else {\n    bVar3 = *(byte *)(*piVar13 + (int)puVar15);\n    uStack_90 = (uint)bVar3;\n    puVar4 = (uint *)(int)(char)bVar3;\n    if ((int)puVar4 < 0) {\n      puVar4 = &uStack_90;\n      piVar13 = (int *)(*piVar13 + (int)puVar15);\n      iVar2 = FUN_0006610c();\n      puVar15 = (uint *)((int)puVar15 + iVar2);\n      bVar3 = (byte)uStack_90;\n    }\n    else {\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }\n    *(byte *)(param_2 + 0x15) = bVar3 & 1;\n    param_2[0x14] = (int)uStack_90 >> 1;\n  }\n  puVar6 = (uint *)*piVar17;\n  param_2[5] = (int)puVar15;\n  if (puStack_8c == puVar6) {\n    return puVar6;\n  }\n  pcVar19 = *(code **)(pcVar19 + 0x12a2c0);\n  (*pcVar19)();\n  pcStack_d8 = pcVar19 + 0x131ca0;\n  piVar13 = (int *)*piVar13;\n  piVar7 = (int *)*puVar4;\n  puVar16 = *(undefined4 **)(pcVar19 + 0x12a1a4);\n  puVar6 = (uint *)*puVar16;\n  piVar9 = *(int **)(piVar13[3] + 0x30);\n  puStack_cc = puVar6;\n  piStack_c4 = param_2;\n  puStack_c0 = puVar15;\n  piStack_bc = piVar17;\n  if (piVar9 == (int *)0x2) {\n    if (piVar7 < (int *)puVar4[1]) {\n      piVar9 = &iStack_d0;\n      iVar2 = FUN_0006610c();\n      *puVar4 = *puVar4 + iVar2;\n      *piVar10 = *piVar10 + iStack_d0 + -2;\n      goto LAB_00066d4c;\n    }\n  }\n  else if (piVar7 < (int *)puVar4[1]) {\n    if (*(char *)piVar7 != '\x01') {\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }\n    piVar7 = (int *)((int)piVar7 + 1);\n    iVar2 = FUN_0006610c();\n    *puVar4 = *puVar4 + iVar2 + 1;\n    piVar9 = piVar10;\n    goto LAB_00066d4c;\n  }\nLAB_00066d48:\n  *piVar10 = -1;\nLAB_00066d4c:\n  puVar15 = (uint *)*puVar16;\n  if (puStack_cc == puVar15) {\n    return puVar15;\n  }\n  pcVar19 = *(code **)(pcStack_d8 + -0x7b28);\n  uVar20 = 0x66df8;\n  (*pcVar19)();\n  pcVar21 = pcVar19 + 0x131b28;\n  piVar10 = *(int **)(pcVar19 + 0x12a02c);\n  uVar14 = *puVar6;\n  puStack_f4 = (uint *)*piVar10;\n  uStack_ec = uVar20;\n  if ((int)uVar14 < (int)piVar9) {\n    iVar2 = (*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))\n                      ((char *)((int)piVar7 + uVar14),&piStack_100);\n    *puVar6 = iVar2 + uVar14;\n    uVar14 = piVar13[1];\n    uVar11 = uVar14 + iStack_fc;\n    piVar7 = (int *)(*piVar13 + (int)piStack_100);\n    piVar13[1] = uVar11;\n    *piVar13 = (int)((uint)(uVar11 < uVar14) + (int)piVar7);\n    piVar13 = piStack_100;\n  }\n  else {\n    *puVar6 = 0xffffffff;\n    piVar13 = (int *)0x0;\n  }\n  if (puStack_f4 != (uint *)*piVar10) {\n    (**(code **)(pcVar19 + 0x12a000))();\n    uVar14 = *puVar6;\n    uVar11 = puVar6[1];\n    puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    if (((uVar14 ^ (uint)pcVar21) & 0x7fffffff) != 0) {\n      *piVar13 = *piVar13 + 1;\n      *puVar8 = 1;\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar2 = FUN_00053284();\n      }\n      else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }\n      uVar14 = (uint)pcVar21 & 0x7fffffff;\n      uVar11 = 0;\n      *piVar13 = *piVar13 + iVar2;\n      *puVar6 = uVar14;\n      puVar6[1] = 0;\n      puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    }\n    uVar11 = uStack_10c - uVar11;\n    uVar12 = uVar11 + 2;\n    if ((pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)\n       && (uVar12 < 0x80)) {\n      *puVar8 = (char)uVar12;\n      *piVar13 = *piVar13 + 1;\n      *puVar6 = (uint)pcVar21;\n      puVar6[1] = uStack_10c;\n      return (uint *)0x1;\n    }\n    puVar15 = (uint *)FUN_00053284();\n    *piVar13 = *piVar13 + (int)puVar15;\n    *puVar6 = (uint)pcVar21;\n    puVar6[1] = uStack_10c;\n    return puVar15;\n  }\n  return (uint *)*piVar10;\n}" (type_identifier "uint") (pointer_declarator "* FUN_0006687c(undefined4 *param_1,int *param_2)" (* "*") (function_declarator "FUN_0006687c(undefined4 *param_1,int *param_2)" (identifier "FUN_0006687c") (parameter_list "(undefined4 *param_1,int *param_2)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")")))) (compound_statement "{\n  undefined *puVar1;\n  byte bVar3;\n  int iVar2;\n  uint *puVar4;\n  int iVar5;\n  uint *puVar6;\n  int *piVar7;\n  undefined1 *puVar8;\n  int *piVar9;\n  int *piVar10;\n  uint uVar11;\n  uint uVar12;\n  int *piVar13;\n  uint uVar14;\n  uint *puVar15;\n  undefined4 *puVar16;\n  int *piVar17;\n  undefined *puVar18;\n  code *pcVar19;\n  undefined4 uVar20;\n  code *pcVar21;\n  uint uStack_10c;\n  int *piStack_100;\n  int iStack_fc;\n  uint *puStack_f4;\n  undefined4 uStack_ec;\n  code *pcStack_d8;\n  int iStack_d0;\n  uint *puStack_cc;\n  int *piStack_c4;\n  uint *puStack_c0;\n  int *piStack_bc;\n  uint uStack_90;\n  uint *puStack_8c;\n  uint *puStack_88;\n  uint *puStack_84;\n  undefined4 *puStack_80;\n  code *pcStack_7c;\n  undefined *local_68;\n  int local_5c;\n  int *local_58;\n  int local_54;\n  uint *local_4c;\n  undefined4 *local_48;\n  uint *local_44;\n  undefined *local_40;\n  undefined4 local_3c;\n  int local_20;\n  int local_1c;\n  uint *local_14;\n  \n  puVar1 = PTR___stack_chk_guard_00190e24;\n  piVar10 = (int *)param_1[1];\n  puVar15 = (uint *)*param_1;\n  local_14 = *(uint **)PTR___stack_chk_guard_00190e24;\n  if (piVar10 == (int *)0x0) {\n    param_1[1] = 1;\n    iVar2 = FUN_0006610c(*puVar15 + 1,param_1 + 4);\n    puVar18 = PTR_LAB_00190b40;\n    param_2 = param_1 + 6;\n    iVar5 = param_1[1];\n    param_1[1] = iVar2 + iVar5;\n    iVar2 = (*(code *)(puVar18 + -0x80))(*puVar15 + iVar2 + iVar5);\n    iVar5 = param_1[1];\n    puVar4 = (uint *)param_1[2];\n    param_1[1] = iVar2 + iVar5;\n    param_1[3] = iVar2 + iVar5;\n  }\n  else if ((int)piVar10 < (int)puVar15[1]) {\n    param_2 = (int *)*puVar15;\n    piVar13 = piVar10;\n    if (*(char *)((int)param_2 + (int)piVar10) == '\0') {\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }\n    else {\n      iVar2 = 1;\n    }\n    pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80);\n    param_1[4] = param_1[4] + iVar2;\n    iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20);\n    iVar2 = iVar2 + (int)piVar10;\n    piVar10 = (int *)param_1[7];\n    param_1[1] = iVar2;\n    puVar4 = (uint *)param_1[2];\n    param_1[7] = (int *)((int)piVar10 + local_1c);\n    param_2 = (int *)(param_1[6] + local_20);\n    param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2;\n  }\n  else {\nLAB_00066908:\n    puVar4 = (uint *)0x1;\n    param_1[2] = 1;\n  }\n  if (local_14 == *(uint **)puVar1) {\n    return puVar4;\n  }\n  uVar20 = 0x66a18;\n  puVar4 = local_14;\n  puVar18 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  local_68 = puVar18 + 0x131f08;\n  local_40 = puVar1;\n  puVar16 = *(undefined4 **)(puVar18 + 0x12a40c);\n  puVar6 = (uint *)*puVar16;\n  uVar14 = puVar4[4] + puVar4[6] + puVar4[5];\n  local_4c = puVar6;\n  local_48 = param_1;\n  local_44 = puVar15;\n  local_3c = uVar20;\n  if (uVar14 < *puVar4) {\n    iVar2 = (*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))(uVar14,&local_58);\n    puVar6 = (uint *)puVar4[3];\n    puVar15 = (uint *)(uVar14 + iVar2);\n    puVar4[3] = (uint)((int)puVar6 + local_54);\n    puVar4[2] = (int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6) + puVar4[2];\n    bVar3 = *(byte *)puVar15;\n    if ((char)bVar3 < '\0') {\n      param_2 = &local_5c;\n      puVar6 = puVar15;\n      uVar14 = FUN_0006610c();\n      puVar4[6] = uVar14;\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = local_5c >> 1;\n    }\n    else {\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = (uint)(bVar3 >> 1);\n      puVar4[6] = 1;\n      param_2 = local_58;\n    }\n  }\n  else {\n    puVar4[4] = 0;\n  }\n  if (local_4c == (uint *)*puVar16) {\n    return (uint *)*puVar16;\n  }\n  pcVar19 = *(code **)(local_68 + -0x7b28);\n  pcVar21 = FUN_00066b38;\n  (*pcVar19)();\n  puStack_80 = puVar16;\n  puStack_88 = puVar4;\n  pcStack_7c = pcVar21;\n  puStack_84 = puVar15;\n  piVar17 = *(int **)(pcVar19 + 0x12a2ec);\n  puVar15 = (uint *)param_2[5];\n  piVar13 = (int *)param_2[3];\n  puStack_8c = (uint *)*piVar17;\n  if (puVar6[0xc] == 1) {\n    piVar10 = (int *)piVar13[2];\n    *(undefined1 *)(param_2 + 0x15) = 0;\n    piVar9 = (int *)param_2[10];\n    if ((int)piVar10 <= param_2[10]) {\n      piVar9 = piVar10;\n    }\n    puVar4 = (uint *)(uint)((int)puVar15 < (int)piVar9);\n    param_2[0x14] = 1;\n    if ((puVar4 != (uint *)0x0) &&\n       (puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0')) {\n      *(undefined1 *)(param_2 + 0x15) = 1;\n      if (((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')) {\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }\n      else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }\n    }\n  }\n  else {\n    bVar3 = *(byte *)(*piVar13 + (int)puVar15);\n    uStack_90 = (uint)bVar3;\n    puVar4 = (uint *)(int)(char)bVar3;\n    if ((int)puVar4 < 0) {\n      puVar4 = &uStack_90;\n      piVar13 = (int *)(*piVar13 + (int)puVar15);\n      iVar2 = FUN_0006610c();\n      puVar15 = (uint *)((int)puVar15 + iVar2);\n      bVar3 = (byte)uStack_90;\n    }\n    else {\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }\n    *(byte *)(param_2 + 0x15) = bVar3 & 1;\n    param_2[0x14] = (int)uStack_90 >> 1;\n  }\n  puVar6 = (uint *)*piVar17;\n  param_2[5] = (int)puVar15;\n  if (puStack_8c == puVar6) {\n    return puVar6;\n  }\n  pcVar19 = *(code **)(pcVar19 + 0x12a2c0);\n  (*pcVar19)();\n  pcStack_d8 = pcVar19 + 0x131ca0;\n  piVar13 = (int *)*piVar13;\n  piVar7 = (int *)*puVar4;\n  puVar16 = *(undefined4 **)(pcVar19 + 0x12a1a4);\n  puVar6 = (uint *)*puVar16;\n  piVar9 = *(int **)(piVar13[3] + 0x30);\n  puStack_cc = puVar6;\n  piStack_c4 = param_2;\n  puStack_c0 = puVar15;\n  piStack_bc = piVar17;\n  if (piVar9 == (int *)0x2) {\n    if (piVar7 < (int *)puVar4[1]) {\n      piVar9 = &iStack_d0;\n      iVar2 = FUN_0006610c();\n      *puVar4 = *puVar4 + iVar2;\n      *piVar10 = *piVar10 + iStack_d0 + -2;\n      goto LAB_00066d4c;\n    }\n  }\n  else if (piVar7 < (int *)puVar4[1]) {\n    if (*(char *)piVar7 != '\x01') {\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }\n    piVar7 = (int *)((int)piVar7 + 1);\n    iVar2 = FUN_0006610c();\n    *puVar4 = *puVar4 + iVar2 + 1;\n    piVar9 = piVar10;\n    goto LAB_00066d4c;\n  }\nLAB_00066d48:\n  *piVar10 = -1;\nLAB_00066d4c:\n  puVar15 = (uint *)*puVar16;\n  if (puStack_cc == puVar15) {\n    return puVar15;\n  }\n  pcVar19 = *(code **)(pcStack_d8 + -0x7b28);\n  uVar20 = 0x66df8;\n  (*pcVar19)();\n  pcVar21 = pcVar19 + 0x131b28;\n  piVar10 = *(int **)(pcVar19 + 0x12a02c);\n  uVar14 = *puVar6;\n  puStack_f4 = (uint *)*piVar10;\n  uStack_ec = uVar20;\n  if ((int)uVar14 < (int)piVar9) {\n    iVar2 = (*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))\n                      ((char *)((int)piVar7 + uVar14),&piStack_100);\n    *puVar6 = iVar2 + uVar14;\n    uVar14 = piVar13[1];\n    uVar11 = uVar14 + iStack_fc;\n    piVar7 = (int *)(*piVar13 + (int)piStack_100);\n    piVar13[1] = uVar11;\n    *piVar13 = (int)((uint)(uVar11 < uVar14) + (int)piVar7);\n    piVar13 = piStack_100;\n  }\n  else {\n    *puVar6 = 0xffffffff;\n    piVar13 = (int *)0x0;\n  }\n  if (puStack_f4 != (uint *)*piVar10) {\n    (**(code **)(pcVar19 + 0x12a000))();\n    uVar14 = *puVar6;\n    uVar11 = puVar6[1];\n    puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    if (((uVar14 ^ (uint)pcVar21) & 0x7fffffff) != 0) {\n      *piVar13 = *piVar13 + 1;\n      *puVar8 = 1;\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar2 = FUN_00053284();\n      }\n      else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }\n      uVar14 = (uint)pcVar21 & 0x7fffffff;\n      uVar11 = 0;\n      *piVar13 = *piVar13 + iVar2;\n      *puVar6 = uVar14;\n      puVar6[1] = 0;\n      puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    }\n    uVar11 = uStack_10c - uVar11;\n    uVar12 = uVar11 + 2;\n    if ((pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)\n       && (uVar12 < 0x80)) {\n      *puVar8 = (char)uVar12;\n      *piVar13 = *piVar13 + 1;\n      *puVar6 = (uint)pcVar21;\n      puVar6[1] = uStack_10c;\n      return (uint *)0x1;\n    }\n    puVar15 = (uint *)FUN_00053284();\n    *piVar13 = *piVar13 + (int)puVar15;\n    *puVar6 = (uint)pcVar21;\n    puVar6[1] = uStack_10c;\n    return puVar15;\n  }\n  return (uint *)*piVar10;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "byte bVar3;" (type_identifier "byte") (identifier "bVar3") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint *puVar4;" (type_identifier "uint") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "uint *puVar6;" (type_identifier "uint") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "undefined1 *puVar8;" (type_identifier "undefined1") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "int *piVar10;" (primitive_type "int") (pointer_declarator "*piVar10" (* "*") (identifier "piVar10")) (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "int *piVar13;" (primitive_type "int") (pointer_declarator "*piVar13" (* "*") (identifier "piVar13")) (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "uint *puVar15;" (type_identifier "uint") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "undefined4 *puVar16;" (type_identifier "undefined4") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "int *piVar17;" (primitive_type "int") (pointer_declarator "*piVar17" (* "*") (identifier "piVar17")) (; ";")) (declaration "undefined *puVar18;" (type_identifier "undefined") (pointer_declarator "*puVar18" (* "*") (identifier "puVar18")) (; ";")) (declaration "code *pcVar19;" (type_identifier "code") (pointer_declarator "*pcVar19" (* "*") (identifier "pcVar19")) (; ";")) (declaration "undefined4 uVar20;" (type_identifier "undefined4") (identifier "uVar20") (; ";")) (declaration "code *pcVar21;" (type_identifier "code") (pointer_declarator "*pcVar21" (* "*") (identifier "pcVar21")) (; ";")) (declaration "uint uStack_10c;" (type_identifier "uint") (identifier "uStack_10c") (; ";")) (declaration "int *piStack_100;" (primitive_type "int") (pointer_declarator "*piStack_100" (* "*") (identifier "piStack_100")) (; ";")) (declaration "int iStack_fc;" (primitive_type "int") (identifier "iStack_fc") (; ";")) (declaration "uint *puStack_f4;" (type_identifier "uint") (pointer_declarator "*puStack_f4" (* "*") (identifier "puStack_f4")) (; ";")) (declaration "undefined4 uStack_ec;" (type_identifier "undefined4") (identifier "uStack_ec") (; ";")) (declaration "code *pcStack_d8;" (type_identifier "code") (pointer_declarator "*pcStack_d8" (* "*") (identifier "pcStack_d8")) (; ";")) (declaration "int iStack_d0;" (primitive_type "int") (identifier "iStack_d0") (; ";")) (declaration "uint *puStack_cc;" (type_identifier "uint") (pointer_declarator "*puStack_cc" (* "*") (identifier "puStack_cc")) (; ";")) (declaration "int *piStack_c4;" (primitive_type "int") (pointer_declarator "*piStack_c4" (* "*") (identifier "piStack_c4")) (; ";")) (declaration "uint *puStack_c0;" (type_identifier "uint") (pointer_declarator "*puStack_c0" (* "*") (identifier "puStack_c0")) (; ";")) (declaration "int *piStack_bc;" (primitive_type "int") (pointer_declarator "*piStack_bc" (* "*") (identifier "piStack_bc")) (; ";")) (declaration "uint uStack_90;" (type_identifier "uint") (identifier "uStack_90") (; ";")) (declaration "uint *puStack_8c;" (type_identifier "uint") (pointer_declarator "*puStack_8c" (* "*") (identifier "puStack_8c")) (; ";")) (declaration "uint *puStack_88;" (type_identifier "uint") (pointer_declarator "*puStack_88" (* "*") (identifier "puStack_88")) (; ";")) (declaration "uint *puStack_84;" (type_identifier "uint") (pointer_declarator "*puStack_84" (* "*") (identifier "puStack_84")) (; ";")) (declaration "undefined4 *puStack_80;" (type_identifier "undefined4") (pointer_declarator "*puStack_80" (* "*") (identifier "puStack_80")) (; ";")) (declaration "code *pcStack_7c;" (type_identifier "code") (pointer_declarator "*pcStack_7c" (* "*") (identifier "pcStack_7c")) (; ";")) (declaration "undefined *local_68;" (type_identifier "undefined") (pointer_declarator "*local_68" (* "*") (identifier "local_68")) (; ";")) (declaration "int local_5c;" (primitive_type "int") (identifier "local_5c") (; ";")) (declaration "int *local_58;" (primitive_type "int") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "int local_54;" (primitive_type "int") (identifier "local_54") (; ";")) (declaration "uint *local_4c;" (type_identifier "uint") (pointer_declarator "*local_4c" (* "*") (identifier "local_4c")) (; ";")) (declaration "undefined4 *local_48;" (type_identifier "undefined4") (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (declaration "uint *local_44;" (type_identifier "uint") (pointer_declarator "*local_44" (* "*") (identifier "local_44")) (; ";")) (declaration "undefined *local_40;" (type_identifier "undefined") (pointer_declarator "*local_40" (* "*") (identifier "local_40")) (; ";")) (declaration "undefined4 local_3c;" (type_identifier "undefined4") (identifier "local_3c") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "int local_1c;" (primitive_type "int") (identifier "local_1c") (; ";")) (declaration "uint *local_14;" (type_identifier "uint") (pointer_declarator "*local_14" (* "*") (identifier "local_14")) (; ";")) (expression_statement "puVar1 = PTR___stack_chk_guard_00190e24;" (assignment_expression "puVar1 = PTR___stack_chk_guard_00190e24" (identifier "puVar1") (= "=") (identifier "PTR___stack_chk_guard_00190e24")) (; ";")) (expression_statement "piVar10 = (int *)param_1[1];" (assignment_expression "piVar10 = (int *)param_1[1]" (identifier "piVar10") (= "=") (cast_expression "(int *)param_1[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "puVar15 = (uint *)*param_1;" (assignment_expression "puVar15 = (uint *)*param_1" (identifier "puVar15") (= "=") (cast_expression "(uint *)*param_1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "local_14 = *(uint **)PTR___stack_chk_guard_00190e24;" (assignment_expression "local_14 = *(uint **)PTR___stack_chk_guard_00190e24" (identifier "local_14") (= "=") (pointer_expression "*(uint **)PTR___stack_chk_guard_00190e24" (* "*") (cast_expression "(uint **)PTR___stack_chk_guard_00190e24" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR___stack_chk_guard_00190e24")))) (; ";")) (if_statement "if (piVar10 == (int *)0x0) {\n    param_1[1] = 1;\n    iVar2 = FUN_0006610c(*puVar15 + 1,param_1 + 4);\n    puVar18 = PTR_LAB_00190b40;\n    param_2 = param_1 + 6;\n    iVar5 = param_1[1];\n    param_1[1] = iVar2 + iVar5;\n    iVar2 = (*(code *)(puVar18 + -0x80))(*puVar15 + iVar2 + iVar5);\n    iVar5 = param_1[1];\n    puVar4 = (uint *)param_1[2];\n    param_1[1] = iVar2 + iVar5;\n    param_1[3] = iVar2 + iVar5;\n  }\n  else if ((int)piVar10 < (int)puVar15[1]) {\n    param_2 = (int *)*puVar15;\n    piVar13 = piVar10;\n    if (*(char *)((int)param_2 + (int)piVar10) == '\0') {\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }\n    else {\n      iVar2 = 1;\n    }\n    pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80);\n    param_1[4] = param_1[4] + iVar2;\n    iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20);\n    iVar2 = iVar2 + (int)piVar10;\n    piVar10 = (int *)param_1[7];\n    param_1[1] = iVar2;\n    puVar4 = (uint *)param_1[2];\n    param_1[7] = (int *)((int)piVar10 + local_1c);\n    param_2 = (int *)(param_1[6] + local_20);\n    param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2;\n  }\n  else {\nLAB_00066908:\n    puVar4 = (uint *)0x1;\n    param_1[2] = 1;\n  }" (if "if") (parenthesized_expression "(piVar10 == (int *)0x0)" (( "(") (binary_expression "piVar10 == (int *)0x0" (identifier "piVar10") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    param_1[1] = 1;\n    iVar2 = FUN_0006610c(*puVar15 + 1,param_1 + 4);\n    puVar18 = PTR_LAB_00190b40;\n    param_2 = param_1 + 6;\n    iVar5 = param_1[1];\n    param_1[1] = iVar2 + iVar5;\n    iVar2 = (*(code *)(puVar18 + -0x80))(*puVar15 + iVar2 + iVar5);\n    iVar5 = param_1[1];\n    puVar4 = (uint *)param_1[2];\n    param_1[1] = iVar2 + iVar5;\n    param_1[3] = iVar2 + iVar5;\n  }" ({ "{") (expression_statement "param_1[1] = 1;" (assignment_expression "param_1[1] = 1" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar2 = FUN_0006610c(*puVar15 + 1,param_1 + 4);" (assignment_expression "iVar2 = FUN_0006610c(*puVar15 + 1,param_1 + 4)" (identifier "iVar2") (= "=") (call_expression "FUN_0006610c(*puVar15 + 1,param_1 + 4)" (identifier "FUN_0006610c") (argument_list "(*puVar15 + 1,param_1 + 4)" (( "(") (binary_expression "*puVar15 + 1" (pointer_expression "*puVar15" (* "*") (identifier "puVar15")) (+ "+") (number_literal "1")) (, ",") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (; ";")) (expression_statement "puVar18 = PTR_LAB_00190b40;" (assignment_expression "puVar18 = PTR_LAB_00190b40" (identifier "puVar18") (= "=") (identifier "PTR_LAB_00190b40")) (; ";")) (expression_statement "param_2 = param_1 + 6;" (assignment_expression "param_2 = param_1 + 6" (identifier "param_2") (= "=") (binary_expression "param_1 + 6" (identifier "param_1") (+ "+") (number_literal "6"))) (; ";")) (expression_statement "iVar5 = param_1[1];" (assignment_expression "iVar5 = param_1[1]" (identifier "iVar5") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "param_1[1] = iVar2 + iVar5;" (assignment_expression "param_1[1] = iVar2 + iVar5" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar2 + iVar5" (identifier "iVar2") (+ "+") (identifier "iVar5"))) (; ";")) (expression_statement "iVar2 = (*(code *)(puVar18 + -0x80))(*puVar15 + iVar2 + iVar5);" (assignment_expression "iVar2 = (*(code *)(puVar18 + -0x80))(*puVar15 + iVar2 + iVar5)" (identifier "iVar2") (= "=") (call_expression "(*(code *)(puVar18 + -0x80))(*puVar15 + iVar2 + iVar5)" (parenthesized_expression "(*(code *)(puVar18 + -0x80))" (( "(") (pointer_expression "*(code *)(puVar18 + -0x80)" (* "*") (cast_expression "(code *)(puVar18 + -0x80)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar18 + -0x80)" (( "(") (binary_expression "puVar18 + -0x80" (identifier "puVar18") (+ "+") (number_literal "-0x80")) () ")")))) () ")")) (argument_list "(*puVar15 + iVar2 + iVar5)" (( "(") (binary_expression "*puVar15 + iVar2 + iVar5" (binary_expression "*puVar15 + iVar2" (pointer_expression "*puVar15" (* "*") (identifier "puVar15")) (+ "+") (identifier "iVar2")) (+ "+") (identifier "iVar5")) () ")")))) (; ";")) (expression_statement "iVar5 = param_1[1];" (assignment_expression "iVar5 = param_1[1]" (identifier "iVar5") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar4 = (uint *)param_1[2];" (assignment_expression "puVar4 = (uint *)param_1[2]" (identifier "puVar4") (= "=") (cast_expression "(uint *)param_1[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "param_1[1] = iVar2 + iVar5;" (assignment_expression "param_1[1] = iVar2 + iVar5" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar2 + iVar5" (identifier "iVar2") (+ "+") (identifier "iVar5"))) (; ";")) (expression_statement "param_1[3] = iVar2 + iVar5;" (assignment_expression "param_1[3] = iVar2 + iVar5" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "iVar2 + iVar5" (identifier "iVar2") (+ "+") (identifier "iVar5"))) (; ";")) (} "}")) (else_clause "else if ((int)piVar10 < (int)puVar15[1]) {\n    param_2 = (int *)*puVar15;\n    piVar13 = piVar10;\n    if (*(char *)((int)param_2 + (int)piVar10) == '\0') {\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }\n    else {\n      iVar2 = 1;\n    }\n    pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80);\n    param_1[4] = param_1[4] + iVar2;\n    iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20);\n    iVar2 = iVar2 + (int)piVar10;\n    piVar10 = (int *)param_1[7];\n    param_1[1] = iVar2;\n    puVar4 = (uint *)param_1[2];\n    param_1[7] = (int *)((int)piVar10 + local_1c);\n    param_2 = (int *)(param_1[6] + local_20);\n    param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2;\n  }\n  else {\nLAB_00066908:\n    puVar4 = (uint *)0x1;\n    param_1[2] = 1;\n  }" (else "else") (if_statement "if ((int)piVar10 < (int)puVar15[1]) {\n    param_2 = (int *)*puVar15;\n    piVar13 = piVar10;\n    if (*(char *)((int)param_2 + (int)piVar10) == '\0') {\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }\n    else {\n      iVar2 = 1;\n    }\n    pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80);\n    param_1[4] = param_1[4] + iVar2;\n    iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20);\n    iVar2 = iVar2 + (int)piVar10;\n    piVar10 = (int *)param_1[7];\n    param_1[1] = iVar2;\n    puVar4 = (uint *)param_1[2];\n    param_1[7] = (int *)((int)piVar10 + local_1c);\n    param_2 = (int *)(param_1[6] + local_20);\n    param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2;\n  }\n  else {\nLAB_00066908:\n    puVar4 = (uint *)0x1;\n    param_1[2] = 1;\n  }" (if "if") (parenthesized_expression "((int)piVar10 < (int)puVar15[1])" (( "(") (binary_expression "(int)piVar10 < (int)puVar15[1]" (cast_expression "(int)piVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar10")) (< "<") (cast_expression "(int)puVar15[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "puVar15[1]" (identifier "puVar15") ([ "[") (number_literal "1") (] "]")))) () ")")) (compound_statement "{\n    param_2 = (int *)*puVar15;\n    piVar13 = piVar10;\n    if (*(char *)((int)param_2 + (int)piVar10) == '\0') {\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }\n    else {\n      iVar2 = 1;\n    }\n    pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80);\n    param_1[4] = param_1[4] + iVar2;\n    iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20);\n    iVar2 = iVar2 + (int)piVar10;\n    piVar10 = (int *)param_1[7];\n    param_1[1] = iVar2;\n    puVar4 = (uint *)param_1[2];\n    param_1[7] = (int *)((int)piVar10 + local_1c);\n    param_2 = (int *)(param_1[6] + local_20);\n    param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2;\n  }" ({ "{") (expression_statement "param_2 = (int *)*puVar15;" (assignment_expression "param_2 = (int *)*puVar15" (identifier "param_2") (= "=") (cast_expression "(int *)*puVar15" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar15" (* "*") (identifier "puVar15")))) (; ";")) (expression_statement "piVar13 = piVar10;" (assignment_expression "piVar13 = piVar10" (identifier "piVar13") (= "=") (identifier "piVar10")) (; ";")) (if_statement "if (*(char *)((int)param_2 + (int)piVar10) == '\0') {\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }\n    else {\n      iVar2 = 1;\n    }" (if "if") (parenthesized_expression "(*(char *)((int)param_2 + (int)piVar10) == '\0')" (( "(") (binary_expression "*(char *)((int)param_2 + (int)piVar10) == '\0'" (pointer_expression "*(char *)((int)param_2 + (int)piVar10)" (* "*") (cast_expression "(char *)((int)param_2 + (int)piVar10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + (int)piVar10)" (( "(") (binary_expression "(int)param_2 + (int)piVar10" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (cast_expression "(int)piVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar10"))) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');\n      iVar2 = (int)piVar13 + (1 - (int)piVar10);\n      piVar10 = piVar13;\n    }" ({ "{") (do_statement "do {\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');" (do "do") (compound_statement "{\n        piVar13 = (int *)((int)piVar13 + 1);\n        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;\n      }" ({ "{") (expression_statement "piVar13 = (int *)((int)piVar13 + 1);" (assignment_expression "piVar13 = (int *)((int)piVar13 + 1)" (identifier "piVar13") (= "=") (cast_expression "(int *)((int)piVar13 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar13 + 1)" (( "(") (binary_expression "(int)piVar13 + 1" (cast_expression "(int)piVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar13")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;" (if "if") (parenthesized_expression "(piVar13 == (int *)puVar15[1])" (( "(") (binary_expression "piVar13 == (int *)puVar15[1]" (identifier "piVar13") (== "==") (cast_expression "(int *)puVar15[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar15[1]" (identifier "puVar15") ([ "[") (number_literal "1") (] "]")))) () ")")) (goto_statement "goto LAB_00066908;" (goto "goto") (statement_identifier "LAB_00066908") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(*(char *)((int)param_2 + (int)piVar13) == '\0')" (( "(") (binary_expression "*(char *)((int)param_2 + (int)piVar13) == '\0'" (pointer_expression "*(char *)((int)param_2 + (int)piVar13)" (* "*") (cast_expression "(char *)((int)param_2 + (int)piVar13)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + (int)piVar13)" (( "(") (binary_expression "(int)param_2 + (int)piVar13" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (cast_expression "(int)piVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar13"))) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "iVar2 = (int)piVar13 + (1 - (int)piVar10);" (assignment_expression "iVar2 = (int)piVar13 + (1 - (int)piVar10)" (identifier "iVar2") (= "=") (binary_expression "(int)piVar13 + (1 - (int)piVar10)" (cast_expression "(int)piVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar13")) (+ "+") (parenthesized_expression "(1 - (int)piVar10)" (( "(") (binary_expression "1 - (int)piVar10" (number_literal "1") (- "-") (cast_expression "(int)piVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar10"))) () ")")))) (; ";")) (expression_statement "piVar10 = piVar13;" (assignment_expression "piVar10 = piVar13" (identifier "piVar10") (= "=") (identifier "piVar13")) (; ";")) (} "}")) (else_clause "else {\n      iVar2 = 1;\n    }" (else "else") (compound_statement "{\n      iVar2 = 1;\n    }" ({ "{") (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" (identifier "iVar2") (= "=") (number_literal "1")) (; ";")) (} "}")))) (expression_statement "pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80);" (assignment_expression "pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80)" (identifier "pcVar19") (= "=") (cast_expression "(code *)(PTR_LAB_00190b40 + -0x80)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00190b40 + -0x80)" (( "(") (binary_expression "PTR_LAB_00190b40 + -0x80" (identifier "PTR_LAB_00190b40") (+ "+") (number_literal "-0x80")) () ")")))) (; ";")) (expression_statement "param_1[4] = param_1[4] + iVar2;" (assignment_expression "param_1[4] = param_1[4] + iVar2" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (binary_expression "param_1[4] + iVar2" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (+ "+") (identifier "iVar2"))) (; ";")) (expression_statement "iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20);" (assignment_expression "iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20)" (identifier "iVar2") (= "=") (call_expression "(*pcVar19)(*puVar15 + (int)piVar10,&local_20)" (parenthesized_expression "(*pcVar19)" (( "(") (pointer_expression "*pcVar19" (* "*") (identifier "pcVar19")) () ")")) (argument_list "(*puVar15 + (int)piVar10,&local_20)" (( "(") (binary_expression "*puVar15 + (int)piVar10" (pointer_expression "*puVar15" (* "*") (identifier "puVar15")) (+ "+") (cast_expression "(int)piVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar10"))) (, ",") (pointer_expression "&local_20" (& "&") (identifier "local_20")) () ")")))) (; ";")) (expression_statement "iVar2 = iVar2 + (int)piVar10;" (assignment_expression "iVar2 = iVar2 + (int)piVar10" (identifier "iVar2") (= "=") (binary_expression "iVar2 + (int)piVar10" (identifier "iVar2") (+ "+") (cast_expression "(int)piVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar10")))) (; ";")) (expression_statement "piVar10 = (int *)param_1[7];" (assignment_expression "piVar10 = (int *)param_1[7]" (identifier "piVar10") (= "=") (cast_expression "(int *)param_1[7]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")))) (; ";")) (expression_statement "param_1[1] = iVar2;" (assignment_expression "param_1[1] = iVar2" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "puVar4 = (uint *)param_1[2];" (assignment_expression "puVar4 = (uint *)param_1[2]" (identifier "puVar4") (= "=") (cast_expression "(uint *)param_1[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "param_1[7] = (int *)((int)piVar10 + local_1c);" (assignment_expression "param_1[7] = (int *)((int)piVar10 + local_1c)" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (= "=") (cast_expression "(int *)((int)piVar10 + local_1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar10 + local_1c)" (( "(") (binary_expression "(int)piVar10 + local_1c" (cast_expression "(int)piVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar10")) (+ "+") (identifier "local_1c")) () ")")))) (; ";")) (expression_statement "param_2 = (int *)(param_1[6] + local_20);" (assignment_expression "param_2 = (int *)(param_1[6] + local_20)" (identifier "param_2") (= "=") (cast_expression "(int *)(param_1[6] + local_20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[6] + local_20)" (( "(") (binary_expression "param_1[6] + local_20" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (+ "+") (identifier "local_20")) () ")")))) (; ";")) (expression_statement "param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2;" (assignment_expression "param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (binary_expression "(uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2" (call_expression "(uint)((int *)((int)piVar10 + local_1c) < piVar10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int *)((int)piVar10 + local_1c) < piVar10)" (( "(") (binary_expression "(int *)((int)piVar10 + local_1c) < piVar10" (cast_expression "(int *)((int)piVar10 + local_1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar10 + local_1c)" (( "(") (binary_expression "(int)piVar10 + local_1c" (cast_expression "(int)piVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar10")) (+ "+") (identifier "local_1c")) () ")"))) (< "<") (identifier "piVar10")) () ")"))) (+ "+") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")))) (; ";")) (} "}")) (else_clause "else {\nLAB_00066908:\n    puVar4 = (uint *)0x1;\n    param_1[2] = 1;\n  }" (else "else") (compound_statement "{\nLAB_00066908:\n    puVar4 = (uint *)0x1;\n    param_1[2] = 1;\n  }" ({ "{") (labeled_statement "LAB_00066908:\n    puVar4 = (uint *)0x1;" (statement_identifier "LAB_00066908") (: ":") (expression_statement "puVar4 = (uint *)0x1;" (assignment_expression "puVar4 = (uint *)0x1" (identifier "puVar4") (= "=") (cast_expression "(uint *)0x1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";"))) (expression_statement "param_1[2] = 1;" (assignment_expression "param_1[2] = 1" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")))))) (if_statement "if (local_14 == *(uint **)puVar1) {\n    return puVar4;\n  }" (if "if") (parenthesized_expression "(local_14 == *(uint **)puVar1)" (( "(") (binary_expression "local_14 == *(uint **)puVar1" (identifier "local_14") (== "==") (pointer_expression "*(uint **)puVar1" (* "*") (cast_expression "(uint **)puVar1" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1")))) () ")")) (compound_statement "{\n    return puVar4;\n  }" ({ "{") (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (expression_statement "uVar20 = 0x66a18;" (assignment_expression "uVar20 = 0x66a18" (identifier "uVar20") (= "=") (number_literal "0x66a18")) (; ";")) (expression_statement "puVar4 = local_14;" (assignment_expression "puVar4 = local_14" (identifier "puVar4") (= "=") (identifier "local_14")) (; ";")) (expression_statement "puVar18 = PTR___stack_chk_fail_00190df8;" (assignment_expression "puVar18 = PTR___stack_chk_fail_00190df8" (identifier "puVar18") (= "=") (identifier "PTR___stack_chk_fail_00190df8")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_00190df8)();" (call_expression "(*(code *)PTR___stack_chk_fail_00190df8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00190df8)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_00190df8" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_00190df8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_00190df8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_68 = puVar18 + 0x131f08;" (assignment_expression "local_68 = puVar18 + 0x131f08" (identifier "local_68") (= "=") (binary_expression "puVar18 + 0x131f08" (identifier "puVar18") (+ "+") (number_literal "0x131f08"))) (; ";")) (expression_statement "local_40 = puVar1;" (assignment_expression "local_40 = puVar1" (identifier "local_40") (= "=") (identifier "puVar1")) (; ";")) (expression_statement "puVar16 = *(undefined4 **)(puVar18 + 0x12a40c);" (assignment_expression "puVar16 = *(undefined4 **)(puVar18 + 0x12a40c)" (identifier "puVar16") (= "=") (pointer_expression "*(undefined4 **)(puVar18 + 0x12a40c)" (* "*") (cast_expression "(undefined4 **)(puVar18 + 0x12a40c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x12a40c)" (( "(") (binary_expression "puVar18 + 0x12a40c" (identifier "puVar18") (+ "+") (number_literal "0x12a40c")) () ")"))))) (; ";")) (expression_statement "puVar6 = (uint *)*puVar16;" (assignment_expression "puVar6 = (uint *)*puVar16" (identifier "puVar6") (= "=") (cast_expression "(uint *)*puVar16" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar16" (* "*") (identifier "puVar16")))) (; ";")) (expression_statement "uVar14 = puVar4[4] + puVar4[6] + puVar4[5];" (assignment_expression "uVar14 = puVar4[4] + puVar4[6] + puVar4[5]" (identifier "uVar14") (= "=") (binary_expression "puVar4[4] + puVar4[6] + puVar4[5]" (binary_expression "puVar4[4] + puVar4[6]" (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]")) (+ "+") (subscript_expression "puVar4[6]" (identifier "puVar4") ([ "[") (number_literal "6") (] "]"))) (+ "+") (subscript_expression "puVar4[5]" (identifier "puVar4") ([ "[") (number_literal "5") (] "]")))) (; ";")) (expression_statement "local_4c = puVar6;" (assignment_expression "local_4c = puVar6" (identifier "local_4c") (= "=") (identifier "puVar6")) (; ";")) (expression_statement "local_48 = param_1;" (assignment_expression "local_48 = param_1" (identifier "local_48") (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_44 = puVar15;" (assignment_expression "local_44 = puVar15" (identifier "local_44") (= "=") (identifier "puVar15")) (; ";")) (expression_statement "local_3c = uVar20;" (assignment_expression "local_3c = uVar20" (identifier "local_3c") (= "=") (identifier "uVar20")) (; ";")) (if_statement "if (uVar14 < *puVar4) {\n    iVar2 = (*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))(uVar14,&local_58);\n    puVar6 = (uint *)puVar4[3];\n    puVar15 = (uint *)(uVar14 + iVar2);\n    puVar4[3] = (uint)((int)puVar6 + local_54);\n    puVar4[2] = (int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6) + puVar4[2];\n    bVar3 = *(byte *)puVar15;\n    if ((char)bVar3 < '\0') {\n      param_2 = &local_5c;\n      puVar6 = puVar15;\n      uVar14 = FUN_0006610c();\n      puVar4[6] = uVar14;\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = local_5c >> 1;\n    }\n    else {\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = (uint)(bVar3 >> 1);\n      puVar4[6] = 1;\n      param_2 = local_58;\n    }\n  }\n  else {\n    puVar4[4] = 0;\n  }" (if "if") (parenthesized_expression "(uVar14 < *puVar4)" (( "(") (binary_expression "uVar14 < *puVar4" (identifier "uVar14") (< "<") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) () ")")) (compound_statement "{\n    iVar2 = (*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))(uVar14,&local_58);\n    puVar6 = (uint *)puVar4[3];\n    puVar15 = (uint *)(uVar14 + iVar2);\n    puVar4[3] = (uint)((int)puVar6 + local_54);\n    puVar4[2] = (int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6) + puVar4[2];\n    bVar3 = *(byte *)puVar15;\n    if ((char)bVar3 < '\0') {\n      param_2 = &local_5c;\n      puVar6 = puVar15;\n      uVar14 = FUN_0006610c();\n      puVar4[6] = uVar14;\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = local_5c >> 1;\n    }\n    else {\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = (uint)(bVar3 >> 1);\n      puVar4[6] = 1;\n      param_2 = local_58;\n    }\n  }" ({ "{") (expression_statement "iVar2 = (*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))(uVar14,&local_58);" (assignment_expression "iVar2 = (*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))(uVar14,&local_58)" (identifier "iVar2") (= "=") (call_expression "(*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))(uVar14,&local_58)" (parenthesized_expression "(*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))" (( "(") (pointer_expression "*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80)" (* "*") (cast_expression "(code *)(*(int *)(puVar18 + 0x12a128) + -0x80)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar18 + 0x12a128) + -0x80)" (( "(") (binary_expression "*(int *)(puVar18 + 0x12a128) + -0x80" (pointer_expression "*(int *)(puVar18 + 0x12a128)" (* "*") (cast_expression "(int *)(puVar18 + 0x12a128)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar18 + 0x12a128)" (( "(") (binary_expression "puVar18 + 0x12a128" (identifier "puVar18") (+ "+") (number_literal "0x12a128")) () ")")))) (+ "+") (number_literal "-0x80")) () ")")))) () ")")) (argument_list "(uVar14,&local_58)" (( "(") (identifier "uVar14") (, ",") (pointer_expression "&local_58" (& "&") (identifier "local_58")) () ")")))) (; ";")) (expression_statement "puVar6 = (uint *)puVar4[3];" (assignment_expression "puVar6 = (uint *)puVar4[3]" (identifier "puVar6") (= "=") (cast_expression "(uint *)puVar4[3]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "puVar15 = (uint *)(uVar14 + iVar2);" (assignment_expression "puVar15 = (uint *)(uVar14 + iVar2)" (identifier "puVar15") (= "=") (cast_expression "(uint *)(uVar14 + iVar2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar14 + iVar2)" (( "(") (binary_expression "uVar14 + iVar2" (identifier "uVar14") (+ "+") (identifier "iVar2")) () ")")))) (; ";")) (expression_statement "puVar4[3] = (uint)((int)puVar6 + local_54);" (assignment_expression "puVar4[3] = (uint)((int)puVar6 + local_54)" (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (call_expression "(uint)((int)puVar6 + local_54)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)puVar6 + local_54)" (( "(") (binary_expression "(int)puVar6 + local_54" (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6")) (+ "+") (identifier "local_54")) () ")")))) (; ";")) (expression_statement "puVar4[2] = (int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6) + puVar4[2];" (assignment_expression "puVar4[2] = (int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6) + puVar4[2]" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "(int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6) + puVar4[2]" (binary_expression "(int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6)" (cast_expression "(int)local_58" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_58")) (+ "+") (call_expression "(uint)((uint *)((int)puVar6 + local_54) < puVar6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((uint *)((int)puVar6 + local_54) < puVar6)" (( "(") (binary_expression "(uint *)((int)puVar6 + local_54) < puVar6" (cast_expression "(uint *)((int)puVar6 + local_54)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar6 + local_54)" (( "(") (binary_expression "(int)puVar6 + local_54" (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6")) (+ "+") (identifier "local_54")) () ")"))) (< "<") (identifier "puVar6")) () ")")))) (+ "+") (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "bVar3 = *(byte *)puVar15;" (assignment_expression "bVar3 = *(byte *)puVar15" (identifier "bVar3") (= "=") (pointer_expression "*(byte *)puVar15" (* "*") (cast_expression "(byte *)puVar15" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar15")))) (; ";")) (if_statement "if ((char)bVar3 < '\0') {\n      param_2 = &local_5c;\n      puVar6 = puVar15;\n      uVar14 = FUN_0006610c();\n      puVar4[6] = uVar14;\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = local_5c >> 1;\n    }\n    else {\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = (uint)(bVar3 >> 1);\n      puVar4[6] = 1;\n      param_2 = local_58;\n    }" (if "if") (parenthesized_expression "((char)bVar3 < '\0')" (( "(") (binary_expression "(char)bVar3 < '\0'" (cast_expression "(char)bVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar3")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      param_2 = &local_5c;\n      puVar6 = puVar15;\n      uVar14 = FUN_0006610c();\n      puVar4[6] = uVar14;\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = local_5c >> 1;\n    }" ({ "{") (expression_statement "param_2 = &local_5c;" (assignment_expression "param_2 = &local_5c" (identifier "param_2") (= "=") (pointer_expression "&local_5c" (& "&") (identifier "local_5c"))) (; ";")) (expression_statement "puVar6 = puVar15;" (assignment_expression "puVar6 = puVar15" (identifier "puVar6") (= "=") (identifier "puVar15")) (; ";")) (expression_statement "uVar14 = FUN_0006610c();" (assignment_expression "uVar14 = FUN_0006610c()" (identifier "uVar14") (= "=") (call_expression "FUN_0006610c()" (identifier "FUN_0006610c") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar4[6] = uVar14;" (assignment_expression "puVar4[6] = uVar14" (subscript_expression "puVar4[6]" (identifier "puVar4") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "uVar14")) (; ";")) (expression_statement "puVar4[4] = (uint)puVar15;" (assignment_expression "puVar4[4] = (uint)puVar15" (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (cast_expression "(uint)puVar15" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar15"))) (; ";")) (expression_statement "puVar4[5] = local_5c >> 1;" (assignment_expression "puVar4[5] = local_5c >> 1" (subscript_expression "puVar4[5]" (identifier "puVar4") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "local_5c >> 1" (identifier "local_5c") (>> ">>") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = (uint)(bVar3 >> 1);\n      puVar4[6] = 1;\n      param_2 = local_58;\n    }" (else "else") (compound_statement "{\n      puVar4[4] = (uint)puVar15;\n      puVar4[5] = (uint)(bVar3 >> 1);\n      puVar4[6] = 1;\n      param_2 = local_58;\n    }" ({ "{") (expression_statement "puVar4[4] = (uint)puVar15;" (assignment_expression "puVar4[4] = (uint)puVar15" (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (cast_expression "(uint)puVar15" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar15"))) (; ";")) (expression_statement "puVar4[5] = (uint)(bVar3 >> 1);" (assignment_expression "puVar4[5] = (uint)(bVar3 >> 1)" (subscript_expression "puVar4[5]" (identifier "puVar4") ([ "[") (number_literal "5") (] "]")) (= "=") (call_expression "(uint)(bVar3 >> 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(bVar3 >> 1)" (( "(") (binary_expression "bVar3 >> 1" (identifier "bVar3") (>> ">>") (number_literal "1")) () ")")))) (; ";")) (expression_statement "puVar4[6] = 1;" (assignment_expression "puVar4[6] = 1" (subscript_expression "puVar4[6]" (identifier "puVar4") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "param_2 = local_58;" (assignment_expression "param_2 = local_58" (identifier "param_2") (= "=") (identifier "local_58")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    puVar4[4] = 0;\n  }" (else "else") (compound_statement "{\n    puVar4[4] = 0;\n  }" ({ "{") (expression_statement "puVar4[4] = 0;" (assignment_expression "puVar4[4] = 0" (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")))) (if_statement "if (local_4c == (uint *)*puVar16) {\n    return (uint *)*puVar16;\n  }" (if "if") (parenthesized_expression "(local_4c == (uint *)*puVar16)" (( "(") (binary_expression "local_4c == (uint *)*puVar16" (identifier "local_4c") (== "==") (cast_expression "(uint *)*puVar16" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar16" (* "*") (identifier "puVar16")))) () ")")) (compound_statement "{\n    return (uint *)*puVar16;\n  }" ({ "{") (return_statement "return (uint *)*puVar16;" (return "return") (cast_expression "(uint *)*puVar16" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar16" (* "*") (identifier "puVar16"))) (; ";")) (} "}"))) (expression_statement "pcVar19 = *(code **)(local_68 + -0x7b28);" (assignment_expression "pcVar19 = *(code **)(local_68 + -0x7b28)" (identifier "pcVar19") (= "=") (pointer_expression "*(code **)(local_68 + -0x7b28)" (* "*") (cast_expression "(code **)(local_68 + -0x7b28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_68 + -0x7b28)" (( "(") (binary_expression "local_68 + -0x7b28" (identifier "local_68") (+ "+") (number_literal "-0x7b28")) () ")"))))) (; ";")) (expression_statement "pcVar21 = FUN_00066b38;" (assignment_expression "pcVar21 = FUN_00066b38" (identifier "pcVar21") (= "=") (identifier "FUN_00066b38")) (; ";")) (expression_statement "(*pcVar19)();" (call_expression "(*pcVar19)()" (parenthesized_expression "(*pcVar19)" (( "(") (pointer_expression "*pcVar19" (* "*") (identifier "pcVar19")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puStack_80 = puVar16;" (assignment_expression "puStack_80 = puVar16" (identifier "puStack_80") (= "=") (identifier "puVar16")) (; ";")) (expression_statement "puStack_88 = puVar4;" (assignment_expression "puStack_88 = puVar4" (identifier "puStack_88") (= "=") (identifier "puVar4")) (; ";")) (expression_statement "pcStack_7c = pcVar21;" (assignment_expression "pcStack_7c = pcVar21" (identifier "pcStack_7c") (= "=") (identifier "pcVar21")) (; ";")) (expression_statement "puStack_84 = puVar15;" (assignment_expression "puStack_84 = puVar15" (identifier "puStack_84") (= "=") (identifier "puVar15")) (; ";")) (expression_statement "piVar17 = *(int **)(pcVar19 + 0x12a2ec);" (assignment_expression "piVar17 = *(int **)(pcVar19 + 0x12a2ec)" (identifier "piVar17") (= "=") (pointer_expression "*(int **)(pcVar19 + 0x12a2ec)" (* "*") (cast_expression "(int **)(pcVar19 + 0x12a2ec)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar19 + 0x12a2ec)" (( "(") (binary_expression "pcVar19 + 0x12a2ec" (identifier "pcVar19") (+ "+") (number_literal "0x12a2ec")) () ")"))))) (; ";")) (expression_statement "puVar15 = (uint *)param_2[5];" (assignment_expression "puVar15 = (uint *)param_2[5]" (identifier "puVar15") (= "=") (cast_expression "(uint *)param_2[5]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")))) (; ";")) (expression_statement "piVar13 = (int *)param_2[3];" (assignment_expression "piVar13 = (int *)param_2[3]" (identifier "piVar13") (= "=") (cast_expression "(int *)param_2[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "puStack_8c = (uint *)*piVar17;" (assignment_expression "puStack_8c = (uint *)*piVar17" (identifier "puStack_8c") (= "=") (cast_expression "(uint *)*piVar17" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar17" (* "*") (identifier "piVar17")))) (; ";")) (if_statement "if (puVar6[0xc] == 1) {\n    piVar10 = (int *)piVar13[2];\n    *(undefined1 *)(param_2 + 0x15) = 0;\n    piVar9 = (int *)param_2[10];\n    if ((int)piVar10 <= param_2[10]) {\n      piVar9 = piVar10;\n    }\n    puVar4 = (uint *)(uint)((int)puVar15 < (int)piVar9);\n    param_2[0x14] = 1;\n    if ((puVar4 != (uint *)0x0) &&\n       (puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0')) {\n      *(undefined1 *)(param_2 + 0x15) = 1;\n      if (((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')) {\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }\n      else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }\n    }\n  }\n  else {\n    bVar3 = *(byte *)(*piVar13 + (int)puVar15);\n    uStack_90 = (uint)bVar3;\n    puVar4 = (uint *)(int)(char)bVar3;\n    if ((int)puVar4 < 0) {\n      puVar4 = &uStack_90;\n      piVar13 = (int *)(*piVar13 + (int)puVar15);\n      iVar2 = FUN_0006610c();\n      puVar15 = (uint *)((int)puVar15 + iVar2);\n      bVar3 = (byte)uStack_90;\n    }\n    else {\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }\n    *(byte *)(param_2 + 0x15) = bVar3 & 1;\n    param_2[0x14] = (int)uStack_90 >> 1;\n  }" (if "if") (parenthesized_expression "(puVar6[0xc] == 1)" (( "(") (binary_expression "puVar6[0xc] == 1" (subscript_expression "puVar6[0xc]" (identifier "puVar6") ([ "[") (number_literal "0xc") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    piVar10 = (int *)piVar13[2];\n    *(undefined1 *)(param_2 + 0x15) = 0;\n    piVar9 = (int *)param_2[10];\n    if ((int)piVar10 <= param_2[10]) {\n      piVar9 = piVar10;\n    }\n    puVar4 = (uint *)(uint)((int)puVar15 < (int)piVar9);\n    param_2[0x14] = 1;\n    if ((puVar4 != (uint *)0x0) &&\n       (puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0')) {\n      *(undefined1 *)(param_2 + 0x15) = 1;\n      if (((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')) {\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }\n      else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }\n    }\n  }" ({ "{") (expression_statement "piVar10 = (int *)piVar13[2];" (assignment_expression "piVar10 = (int *)piVar13[2]" (identifier "piVar10") (= "=") (cast_expression "(int *)piVar13[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar13[2]" (identifier "piVar13") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "*(undefined1 *)(param_2 + 0x15) = 0;" (assignment_expression "*(undefined1 *)(param_2 + 0x15) = 0" (pointer_expression "*(undefined1 *)(param_2 + 0x15)" (* "*") (cast_expression "(undefined1 *)(param_2 + 0x15)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x15)" (( "(") (binary_expression "param_2 + 0x15" (identifier "param_2") (+ "+") (number_literal "0x15")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar9 = (int *)param_2[10];" (assignment_expression "piVar9 = (int *)param_2[10]" (identifier "piVar9") (= "=") (cast_expression "(int *)param_2[10]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")))) (; ";")) (if_statement "if ((int)piVar10 <= param_2[10]) {\n      piVar9 = piVar10;\n    }" (if "if") (parenthesized_expression "((int)piVar10 <= param_2[10])" (( "(") (binary_expression "(int)piVar10 <= param_2[10]" (cast_expression "(int)piVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar10")) (<= "<=") (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]"))) () ")")) (compound_statement "{\n      piVar9 = piVar10;\n    }" ({ "{") (expression_statement "piVar9 = piVar10;" (assignment_expression "piVar9 = piVar10" (identifier "piVar9") (= "=") (identifier "piVar10")) (; ";")) (} "}"))) (expression_statement "puVar4 = (uint *)(uint)((int)puVar15 < (int)piVar9);" (assignment_expression "puVar4 = (uint *)(uint)((int)puVar15 < (int)piVar9)" (identifier "puVar4") (= "=") (cast_expression "(uint *)(uint)((int)puVar15 < (int)piVar9)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)((int)puVar15 < (int)piVar9)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)puVar15 < (int)piVar9)" (( "(") (binary_expression "(int)puVar15 < (int)piVar9" (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15")) (< "<") (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9"))) () ")"))))) (; ";")) (expression_statement "param_2[0x14] = 1;" (assignment_expression "param_2[0x14] = 1" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "1")) (; ";")) (if_statement "if ((puVar4 != (uint *)0x0) &&\n       (puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0')) {\n      *(undefined1 *)(param_2 + 0x15) = 1;\n      if (((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')) {\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }\n      else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }\n    }" (if "if") (parenthesized_expression "((puVar4 != (uint *)0x0) &&\n       (puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0'))" (( "(") (binary_expression "(puVar4 != (uint *)0x0) &&\n       (puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0')" (parenthesized_expression "(puVar4 != (uint *)0x0)" (( "(") (binary_expression "puVar4 != (uint *)0x0" (identifier "puVar4") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0')" (( "(") (comma_expression "puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0'" (assignment_expression "puVar4 = (uint *)((int)puVar15 + 1)" (identifier "puVar4") (= "=") (cast_expression "(uint *)((int)puVar15 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar15 + 1)" (( "(") (binary_expression "(int)puVar15 + 1" (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15")) (+ "+") (number_literal "1")) () ")")))) (, ",") (binary_expression "*(char *)(*piVar13 + (int)puVar15) == '\0'" (pointer_expression "*(char *)(*piVar13 + (int)puVar15)" (* "*") (cast_expression "(char *)(*piVar13 + (int)puVar15)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar13 + (int)puVar15)" (( "(") (binary_expression "*piVar13 + (int)puVar15" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (+ "+") (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15"))) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) (compound_statement "{\n      *(undefined1 *)(param_2 + 0x15) = 1;\n      if (((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')) {\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }\n      else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }\n    }" ({ "{") (expression_statement "*(undefined1 *)(param_2 + 0x15) = 1;" (assignment_expression "*(undefined1 *)(param_2 + 0x15) = 1" (pointer_expression "*(undefined1 *)(param_2 + 0x15)" (* "*") (cast_expression "(undefined1 *)(param_2 + 0x15)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x15)" (( "(") (binary_expression "param_2 + 0x15" (identifier "param_2") (+ "+") (number_literal "0x15")) () ")")))) (= "=") (number_literal "1")) (; ";")) (if_statement "if (((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')) {\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }\n      else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }" (if "if") (parenthesized_expression "(((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0'))" (( "(") (binary_expression "((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')" (parenthesized_expression "((int)puVar4 < (int)piVar9)" (( "(") (binary_expression "(int)puVar4 < (int)piVar9" (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4")) (< "<") (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(*piVar13 + (int)puVar4) == '\0')" (( "(") (binary_expression "*(char *)(*piVar13 + (int)puVar4) == '\0'" (pointer_expression "*(char *)(*piVar13 + (int)puVar4)" (* "*") (cast_expression "(char *)(*piVar13 + (int)puVar4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar13 + (int)puVar4)" (( "(") (binary_expression "*piVar13 + (int)puVar4" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (+ "+") (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4"))) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n        puVar15 = (uint *)((int)puVar15 + 2);\n      }" ({ "{") (expression_statement "puVar15 = (uint *)((int)puVar15 + 2);" (assignment_expression "puVar15 = (uint *)((int)puVar15 + 2)" (identifier "puVar15") (= "=") (cast_expression "(uint *)((int)puVar15 + 2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar15 + 2)" (( "(") (binary_expression "(int)puVar15 + 2" (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15")) (+ "+") (number_literal "2")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }" (else "else") (compound_statement "{\n        param_2[0x14] = 0;\n        puVar15 = puVar4;\n      }" ({ "{") (expression_statement "param_2[0x14] = 0;" (assignment_expression "param_2[0x14] = 0" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar15 = puVar4;" (assignment_expression "puVar15 = puVar4" (identifier "puVar15") (= "=") (identifier "puVar4")) (; ";")) (} "}")))) (} "}"))) (} "}")) (else_clause "else {\n    bVar3 = *(byte *)(*piVar13 + (int)puVar15);\n    uStack_90 = (uint)bVar3;\n    puVar4 = (uint *)(int)(char)bVar3;\n    if ((int)puVar4 < 0) {\n      puVar4 = &uStack_90;\n      piVar13 = (int *)(*piVar13 + (int)puVar15);\n      iVar2 = FUN_0006610c();\n      puVar15 = (uint *)((int)puVar15 + iVar2);\n      bVar3 = (byte)uStack_90;\n    }\n    else {\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }\n    *(byte *)(param_2 + 0x15) = bVar3 & 1;\n    param_2[0x14] = (int)uStack_90 >> 1;\n  }" (else "else") (compound_statement "{\n    bVar3 = *(byte *)(*piVar13 + (int)puVar15);\n    uStack_90 = (uint)bVar3;\n    puVar4 = (uint *)(int)(char)bVar3;\n    if ((int)puVar4 < 0) {\n      puVar4 = &uStack_90;\n      piVar13 = (int *)(*piVar13 + (int)puVar15);\n      iVar2 = FUN_0006610c();\n      puVar15 = (uint *)((int)puVar15 + iVar2);\n      bVar3 = (byte)uStack_90;\n    }\n    else {\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }\n    *(byte *)(param_2 + 0x15) = bVar3 & 1;\n    param_2[0x14] = (int)uStack_90 >> 1;\n  }" ({ "{") (expression_statement "bVar3 = *(byte *)(*piVar13 + (int)puVar15);" (assignment_expression "bVar3 = *(byte *)(*piVar13 + (int)puVar15)" (identifier "bVar3") (= "=") (pointer_expression "*(byte *)(*piVar13 + (int)puVar15)" (* "*") (cast_expression "(byte *)(*piVar13 + (int)puVar15)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar13 + (int)puVar15)" (( "(") (binary_expression "*piVar13 + (int)puVar15" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (+ "+") (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15"))) () ")"))))) (; ";")) (expression_statement "uStack_90 = (uint)bVar3;" (assignment_expression "uStack_90 = (uint)bVar3" (identifier "uStack_90") (= "=") (cast_expression "(uint)bVar3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar3"))) (; ";")) (expression_statement "puVar4 = (uint *)(int)(char)bVar3;" (assignment_expression "puVar4 = (uint *)(int)(char)bVar3" (identifier "puVar4") (= "=") (cast_expression "(uint *)(int)(char)bVar3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(char)bVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)bVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar3"))))) (; ";")) (if_statement "if ((int)puVar4 < 0) {\n      puVar4 = &uStack_90;\n      piVar13 = (int *)(*piVar13 + (int)puVar15);\n      iVar2 = FUN_0006610c();\n      puVar15 = (uint *)((int)puVar15 + iVar2);\n      bVar3 = (byte)uStack_90;\n    }\n    else {\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }" (if "if") (parenthesized_expression "((int)puVar4 < 0)" (( "(") (binary_expression "(int)puVar4 < 0" (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      puVar4 = &uStack_90;\n      piVar13 = (int *)(*piVar13 + (int)puVar15);\n      iVar2 = FUN_0006610c();\n      puVar15 = (uint *)((int)puVar15 + iVar2);\n      bVar3 = (byte)uStack_90;\n    }" ({ "{") (expression_statement "puVar4 = &uStack_90;" (assignment_expression "puVar4 = &uStack_90" (identifier "puVar4") (= "=") (pointer_expression "&uStack_90" (& "&") (identifier "uStack_90"))) (; ";")) (expression_statement "piVar13 = (int *)(*piVar13 + (int)puVar15);" (assignment_expression "piVar13 = (int *)(*piVar13 + (int)puVar15)" (identifier "piVar13") (= "=") (cast_expression "(int *)(*piVar13 + (int)puVar15)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar13 + (int)puVar15)" (( "(") (binary_expression "*piVar13 + (int)puVar15" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (+ "+") (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15"))) () ")")))) (; ";")) (expression_statement "iVar2 = FUN_0006610c();" (assignment_expression "iVar2 = FUN_0006610c()" (identifier "iVar2") (= "=") (call_expression "FUN_0006610c()" (identifier "FUN_0006610c") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar15 = (uint *)((int)puVar15 + iVar2);" (assignment_expression "puVar15 = (uint *)((int)puVar15 + iVar2)" (identifier "puVar15") (= "=") (cast_expression "(uint *)((int)puVar15 + iVar2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar15 + iVar2)" (( "(") (binary_expression "(int)puVar15 + iVar2" (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15")) (+ "+") (identifier "iVar2")) () ")")))) (; ";")) (expression_statement "bVar3 = (byte)uStack_90;" (assignment_expression "bVar3 = (byte)uStack_90" (identifier "bVar3") (= "=") (cast_expression "(byte)uStack_90" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uStack_90"))) (; ";")) (} "}")) (else_clause "else {\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }" (else "else") (compound_statement "{\n      puVar15 = (uint *)((int)puVar15 + 1);\n    }" ({ "{") (expression_statement "puVar15 = (uint *)((int)puVar15 + 1);" (assignment_expression "puVar15 = (uint *)((int)puVar15 + 1)" (identifier "puVar15") (= "=") (cast_expression "(uint *)((int)puVar15 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar15 + 1)" (( "(") (binary_expression "(int)puVar15 + 1" (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")))) (expression_statement "*(byte *)(param_2 + 0x15) = bVar3 & 1;" (assignment_expression "*(byte *)(param_2 + 0x15) = bVar3 & 1" (pointer_expression "*(byte *)(param_2 + 0x15)" (* "*") (cast_expression "(byte *)(param_2 + 0x15)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x15)" (( "(") (binary_expression "param_2 + 0x15" (identifier "param_2") (+ "+") (number_literal "0x15")) () ")")))) (= "=") (binary_expression "bVar3 & 1" (identifier "bVar3") (& "&") (number_literal "1"))) (; ";")) (expression_statement "param_2[0x14] = (int)uStack_90 >> 1;" (assignment_expression "param_2[0x14] = (int)uStack_90 >> 1" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (binary_expression "(int)uStack_90 >> 1" (cast_expression "(int)uStack_90" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uStack_90")) (>> ">>") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "puVar6 = (uint *)*piVar17;" (assignment_expression "puVar6 = (uint *)*piVar17" (identifier "puVar6") (= "=") (cast_expression "(uint *)*piVar17" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar17" (* "*") (identifier "piVar17")))) (; ";")) (expression_statement "param_2[5] = (int)puVar15;" (assignment_expression "param_2[5] = (int)puVar15" (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")) (= "=") (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15"))) (; ";")) (if_statement "if (puStack_8c == puVar6) {\n    return puVar6;\n  }" (if "if") (parenthesized_expression "(puStack_8c == puVar6)" (( "(") (binary_expression "puStack_8c == puVar6" (identifier "puStack_8c") (== "==") (identifier "puVar6")) () ")")) (compound_statement "{\n    return puVar6;\n  }" ({ "{") (return_statement "return puVar6;" (return "return") (identifier "puVar6") (; ";")) (} "}"))) (expression_statement "pcVar19 = *(code **)(pcVar19 + 0x12a2c0);" (assignment_expression "pcVar19 = *(code **)(pcVar19 + 0x12a2c0)" (identifier "pcVar19") (= "=") (pointer_expression "*(code **)(pcVar19 + 0x12a2c0)" (* "*") (cast_expression "(code **)(pcVar19 + 0x12a2c0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar19 + 0x12a2c0)" (( "(") (binary_expression "pcVar19 + 0x12a2c0" (identifier "pcVar19") (+ "+") (number_literal "0x12a2c0")) () ")"))))) (; ";")) (expression_statement "(*pcVar19)();" (call_expression "(*pcVar19)()" (parenthesized_expression "(*pcVar19)" (( "(") (pointer_expression "*pcVar19" (* "*") (identifier "pcVar19")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcStack_d8 = pcVar19 + 0x131ca0;" (assignment_expression "pcStack_d8 = pcVar19 + 0x131ca0" (identifier "pcStack_d8") (= "=") (binary_expression "pcVar19 + 0x131ca0" (identifier "pcVar19") (+ "+") (number_literal "0x131ca0"))) (; ";")) (expression_statement "piVar13 = (int *)*piVar13;" (assignment_expression "piVar13 = (int *)*piVar13" (identifier "piVar13") (= "=") (cast_expression "(int *)*piVar13" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar13" (* "*") (identifier "piVar13")))) (; ";")) (expression_statement "piVar7 = (int *)*puVar4;" (assignment_expression "piVar7 = (int *)*puVar4" (identifier "piVar7") (= "=") (cast_expression "(int *)*puVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar4" (* "*") (identifier "puVar4")))) (; ";")) (expression_statement "puVar16 = *(undefined4 **)(pcVar19 + 0x12a1a4);" (assignment_expression "puVar16 = *(undefined4 **)(pcVar19 + 0x12a1a4)" (identifier "puVar16") (= "=") (pointer_expression "*(undefined4 **)(pcVar19 + 0x12a1a4)" (* "*") (cast_expression "(undefined4 **)(pcVar19 + 0x12a1a4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar19 + 0x12a1a4)" (( "(") (binary_expression "pcVar19 + 0x12a1a4" (identifier "pcVar19") (+ "+") (number_literal "0x12a1a4")) () ")"))))) (; ";")) (expression_statement "puVar6 = (uint *)*puVar16;" (assignment_expression "puVar6 = (uint *)*puVar16" (identifier "puVar6") (= "=") (cast_expression "(uint *)*puVar16" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar16" (* "*") (identifier "puVar16")))) (; ";")) (expression_statement "piVar9 = *(int **)(piVar13[3] + 0x30);" (assignment_expression "piVar9 = *(int **)(piVar13[3] + 0x30)" (identifier "piVar9") (= "=") (pointer_expression "*(int **)(piVar13[3] + 0x30)" (* "*") (cast_expression "(int **)(piVar13[3] + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar13[3] + 0x30)" (( "(") (binary_expression "piVar13[3] + 0x30" (subscript_expression "piVar13[3]" (identifier "piVar13") ([ "[") (number_literal "3") (] "]")) (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "puStack_cc = puVar6;" (assignment_expression "puStack_cc = puVar6" (identifier "puStack_cc") (= "=") (identifier "puVar6")) (; ";")) (expression_statement "piStack_c4 = param_2;" (assignment_expression "piStack_c4 = param_2" (identifier "piStack_c4") (= "=") (identifier "param_2")) (; ";")) (expression_statement "puStack_c0 = puVar15;" (assignment_expression "puStack_c0 = puVar15" (identifier "puStack_c0") (= "=") (identifier "puVar15")) (; ";")) (expression_statement "piStack_bc = piVar17;" (assignment_expression "piStack_bc = piVar17" (identifier "piStack_bc") (= "=") (identifier "piVar17")) (; ";")) (if_statement "if (piVar9 == (int *)0x2) {\n    if (piVar7 < (int *)puVar4[1]) {\n      piVar9 = &iStack_d0;\n      iVar2 = FUN_0006610c();\n      *puVar4 = *puVar4 + iVar2;\n      *piVar10 = *piVar10 + iStack_d0 + -2;\n      goto LAB_00066d4c;\n    }\n  }\n  else if (piVar7 < (int *)puVar4[1]) {\n    if (*(char *)piVar7 != '\x01') {\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }\n    piVar7 = (int *)((int)piVar7 + 1);\n    iVar2 = FUN_0006610c();\n    *puVar4 = *puVar4 + iVar2 + 1;\n    piVar9 = piVar10;\n    goto LAB_00066d4c;\n  }" (if "if") (parenthesized_expression "(piVar9 == (int *)0x2)" (( "(") (binary_expression "piVar9 == (int *)0x2" (identifier "piVar9") (== "==") (cast_expression "(int *)0x2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (compound_statement "{\n    if (piVar7 < (int *)puVar4[1]) {\n      piVar9 = &iStack_d0;\n      iVar2 = FUN_0006610c();\n      *puVar4 = *puVar4 + iVar2;\n      *piVar10 = *piVar10 + iStack_d0 + -2;\n      goto LAB_00066d4c;\n    }\n  }" ({ "{") (if_statement "if (piVar7 < (int *)puVar4[1]) {\n      piVar9 = &iStack_d0;\n      iVar2 = FUN_0006610c();\n      *puVar4 = *puVar4 + iVar2;\n      *piVar10 = *piVar10 + iStack_d0 + -2;\n      goto LAB_00066d4c;\n    }" (if "if") (parenthesized_expression "(piVar7 < (int *)puVar4[1])" (( "(") (binary_expression "piVar7 < (int *)puVar4[1]" (identifier "piVar7") (< "<") (cast_expression "(int *)puVar4[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")))) () ")")) (compound_statement "{\n      piVar9 = &iStack_d0;\n      iVar2 = FUN_0006610c();\n      *puVar4 = *puVar4 + iVar2;\n      *piVar10 = *piVar10 + iStack_d0 + -2;\n      goto LAB_00066d4c;\n    }" ({ "{") (expression_statement "piVar9 = &iStack_d0;" (assignment_expression "piVar9 = &iStack_d0" (identifier "piVar9") (= "=") (pointer_expression "&iStack_d0" (& "&") (identifier "iStack_d0"))) (; ";")) (expression_statement "iVar2 = FUN_0006610c();" (assignment_expression "iVar2 = FUN_0006610c()" (identifier "iVar2") (= "=") (call_expression "FUN_0006610c()" (identifier "FUN_0006610c") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*puVar4 = *puVar4 + iVar2;" (assignment_expression "*puVar4 = *puVar4 + iVar2" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (binary_expression "*puVar4 + iVar2" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (+ "+") (identifier "iVar2"))) (; ";")) (expression_statement "*piVar10 = *piVar10 + iStack_d0 + -2;" (assignment_expression "*piVar10 = *piVar10 + iStack_d0 + -2" (pointer_expression "*piVar10" (* "*") (identifier "piVar10")) (= "=") (binary_expression "*piVar10 + iStack_d0 + -2" (binary_expression "*piVar10 + iStack_d0" (pointer_expression "*piVar10" (* "*") (identifier "piVar10")) (+ "+") (identifier "iStack_d0")) (+ "+") (number_literal "-2"))) (; ";")) (goto_statement "goto LAB_00066d4c;" (goto "goto") (statement_identifier "LAB_00066d4c") (; ";")) (} "}"))) (} "}")) (else_clause "else if (piVar7 < (int *)puVar4[1]) {\n    if (*(char *)piVar7 != '\x01') {\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }\n    piVar7 = (int *)((int)piVar7 + 1);\n    iVar2 = FUN_0006610c();\n    *puVar4 = *puVar4 + iVar2 + 1;\n    piVar9 = piVar10;\n    goto LAB_00066d4c;\n  }" (else "else") (if_statement "if (piVar7 < (int *)puVar4[1]) {\n    if (*(char *)piVar7 != '\x01') {\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }\n    piVar7 = (int *)((int)piVar7 + 1);\n    iVar2 = FUN_0006610c();\n    *puVar4 = *puVar4 + iVar2 + 1;\n    piVar9 = piVar10;\n    goto LAB_00066d4c;\n  }" (if "if") (parenthesized_expression "(piVar7 < (int *)puVar4[1])" (( "(") (binary_expression "piVar7 < (int *)puVar4[1]" (identifier "piVar7") (< "<") (cast_expression "(int *)puVar4[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")))) () ")")) (compound_statement "{\n    if (*(char *)piVar7 != '\x01') {\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }\n    piVar7 = (int *)((int)piVar7 + 1);\n    iVar2 = FUN_0006610c();\n    *puVar4 = *puVar4 + iVar2 + 1;\n    piVar9 = piVar10;\n    goto LAB_00066d4c;\n  }" ({ "{") (if_statement "if (*(char *)piVar7 != '\x01') {\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }" (if "if") (parenthesized_expression "(*(char *)piVar7 != '\x01')" (( "(") (binary_expression "*(char *)piVar7 != '\x01'" (pointer_expression "*(char *)piVar7" (* "*") (cast_expression "(char *)piVar7" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "piVar7"))) (!= "!=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (compound_statement "{\n      do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');\n    }" ({ "{") (do_statement "do {\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      } while (*(char *)piVar7 != '\x01');" (do "do") (compound_statement "{\n        piVar9 = &iStack_d0;\n        iVar2 = FUN_0006610c();\n        piVar7 = (int *)(*puVar4 + iVar2);\n        *puVar4 = (uint)piVar7;\n        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;\n      }" ({ "{") (expression_statement "piVar9 = &iStack_d0;" (assignment_expression "piVar9 = &iStack_d0" (identifier "piVar9") (= "=") (pointer_expression "&iStack_d0" (& "&") (identifier "iStack_d0"))) (; ";")) (expression_statement "iVar2 = FUN_0006610c();" (assignment_expression "iVar2 = FUN_0006610c()" (identifier "iVar2") (= "=") (call_expression "FUN_0006610c()" (identifier "FUN_0006610c") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "piVar7 = (int *)(*puVar4 + iVar2);" (assignment_expression "piVar7 = (int *)(*puVar4 + iVar2)" (identifier "piVar7") (= "=") (cast_expression "(int *)(*puVar4 + iVar2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*puVar4 + iVar2)" (( "(") (binary_expression "*puVar4 + iVar2" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (+ "+") (identifier "iVar2")) () ")")))) (; ";")) (expression_statement "*puVar4 = (uint)piVar7;" (assignment_expression "*puVar4 = (uint)piVar7" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (cast_expression "(uint)piVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar7"))) (; ";")) (if_statement "if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;" (if "if") (parenthesized_expression "((int *)puVar4[1] <= piVar7)" (( "(") (binary_expression "(int *)puVar4[1] <= piVar7" (cast_expression "(int *)puVar4[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]"))) (<= "<=") (identifier "piVar7")) () ")")) (goto_statement "goto LAB_00066d48;" (goto "goto") (statement_identifier "LAB_00066d48") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(*(char *)piVar7 != '\x01')" (( "(") (binary_expression "*(char *)piVar7 != '\x01'" (pointer_expression "*(char *)piVar7" (* "*") (cast_expression "(char *)piVar7" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "piVar7"))) (!= "!=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (; ";")) (} "}"))) (expression_statement "piVar7 = (int *)((int)piVar7 + 1);" (assignment_expression "piVar7 = (int *)((int)piVar7 + 1)" (identifier "piVar7") (= "=") (cast_expression "(int *)((int)piVar7 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar7 + 1)" (( "(") (binary_expression "(int)piVar7 + 1" (cast_expression "(int)piVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar7")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "iVar2 = FUN_0006610c();" (assignment_expression "iVar2 = FUN_0006610c()" (identifier "iVar2") (= "=") (call_expression "FUN_0006610c()" (identifier "FUN_0006610c") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*puVar4 = *puVar4 + iVar2 + 1;" (assignment_expression "*puVar4 = *puVar4 + iVar2 + 1" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (binary_expression "*puVar4 + iVar2 + 1" (binary_expression "*puVar4 + iVar2" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (+ "+") (identifier "iVar2")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar9 = piVar10;" (assignment_expression "piVar9 = piVar10" (identifier "piVar9") (= "=") (identifier "piVar10")) (; ";")) (goto_statement "goto LAB_00066d4c;" (goto "goto") (statement_identifier "LAB_00066d4c") (; ";")) (} "}"))))) (labeled_statement "LAB_00066d48:\n  *piVar10 = -1;" (statement_identifier "LAB_00066d48") (: ":") (expression_statement "*piVar10 = -1;" (assignment_expression "*piVar10 = -1" (pointer_expression "*piVar10" (* "*") (identifier "piVar10")) (= "=") (number_literal "-1")) (; ";"))) (labeled_statement "LAB_00066d4c:\n  puVar15 = (uint *)*puVar16;" (statement_identifier "LAB_00066d4c") (: ":") (expression_statement "puVar15 = (uint *)*puVar16;" (assignment_expression "puVar15 = (uint *)*puVar16" (identifier "puVar15") (= "=") (cast_expression "(uint *)*puVar16" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar16" (* "*") (identifier "puVar16")))) (; ";"))) (if_statement "if (puStack_cc == puVar15) {\n    return puVar15;\n  }" (if "if") (parenthesized_expression "(puStack_cc == puVar15)" (( "(") (binary_expression "puStack_cc == puVar15" (identifier "puStack_cc") (== "==") (identifier "puVar15")) () ")")) (compound_statement "{\n    return puVar15;\n  }" ({ "{") (return_statement "return puVar15;" (return "return") (identifier "puVar15") (; ";")) (} "}"))) (expression_statement "pcVar19 = *(code **)(pcStack_d8 + -0x7b28);" (assignment_expression "pcVar19 = *(code **)(pcStack_d8 + -0x7b28)" (identifier "pcVar19") (= "=") (pointer_expression "*(code **)(pcStack_d8 + -0x7b28)" (* "*") (cast_expression "(code **)(pcStack_d8 + -0x7b28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcStack_d8 + -0x7b28)" (( "(") (binary_expression "pcStack_d8 + -0x7b28" (identifier "pcStack_d8") (+ "+") (number_literal "-0x7b28")) () ")"))))) (; ";")) (expression_statement "uVar20 = 0x66df8;" (assignment_expression "uVar20 = 0x66df8" (identifier "uVar20") (= "=") (number_literal "0x66df8")) (; ";")) (expression_statement "(*pcVar19)();" (call_expression "(*pcVar19)()" (parenthesized_expression "(*pcVar19)" (( "(") (pointer_expression "*pcVar19" (* "*") (identifier "pcVar19")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar21 = pcVar19 + 0x131b28;" (assignment_expression "pcVar21 = pcVar19 + 0x131b28" (identifier "pcVar21") (= "=") (binary_expression "pcVar19 + 0x131b28" (identifier "pcVar19") (+ "+") (number_literal "0x131b28"))) (; ";")) (expression_statement "piVar10 = *(int **)(pcVar19 + 0x12a02c);" (assignment_expression "piVar10 = *(int **)(pcVar19 + 0x12a02c)" (identifier "piVar10") (= "=") (pointer_expression "*(int **)(pcVar19 + 0x12a02c)" (* "*") (cast_expression "(int **)(pcVar19 + 0x12a02c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar19 + 0x12a02c)" (( "(") (binary_expression "pcVar19 + 0x12a02c" (identifier "pcVar19") (+ "+") (number_literal "0x12a02c")) () ")"))))) (; ";")) (expression_statement "uVar14 = *puVar6;" (assignment_expression "uVar14 = *puVar6" (identifier "uVar14") (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (expression_statement "puStack_f4 = (uint *)*piVar10;" (assignment_expression "puStack_f4 = (uint *)*piVar10" (identifier "puStack_f4") (= "=") (cast_expression "(uint *)*piVar10" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar10" (* "*") (identifier "piVar10")))) (; ";")) (expression_statement "uStack_ec = uVar20;" (assignment_expression "uStack_ec = uVar20" (identifier "uStack_ec") (= "=") (identifier "uVar20")) (; ";")) (if_statement "if ((int)uVar14 < (int)piVar9) {\n    iVar2 = (*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))\n                      ((char *)((int)piVar7 + uVar14),&piStack_100);\n    *puVar6 = iVar2 + uVar14;\n    uVar14 = piVar13[1];\n    uVar11 = uVar14 + iStack_fc;\n    piVar7 = (int *)(*piVar13 + (int)piStack_100);\n    piVar13[1] = uVar11;\n    *piVar13 = (int)((uint)(uVar11 < uVar14) + (int)piVar7);\n    piVar13 = piStack_100;\n  }\n  else {\n    *puVar6 = 0xffffffff;\n    piVar13 = (int *)0x0;\n  }" (if "if") (parenthesized_expression "((int)uVar14 < (int)piVar9)" (( "(") (binary_expression "(int)uVar14 < (int)piVar9" (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14")) (< "<") (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9"))) () ")")) (compound_statement "{\n    iVar2 = (*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))\n                      ((char *)((int)piVar7 + uVar14),&piStack_100);\n    *puVar6 = iVar2 + uVar14;\n    uVar14 = piVar13[1];\n    uVar11 = uVar14 + iStack_fc;\n    piVar7 = (int *)(*piVar13 + (int)piStack_100);\n    piVar13[1] = uVar11;\n    *piVar13 = (int)((uint)(uVar11 < uVar14) + (int)piVar7);\n    piVar13 = piStack_100;\n  }" ({ "{") (expression_statement "iVar2 = (*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))\n                      ((char *)((int)piVar7 + uVar14),&piStack_100);" (assignment_expression "iVar2 = (*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))\n                      ((char *)((int)piVar7 + uVar14),&piStack_100)" (identifier "iVar2") (= "=") (call_expression "(*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))\n                      ((char *)((int)piVar7 + uVar14),&piStack_100)" (parenthesized_expression "(*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))" (( "(") (pointer_expression "*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80)" (* "*") (cast_expression "(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar19 + 0x129d48) + -0x80)" (( "(") (binary_expression "*(int *)(pcVar19 + 0x129d48) + -0x80" (pointer_expression "*(int *)(pcVar19 + 0x129d48)" (* "*") (cast_expression "(int *)(pcVar19 + 0x129d48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar19 + 0x129d48)" (( "(") (binary_expression "pcVar19 + 0x129d48" (identifier "pcVar19") (+ "+") (number_literal "0x129d48")) () ")")))) (+ "+") (number_literal "-0x80")) () ")")))) () ")")) (argument_list "((char *)((int)piVar7 + uVar14),&piStack_100)" (( "(") (cast_expression "(char *)((int)piVar7 + uVar14)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar7 + uVar14)" (( "(") (binary_expression "(int)piVar7 + uVar14" (cast_expression "(int)piVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar7")) (+ "+") (identifier "uVar14")) () ")"))) (, ",") (pointer_expression "&piStack_100" (& "&") (identifier "piStack_100")) () ")")))) (; ";")) (expression_statement "*puVar6 = iVar2 + uVar14;" (assignment_expression "*puVar6 = iVar2 + uVar14" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (binary_expression "iVar2 + uVar14" (identifier "iVar2") (+ "+") (identifier "uVar14"))) (; ";")) (expression_statement "uVar14 = piVar13[1];" (assignment_expression "uVar14 = piVar13[1]" (identifier "uVar14") (= "=") (subscript_expression "piVar13[1]" (identifier "piVar13") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar11 = uVar14 + iStack_fc;" (assignment_expression "uVar11 = uVar14 + iStack_fc" (identifier "uVar11") (= "=") (binary_expression "uVar14 + iStack_fc" (identifier "uVar14") (+ "+") (identifier "iStack_fc"))) (; ";")) (expression_statement "piVar7 = (int *)(*piVar13 + (int)piStack_100);" (assignment_expression "piVar7 = (int *)(*piVar13 + (int)piStack_100)" (identifier "piVar7") (= "=") (cast_expression "(int *)(*piVar13 + (int)piStack_100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar13 + (int)piStack_100)" (( "(") (binary_expression "*piVar13 + (int)piStack_100" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (+ "+") (cast_expression "(int)piStack_100" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piStack_100"))) () ")")))) (; ";")) (expression_statement "piVar13[1] = uVar11;" (assignment_expression "piVar13[1] = uVar11" (subscript_expression "piVar13[1]" (identifier "piVar13") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar11")) (; ";")) (expression_statement "*piVar13 = (int)((uint)(uVar11 < uVar14) + (int)piVar7);" (assignment_expression "*piVar13 = (int)((uint)(uVar11 < uVar14) + (int)piVar7)" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (= "=") (cast_expression "(int)((uint)(uVar11 < uVar14) + (int)piVar7)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uint)(uVar11 < uVar14) + (int)piVar7)" (( "(") (binary_expression "(uint)(uVar11 < uVar14) + (int)piVar7" (call_expression "(uint)(uVar11 < uVar14)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar11 < uVar14)" (( "(") (binary_expression "uVar11 < uVar14" (identifier "uVar11") (< "<") (identifier "uVar14")) () ")"))) (+ "+") (cast_expression "(int)piVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar7"))) () ")")))) (; ";")) (expression_statement "piVar13 = piStack_100;" (assignment_expression "piVar13 = piStack_100" (identifier "piVar13") (= "=") (identifier "piStack_100")) (; ";")) (} "}")) (else_clause "else {\n    *puVar6 = 0xffffffff;\n    piVar13 = (int *)0x0;\n  }" (else "else") (compound_statement "{\n    *puVar6 = 0xffffffff;\n    piVar13 = (int *)0x0;\n  }" ({ "{") (expression_statement "*puVar6 = 0xffffffff;" (assignment_expression "*puVar6 = 0xffffffff" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "piVar13 = (int *)0x0;" (assignment_expression "piVar13 = (int *)0x0" (identifier "piVar13") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")))) (if_statement "if (puStack_f4 != (uint *)*piVar10) {\n    (**(code **)(pcVar19 + 0x12a000))();\n    uVar14 = *puVar6;\n    uVar11 = puVar6[1];\n    puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    if (((uVar14 ^ (uint)pcVar21) & 0x7fffffff) != 0) {\n      *piVar13 = *piVar13 + 1;\n      *puVar8 = 1;\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar2 = FUN_00053284();\n      }\n      else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }\n      uVar14 = (uint)pcVar21 & 0x7fffffff;\n      uVar11 = 0;\n      *piVar13 = *piVar13 + iVar2;\n      *puVar6 = uVar14;\n      puVar6[1] = 0;\n      puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    }\n    uVar11 = uStack_10c - uVar11;\n    uVar12 = uVar11 + 2;\n    if ((pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)\n       && (uVar12 < 0x80)) {\n      *puVar8 = (char)uVar12;\n      *piVar13 = *piVar13 + 1;\n      *puVar6 = (uint)pcVar21;\n      puVar6[1] = uStack_10c;\n      return (uint *)0x1;\n    }\n    puVar15 = (uint *)FUN_00053284();\n    *piVar13 = *piVar13 + (int)puVar15;\n    *puVar6 = (uint)pcVar21;\n    puVar6[1] = uStack_10c;\n    return puVar15;\n  }" (if "if") (parenthesized_expression "(puStack_f4 != (uint *)*piVar10)" (( "(") (binary_expression "puStack_f4 != (uint *)*piVar10" (identifier "puStack_f4") (!= "!=") (cast_expression "(uint *)*piVar10" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar10" (* "*") (identifier "piVar10")))) () ")")) (compound_statement "{\n    (**(code **)(pcVar19 + 0x12a000))();\n    uVar14 = *puVar6;\n    uVar11 = puVar6[1];\n    puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    if (((uVar14 ^ (uint)pcVar21) & 0x7fffffff) != 0) {\n      *piVar13 = *piVar13 + 1;\n      *puVar8 = 1;\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar2 = FUN_00053284();\n      }\n      else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }\n      uVar14 = (uint)pcVar21 & 0x7fffffff;\n      uVar11 = 0;\n      *piVar13 = *piVar13 + iVar2;\n      *puVar6 = uVar14;\n      puVar6[1] = 0;\n      puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    }\n    uVar11 = uStack_10c - uVar11;\n    uVar12 = uVar11 + 2;\n    if ((pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)\n       && (uVar12 < 0x80)) {\n      *puVar8 = (char)uVar12;\n      *piVar13 = *piVar13 + 1;\n      *puVar6 = (uint)pcVar21;\n      puVar6[1] = uStack_10c;\n      return (uint *)0x1;\n    }\n    puVar15 = (uint *)FUN_00053284();\n    *piVar13 = *piVar13 + (int)puVar15;\n    *puVar6 = (uint)pcVar21;\n    puVar6[1] = uStack_10c;\n    return puVar15;\n  }" ({ "{") (expression_statement "(**(code **)(pcVar19 + 0x12a000))();" (call_expression "(**(code **)(pcVar19 + 0x12a000))()" (parenthesized_expression "(**(code **)(pcVar19 + 0x12a000))" (( "(") (pointer_expression "**(code **)(pcVar19 + 0x12a000)" (* "*") (pointer_expression "*(code **)(pcVar19 + 0x12a000)" (* "*") (cast_expression "(code **)(pcVar19 + 0x12a000)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar19 + 0x12a000)" (( "(") (binary_expression "pcVar19 + 0x12a000" (identifier "pcVar19") (+ "+") (number_literal "0x12a000")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar14 = *puVar6;" (assignment_expression "uVar14 = *puVar6" (identifier "uVar14") (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (expression_statement "uVar11 = puVar6[1];" (assignment_expression "uVar11 = puVar6[1]" (identifier "uVar11") (= "=") (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar8 = (undefined1 *)(*piVar7 + *piVar13);" (assignment_expression "puVar8 = (undefined1 *)(*piVar7 + *piVar13)" (identifier "puVar8") (= "=") (cast_expression "(undefined1 *)(*piVar7 + *piVar13)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar7 + *piVar13)" (( "(") (binary_expression "*piVar7 + *piVar13" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (+ "+") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) () ")")))) (; ";")) (if_statement "if (((uVar14 ^ (uint)pcVar21) & 0x7fffffff) != 0) {\n      *piVar13 = *piVar13 + 1;\n      *puVar8 = 1;\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar2 = FUN_00053284();\n      }\n      else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }\n      uVar14 = (uint)pcVar21 & 0x7fffffff;\n      uVar11 = 0;\n      *piVar13 = *piVar13 + iVar2;\n      *puVar6 = uVar14;\n      puVar6[1] = 0;\n      puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    }" (if "if") (parenthesized_expression "(((uVar14 ^ (uint)pcVar21) & 0x7fffffff) != 0)" (( "(") (binary_expression "((uVar14 ^ (uint)pcVar21) & 0x7fffffff) != 0" (parenthesized_expression "((uVar14 ^ (uint)pcVar21) & 0x7fffffff)" (( "(") (binary_expression "(uVar14 ^ (uint)pcVar21) & 0x7fffffff" (parenthesized_expression "(uVar14 ^ (uint)pcVar21)" (( "(") (binary_expression "uVar14 ^ (uint)pcVar21" (identifier "uVar14") (^ "^") (cast_expression "(uint)pcVar21" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pcVar21"))) () ")")) (& "&") (number_literal "0x7fffffff")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      *piVar13 = *piVar13 + 1;\n      *puVar8 = 1;\n      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar2 = FUN_00053284();\n      }\n      else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }\n      uVar14 = (uint)pcVar21 & 0x7fffffff;\n      uVar11 = 0;\n      *piVar13 = *piVar13 + iVar2;\n      *puVar6 = uVar14;\n      puVar6[1] = 0;\n      puVar8 = (undefined1 *)(*piVar7 + *piVar13);\n    }" ({ "{") (expression_statement "*piVar13 = *piVar13 + 1;" (assignment_expression "*piVar13 = *piVar13 + 1" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (= "=") (binary_expression "*piVar13 + 1" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar8 = 1;" (assignment_expression "*puVar8 = 1" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (number_literal "1")) (; ";")) (if_statement "if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {\n        iVar2 = FUN_00053284();\n      }\n      else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }" (if "if") (parenthesized_expression "(((int)pcVar21 < 0) || ((code *)0x7f < pcVar21))" (( "(") (binary_expression "((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)" (parenthesized_expression "((int)pcVar21 < 0)" (( "(") (binary_expression "(int)pcVar21 < 0" (cast_expression "(int)pcVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar21")) (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((code *)0x7f < pcVar21)" (( "(") (binary_expression "(code *)0x7f < pcVar21" (cast_expression "(code *)0x7f" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x7f")) (< "<") (identifier "pcVar21")) () ")"))) () ")")) (compound_statement "{\n        iVar2 = FUN_00053284();\n      }" ({ "{") (expression_statement "iVar2 = FUN_00053284();" (assignment_expression "iVar2 = FUN_00053284()" (identifier "iVar2") (= "=") (call_expression "FUN_00053284()" (identifier "FUN_00053284") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }" (else "else") (compound_statement "{\n        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;\n        iVar2 = 1;\n      }" ({ "{") (expression_statement "*(char *)(*piVar7 + *piVar13) = (char)pcVar21;" (assignment_expression "*(char *)(*piVar7 + *piVar13) = (char)pcVar21" (pointer_expression "*(char *)(*piVar7 + *piVar13)" (* "*") (cast_expression "(char *)(*piVar7 + *piVar13)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar7 + *piVar13)" (( "(") (binary_expression "*piVar7 + *piVar13" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (+ "+") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) () ")")))) (= "=") (cast_expression "(char)pcVar21" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "pcVar21"))) (; ";")) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" (identifier "iVar2") (= "=") (number_literal "1")) (; ";")) (} "}")))) (expression_statement "uVar14 = (uint)pcVar21 & 0x7fffffff;" (assignment_expression "uVar14 = (uint)pcVar21 & 0x7fffffff" (identifier "uVar14") (= "=") (binary_expression "(uint)pcVar21 & 0x7fffffff" (cast_expression "(uint)pcVar21" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pcVar21")) (& "&") (number_literal "0x7fffffff"))) (; ";")) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (expression_statement "*piVar13 = *piVar13 + iVar2;" (assignment_expression "*piVar13 = *piVar13 + iVar2" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (= "=") (binary_expression "*piVar13 + iVar2" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (+ "+") (identifier "iVar2"))) (; ";")) (expression_statement "*puVar6 = uVar14;" (assignment_expression "*puVar6 = uVar14" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (identifier "uVar14")) (; ";")) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8 = (undefined1 *)(*piVar7 + *piVar13);" (assignment_expression "puVar8 = (undefined1 *)(*piVar7 + *piVar13)" (identifier "puVar8") (= "=") (cast_expression "(undefined1 *)(*piVar7 + *piVar13)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar7 + *piVar13)" (( "(") (binary_expression "*piVar7 + *piVar13" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (+ "+") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) () ")")))) (; ";")) (} "}"))) (expression_statement "uVar11 = uStack_10c - uVar11;" (assignment_expression "uVar11 = uStack_10c - uVar11" (identifier "uVar11") (= "=") (binary_expression "uStack_10c - uVar11" (identifier "uStack_10c") (- "-") (identifier "uVar11"))) (; ";")) (expression_statement "uVar12 = uVar11 + 2;" (assignment_expression "uVar12 = uVar11 + 2" (identifier "uVar12") (= "=") (binary_expression "uVar11 + 2" (identifier "uVar11") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if ((pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)\n       && (uVar12 < 0x80)) {\n      *puVar8 = (char)uVar12;\n      *piVar13 = *piVar13 + 1;\n      *puVar6 = (uint)pcVar21;\n      puVar6[1] = uStack_10c;\n      return (uint *)0x1;\n    }" (if "if") (parenthesized_expression "((pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)\n       && (uVar12 < 0x80))" (( "(") (binary_expression "(pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)\n       && (uVar12 < 0x80)" (parenthesized_expression "(pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)" (( "(") (binary_expression "pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0" (binary_expression "pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14)" (binary_expression "pcVar21 + (uint)(uVar12 < uVar11)" (identifier "pcVar21") (+ "+") (call_expression "(uint)(uVar12 < uVar11)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar12 < uVar11)" (( "(") (binary_expression "uVar12 < uVar11" (identifier "uVar12") (< "<") (identifier "uVar11")) () ")")))) (+ "+") (parenthesized_expression "(-(uint)(uStack_10c < uVar11) - uVar14)" (( "(") (binary_expression "-(uint)(uStack_10c < uVar11) - uVar14" (unary_expression "-(uint)(uStack_10c < uVar11)" (- "-") (call_expression "(uint)(uStack_10c < uVar11)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uStack_10c < uVar11)" (( "(") (binary_expression "uStack_10c < uVar11" (identifier "uStack_10c") (< "<") (identifier "uVar11")) () ")")))) (- "-") (identifier "uVar14")) () ")"))) (== "==") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(uVar12 < 0x80)" (( "(") (binary_expression "uVar12 < 0x80" (identifier "uVar12") (< "<") (number_literal "0x80")) () ")"))) () ")")) (compound_statement "{\n      *puVar8 = (char)uVar12;\n      *piVar13 = *piVar13 + 1;\n      *puVar6 = (uint)pcVar21;\n      puVar6[1] = uStack_10c;\n      return (uint *)0x1;\n    }" ({ "{") (expression_statement "*puVar8 = (char)uVar12;" (assignment_expression "*puVar8 = (char)uVar12" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (cast_expression "(char)uVar12" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar12"))) (; ";")) (expression_statement "*piVar13 = *piVar13 + 1;" (assignment_expression "*piVar13 = *piVar13 + 1" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (= "=") (binary_expression "*piVar13 + 1" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar6 = (uint)pcVar21;" (assignment_expression "*puVar6 = (uint)pcVar21" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (cast_expression "(uint)pcVar21" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pcVar21"))) (; ";")) (expression_statement "puVar6[1] = uStack_10c;" (assignment_expression "puVar6[1] = uStack_10c" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uStack_10c")) (; ";")) (return_statement "return (uint *)0x1;" (return "return") (cast_expression "(uint *)0x1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1")) (; ";")) (} "}"))) (expression_statement "puVar15 = (uint *)FUN_00053284();" (assignment_expression "puVar15 = (uint *)FUN_00053284()" (identifier "puVar15") (= "=") (cast_expression "(uint *)FUN_00053284()" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00053284()" (identifier "FUN_00053284") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*piVar13 = *piVar13 + (int)puVar15;" (assignment_expression "*piVar13 = *piVar13 + (int)puVar15" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (= "=") (binary_expression "*piVar13 + (int)puVar15" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (+ "+") (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15")))) (; ";")) (expression_statement "*puVar6 = (uint)pcVar21;" (assignment_expression "*puVar6 = (uint)pcVar21" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (cast_expression "(uint)pcVar21" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pcVar21"))) (; ";")) (expression_statement "puVar6[1] = uStack_10c;" (assignment_expression "puVar6[1] = uStack_10c" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uStack_10c")) (; ";")) (return_statement "return puVar15;" (return "return") (identifier "puVar15") (; ";")) (} "}"))) (return_statement "return (uint *)*piVar10;" (return "return") (cast_expression "(uint *)*piVar10" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar10" (* "*") (identifier "piVar10"))) (; ";")) (} "}")))

int function_1(type_1 *pLvl)

{
  type_2 *puVar1;
  type_3 *puVar2;
  type_4 *var_11;
  int var_3;
  type_5 var_14;
  type_6 *var_25;
  int iVar7;
  type_4 *var_12;
  int *var_22;
  type_7 *p_00;
  type_8 *var_18;
  int var_7;
  type_9 *var_19;
  type_9 *var_21;
  type_9 *var_1;
  type_6 *puVar11;
  type_6 var_28;
  type_6 var_34;
  type_9 *var_5;
  type_6 var_9;
  type_4 *p_01;
  int *piVar16;
  int *piVar17;
  type_10 *puVar18;
  type_3 *var_4;
  type_11 *var_17;
  type_11 *var_30;
  type_11 *pcVar22;
  type_10 in_stack_fffffec4;
  type_6 var_33;
  int *piStack_100;
  int var_27;
  int var_29;
  type_11 *pcStack_ec;
  type_11 *var_26;
  type_9 var_23;
  type_6 *var_24;
  type_8 *piStack_c4;
  type_9 *puStack_c0;
  int *piStack_bc;
  type_6 uStack_90;
  int var_20;
  type_6 *puStack_88;
  type_4 *pFStack_84;
  int *piStack_80;
  type_11 *pcStack_7c;
  type_3 *var_16;
  int var_13;
  type_8 *piStack_58;
  int var_10;
  type_4 *var_15;
  type_1 *pFStack_48;
  type_4 *pFStack_44;
  type_3 *puStack_40;
  type_11 *pcStack_3c;
  type_8 iVal;
  type_6 *var_8;
  
  puVar2 = PTR___stack_chk_guard_00190e24;
  var_1 = (type_9 *)pLvl->iOff;
  p_01 = pLvl->pData;
  var_8 = *(type_6 **)PTR___stack_chk_guard_00190e24;
  if (var_1 == (type_9 *)0x0) {
    pLvl->iOff = 1;
    var_3 = var_2(p_01->var_22 + 1,(type_9 *)&pLvl->iLeafPgno);
    var_4 = var_6;
    var_18 = &pLvl->iRowid;
    var_3 = var_3 + pLvl->iOff;
    pLvl->iOff = var_3;
    var_3 = (*(type_11 *)(var_4 + -0x80))(p_01->var_22 + var_3);
    iVar7 = pLvl->bEof;
    var_3 = var_3 + pLvl->iOff;
    pLvl->iOff = var_3;
    pLvl->iFirstOff = var_3;
  }
  else if ((int)var_1 < p_01->nn) {
    var_18 = (type_8 *)p_01->var_22;
    var_5 = var_1;
    if (*(type_2 *)((int)var_18 + (int)var_1) == '\0') {
      do {
        var_5 = (type_9 *)((int)var_5 + 1);
        if (var_5 == (type_9 *)p_01->nn) goto LAB_00066908;
      } while (*(type_2 *)((int)var_18 + (int)var_5) == '\0');
      var_3 = (int)var_5 + (1 - (int)var_1);
      var_1 = var_5;
    }
    else {
      var_3 = 1;
    }
    var_17 = (type_11 *)(var_6 + -0x80);
    pLvl->iLeafPgno = pLvl->iLeafPgno + var_3;
    var_3 = (*var_17)(p_01->var_22 + (int)var_1,&iVal);
    var_3 = var_3 + (int)var_1;
    var_1 = *(type_9 **)((int)&pLvl->iRowid + 4);
    var_7 = *(int *)&pLvl->iRowid;
    pLvl->iOff = var_3;
    iVar7 = pLvl->bEof;
    *(type_9 **)((int)&pLvl->iRowid + 4) = (type_9 *)((int)var_1 + iVal._4_4_);
    var_18 = (type_8 *)(var_7 + iVal._0_4_);
    *(type_2 **)&pLvl->iRowid = (type_2 *)((type_6)((type_9 *)((int)var_1 + iVal._4_4_) < var_1) + (int)var_18);
  }
  else {
LAB_00066908:
    iVar7 = 1;
    pLvl->bEof = 1;
  }
  if (var_8 == *(type_6 **)puVar2) {
    return iVar7;
  }
  var_17 = fts5DoclistIterNext;
  puVar11 = var_8;
  var_4 = PTR___stack_chk_fail_00190df8;
  (*(type_11 *)PTR___stack_chk_fail_00190df8)();
  var_16 = var_4 + 0x131f08;
  puStack_40 = puVar2;
  piVar16 = *(int **)(var_4 + 0x12a40c);
  var_12 = (type_4 *)*piVar16;
  var_9 = puVar11[4] + puVar11[6] + puVar11[5];
  var_15 = var_12;
  pFStack_48 = pLvl;
  pFStack_44 = p_01;
  pcStack_3c = var_17;
  if (var_9 < *puVar11) {
    var_3 = (*(type_11 *)(*(int *)(var_4 + 0x12a128) + -0x80))(var_9,&piStack_58);
    var_12 = (type_4 *)puVar11[3];
    p_01 = (type_4 *)(var_9 + var_3);
    var_11 = (type_4 *)((int)&var_12->var_22 + var_10);
    puVar11[3] = (type_6)var_11;
    puVar11[2] = (type_6)((int)piStack_58 + (type_6)(var_11 < var_12) + puVar11[2]);
    var_14 = *(type_5 *)&p_01->var_22;
    if ((char)var_14 < '\0') {
      var_18 = (type_8 *)&var_13;
      var_12 = p_01;
      var_9 = var_2((type_7 *)p_01,(type_9 *)var_18);
      puVar11[6] = var_9;
      puVar11[4] = (type_6)p_01;
      puVar11[5] = var_13 >> 1;
    }
    else {
      puVar11[4] = (type_6)p_01;
      puVar11[5] = (type_6)(var_14 >> 1);
      puVar11[6] = 1;
      var_18 = piStack_58;
    }
  }
  else {
    puVar11[4] = 0;
  }
  if (var_15 == (type_4 *)*piVar16) {
    return *piVar16;
  }
  var_17 = *(type_11 **)(var_16 + -0x7b28);
  var_30 = fts5SegIterLoadNPos;
  (*var_17)();
  piStack_80 = piVar16;
  puStack_88 = puVar11;
  pcStack_7c = var_30;
  pFStack_84 = p_01;
  piVar17 = *(int **)(var_17 + 0x12a2ec);
  var_5 = *(type_9 **)((int)var_18 + 0x14);
  piVar16 = *(int **)((int)var_18 + 0xc);
  var_20 = *piVar17;
  if (var_12[4].var_22 == (type_2 *)0x1) {
    var_1 = (type_9 *)piVar16[2];
    *(type_2 *)((int)var_18 + 0x54) = '\0';
    var_21 = *(type_9 **)(var_18 + 5);
    if ((int)var_1 <= (int)*(type_9 **)(var_18 + 5)) {
      var_21 = var_1;
    }
    var_19 = (type_9 *)(type_6)((int)var_5 < (int)var_21);
    puVar1 = (type_2 *)(var_18 + 10);
    puVar1[0] = '\0';
    puVar1[1] = '\0';
    puVar1[2] = '\0';
    puVar1[3] = '\x01';
    if ((var_19 != (type_9 *)0x0) &&
       (var_19 = (type_9 *)((int)var_5 + 1), *(char *)(*piVar16 + (int)var_5) == '\0')) {
      *(type_2 *)((int)var_18 + 0x54) = '\x01';
      if (((int)var_19 < (int)var_21) && (*(char *)(*piVar16 + (int)var_19) == '\0')) {
        var_5 = (type_9 *)((int)var_5 + 2);
      }
      else {
        puVar1 = (type_2 *)(var_18 + 10);
        puVar1[0] = '\0';
        puVar1[1] = '\0';
        puVar1[2] = '\0';
        puVar1[3] = '\0';
        var_5 = var_19;
      }
    }
  }
  else {
    var_14 = *(type_5 *)(*piVar16 + (int)var_5);
    uStack_90 = (type_6)var_14;
    var_19 = (type_9 *)(int)(char)var_14;
    if ((int)var_19 < 0) {
      var_19 = &uStack_90;
      piVar16 = (int *)(*piVar16 + (int)var_5);
      var_3 = var_2((type_7 *)piVar16,var_19);
      var_5 = (type_9 *)((int)var_5 + var_3);
      var_14 = (type_5)uStack_90;
    }
    else {
      var_5 = (type_9 *)((int)var_5 + 1);
    }
    *(type_5 *)((int)var_18 + 0x54) = var_14 & 1;
    *(int *)(var_18 + 10) = (int)uStack_90 >> 1;
  }
  var_3 = *piVar17;
  *(type_9 **)((int)var_18 + 0x14) = var_5;
  if (var_20 == var_3) {
    return var_3;
  }
  var_17 = *(type_11 **)(var_17 + 0x12a2c0);
  (*var_17)();
  var_26 = var_17 + 0x131ca0;
  piVar16 = (int *)*piVar16;
  var_22 = (int *)*var_19;
  puVar18 = *(type_10 **)(var_17 + 0x12a1a4);
  puVar11 = (type_6 *)*puVar18;
  var_21 = *(type_9 **)(piVar16[3] + 0x30);
  var_24 = puVar11;
  piStack_c4 = var_18;
  puStack_c0 = var_5;
  piStack_bc = piVar17;
  if (var_21 == (type_9 *)&SUB_00000002) {
    if (var_22 < (int *)var_19[1]) {
      var_21 = &var_23;
      var_3 = var_2((type_7 *)var_22,var_21);
      *var_19 = *var_19 + var_3;
      *var_1 = *var_1 + (var_23 - 2);
      goto LAB_00066d4c;
    }
  }
  else if (var_22 < (int *)var_19[1]) {
    if (*(type_7 *)var_22 != '\x01') {
      do {
        var_21 = &var_23;
        var_3 = var_2((type_7 *)var_22,&var_23);
        var_22 = (int *)(*var_19 + var_3);
        *var_19 = (type_9)var_22;
        if ((int *)var_19[1] <= var_22) goto LAB_00066d48;
      } while (*(type_7 *)var_22 != '\x01');
    }
    var_22 = (int *)((int)var_22 + 1);
    var_3 = var_2((type_7 *)var_22,var_1);
    *var_19 = *var_19 + var_3 + 1;
    var_21 = var_1;
    goto LAB_00066d4c;
  }
LAB_00066d48:
  *var_1 = 0xffffffff;
LAB_00066d4c:
  var_25 = (type_6 *)*puVar18;
  if (var_24 == var_25) {
    return (int)var_25;
  }
  var_17 = *(type_11 **)(var_26 + -0x7b28);
  pcVar22 = fts5NextRowid;
  (*var_17)();
  var_30 = var_17 + 0x131b28;
  piVar17 = *(int **)(var_17 + 0x12a02c);
  var_9 = *puVar11;
  var_29 = *piVar17;
  pcStack_ec = pcVar22;
  if ((int)var_9 < (int)var_21) {
    var_3 = (*(type_11 *)(*(int *)(var_17 + 0x129d48) + -0x80))
                      ((type_7 *)((int)var_22 + var_9),&piStack_100);
    *puVar11 = var_3 + var_9;
    var_9 = piVar16[1];
    var_28 = var_9 + var_27;
    var_22 = (int *)(*piVar16 + (int)piStack_100);
    piVar16[1] = var_28;
    *piVar16 = (int)((type_6)(var_28 < var_9) + (int)var_22);
    piVar16 = piStack_100;
  }
  else {
    *puVar11 = 0xffffffff;
    piVar16 = (int *)0x0;
  }
  if (var_29 != *piVar17) {
    var_17 = *(type_11 **)(var_17 + 0x12a000);
    (*var_17)();
    var_17 = var_17 + 0x131a70;
    var_9 = *puVar11;
    var_28 = puVar11[1];
    p_00 = (type_7 *)(*var_22 + *piVar16);
    if (((var_9 ^ (type_6)var_30) & 0x7fffffff) != 0) {
      *piVar16 = *piVar16 + 1;
      *p_00 = '\x01';
      if (((int)var_30 < 0) || ((type_11 *)0x7f < var_30)) {
        var_3 = var_31((type_7 *)(*var_22 + *piVar16),var_32(var_17,in_stack_fffffec4));
      }
      else {
        *(type_7 *)(*var_22 + *piVar16) = (type_7)var_30;
        var_3 = 1;
      }
      var_9 = (type_6)var_30 & 0x7fffffff;
      var_28 = 0;
      *piVar16 = *piVar16 + var_3;
      *puVar11 = var_9;
      puVar11[1] = 0;
      p_00 = (type_7 *)(*var_22 + *piVar16);
    }
    var_28 = var_33 - var_28;
    var_34 = var_28 + 2;
    if ((var_30 + (type_6)(var_34 < var_28) + (-(type_6)(var_33 < var_28) - var_9) == (type_11 *)0x0)
       && (var_34 < 0x80)) {
      *p_00 = (type_7)var_34;
      *piVar16 = *piVar16 + 1;
      *puVar11 = (type_6)var_30;
      puVar11[1] = var_33;
      return 1;
    }
    var_3 = var_31(p_00,var_32(var_17,in_stack_fffffec4));
    *piVar16 = *piVar16 + var_3;
    *puVar11 = (type_6)var_30;
    puVar11[1] = var_33;
    return var_3;
  }
  return *piVar17;
}


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

uint * MASKED(undefined4 *param_1,int *param_2)

{
  undefined *puVar1;
  byte bVar3;
  int iVar2;
  uint *puVar4;
  int iVar5;
  uint *puVar6;
  int *piVar7;
  undefined1 *puVar8;
  int *piVar9;
  int *piVar10;
  uint uVar11;
  uint uVar12;
  int *piVar13;
  uint uVar14;
  uint *puVar15;
  undefined4 *puVar16;
  int *piVar17;
  undefined *puVar18;
  code *pcVar19;
  undefined4 uVar20;
  code *pcVar21;
  uint uStack_10c;
  int *piStack_100;
  int iStack_fc;
  uint *puStack_f4;
  undefined4 uStack_ec;
  code *pcStack_d8;
  int iStack_d0;
  uint *puStack_cc;
  int *piStack_c4;
  uint *puStack_c0;
  int *piStack_bc;
  uint uStack_90;
  uint *puStack_8c;
  uint *puStack_88;
  uint *puStack_84;
  undefined4 *puStack_80;
  code *pcStack_7c;
  undefined *local_68;
  int local_5c;
  int *local_58;
  int local_54;
  uint *local_4c;
  undefined4 *local_48;
  uint *local_44;
  undefined *local_40;
  undefined4 local_3c;
  int local_20;
  int local_1c;
  uint *local_14;
  
  puVar1 = PTR___stack_chk_guard_00190e24;
  piVar10 = (int *)param_1[1];
  puVar15 = (uint *)*param_1;
  local_14 = *(uint **)PTR___stack_chk_guard_00190e24;
  if (piVar10 == (int *)0x0) {
    param_1[1] = 1;
    iVar2 = FUN_0006610c(*puVar15 + 1,param_1 + 4);
    puVar18 = PTR_LAB_00190b40;
    param_2 = param_1 + 6;
    iVar5 = param_1[1];
    param_1[1] = iVar2 + iVar5;
    iVar2 = (*(code *)(puVar18 + -0x80))(*puVar15 + iVar2 + iVar5);
    iVar5 = param_1[1];
    puVar4 = (uint *)param_1[2];
    param_1[1] = iVar2 + iVar5;
    param_1[3] = iVar2 + iVar5;
  }
  else if ((int)piVar10 < (int)puVar15[1]) {
    param_2 = (int *)*puVar15;
    piVar13 = piVar10;
    if (*(char *)((int)param_2 + (int)piVar10) == '\0') {
      do {
        piVar13 = (int *)((int)piVar13 + 1);
        if (piVar13 == (int *)puVar15[1]) goto LAB_00066908;
      } while (*(char *)((int)param_2 + (int)piVar13) == '\0');
      iVar2 = (int)piVar13 + (1 - (int)piVar10);
      piVar10 = piVar13;
    }
    else {
      iVar2 = 1;
    }
    pcVar19 = (code *)(PTR_LAB_00190b40 + -0x80);
    param_1[4] = param_1[4] + iVar2;
    iVar2 = (*pcVar19)(*puVar15 + (int)piVar10,&local_20);
    iVar2 = iVar2 + (int)piVar10;
    piVar10 = (int *)param_1[7];
    param_1[1] = iVar2;
    puVar4 = (uint *)param_1[2];
    param_1[7] = (int *)((int)piVar10 + local_1c);
    param_2 = (int *)(param_1[6] + local_20);
    param_1[6] = (uint)((int *)((int)piVar10 + local_1c) < piVar10) + (int)param_2;
  }
  else {
LAB_00066908:
    puVar4 = (uint *)0x1;
    param_1[2] = 1;
  }
  if (local_14 == *(uint **)puVar1) {
    return puVar4;
  }
  uVar20 = 0x66a18;
  puVar4 = local_14;
  puVar18 = PTR___stack_chk_fail_00190df8;
  (*(code *)PTR___stack_chk_fail_00190df8)();
  local_68 = puVar18 + 0x131f08;
  local_40 = puVar1;
  puVar16 = *(undefined4 **)(puVar18 + 0x12a40c);
  puVar6 = (uint *)*puVar16;
  uVar14 = puVar4[4] + puVar4[6] + puVar4[5];
  local_4c = puVar6;
  local_48 = param_1;
  local_44 = puVar15;
  local_3c = uVar20;
  if (uVar14 < *puVar4) {
    iVar2 = (*(code *)(*(int *)(puVar18 + 0x12a128) + -0x80))(uVar14,&local_58);
    puVar6 = (uint *)puVar4[3];
    puVar15 = (uint *)(uVar14 + iVar2);
    puVar4[3] = (uint)((int)puVar6 + local_54);
    puVar4[2] = (int)local_58 + (uint)((uint *)((int)puVar6 + local_54) < puVar6) + puVar4[2];
    bVar3 = *(byte *)puVar15;
    if ((char)bVar3 < '\0') {
      param_2 = &local_5c;
      puVar6 = puVar15;
      uVar14 = FUN_0006610c();
      puVar4[6] = uVar14;
      puVar4[4] = (uint)puVar15;
      puVar4[5] = local_5c >> 1;
    }
    else {
      puVar4[4] = (uint)puVar15;
      puVar4[5] = (uint)(bVar3 >> 1);
      puVar4[6] = 1;
      param_2 = local_58;
    }
  }
  else {
    puVar4[4] = 0;
  }
  if (local_4c == (uint *)*puVar16) {
    return (uint *)*puVar16;
  }
  pcVar19 = *(code **)(local_68 + -0x7b28);
  pcVar21 = FUN_00066b38;
  (*pcVar19)();
  puStack_80 = puVar16;
  puStack_88 = puVar4;
  pcStack_7c = pcVar21;
  puStack_84 = puVar15;
  piVar17 = *(int **)(pcVar19 + 0x12a2ec);
  puVar15 = (uint *)param_2[5];
  piVar13 = (int *)param_2[3];
  puStack_8c = (uint *)*piVar17;
  if (puVar6[0xc] == 1) {
    piVar10 = (int *)piVar13[2];
    *(undefined1 *)(param_2 + 0x15) = 0;
    piVar9 = (int *)param_2[10];
    if ((int)piVar10 <= param_2[10]) {
      piVar9 = piVar10;
    }
    puVar4 = (uint *)(uint)((int)puVar15 < (int)piVar9);
    param_2[0x14] = 1;
    if ((puVar4 != (uint *)0x0) &&
       (puVar4 = (uint *)((int)puVar15 + 1), *(char *)(*piVar13 + (int)puVar15) == '\0')) {
      *(undefined1 *)(param_2 + 0x15) = 1;
      if (((int)puVar4 < (int)piVar9) && (*(char *)(*piVar13 + (int)puVar4) == '\0')) {
        puVar15 = (uint *)((int)puVar15 + 2);
      }
      else {
        param_2[0x14] = 0;
        puVar15 = puVar4;
      }
    }
  }
  else {
    bVar3 = *(byte *)(*piVar13 + (int)puVar15);
    uStack_90 = (uint)bVar3;
    puVar4 = (uint *)(int)(char)bVar3;
    if ((int)puVar4 < 0) {
      puVar4 = &uStack_90;
      piVar13 = (int *)(*piVar13 + (int)puVar15);
      iVar2 = FUN_0006610c();
      puVar15 = (uint *)((int)puVar15 + iVar2);
      bVar3 = (byte)uStack_90;
    }
    else {
      puVar15 = (uint *)((int)puVar15 + 1);
    }
    *(byte *)(param_2 + 0x15) = bVar3 & 1;
    param_2[0x14] = (int)uStack_90 >> 1;
  }
  puVar6 = (uint *)*piVar17;
  param_2[5] = (int)puVar15;
  if (puStack_8c == puVar6) {
    return puVar6;
  }
  pcVar19 = *(code **)(pcVar19 + 0x12a2c0);
  (*pcVar19)();
  pcStack_d8 = pcVar19 + 0x131ca0;
  piVar13 = (int *)*piVar13;
  piVar7 = (int *)*puVar4;
  puVar16 = *(undefined4 **)(pcVar19 + 0x12a1a4);
  puVar6 = (uint *)*puVar16;
  piVar9 = *(int **)(piVar13[3] + 0x30);
  puStack_cc = puVar6;
  piStack_c4 = param_2;
  puStack_c0 = puVar15;
  piStack_bc = piVar17;
  if (piVar9 == (int *)0x2) {
    if (piVar7 < (int *)puVar4[1]) {
      piVar9 = &iStack_d0;
      iVar2 = FUN_0006610c();
      *puVar4 = *puVar4 + iVar2;
      *piVar10 = *piVar10 + iStack_d0 + -2;
      goto LAB_00066d4c;
    }
  }
  else if (piVar7 < (int *)puVar4[1]) {
    if (*(char *)piVar7 != '\x01') {
      do {
        piVar9 = &iStack_d0;
        iVar2 = FUN_0006610c();
        piVar7 = (int *)(*puVar4 + iVar2);
        *puVar4 = (uint)piVar7;
        if ((int *)puVar4[1] <= piVar7) goto LAB_00066d48;
      } while (*(char *)piVar7 != '\x01');
    }
    piVar7 = (int *)((int)piVar7 + 1);
    iVar2 = FUN_0006610c();
    *puVar4 = *puVar4 + iVar2 + 1;
    piVar9 = piVar10;
    goto LAB_00066d4c;
  }
LAB_00066d48:
  *piVar10 = -1;
LAB_00066d4c:
  puVar15 = (uint *)*puVar16;
  if (puStack_cc == puVar15) {
    return puVar15;
  }
  pcVar19 = *(code **)(pcStack_d8 + -0x7b28);
  uVar20 = 0x66df8;
  (*pcVar19)();
  pcVar21 = pcVar19 + 0x131b28;
  piVar10 = *(int **)(pcVar19 + 0x12a02c);
  uVar14 = *puVar6;
  puStack_f4 = (uint *)*piVar10;
  uStack_ec = uVar20;
  if ((int)uVar14 < (int)piVar9) {
    iVar2 = (*(code *)(*(int *)(pcVar19 + 0x129d48) + -0x80))
                      ((char *)((int)piVar7 + uVar14),&piStack_100);
    *puVar6 = iVar2 + uVar14;
    uVar14 = piVar13[1];
    uVar11 = uVar14 + iStack_fc;
    piVar7 = (int *)(*piVar13 + (int)piStack_100);
    piVar13[1] = uVar11;
    *piVar13 = (int)((uint)(uVar11 < uVar14) + (int)piVar7);
    piVar13 = piStack_100;
  }
  else {
    *puVar6 = 0xffffffff;
    piVar13 = (int *)0x0;
  }
  if (puStack_f4 != (uint *)*piVar10) {
    (**(code **)(pcVar19 + 0x12a000))();
    uVar14 = *puVar6;
    uVar11 = puVar6[1];
    puVar8 = (undefined1 *)(*piVar7 + *piVar13);
    if (((uVar14 ^ (uint)pcVar21) & 0x7fffffff) != 0) {
      *piVar13 = *piVar13 + 1;
      *puVar8 = 1;
      if (((int)pcVar21 < 0) || ((code *)0x7f < pcVar21)) {
        iVar2 = FUN_00053284();
      }
      else {
        *(char *)(*piVar7 + *piVar13) = (char)pcVar21;
        iVar2 = 1;
      }
      uVar14 = (uint)pcVar21 & 0x7fffffff;
      uVar11 = 0;
      *piVar13 = *piVar13 + iVar2;
      *puVar6 = uVar14;
      puVar6[1] = 0;
      puVar8 = (undefined1 *)(*piVar7 + *piVar13);
    }
    uVar11 = uStack_10c - uVar11;
    uVar12 = uVar11 + 2;
    if ((pcVar21 + (uint)(uVar12 < uVar11) + (-(uint)(uStack_10c < uVar11) - uVar14) == (code *)0x0)
       && (uVar12 < 0x80)) {
      *puVar8 = (char)uVar12;
      *piVar13 = *piVar13 + 1;
      *puVar6 = (uint)pcVar21;
      puVar6[1] = uStack_10c;
      return (uint *)0x1;
    }
    puVar15 = (uint *)FUN_00053284();
    *piVar13 = *piVar13 + (int)puVar15;
    *puVar6 = (uint)pcVar21;
    puVar6[1] = uStack_10c;
    return puVar15;
  }
  return (uint *)*piVar10;
}

