
int sqlite3Fts5HashWrite
              (Fts5Hash *pHash,i64 iRowid,int iCol,int iPos,char bByte,char *pToken,int nToken)

{
  undefined4 *puVar1;
  byte bVar2;
  int *piVar3;
  uint uVar4;
  uchar *p;
  void *__s;
  size_t sVar5;
  uint uVar6;
  undefined4 *puVar7;
  int extraout_ECX;
  uint uVar8;
  int iVar9;
  int iVar10;
  uint uVar11;
  uint uVar12;
  byte *pbVar13;
  undefined4 *puVar14;
  undefined4 *puVar15;
  bool bVar16;
  byte bVar17;
  undefined8 uVar18;
  Fts5Hash *in_stack_ffffffa4;
  Fts5HashEntry *in_stack_ffffffa8;
  Fts5HashEntry *in_stack_ffffffac;
  int local_50;
  uchar local_44;
  int local_38;
  undefined1 local_34;
  
  bVar17 = 0;
  uVar18 = __x86_get_pc_thunk_di();
  uVar8 = (uint)((ulonglong)uVar18 >> 0x20);
  piVar3 = (int *)uVar18;
  bVar16 = *piVar3 == 0;
  uVar12 = piVar3[3];
  iVar9 = iPos + -1;
  if (iVar9 < 0) {
    uVar11 = 0x68;
    uVar4 = 0xd;
  }
  else {
    uVar4 = 0xd;
    iVar10 = iVar9;
    do {
      pbVar13 = (byte *)(iCol + iVar10);
      iVar10 = iVar10 + -1;
      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar13;
    } while (iVar10 != -1);
    uVar11 = uVar4 * 8;
  }
  uVar11 = (uVar4 ^ uVar11 ^ iRowid._4_4_ & 0xff) % uVar12;
  puVar7 = (undefined4 *)piVar3[5];
  puVar15 = (undefined4 *)puVar7[uVar11];
  uVar4 = iRowid._4_4_;
  if (puVar15 != (undefined4 *)0x0) {
LAB_00088bfa:
    if ((*(char *)(puVar15 + 10) != (char)uVar4) || (puVar15[5] != iPos)) goto LAB_00088bf0;
    iVar10 = memcmp((void *)((int)puVar15 + 0x29),(void *)iCol,iPos);
    uVar4 = uVar4 & 0xff;
    if (iVar10 != 0) goto LAB_00088bf0;
    iVar9 = puVar15[2];
    local_50 = puVar15[4];
    puVar7 = puVar15;
    if (iVar9 - local_50 < 0x16) {
      iVar10 = sqlite3_initialize();
      if (iVar10 != 0) {
        return 7;
      }
      puVar7 = (undefined4 *)sqlite3Realloc(puVar15,CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));
      if (puVar7 == (undefined4 *)0x0) {
        return 7;
      }
      puVar7[2] = iVar9 * 2;
      puVar14 = (undefined4 *)(uVar11 * 4 + piVar3[5]);
      for (puVar1 = (undefined4 *)*puVar14; puVar1 != puVar15; puVar1 = (undefined4 *)*puVar1) {
        puVar14 = puVar1;
      }
      *puVar14 = puVar7;
      local_50 = puVar7[4];
    }
    local_50 = -local_50;
    if (puVar7[9] == extraout_ECX && puVar7[8] == uVar8) goto LAB_00088cd7;
    fts5HashAddPoslistSize(in_stack_ffffffa4,in_stack_ffffffa8,in_stack_ffffffac);
    uVar12 = uVar8 - puVar7[8];
    iVar9 = (extraout_ECX - puVar7[9]) - (uint)(uVar8 < (uint)puVar7[8]);
    if (iVar9 == 0 && (uint)(0x7f < uVar12) <= (uint)-iVar9) {
      *(uchar *)(puVar7[4] + (int)puVar7) = (uchar)uVar12;
      iVar9 = 1;
    }
    else {
      iVar9 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),
                               CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));
    }
    iVar9 = iVar9 + puVar7[4];
    puVar7[4] = iVar9;
    puVar7[8] = uVar8;
    puVar7[9] = extraout_ECX;
    puVar7[3] = iVar9;
    if (*piVar3 != 1) {
      bVar16 = true;
      puVar7[4] = iVar9 + 1;
      iVar9 = *piVar3;
      puVar7[7] = 0;
      *(ushort *)((int)puVar7 + 0x1a) = -(ushort)(iVar9 != 0);
      goto LAB_00088cd7;
    }
    if ((int)pHash < 0) goto LAB_00089040;
    goto LAB_000890ca;
  }
LAB_00088da4:
  uVar4 = 0x80;
  if (0x7f < iPos + 0x6aU) {
    uVar4 = iPos + 0x6aU;
  }
  uVar6 = piVar3[2] * 2;
  if (uVar12 == uVar6 || SBORROW4(uVar12,uVar6) != (int)(uVar12 + piVar3[2] * -2) < 0) {
    iVar10 = sqlite3_initialize();
    if (iVar10 != 0) {
      return 7;
    }
    uVar11 = uVar12 * 2;
    __s = sqlite3Malloc(CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));
    if (__s == (void *)0x0) {
      return 7;
    }
    memset(__s,0,uVar12 << 3);
    if (0 < piVar3[3]) {
      local_38 = 0;
      puVar15 = puVar7;
      do {
        puVar14 = (undefined4 *)*puVar15;
        while (puVar14 != (undefined4 *)0x0) {
          *puVar15 = *puVar14;
          sVar5 = strlen((char *)(puVar14 + 10));
          if (sVar5 == 0) {
            uVar12 = 0xd;
          }
          else {
            pbVar13 = (byte *)((int)puVar14 + sVar5 + 0x27);
            uVar12 = 0xd;
            do {
              bVar2 = *pbVar13;
              pbVar13 = pbVar13 + -1;
              uVar12 = uVar12 ^ uVar12 * 8 ^ (uint)bVar2;
            } while ((byte *)((int)puVar14 + 0x27) != pbVar13);
          }
          puVar1 = (undefined4 *)((int)__s + (uVar12 % uVar11) * 4);
          *puVar14 = *puVar1;
          *puVar1 = puVar14;
          puVar14 = (undefined4 *)*puVar15;
        }
        local_38 = local_38 + 1;
        puVar15 = puVar15 + 1;
      } while (local_38 < piVar3[3]);
    }
    sqlite3_free(puVar7);
    piVar3[3] = uVar11;
    piVar3[5] = (int)__s;
    if (iVar9 < 0) {
      uVar12 = 0x68;
      uVar6 = 0xd;
    }
    else {
      uVar6 = 0xd;
      do {
        pbVar13 = (byte *)(iCol + iVar9);
        iVar9 = iVar9 + -1;
        uVar6 = uVar6 ^ uVar6 * 8 ^ (uint)*pbVar13;
      } while (iVar9 != -1);
      uVar12 = uVar6 * 8;
    }
    uVar11 = (uVar6 ^ uVar12 ^ iRowid._4_4_ & 0xff) % uVar11;
  }
  iVar9 = sqlite3_initialize();
  if ((iVar9 != 0) ||
     (puVar7 = (undefined4 *)sqlite3Malloc(CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4)),
     puVar7 == (undefined4 *)0x0)) {
    return 7;
  }
  *puVar7 = 0;
  puVar7[9] = 0;
  puVar15 = (undefined4 *)((uint)(puVar7 + 1) & 0xfffffffc);
  for (uVar12 = (uint)((int)puVar7 + (0x28 - (int)((uint)(puVar7 + 1) & 0xfffffffc))) >> 2;
      uVar12 != 0; uVar12 = uVar12 - 1) {
    *puVar15 = 0;
    puVar15 = puVar15 + (uint)bVar17 * -2 + 1;
  }
  local_34 = (undefined1)((ulonglong)iRowid >> 0x20);
  puVar7[2] = uVar4;
  *(undefined1 *)(puVar7 + 10) = local_34;
  memcpy((void *)((int)puVar7 + 0x29),(void *)iCol,iPos);
  puVar7[5] = iPos;
  *(undefined1 *)((int)puVar7 + iPos + 0x29) = 0;
  puVar7[4] = iPos + 0x2a;
  *puVar7 = *(undefined4 *)(piVar3[5] + uVar11 * 4);
  *(undefined4 **)(piVar3[5] + uVar11 * 4) = puVar7;
  piVar3[2] = piVar3[2] + 1;
  if (extraout_ECX == 0 && (uint)(0x7f < uVar8) <= (uint)-extraout_ECX) {
    local_44 = (uchar)((ulonglong)uVar18 >> 0x20);
    *(uchar *)(puVar7[4] + (int)puVar7) = local_44;
    local_50 = 1;
  }
  else {
    local_50 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),
                                CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));
  }
  local_50 = local_50 + puVar7[4];
  puVar7[4] = local_50;
  puVar7[9] = extraout_ECX;
  puVar7[8] = uVar8;
  puVar7[3] = local_50;
  if (*piVar3 != 1) {
    local_50 = local_50 + 1;
    puVar7[4] = local_50;
    *(ushort *)((int)puVar7 + 0x1a) = -(ushort)(*piVar3 != 0);
  }
LAB_00088cd7:
  if ((int)pHash < 0) {
LAB_00089040:
    *(undefined1 *)(puVar7 + 6) = 1;
    iVar9 = puVar7[4];
    goto LAB_00089047;
  }
  if (*piVar3 == 1) {
LAB_000890ca:
    *(undefined1 *)((int)puVar7 + 0x19) = 1;
    iVar9 = puVar7[4];
    goto LAB_00089047;
  }
  iVar9 = puVar7[4];
  if ((Fts5Hash *)(int)*(short *)((int)puVar7 + 0x1a) == pHash) {
LAB_00088d4f:
    if (!bVar16) goto LAB_00089047;
    p = (uchar *)((int)puVar7 + iVar9);
  }
  else {
    p = (uchar *)((int)puVar7 + iVar9);
    if (*piVar3 == 0) {
      puVar7[4] = iVar9 + 1;
      *p = '\x01';
      if ((int)pHash < 0 || (uint)-((int)pHash >> 0x1f) < (uint)((Fts5Hash *)0x7f < pHash)) {
        iVar9 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),
                                 CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));
      }
      else {
        *(uchar *)(puVar7[4] + (int)puVar7) = (uchar)pHash;
        iVar9 = 1;
      }
      iVar9 = iVar9 + puVar7[4];
      puVar7[7] = 0;
      puVar7[4] = iVar9;
      *(undefined2 *)((int)puVar7 + 0x1a) = pHash._0_2_;
      goto LAB_00088d4f;
    }
    *(undefined2 *)((int)puVar7 + 0x1a) = pHash._0_2_;
    iRowid._0_4_ = pHash;
  }
  uVar12 = (int)(Fts5Hash *)iRowid + (2 - puVar7[7]);
  if ((int)uVar12 < 0 || (uint)-((int)uVar12 >> 0x1f) < (uint)(0x7f < uVar12)) {
    iVar9 = sqlite3PutVarint(p,CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));
  }
  else {
    *p = (uchar)uVar12;
    iVar9 = 1;
  }
  iVar9 = iVar9 + puVar7[4];
  puVar7[4] = iVar9;
  puVar7[7] = (Fts5Hash *)iRowid;
LAB_00089047:
  *(int *)piVar3[1] = *(int *)piVar3[1] + iVar9 + local_50;
  return 0;
LAB_00088bf0:
  puVar15 = (undefined4 *)*puVar15;
  if (puVar15 == (undefined4 *)0x0) goto LAB_00088da4;
  goto LAB_00088bfa;
}



undefined4 FUN_00088b30(uint param_1,uint param_2,byte param_3,void *param_4,size_t param_5)

{
  undefined4 *puVar1;
  byte bVar2;
  int *piVar3;
  uint uVar4;
  undefined1 *puVar5;
  void *__s;
  size_t sVar6;
  uint uVar7;
  undefined4 *puVar8;
  int extraout_ECX;
  uint uVar9;
  int iVar10;
  int iVar11;
  uint uVar12;
  uint uVar13;
  byte *pbVar14;
  undefined4 *puVar15;
  undefined4 *puVar16;
  bool bVar17;
  byte bVar18;
  undefined8 uVar19;
  int local_50;
  undefined1 local_44;
  int local_38;
  
  bVar18 = 0;
  uVar19 = FUN_00036ac5();
  uVar9 = (uint)((ulonglong)uVar19 >> 0x20);
  piVar3 = (int *)uVar19;
  bVar17 = *piVar3 == 0;
  uVar13 = piVar3[3];
  iVar10 = param_5 - 1;
  if (iVar10 < 0) {
    uVar12 = 0x68;
    uVar4 = 0xd;
  }
  else {
    uVar4 = 0xd;
    iVar11 = iVar10;
    do {
      pbVar14 = (byte *)((int)param_4 + iVar11);
      iVar11 = iVar11 + -1;
      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;
    } while (iVar11 != -1);
    uVar12 = uVar4 * 8;
  }
  uVar12 = (uVar4 ^ uVar12 ^ (uint)param_3) % uVar13;
  puVar8 = (undefined4 *)piVar3[5];
  puVar16 = (undefined4 *)puVar8[uVar12];
  if (puVar16 != (undefined4 *)0x0) {
LAB_00088bfa:
    if (((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||
       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0))
    goto LAB_00088bf0;
    iVar10 = puVar16[2];
    local_50 = puVar16[4];
    puVar8 = puVar16;
    if (iVar10 - local_50 < 0x16) {
      iVar11 = FUN_0005b490();
      if (iVar11 != 0) {
        return 7;
      }
      puVar8 = (undefined4 *)FUN_00044180();
      if (puVar8 == (undefined4 *)0x0) {
        return 7;
      }
      puVar8[2] = iVar10 * 2;
      puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5]);
      for (puVar1 = (undefined4 *)*puVar15; puVar1 != puVar16; puVar1 = (undefined4 *)*puVar1) {
        puVar15 = puVar1;
      }
      *puVar15 = puVar8;
      local_50 = puVar8[4];
    }
    local_50 = -local_50;
    if (puVar8[9] == extraout_ECX && puVar8[8] == uVar9) goto LAB_00088cd7;
    FUN_00053040();
    uVar13 = uVar9 - puVar8[8];
    iVar10 = (extraout_ECX - puVar8[9]) - (uint)(uVar9 < (uint)puVar8[8]);
    if (iVar10 == 0 && (uint)(0x7f < uVar13) <= (uint)-iVar10) {
      *(char *)(puVar8[4] + (int)puVar8) = (char)uVar13;
      iVar10 = 1;
    }
    else {
      iVar10 = FUN_00046180();
    }
    iVar10 = iVar10 + puVar8[4];
    puVar8[4] = iVar10;
    puVar8[8] = uVar9;
    puVar8[9] = extraout_ECX;
    puVar8[3] = iVar10;
    if (*piVar3 != 1) {
      bVar17 = true;
      puVar8[4] = iVar10 + 1;
      iVar10 = *piVar3;
      puVar8[7] = 0;
      *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0);
      goto LAB_00088cd7;
    }
    if ((int)param_1 < 0) goto LAB_00089040;
    goto LAB_000890ca;
  }
LAB_00088da4:
  uVar4 = 0x80;
  if (0x7f < param_5 + 0x6a) {
    uVar4 = param_5 + 0x6a;
  }
  uVar7 = piVar3[2] * 2;
  if (uVar13 == uVar7 || SBORROW4(uVar13,uVar7) != (int)(uVar13 + piVar3[2] * -2) < 0) {
    iVar11 = FUN_0005b490();
    if (iVar11 != 0) {
      return 7;
    }
    uVar12 = uVar13 * 2;
    __s = (void *)FUN_000421f0();
    if (__s == (void *)0x0) {
      return 7;
    }
    memset(__s,0,uVar13 << 3);
    if (0 < piVar3[3]) {
      local_38 = 0;
      puVar16 = puVar8;
      do {
        puVar15 = (undefined4 *)*puVar16;
        while (puVar15 != (undefined4 *)0x0) {
          *puVar16 = *puVar15;
          sVar6 = strlen((char *)(puVar15 + 10));
          if (sVar6 == 0) {
            uVar13 = 0xd;
          }
          else {
            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);
            uVar13 = 0xd;
            do {
              bVar2 = *pbVar14;
              pbVar14 = pbVar14 + -1;
              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;
            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);
          }
          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);
          *puVar15 = *puVar1;
          *puVar1 = puVar15;
          puVar15 = (undefined4 *)*puVar16;
        }
        local_38 = local_38 + 1;
        puVar16 = puVar16 + 1;
      } while (local_38 < piVar3[3]);
    }
    FUN_00042800(puVar8);
    piVar3[3] = uVar12;
    piVar3[5] = (int)__s;
    if (iVar10 < 0) {
      uVar13 = 0x68;
      uVar7 = 0xd;
    }
    else {
      uVar7 = 0xd;
      do {
        pbVar14 = (byte *)((int)param_4 + iVar10);
        iVar10 = iVar10 + -1;
        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;
      } while (iVar10 != -1);
      uVar13 = uVar7 * 8;
    }
    uVar12 = (uVar7 ^ uVar13 ^ (uint)param_3) % uVar12;
  }
  iVar10 = FUN_0005b490();
  if ((iVar10 != 0) || (puVar8 = (undefined4 *)FUN_000421f0(), puVar8 == (undefined4 *)0x0)) {
    return 7;
  }
  *puVar8 = 0;
  puVar8[9] = 0;
  puVar16 = (undefined4 *)((uint)(puVar8 + 1) & 0xfffffffc);
  for (uVar13 = (uint)((int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc))) >> 2;
      uVar13 != 0; uVar13 = uVar13 - 1) {
    *puVar16 = 0;
    puVar16 = puVar16 + (uint)bVar18 * -2 + 1;
  }
  puVar8[2] = uVar4;
  *(byte *)(puVar8 + 10) = param_3;
  memcpy((void *)((int)puVar8 + 0x29),param_4,param_5);
  puVar8[5] = param_5;
  *(undefined1 *)((int)puVar8 + param_5 + 0x29) = 0;
  puVar8[4] = param_5 + 0x2a;
  *puVar8 = *(undefined4 *)(piVar3[5] + uVar12 * 4);
  *(undefined4 **)(piVar3[5] + uVar12 * 4) = puVar8;
  piVar3[2] = piVar3[2] + 1;
  if (extraout_ECX == 0 && (uint)(0x7f < uVar9) <= (uint)-extraout_ECX) {
    local_44 = (undefined1)((ulonglong)uVar19 >> 0x20);
    *(undefined1 *)(puVar8[4] + (int)puVar8) = local_44;
    local_50 = 1;
  }
  else {
    local_50 = FUN_00046180();
  }
  local_50 = local_50 + puVar8[4];
  puVar8[4] = local_50;
  puVar8[9] = extraout_ECX;
  puVar8[8] = uVar9;
  puVar8[3] = local_50;
  if (*piVar3 != 1) {
    local_50 = local_50 + 1;
    puVar8[4] = local_50;
    *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(*piVar3 != 0);
  }
LAB_00088cd7:
  if ((int)param_1 < 0) {
LAB_00089040:
    *(undefined1 *)(puVar8 + 6) = 1;
    iVar10 = puVar8[4];
    goto LAB_00089047;
  }
  if (*piVar3 == 1) {
LAB_000890ca:
    *(undefined1 *)((int)puVar8 + 0x19) = 1;
    iVar10 = puVar8[4];
    goto LAB_00089047;
  }
  iVar10 = puVar8[4];
  if ((int)*(short *)((int)puVar8 + 0x1a) == param_1) {
LAB_00088d4f:
    if (!bVar17) goto LAB_00089047;
    puVar5 = (undefined1 *)((int)puVar8 + iVar10);
  }
  else {
    puVar5 = (undefined1 *)((int)puVar8 + iVar10);
    if (*piVar3 == 0) {
      puVar8[4] = iVar10 + 1;
      *puVar5 = 1;
      if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {
        iVar10 = FUN_00046180();
      }
      else {
        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;
        iVar10 = 1;
      }
      iVar10 = iVar10 + puVar8[4];
      puVar8[7] = 0;
      puVar8[4] = iVar10;
      *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;
      goto LAB_00088d4f;
    }
    *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;
    param_2 = param_1;
  }
  uVar13 = (param_2 - puVar8[7]) + 2;
  if ((int)uVar13 < 0 || (uint)-((int)uVar13 >> 0x1f) < (uint)(0x7f < uVar13)) {
    iVar10 = FUN_00046180();
  }
  else {
    *puVar5 = (char)uVar13;
    iVar10 = 1;
  }
  iVar10 = iVar10 + puVar8[4];
  puVar8[4] = iVar10;
  puVar8[7] = param_2;
LAB_00089047:
  *(int *)piVar3[1] = *(int *)piVar3[1] + iVar10 + local_50;
  return 0;
LAB_00088bf0:
  puVar16 = (undefined4 *)*puVar16;
  if (puVar16 == (undefined4 *)0x0) goto LAB_00088da4;
  goto LAB_00088bfa;
}


PUSH EBP
PUSH EDI
CALL 0x00036ac5
ADD EDI,0xf32f1
PUSH ESI
PUSH EBX
SUB ESP,0x4c
MOV dword ptr [ESP + 0x20],EAX
MOV dword ptr [ESP + 0xc],EDI
MOV EDI,dword ptr [ESP + 0x68]
MOV dword ptr [ESP + 0x1c],ECX
MOV dword ptr [ESP + 0x28],EDI
MOV ECX,EDI
MOV EDI,EAX
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x18],EDX
MOV EDX,dword ptr [ESP + 0x70]
TEST EAX,EAX
MOV EDI,dword ptr [EDI + 0xc]
SETZ AL
SUB EDX,0x1
MOVZX EAX,AL
MOV dword ptr [ESP + 0x38],EDX
MOV dword ptr [ESP + 0x2c],EAX
JS 0x000890e2
MOV ESI,dword ptr [ESP + 0x6c]
MOV EAX,0xd
LEA ESI,[ESI]
MOVZX EBP,byte ptr [ESI + EDX*0x1]
LEA EBX,[EAX*0x8 + 0x0]
SUB EDX,0x1
XOR EBX,EBP
XOR EAX,EBX
CMP EDX,-0x1
JNZ 0x00088b90
LEA EBP,[EAX*0x8 + 0x0]
MOVZX EBX,byte ptr [ESP + 0x28]
XOR EAX,EBP
XOR EDX,EDX
XOR EAX,EBX
MOV dword ptr [ESP + 0x34],EBX
DIV EDI
MOV EAX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [EAX + 0x14]
MOV dword ptr [ESP + 0x30],EAX
MOV ESI,dword ptr [EAX + EDX*0x4]
LEA EBX,[EDX*0x4 + 0x0]
MOV EBP,EDX
MOV dword ptr [ESP + 0x24],EBX
TEST ESI,ESI
JZ 0x00088da4
MOV dword ptr [ESP + 0x14],EDI
MOV EDI,dword ptr [ESP + 0x70]
JMP 0x00088bfa
MOV ESI,dword ptr [ESI]
TEST ESI,ESI
JZ 0x00088da0
CMP byte ptr [ESI + 0x28],CL
JNZ 0x00088bf0
CMP dword ptr [ESI + 0x14],EDI
JNZ 0x00088bf0
MOV byte ptr [ESP + 0x10],CL
LEA EAX,[ESI + 0x29]
SUB ESP,0x4
PUSH EDI
PUSH dword ptr [ESP + 0x74]
PUSH EAX
MOV EBX,dword ptr [ESP + 0x1c]
CALL 0x000151a0
ADD ESP,0x10
MOVZX ECX,byte ptr [ESP + 0x10]
TEST EAX,EAX
JNZ 0x00088bf0
MOV EBX,dword ptr [ESI + 0x8]
MOV EDX,dword ptr [ESI + 0x10]
MOV EAX,EBX
SUB EAX,EDX
CMP EAX,0x15
JLE 0x00089060
NEG EDX
MOV EDI,dword ptr [ESP + 0x18]
MOV EBP,dword ptr [ESP + 0x1c]
MOV dword ptr [ESP + 0xc],EDX
MOV EAX,dword ptr [ESI + 0x20]
MOV EDX,dword ptr [ESI + 0x24]
XOR EAX,EDI
XOR EDX,EBP
OR EDX,EAX
JZ 0x00088cd7
MOV EAX,dword ptr [ESP + 0x20]
XOR ECX,ECX
MOV EDX,ESI
MOV EBX,0x0
CALL 0x00053040
MOV EDX,EDI
MOV EDI,dword ptr [ESI + 0x10]
SUB EDX,dword ptr [ESI + 0x20]
MOV ECX,EBP
MOV EBP,0x7f
SBB ECX,dword ptr [ESI + 0x24]
ADD EDI,ESI
CMP EBP,EDX
SBB EBX,ECX
JNC 0x000890d6
MOV EAX,EDI
CALL 0x00046180
MOV ECX,dword ptr [ESP + 0x18]
MOV EBX,dword ptr [ESP + 0x1c]
MOV EDI,dword ptr [ESP + 0x20]
ADD EAX,dword ptr [ESI + 0x10]
MOV dword ptr [ESI + 0x10],EAX
MOV dword ptr [ESI + 0x20],ECX
MOV dword ptr [ESI + 0x24],EBX
MOV dword ptr [ESI + 0xc],EAX
CMP dword ptr [EDI],0x1
JZ 0x0008902d
ADD EAX,0x1
MOV dword ptr [ESP + 0x2c],0x1
MOV dword ptr [ESI + 0x10],EAX
MOV EDI,dword ptr [EDI]
XOR EAX,EAX
MOV dword ptr [ESI + 0x1c],0x0
TEST EDI,EDI
SETNZ AL
NEG EAX
MOV word ptr [ESI + 0x1a],AX
MOV EBX,dword ptr [ESP + 0x60]
TEST EBX,EBX
JS 0x00089040
MOV EAX,dword ptr [ESP + 0x20]
MOV EBX,dword ptr [EAX]
CMP EBX,0x1
JZ 0x000890ca
MOV EDX,dword ptr [ESI + 0x10]
MOVSX EAX,word ptr [ESI + 0x1a]
CMP EAX,dword ptr [ESP + 0x60]
JZ 0x00088d4f
LEA EAX,[ESI + EDX*0x1]
TEST EBX,EBX
JNZ 0x000890f1
ADD EDX,0x1
MOV EDI,0x7f
MOV dword ptr [ESI + 0x10],EDX
MOV EDX,dword ptr [ESP + 0x60]
MOV byte ptr [EAX],0x1
MOV EAX,dword ptr [ESI + 0x10]
MOV ECX,EDX
SAR ECX,0x1f
ADD EAX,ESI
CMP EDI,dword ptr [ESP + 0x60]
SBB EBX,ECX
JNC 0x00089124
CALL 0x00046180
ADD EAX,dword ptr [ESI + 0x10]
MOV dword ptr [ESI + 0x1c],0x0
MOV EDX,EAX
MOV dword ptr [ESI + 0x10],EAX
MOVZX EAX,word ptr [ESP + 0x60]
MOV word ptr [ESI + 0x1a],AX
MOV ECX,dword ptr [ESP + 0x2c]
TEST ECX,ECX
JZ 0x00089047
LEA EAX,[ESI + EDX*0x1]
MOV EBX,dword ptr [ESP + 0x64]
SUB EBX,dword ptr [ESI + 0x1c]
MOV EDI,0x7f
ADD EBX,0x2
MOV ECX,EBX
MOV EDX,EBX
SAR ECX,0x1f
CMP EDI,EBX
MOV EBX,0x0
SBB EBX,ECX
JNC 0x00089107
CALL 0x00046180
ADD EAX,dword ptr [ESI + 0x10]
MOV EDX,EAX
MOV dword ptr [ESI + 0x10],EAX
MOV EAX,dword ptr [ESP + 0x64]
MOV dword ptr [ESI + 0x1c],EAX
JMP 0x00089047
MOV EDI,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [ESP + 0x70]
LEA EBX,[EAX + 0x6a]
MOV EAX,0x80
CMP EBX,0x80
CMOVNC EAX,EBX
MOV dword ptr [ESP + 0x3c],EAX
MOV EAX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [EAX + 0x8]
MOV dword ptr [ESP + 0x10],EAX
ADD EAX,EAX
CMP EDI,EAX
JG 0x00088f1c
CALL 0x0005b490
MOV dword ptr [ESP + 0x24],EAX
TEST EAX,EAX
JNZ 0x000890b0
LEA EAX,[EDI + EDI*0x1]
SHL EDI,0x3
XOR EDX,EDX
MOV dword ptr [ESP + 0x10],EAX
MOV EAX,EDI
CALL 0x000421f0
MOV dword ptr [ESP + 0x14],EAX
TEST EAX,EAX
JZ 0x000890b0
SUB ESP,0x4
PUSH EDI
PUSH 0x0
PUSH EAX
MOV EBX,dword ptr [ESP + 0x1c]
CALL 0x00015440
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [EAX + 0xc]
TEST EAX,EAX
JLE 0x00088eb8
MOV EBP,dword ptr [ESP + 0x30]
LEA ESI,[ESI]
NOP
MOV ESI,dword ptr [EBP]
TEST ESI,ESI
JZ 0x00088e9f
LEA ESI,[ESI]
NOP
MOV EAX,dword ptr [ESI]
SUB ESP,0xc
MOV dword ptr [EBP],EAX
LEA EAX,[ESI + 0x28]
PUSH EAX
MOV EBX,dword ptr [ESP + 0x1c]
CALL 0x000153b0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000890c0
LEA EDX,[ESI + EAX*0x1 + 0x27]
LEA EDI,[ESI + 0x27]
MOV EAX,0xd
LEA ESI,[ESI]
MOVZX EBX,byte ptr [EDX]
LEA ECX,[EAX*0x8 + 0x0]
SUB EDX,0x1
XOR ECX,EBX
XOR EAX,ECX
CMP EDI,EDX
JNZ 0x00088e70
XOR EDX,EDX
DIV dword ptr [ESP + 0x10]
MOV EAX,dword ptr [ESP + 0x14]
LEA EAX,[EAX + EDX*0x4]
MOV EDX,dword ptr [EAX]
MOV dword ptr [ESI],EDX
MOV dword ptr [EAX],ESI
MOV ESI,dword ptr [EBP]
TEST ESI,ESI
JNZ 0x00088e40
MOV EDI,dword ptr [ESP + 0x20]
ADD dword ptr [ESP + 0x24],0x1
ADD EBP,0x4
MOV EAX,dword ptr [ESP + 0x24]
CMP EAX,dword ptr [EDI + 0xc]
JL 0x00088e30
SUB ESP,0xc
PUSH dword ptr [ESP + 0x3c]
CALL 0x00042800
MOV EAX,dword ptr [ESP + 0x30]
MOV EDI,dword ptr [ESP + 0x20]
MOV dword ptr [EAX + 0xc],EDI
MOV EDI,dword ptr [ESP + 0x24]
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x38]
MOV dword ptr [EAX + 0x14],EDI
TEST EDX,EDX
JS 0x00089130
MOV ESI,dword ptr [ESP + 0x6c]
MOV EAX,0xd
NOP
MOVZX EBX,byte ptr [ESI + EDX*0x1]
LEA ECX,[EAX*0x8 + 0x0]
SUB EDX,0x1
XOR ECX,EBX
XOR EAX,ECX
CMP EDX,-0x1
JNZ 0x00088ef0
LEA EBP,[EAX*0x8 + 0x0]
XOR EAX,EBP
XOR EDX,EDX
XOR EAX,dword ptr [ESP + 0x34]
DIV dword ptr [ESP + 0x10]
MOV EBP,EDX
CALL 0x0005b490
MOV EBX,EAX
TEST EAX,EAX
JNZ 0x000890b0
MOV EAX,dword ptr [ESP + 0x3c]
XOR EDX,EDX
CALL 0x000421f0
MOV ESI,EAX
TEST EAX,EAX
JZ 0x000890b0
LEA EDI,[EAX + 0x4]
MOV ECX,EAX
MOV dword ptr [EAX],0x0
SUB ESP,0x4
AND EDI,0xfffffffc
MOV dword ptr [EAX + 0x24],0x0
MOV EAX,EBX
SUB ECX,EDI
MOV dword ptr [ESP + 0x14],EBX
ADD ECX,0x28
SHR ECX,0x2
STOSD.REP ES:EDI
LEA EAX,[ESI + 0x29]
MOV EDI,dword ptr [ESP + 0x40]
MOVZX EBX,byte ptr [ESP + 0x2c]
MOV dword ptr [ESI + 0x8],EDI
MOV byte ptr [ESI + 0x28],BL
PUSH dword ptr [ESP + 0x74]
PUSH dword ptr [ESP + 0x74]
PUSH EAX
MOV EBX,dword ptr [ESP + 0x1c]
CALL 0x00015130
MOV EDI,dword ptr [ESP + 0x80]
MOV EBX,0x7f
MOV dword ptr [ESI + 0x14],EDI
LEA EAX,[EDI + 0x2a]
MOV byte ptr [ESI + EDI*0x1 + 0x29],0x0
MOV EDI,dword ptr [ESP + 0x30]
MOV dword ptr [ESI + 0x10],EAX
MOV EAX,dword ptr [EDI + 0x14]
MOV EAX,dword ptr [EAX + EBP*0x4]
MOV dword ptr [ESI],EAX
MOV EAX,dword ptr [EDI + 0x14]
MOV dword ptr [EAX + EBP*0x4],ESI
MOV EBP,dword ptr [ESP + 0x2c]
ADD dword ptr [EDI + 0x8],0x1
MOV EDI,dword ptr [ESP + 0x28]
ADD ESP,0x10
MOV EAX,dword ptr [ESI + 0x10]
MOV ECX,EBP
ADD EAX,ESI
CMP EBX,EDI
MOV EBX,dword ptr [ESP + 0x10]
SBB EBX,EBP
JNC 0x00089113
MOV EDX,dword ptr [ESP + 0x18]
CALL 0x00046180
ADD EAX,dword ptr [ESI + 0x10]
MOV EDX,dword ptr [ESP + 0x1c]
MOV EDI,EAX
MOV dword ptr [ESI + 0x10],EAX
MOV dword ptr [ESP + 0xc],EAX
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [ESI + 0x24],EDX
MOV dword ptr [ESI + 0x20],EAX
MOV EAX,dword ptr [ESP + 0x20]
MOV dword ptr [ESI + 0xc],EDI
CMP dword ptr [EAX],0x1
JZ 0x00088cd7
ADD EDI,0x1
MOV dword ptr [ESI + 0x10],EDI
MOV EBP,dword ptr [EAX]
XOR EAX,EAX
MOV dword ptr [ESP + 0xc],EDI
TEST EBP,EBP
SETNZ AL
NEG EAX
MOV word ptr [ESI + 0x1a],AX
JMP 0x00088cd7
MOV EAX,dword ptr [ESP + 0x60]
TEST EAX,EAX
JNS 0x000890ca
LEA ESI,[ESI]
MOV byte ptr [ESI + 0x18],0x1
MOV EDX,dword ptr [ESI + 0x10]
MOV EAX,dword ptr [ESP + 0x20]
ADD EDX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [EAX + 0x4]
ADD dword ptr [EAX],EDX
ADD ESP,0x4c
XOR EAX,EAX
POP EBX
POP ESI
POP EDI
POP EBP
RET
CALL 0x0005b490
TEST EAX,EAX
JNZ 0x000890b0
ADD EBX,EBX
MOV EAX,ESI
MOV ECX,EBX
MOV EDX,EBX
SAR ECX,0x1f
CALL 0x00044180
TEST EAX,EAX
JZ 0x000890b0
MOV EDI,dword ptr [ESP + 0x20]
MOV EDX,dword ptr [ESP + 0x24]
MOV dword ptr [EAX + 0x8],EBX
ADD EDX,dword ptr [EDI + 0x14]
MOV ECX,dword ptr [EDX]
CMP ECX,ESI
JNZ 0x0008909a
JMP 0x000890a2
MOV ECX,EDX
MOV EDX,dword ptr [ECX]
CMP EDX,ESI
JNZ 0x00089098
MOV EDX,ECX
MOV dword ptr [EDX],EAX
MOV ESI,EAX
MOV EDX,dword ptr [EAX + 0x10]
JMP 0x00088c3c
ADD ESP,0x4c
MOV EAX,0x7
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,0xd
JMP 0x00088e85
MOV byte ptr [ESI + 0x19],0x1
MOV EDX,dword ptr [ESI + 0x10]
JMP 0x00089047
MOV byte ptr [EDI],DL
MOV EAX,0x1
JMP 0x00088c8f
MOV EBP,0x68
MOV EAX,0xd
JMP 0x00088bae
MOVZX EDI,word ptr [ESP + 0x60]
MOV word ptr [ESI + 0x1a],DI
MOV EDI,dword ptr [ESP + 0x60]
MOV dword ptr [ESP + 0x64],EDI
JMP 0x00088d5e
MOV byte ptr [EAX],DL
MOV EAX,0x1
JMP 0x00088d88
MOVZX EBX,byte ptr [ESP + 0x18]
MOV byte ptr [EAX],BL
MOV EAX,0x1
JMP 0x00088fe5
MOV byte ptr [EAX],DL
MOV EAX,0x1
JMP 0x00088d37
MOV EBP,0x68
MOV EAX,0xd
JMP 0x00088f0e
(translation_unit "undefined4 FUN_00088b30(uint param_1,uint param_2,byte param_3,void *param_4,size_t param_5)\n\n{\n  undefined4 *puVar1;\n  byte bVar2;\n  int *piVar3;\n  uint uVar4;\n  undefined1 *puVar5;\n  void *__s;\n  size_t sVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  int extraout_ECX;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  uint uVar13;\n  byte *pbVar14;\n  undefined4 *puVar15;\n  undefined4 *puVar16;\n  bool bVar17;\n  byte bVar18;\n  undefined8 uVar19;\n  int local_50;\n  undefined1 local_44;\n  int local_38;\n  \n  bVar18 = 0;\n  uVar19 = FUN_00036ac5();\n  uVar9 = (uint)((ulonglong)uVar19 >> 0x20);\n  piVar3 = (int *)uVar19;\n  bVar17 = *piVar3 == 0;\n  uVar13 = piVar3[3];\n  iVar10 = param_5 - 1;\n  if (iVar10 < 0) {\n    uVar12 = 0x68;\n    uVar4 = 0xd;\n  }\n  else {\n    uVar4 = 0xd;\n    iVar11 = iVar10;\n    do {\n      pbVar14 = (byte *)((int)param_4 + iVar11);\n      iVar11 = iVar11 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;\n    } while (iVar11 != -1);\n    uVar12 = uVar4 * 8;\n  }\n  uVar12 = (uVar4 ^ uVar12 ^ (uint)param_3) % uVar13;\n  puVar8 = (undefined4 *)piVar3[5];\n  puVar16 = (undefined4 *)puVar8[uVar12];\n  if (puVar16 != (undefined4 *)0x0) {\nLAB_00088bfa:\n    if (((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0))\n    goto LAB_00088bf0;\n    iVar10 = puVar16[2];\n    local_50 = puVar16[4];\n    puVar8 = puVar16;\n    if (iVar10 - local_50 < 0x16) {\n      iVar11 = FUN_0005b490();\n      if (iVar11 != 0) {\n        return 7;\n      }\n      puVar8 = (undefined4 *)FUN_00044180();\n      if (puVar8 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar8[2] = iVar10 * 2;\n      puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar15; puVar1 != puVar16; puVar1 = (undefined4 *)*puVar1) {\n        puVar15 = puVar1;\n      }\n      *puVar15 = puVar8;\n      local_50 = puVar8[4];\n    }\n    local_50 = -local_50;\n    if (puVar8[9] == extraout_ECX && puVar8[8] == uVar9) goto LAB_00088cd7;\n    FUN_00053040();\n    uVar13 = uVar9 - puVar8[8];\n    iVar10 = (extraout_ECX - puVar8[9]) - (uint)(uVar9 < (uint)puVar8[8]);\n    if (iVar10 == 0 && (uint)(0x7f < uVar13) <= (uint)-iVar10) {\n      *(char *)(puVar8[4] + (int)puVar8) = (char)uVar13;\n      iVar10 = 1;\n    }\n    else {\n      iVar10 = FUN_00046180();\n    }\n    iVar10 = iVar10 + puVar8[4];\n    puVar8[4] = iVar10;\n    puVar8[8] = uVar9;\n    puVar8[9] = extraout_ECX;\n    puVar8[3] = iVar10;\n    if (*piVar3 != 1) {\n      bVar17 = true;\n      puVar8[4] = iVar10 + 1;\n      iVar10 = *piVar3;\n      puVar8[7] = 0;\n      *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0);\n      goto LAB_00088cd7;\n    }\n    if ((int)param_1 < 0) goto LAB_00089040;\n    goto LAB_000890ca;\n  }\nLAB_00088da4:\n  uVar4 = 0x80;\n  if (0x7f < param_5 + 0x6a) {\n    uVar4 = param_5 + 0x6a;\n  }\n  uVar7 = piVar3[2] * 2;\n  if (uVar13 == uVar7 || SBORROW4(uVar13,uVar7) != (int)(uVar13 + piVar3[2] * -2) < 0) {\n    iVar11 = FUN_0005b490();\n    if (iVar11 != 0) {\n      return 7;\n    }\n    uVar12 = uVar13 * 2;\n    __s = (void *)FUN_000421f0();\n    if (__s == (void *)0x0) {\n      return 7;\n    }\n    memset(__s,0,uVar13 << 3);\n    if (0 < piVar3[3]) {\n      local_38 = 0;\n      puVar16 = puVar8;\n      do {\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      } while (local_38 < piVar3[3]);\n    }\n    FUN_00042800(puVar8);\n    piVar3[3] = uVar12;\n    piVar3[5] = (int)__s;\n    if (iVar10 < 0) {\n      uVar13 = 0x68;\n      uVar7 = 0xd;\n    }\n    else {\n      uVar7 = 0xd;\n      do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);\n      uVar13 = uVar7 * 8;\n    }\n    uVar12 = (uVar7 ^ uVar13 ^ (uint)param_3) % uVar12;\n  }\n  iVar10 = FUN_0005b490();\n  if ((iVar10 != 0) || (puVar8 = (undefined4 *)FUN_000421f0(), puVar8 == (undefined4 *)0x0)) {\n    return 7;\n  }\n  *puVar8 = 0;\n  puVar8[9] = 0;\n  puVar16 = (undefined4 *)((uint)(puVar8 + 1) & 0xfffffffc);\n  for (uVar13 = (uint)((int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc))) >> 2;\n      uVar13 != 0; uVar13 = uVar13 - 1) {\n    *puVar16 = 0;\n    puVar16 = puVar16 + (uint)bVar18 * -2 + 1;\n  }\n  puVar8[2] = uVar4;\n  *(byte *)(puVar8 + 10) = param_3;\n  memcpy((void *)((int)puVar8 + 0x29),param_4,param_5);\n  puVar8[5] = param_5;\n  *(undefined1 *)((int)puVar8 + param_5 + 0x29) = 0;\n  puVar8[4] = param_5 + 0x2a;\n  *puVar8 = *(undefined4 *)(piVar3[5] + uVar12 * 4);\n  *(undefined4 **)(piVar3[5] + uVar12 * 4) = puVar8;\n  piVar3[2] = piVar3[2] + 1;\n  if (extraout_ECX == 0 && (uint)(0x7f < uVar9) <= (uint)-extraout_ECX) {\n    local_44 = (undefined1)((ulonglong)uVar19 >> 0x20);\n    *(undefined1 *)(puVar8[4] + (int)puVar8) = local_44;\n    local_50 = 1;\n  }\n  else {\n    local_50 = FUN_00046180();\n  }\n  local_50 = local_50 + puVar8[4];\n  puVar8[4] = local_50;\n  puVar8[9] = extraout_ECX;\n  puVar8[8] = uVar9;\n  puVar8[3] = local_50;\n  if (*piVar3 != 1) {\n    local_50 = local_50 + 1;\n    puVar8[4] = local_50;\n    *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(*piVar3 != 0);\n  }\nLAB_00088cd7:\n  if ((int)param_1 < 0) {\nLAB_00089040:\n    *(undefined1 *)(puVar8 + 6) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }\n  if (*piVar3 == 1) {\nLAB_000890ca:\n    *(undefined1 *)((int)puVar8 + 0x19) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }\n  iVar10 = puVar8[4];\n  if ((int)*(short *)((int)puVar8 + 0x1a) == param_1) {\nLAB_00088d4f:\n    if (!bVar17) goto LAB_00089047;\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n  }\n  else {\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n    if (*piVar3 == 0) {\n      puVar8[4] = iVar10 + 1;\n      *puVar5 = 1;\n      if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }\n      iVar10 = iVar10 + puVar8[4];\n      puVar8[7] = 0;\n      puVar8[4] = iVar10;\n      *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n      goto LAB_00088d4f;\n    }\n    *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n    param_2 = param_1;\n  }\n  uVar13 = (param_2 - puVar8[7]) + 2;\n  if ((int)uVar13 < 0 || (uint)-((int)uVar13 >> 0x1f) < (uint)(0x7f < uVar13)) {\n    iVar10 = FUN_00046180();\n  }\n  else {\n    *puVar5 = (char)uVar13;\n    iVar10 = 1;\n  }\n  iVar10 = iVar10 + puVar8[4];\n  puVar8[4] = iVar10;\n  puVar8[7] = param_2;\nLAB_00089047:\n  *(int *)piVar3[1] = *(int *)piVar3[1] + iVar10 + local_50;\n  return 0;\nLAB_00088bf0:\n  puVar16 = (undefined4 *)*puVar16;\n  if (puVar16 == (undefined4 *)0x0) goto LAB_00088da4;\n  goto LAB_00088bfa;\n}\n\n" (function_definition "undefined4 FUN_00088b30(uint param_1,uint param_2,byte param_3,void *param_4,size_t param_5)\n\n{\n  undefined4 *puVar1;\n  byte bVar2;\n  int *piVar3;\n  uint uVar4;\n  undefined1 *puVar5;\n  void *__s;\n  size_t sVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  int extraout_ECX;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  uint uVar13;\n  byte *pbVar14;\n  undefined4 *puVar15;\n  undefined4 *puVar16;\n  bool bVar17;\n  byte bVar18;\n  undefined8 uVar19;\n  int local_50;\n  undefined1 local_44;\n  int local_38;\n  \n  bVar18 = 0;\n  uVar19 = FUN_00036ac5();\n  uVar9 = (uint)((ulonglong)uVar19 >> 0x20);\n  piVar3 = (int *)uVar19;\n  bVar17 = *piVar3 == 0;\n  uVar13 = piVar3[3];\n  iVar10 = param_5 - 1;\n  if (iVar10 < 0) {\n    uVar12 = 0x68;\n    uVar4 = 0xd;\n  }\n  else {\n    uVar4 = 0xd;\n    iVar11 = iVar10;\n    do {\n      pbVar14 = (byte *)((int)param_4 + iVar11);\n      iVar11 = iVar11 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;\n    } while (iVar11 != -1);\n    uVar12 = uVar4 * 8;\n  }\n  uVar12 = (uVar4 ^ uVar12 ^ (uint)param_3) % uVar13;\n  puVar8 = (undefined4 *)piVar3[5];\n  puVar16 = (undefined4 *)puVar8[uVar12];\n  if (puVar16 != (undefined4 *)0x0) {\nLAB_00088bfa:\n    if (((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0))\n    goto LAB_00088bf0;\n    iVar10 = puVar16[2];\n    local_50 = puVar16[4];\n    puVar8 = puVar16;\n    if (iVar10 - local_50 < 0x16) {\n      iVar11 = FUN_0005b490();\n      if (iVar11 != 0) {\n        return 7;\n      }\n      puVar8 = (undefined4 *)FUN_00044180();\n      if (puVar8 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar8[2] = iVar10 * 2;\n      puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar15; puVar1 != puVar16; puVar1 = (undefined4 *)*puVar1) {\n        puVar15 = puVar1;\n      }\n      *puVar15 = puVar8;\n      local_50 = puVar8[4];\n    }\n    local_50 = -local_50;\n    if (puVar8[9] == extraout_ECX && puVar8[8] == uVar9) goto LAB_00088cd7;\n    FUN_00053040();\n    uVar13 = uVar9 - puVar8[8];\n    iVar10 = (extraout_ECX - puVar8[9]) - (uint)(uVar9 < (uint)puVar8[8]);\n    if (iVar10 == 0 && (uint)(0x7f < uVar13) <= (uint)-iVar10) {\n      *(char *)(puVar8[4] + (int)puVar8) = (char)uVar13;\n      iVar10 = 1;\n    }\n    else {\n      iVar10 = FUN_00046180();\n    }\n    iVar10 = iVar10 + puVar8[4];\n    puVar8[4] = iVar10;\n    puVar8[8] = uVar9;\n    puVar8[9] = extraout_ECX;\n    puVar8[3] = iVar10;\n    if (*piVar3 != 1) {\n      bVar17 = true;\n      puVar8[4] = iVar10 + 1;\n      iVar10 = *piVar3;\n      puVar8[7] = 0;\n      *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0);\n      goto LAB_00088cd7;\n    }\n    if ((int)param_1 < 0) goto LAB_00089040;\n    goto LAB_000890ca;\n  }\nLAB_00088da4:\n  uVar4 = 0x80;\n  if (0x7f < param_5 + 0x6a) {\n    uVar4 = param_5 + 0x6a;\n  }\n  uVar7 = piVar3[2] * 2;\n  if (uVar13 == uVar7 || SBORROW4(uVar13,uVar7) != (int)(uVar13 + piVar3[2] * -2) < 0) {\n    iVar11 = FUN_0005b490();\n    if (iVar11 != 0) {\n      return 7;\n    }\n    uVar12 = uVar13 * 2;\n    __s = (void *)FUN_000421f0();\n    if (__s == (void *)0x0) {\n      return 7;\n    }\n    memset(__s,0,uVar13 << 3);\n    if (0 < piVar3[3]) {\n      local_38 = 0;\n      puVar16 = puVar8;\n      do {\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      } while (local_38 < piVar3[3]);\n    }\n    FUN_00042800(puVar8);\n    piVar3[3] = uVar12;\n    piVar3[5] = (int)__s;\n    if (iVar10 < 0) {\n      uVar13 = 0x68;\n      uVar7 = 0xd;\n    }\n    else {\n      uVar7 = 0xd;\n      do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);\n      uVar13 = uVar7 * 8;\n    }\n    uVar12 = (uVar7 ^ uVar13 ^ (uint)param_3) % uVar12;\n  }\n  iVar10 = FUN_0005b490();\n  if ((iVar10 != 0) || (puVar8 = (undefined4 *)FUN_000421f0(), puVar8 == (undefined4 *)0x0)) {\n    return 7;\n  }\n  *puVar8 = 0;\n  puVar8[9] = 0;\n  puVar16 = (undefined4 *)((uint)(puVar8 + 1) & 0xfffffffc);\n  for (uVar13 = (uint)((int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc))) >> 2;\n      uVar13 != 0; uVar13 = uVar13 - 1) {\n    *puVar16 = 0;\n    puVar16 = puVar16 + (uint)bVar18 * -2 + 1;\n  }\n  puVar8[2] = uVar4;\n  *(byte *)(puVar8 + 10) = param_3;\n  memcpy((void *)((int)puVar8 + 0x29),param_4,param_5);\n  puVar8[5] = param_5;\n  *(undefined1 *)((int)puVar8 + param_5 + 0x29) = 0;\n  puVar8[4] = param_5 + 0x2a;\n  *puVar8 = *(undefined4 *)(piVar3[5] + uVar12 * 4);\n  *(undefined4 **)(piVar3[5] + uVar12 * 4) = puVar8;\n  piVar3[2] = piVar3[2] + 1;\n  if (extraout_ECX == 0 && (uint)(0x7f < uVar9) <= (uint)-extraout_ECX) {\n    local_44 = (undefined1)((ulonglong)uVar19 >> 0x20);\n    *(undefined1 *)(puVar8[4] + (int)puVar8) = local_44;\n    local_50 = 1;\n  }\n  else {\n    local_50 = FUN_00046180();\n  }\n  local_50 = local_50 + puVar8[4];\n  puVar8[4] = local_50;\n  puVar8[9] = extraout_ECX;\n  puVar8[8] = uVar9;\n  puVar8[3] = local_50;\n  if (*piVar3 != 1) {\n    local_50 = local_50 + 1;\n    puVar8[4] = local_50;\n    *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(*piVar3 != 0);\n  }\nLAB_00088cd7:\n  if ((int)param_1 < 0) {\nLAB_00089040:\n    *(undefined1 *)(puVar8 + 6) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }\n  if (*piVar3 == 1) {\nLAB_000890ca:\n    *(undefined1 *)((int)puVar8 + 0x19) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }\n  iVar10 = puVar8[4];\n  if ((int)*(short *)((int)puVar8 + 0x1a) == param_1) {\nLAB_00088d4f:\n    if (!bVar17) goto LAB_00089047;\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n  }\n  else {\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n    if (*piVar3 == 0) {\n      puVar8[4] = iVar10 + 1;\n      *puVar5 = 1;\n      if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }\n      iVar10 = iVar10 + puVar8[4];\n      puVar8[7] = 0;\n      puVar8[4] = iVar10;\n      *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n      goto LAB_00088d4f;\n    }\n    *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n    param_2 = param_1;\n  }\n  uVar13 = (param_2 - puVar8[7]) + 2;\n  if ((int)uVar13 < 0 || (uint)-((int)uVar13 >> 0x1f) < (uint)(0x7f < uVar13)) {\n    iVar10 = FUN_00046180();\n  }\n  else {\n    *puVar5 = (char)uVar13;\n    iVar10 = 1;\n  }\n  iVar10 = iVar10 + puVar8[4];\n  puVar8[4] = iVar10;\n  puVar8[7] = param_2;\nLAB_00089047:\n  *(int *)piVar3[1] = *(int *)piVar3[1] + iVar10 + local_50;\n  return 0;\nLAB_00088bf0:\n  puVar16 = (undefined4 *)*puVar16;\n  if (puVar16 == (undefined4 *)0x0) goto LAB_00088da4;\n  goto LAB_00088bfa;\n}" type_identifier (function_declarator "FUN_00088b30(uint param_1,uint param_2,byte param_3,void *param_4,size_t param_5)" identifier (parameter_list "(uint param_1,uint param_2,byte param_3,void *param_4,size_t param_5)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "byte param_3" type_identifier identifier) , (parameter_declaration "void *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "size_t param_5" primitive_type identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  byte bVar2;\n  int *piVar3;\n  uint uVar4;\n  undefined1 *puVar5;\n  void *__s;\n  size_t sVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  int extraout_ECX;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  uint uVar13;\n  byte *pbVar14;\n  undefined4 *puVar15;\n  undefined4 *puVar16;\n  bool bVar17;\n  byte bVar18;\n  undefined8 uVar19;\n  int local_50;\n  undefined1 local_44;\n  int local_38;\n  \n  bVar18 = 0;\n  uVar19 = FUN_00036ac5();\n  uVar9 = (uint)((ulonglong)uVar19 >> 0x20);\n  piVar3 = (int *)uVar19;\n  bVar17 = *piVar3 == 0;\n  uVar13 = piVar3[3];\n  iVar10 = param_5 - 1;\n  if (iVar10 < 0) {\n    uVar12 = 0x68;\n    uVar4 = 0xd;\n  }\n  else {\n    uVar4 = 0xd;\n    iVar11 = iVar10;\n    do {\n      pbVar14 = (byte *)((int)param_4 + iVar11);\n      iVar11 = iVar11 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;\n    } while (iVar11 != -1);\n    uVar12 = uVar4 * 8;\n  }\n  uVar12 = (uVar4 ^ uVar12 ^ (uint)param_3) % uVar13;\n  puVar8 = (undefined4 *)piVar3[5];\n  puVar16 = (undefined4 *)puVar8[uVar12];\n  if (puVar16 != (undefined4 *)0x0) {\nLAB_00088bfa:\n    if (((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0))\n    goto LAB_00088bf0;\n    iVar10 = puVar16[2];\n    local_50 = puVar16[4];\n    puVar8 = puVar16;\n    if (iVar10 - local_50 < 0x16) {\n      iVar11 = FUN_0005b490();\n      if (iVar11 != 0) {\n        return 7;\n      }\n      puVar8 = (undefined4 *)FUN_00044180();\n      if (puVar8 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar8[2] = iVar10 * 2;\n      puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar15; puVar1 != puVar16; puVar1 = (undefined4 *)*puVar1) {\n        puVar15 = puVar1;\n      }\n      *puVar15 = puVar8;\n      local_50 = puVar8[4];\n    }\n    local_50 = -local_50;\n    if (puVar8[9] == extraout_ECX && puVar8[8] == uVar9) goto LAB_00088cd7;\n    FUN_00053040();\n    uVar13 = uVar9 - puVar8[8];\n    iVar10 = (extraout_ECX - puVar8[9]) - (uint)(uVar9 < (uint)puVar8[8]);\n    if (iVar10 == 0 && (uint)(0x7f < uVar13) <= (uint)-iVar10) {\n      *(char *)(puVar8[4] + (int)puVar8) = (char)uVar13;\n      iVar10 = 1;\n    }\n    else {\n      iVar10 = FUN_00046180();\n    }\n    iVar10 = iVar10 + puVar8[4];\n    puVar8[4] = iVar10;\n    puVar8[8] = uVar9;\n    puVar8[9] = extraout_ECX;\n    puVar8[3] = iVar10;\n    if (*piVar3 != 1) {\n      bVar17 = true;\n      puVar8[4] = iVar10 + 1;\n      iVar10 = *piVar3;\n      puVar8[7] = 0;\n      *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0);\n      goto LAB_00088cd7;\n    }\n    if ((int)param_1 < 0) goto LAB_00089040;\n    goto LAB_000890ca;\n  }\nLAB_00088da4:\n  uVar4 = 0x80;\n  if (0x7f < param_5 + 0x6a) {\n    uVar4 = param_5 + 0x6a;\n  }\n  uVar7 = piVar3[2] * 2;\n  if (uVar13 == uVar7 || SBORROW4(uVar13,uVar7) != (int)(uVar13 + piVar3[2] * -2) < 0) {\n    iVar11 = FUN_0005b490();\n    if (iVar11 != 0) {\n      return 7;\n    }\n    uVar12 = uVar13 * 2;\n    __s = (void *)FUN_000421f0();\n    if (__s == (void *)0x0) {\n      return 7;\n    }\n    memset(__s,0,uVar13 << 3);\n    if (0 < piVar3[3]) {\n      local_38 = 0;\n      puVar16 = puVar8;\n      do {\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      } while (local_38 < piVar3[3]);\n    }\n    FUN_00042800(puVar8);\n    piVar3[3] = uVar12;\n    piVar3[5] = (int)__s;\n    if (iVar10 < 0) {\n      uVar13 = 0x68;\n      uVar7 = 0xd;\n    }\n    else {\n      uVar7 = 0xd;\n      do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);\n      uVar13 = uVar7 * 8;\n    }\n    uVar12 = (uVar7 ^ uVar13 ^ (uint)param_3) % uVar12;\n  }\n  iVar10 = FUN_0005b490();\n  if ((iVar10 != 0) || (puVar8 = (undefined4 *)FUN_000421f0(), puVar8 == (undefined4 *)0x0)) {\n    return 7;\n  }\n  *puVar8 = 0;\n  puVar8[9] = 0;\n  puVar16 = (undefined4 *)((uint)(puVar8 + 1) & 0xfffffffc);\n  for (uVar13 = (uint)((int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc))) >> 2;\n      uVar13 != 0; uVar13 = uVar13 - 1) {\n    *puVar16 = 0;\n    puVar16 = puVar16 + (uint)bVar18 * -2 + 1;\n  }\n  puVar8[2] = uVar4;\n  *(byte *)(puVar8 + 10) = param_3;\n  memcpy((void *)((int)puVar8 + 0x29),param_4,param_5);\n  puVar8[5] = param_5;\n  *(undefined1 *)((int)puVar8 + param_5 + 0x29) = 0;\n  puVar8[4] = param_5 + 0x2a;\n  *puVar8 = *(undefined4 *)(piVar3[5] + uVar12 * 4);\n  *(undefined4 **)(piVar3[5] + uVar12 * 4) = puVar8;\n  piVar3[2] = piVar3[2] + 1;\n  if (extraout_ECX == 0 && (uint)(0x7f < uVar9) <= (uint)-extraout_ECX) {\n    local_44 = (undefined1)((ulonglong)uVar19 >> 0x20);\n    *(undefined1 *)(puVar8[4] + (int)puVar8) = local_44;\n    local_50 = 1;\n  }\n  else {\n    local_50 = FUN_00046180();\n  }\n  local_50 = local_50 + puVar8[4];\n  puVar8[4] = local_50;\n  puVar8[9] = extraout_ECX;\n  puVar8[8] = uVar9;\n  puVar8[3] = local_50;\n  if (*piVar3 != 1) {\n    local_50 = local_50 + 1;\n    puVar8[4] = local_50;\n    *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(*piVar3 != 0);\n  }\nLAB_00088cd7:\n  if ((int)param_1 < 0) {\nLAB_00089040:\n    *(undefined1 *)(puVar8 + 6) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }\n  if (*piVar3 == 1) {\nLAB_000890ca:\n    *(undefined1 *)((int)puVar8 + 0x19) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }\n  iVar10 = puVar8[4];\n  if ((int)*(short *)((int)puVar8 + 0x1a) == param_1) {\nLAB_00088d4f:\n    if (!bVar17) goto LAB_00089047;\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n  }\n  else {\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n    if (*piVar3 == 0) {\n      puVar8[4] = iVar10 + 1;\n      *puVar5 = 1;\n      if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }\n      iVar10 = iVar10 + puVar8[4];\n      puVar8[7] = 0;\n      puVar8[4] = iVar10;\n      *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n      goto LAB_00088d4f;\n    }\n    *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n    param_2 = param_1;\n  }\n  uVar13 = (param_2 - puVar8[7]) + 2;\n  if ((int)uVar13 < 0 || (uint)-((int)uVar13 >> 0x1f) < (uint)(0x7f < uVar13)) {\n    iVar10 = FUN_00046180();\n  }\n  else {\n    *puVar5 = (char)uVar13;\n    iVar10 = 1;\n  }\n  iVar10 = iVar10 + puVar8[4];\n  puVar8[4] = iVar10;\n  puVar8[7] = param_2;\nLAB_00089047:\n  *(int *)piVar3[1] = *(int *)piVar3[1] + iVar10 + local_50;\n  return 0;\nLAB_00088bf0:\n  puVar16 = (undefined4 *)*puVar16;\n  if (puVar16 == (undefined4 *)0x0) goto LAB_00088da4;\n  goto LAB_00088bfa;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "void *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "undefined4 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined4 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "bool bVar17;" primitive_type identifier ;) (declaration "byte bVar18;" type_identifier identifier ;) (declaration "undefined8 uVar19;" type_identifier identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "undefined1 local_44;" type_identifier identifier ;) (declaration "int local_38;" primitive_type identifier ;) (expression_statement "bVar18 = 0;" (assignment_expression "bVar18 = 0" identifier = number_literal) ;) (expression_statement "uVar19 = FUN_00036ac5();" (assignment_expression "uVar19 = FUN_00036ac5()" identifier = (call_expression "FUN_00036ac5()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar9 = (uint)((ulonglong)uVar19 >> 0x20);" (assignment_expression "uVar9 = (uint)((ulonglong)uVar19 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar19 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar19 >> 0x20)" ( (binary_expression "(ulonglong)uVar19 >> 0x20" (cast_expression "(ulonglong)uVar19" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar3 = (int *)uVar19;" (assignment_expression "piVar3 = (int *)uVar19" identifier = (cast_expression "(int *)uVar19" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "bVar17 = *piVar3 == 0;" (assignment_expression "bVar17 = *piVar3 == 0" identifier = (binary_expression "*piVar3 == 0" (pointer_expression "*piVar3" * identifier) == number_literal)) ;) (expression_statement "uVar13 = piVar3[3];" (assignment_expression "uVar13 = piVar3[3]" identifier = (subscript_expression "piVar3[3]" identifier [ number_literal ])) ;) (expression_statement "iVar10 = param_5 - 1;" (assignment_expression "iVar10 = param_5 - 1" identifier = (binary_expression "param_5 - 1" identifier - number_literal)) ;) (if_statement "if (iVar10 < 0) {\n    uVar12 = 0x68;\n    uVar4 = 0xd;\n  }\n  else {\n    uVar4 = 0xd;\n    iVar11 = iVar10;\n    do {\n      pbVar14 = (byte *)((int)param_4 + iVar11);\n      iVar11 = iVar11 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;\n    } while (iVar11 != -1);\n    uVar12 = uVar4 * 8;\n  }" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (compound_statement "{\n    uVar12 = 0x68;\n    uVar4 = 0xd;\n  }" { (expression_statement "uVar12 = 0x68;" (assignment_expression "uVar12 = 0x68" identifier = number_literal) ;) (expression_statement "uVar4 = 0xd;" (assignment_expression "uVar4 = 0xd" identifier = number_literal) ;) }) (else_clause "else {\n    uVar4 = 0xd;\n    iVar11 = iVar10;\n    do {\n      pbVar14 = (byte *)((int)param_4 + iVar11);\n      iVar11 = iVar11 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;\n    } while (iVar11 != -1);\n    uVar12 = uVar4 * 8;\n  }" else (compound_statement "{\n    uVar4 = 0xd;\n    iVar11 = iVar10;\n    do {\n      pbVar14 = (byte *)((int)param_4 + iVar11);\n      iVar11 = iVar11 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;\n    } while (iVar11 != -1);\n    uVar12 = uVar4 * 8;\n  }" { (expression_statement "uVar4 = 0xd;" (assignment_expression "uVar4 = 0xd" identifier = number_literal) ;) (expression_statement "iVar11 = iVar10;" (assignment_expression "iVar11 = iVar10" identifier = identifier) ;) (do_statement "do {\n      pbVar14 = (byte *)((int)param_4 + iVar11);\n      iVar11 = iVar11 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;\n    } while (iVar11 != -1);" do (compound_statement "{\n      pbVar14 = (byte *)((int)param_4 + iVar11);\n      iVar11 = iVar11 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;\n    }" { (expression_statement "pbVar14 = (byte *)((int)param_4 + iVar11);" (assignment_expression "pbVar14 = (byte *)((int)param_4 + iVar11)" identifier = (cast_expression "(byte *)((int)param_4 + iVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + iVar11)" ( (binary_expression "(int)param_4 + iVar11" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;" (assignment_expression "uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14" identifier = (binary_expression "uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14" (binary_expression "uVar4 ^ uVar4 * 8" identifier ^ (binary_expression "uVar4 * 8" identifier * number_literal)) ^ (binary_expression "(uint)*pbVar14" (parenthesized_expression "(uint)" ( identifier )) * identifier))) ;) }) while (parenthesized_expression "(iVar11 != -1)" ( (binary_expression "iVar11 != -1" identifier != number_literal) )) ;) (expression_statement "uVar12 = uVar4 * 8;" (assignment_expression "uVar12 = uVar4 * 8" identifier = (binary_expression "uVar4 * 8" identifier * number_literal)) ;) }))) (expression_statement "uVar12 = (uVar4 ^ uVar12 ^ (uint)param_3) % uVar13;" (assignment_expression "uVar12 = (uVar4 ^ uVar12 ^ (uint)param_3) % uVar13" identifier = (binary_expression "(uVar4 ^ uVar12 ^ (uint)param_3) % uVar13" (parenthesized_expression "(uVar4 ^ uVar12 ^ (uint)param_3)" ( (binary_expression "uVar4 ^ uVar12 ^ (uint)param_3" (binary_expression "uVar4 ^ uVar12" identifier ^ identifier) ^ (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier)) )) % identifier)) ;) (expression_statement "puVar8 = (undefined4 *)piVar3[5];" (assignment_expression "puVar8 = (undefined4 *)piVar3[5]" identifier = (cast_expression "(undefined4 *)piVar3[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[5]" identifier [ number_literal ]))) ;) (expression_statement "puVar16 = (undefined4 *)puVar8[uVar12];" (assignment_expression "puVar16 = (undefined4 *)puVar8[uVar12]" identifier = (cast_expression "(undefined4 *)puVar8[uVar12]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar8[uVar12]" identifier [ identifier ]))) ;) (if_statement "if (puVar16 != (undefined4 *)0x0) {\nLAB_00088bfa:\n    if (((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0))\n    goto LAB_00088bf0;\n    iVar10 = puVar16[2];\n    local_50 = puVar16[4];\n    puVar8 = puVar16;\n    if (iVar10 - local_50 < 0x16) {\n      iVar11 = FUN_0005b490();\n      if (iVar11 != 0) {\n        return 7;\n      }\n      puVar8 = (undefined4 *)FUN_00044180();\n      if (puVar8 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar8[2] = iVar10 * 2;\n      puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar15; puVar1 != puVar16; puVar1 = (undefined4 *)*puVar1) {\n        puVar15 = puVar1;\n      }\n      *puVar15 = puVar8;\n      local_50 = puVar8[4];\n    }\n    local_50 = -local_50;\n    if (puVar8[9] == extraout_ECX && puVar8[8] == uVar9) goto LAB_00088cd7;\n    FUN_00053040();\n    uVar13 = uVar9 - puVar8[8];\n    iVar10 = (extraout_ECX - puVar8[9]) - (uint)(uVar9 < (uint)puVar8[8]);\n    if (iVar10 == 0 && (uint)(0x7f < uVar13) <= (uint)-iVar10) {\n      *(char *)(puVar8[4] + (int)puVar8) = (char)uVar13;\n      iVar10 = 1;\n    }\n    else {\n      iVar10 = FUN_00046180();\n    }\n    iVar10 = iVar10 + puVar8[4];\n    puVar8[4] = iVar10;\n    puVar8[8] = uVar9;\n    puVar8[9] = extraout_ECX;\n    puVar8[3] = iVar10;\n    if (*piVar3 != 1) {\n      bVar17 = true;\n      puVar8[4] = iVar10 + 1;\n      iVar10 = *piVar3;\n      puVar8[7] = 0;\n      *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0);\n      goto LAB_00088cd7;\n    }\n    if ((int)param_1 < 0) goto LAB_00089040;\n    goto LAB_000890ca;\n  }" if (parenthesized_expression "(puVar16 != (undefined4 *)0x0)" ( (binary_expression "puVar16 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00088bfa:\n    if (((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0))\n    goto LAB_00088bf0;\n    iVar10 = puVar16[2];\n    local_50 = puVar16[4];\n    puVar8 = puVar16;\n    if (iVar10 - local_50 < 0x16) {\n      iVar11 = FUN_0005b490();\n      if (iVar11 != 0) {\n        return 7;\n      }\n      puVar8 = (undefined4 *)FUN_00044180();\n      if (puVar8 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar8[2] = iVar10 * 2;\n      puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar15; puVar1 != puVar16; puVar1 = (undefined4 *)*puVar1) {\n        puVar15 = puVar1;\n      }\n      *puVar15 = puVar8;\n      local_50 = puVar8[4];\n    }\n    local_50 = -local_50;\n    if (puVar8[9] == extraout_ECX && puVar8[8] == uVar9) goto LAB_00088cd7;\n    FUN_00053040();\n    uVar13 = uVar9 - puVar8[8];\n    iVar10 = (extraout_ECX - puVar8[9]) - (uint)(uVar9 < (uint)puVar8[8]);\n    if (iVar10 == 0 && (uint)(0x7f < uVar13) <= (uint)-iVar10) {\n      *(char *)(puVar8[4] + (int)puVar8) = (char)uVar13;\n      iVar10 = 1;\n    }\n    else {\n      iVar10 = FUN_00046180();\n    }\n    iVar10 = iVar10 + puVar8[4];\n    puVar8[4] = iVar10;\n    puVar8[8] = uVar9;\n    puVar8[9] = extraout_ECX;\n    puVar8[3] = iVar10;\n    if (*piVar3 != 1) {\n      bVar17 = true;\n      puVar8[4] = iVar10 + 1;\n      iVar10 = *piVar3;\n      puVar8[7] = 0;\n      *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0);\n      goto LAB_00088cd7;\n    }\n    if ((int)param_1 < 0) goto LAB_00089040;\n    goto LAB_000890ca;\n  }" { (labeled_statement "LAB_00088bfa:\n    if (((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0))\n    goto LAB_00088bf0;" statement_identifier : (if_statement "if (((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0))\n    goto LAB_00088bf0;" if (parenthesized_expression "(((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0))" ( (binary_expression "((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0)" (parenthesized_expression "((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5))" ( (binary_expression "(*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)" (parenthesized_expression "(*(byte *)(puVar16 + 10) != param_3)" ( (binary_expression "*(byte *)(puVar16 + 10) != param_3" (pointer_expression "*(byte *)(puVar16 + 10)" * (cast_expression "(byte *)(puVar16 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 10)" ( (binary_expression "puVar16 + 10" identifier + number_literal) )))) != identifier) )) || (parenthesized_expression "(puVar16[5] != param_5)" ( (binary_expression "puVar16[5] != param_5" (subscript_expression "puVar16[5]" identifier [ number_literal ]) != identifier) ))) )) || (parenthesized_expression "(iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0)" ( (comma_expression "iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0" (assignment_expression "iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5)" identifier = (call_expression "memcmp((void *)((int)puVar16 + 0x29),param_4,param_5)" identifier (argument_list "((void *)((int)puVar16 + 0x29),param_4,param_5)" ( (cast_expression "(void *)((int)puVar16 + 0x29)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + 0x29)" ( (binary_expression "(int)puVar16 + 0x29" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , identifier , identifier )))) , (binary_expression "iVar11 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_00088bf0;" goto statement_identifier ;))) (expression_statement "iVar10 = puVar16[2];" (assignment_expression "iVar10 = puVar16[2]" identifier = (subscript_expression "puVar16[2]" identifier [ number_literal ])) ;) (expression_statement "local_50 = puVar16[4];" (assignment_expression "local_50 = puVar16[4]" identifier = (subscript_expression "puVar16[4]" identifier [ number_literal ])) ;) (expression_statement "puVar8 = puVar16;" (assignment_expression "puVar8 = puVar16" identifier = identifier) ;) (if_statement "if (iVar10 - local_50 < 0x16) {\n      iVar11 = FUN_0005b490();\n      if (iVar11 != 0) {\n        return 7;\n      }\n      puVar8 = (undefined4 *)FUN_00044180();\n      if (puVar8 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar8[2] = iVar10 * 2;\n      puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar15; puVar1 != puVar16; puVar1 = (undefined4 *)*puVar1) {\n        puVar15 = puVar1;\n      }\n      *puVar15 = puVar8;\n      local_50 = puVar8[4];\n    }" if (parenthesized_expression "(iVar10 - local_50 < 0x16)" ( (binary_expression "iVar10 - local_50 < 0x16" (binary_expression "iVar10 - local_50" identifier - identifier) < number_literal) )) (compound_statement "{\n      iVar11 = FUN_0005b490();\n      if (iVar11 != 0) {\n        return 7;\n      }\n      puVar8 = (undefined4 *)FUN_00044180();\n      if (puVar8 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar8[2] = iVar10 * 2;\n      puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar15; puVar1 != puVar16; puVar1 = (undefined4 *)*puVar1) {\n        puVar15 = puVar1;\n      }\n      *puVar15 = puVar8;\n      local_50 = puVar8[4];\n    }" { (expression_statement "iVar11 = FUN_0005b490();" (assignment_expression "iVar11 = FUN_0005b490()" identifier = (call_expression "FUN_0005b490()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar11 != 0) {\n        return 7;\n      }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n        return 7;\n      }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "puVar8 = (undefined4 *)FUN_00044180();" (assignment_expression "puVar8 = (undefined4 *)FUN_00044180()" identifier = (cast_expression "(undefined4 *)FUN_00044180()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00044180()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (puVar8 == (undefined4 *)0x0) {\n        return 7;\n      }" if (parenthesized_expression "(puVar8 == (undefined4 *)0x0)" ( (binary_expression "puVar8 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return 7;\n      }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "puVar8[2] = iVar10 * 2;" (assignment_expression "puVar8[2] = iVar10 * 2" (subscript_expression "puVar8[2]" identifier [ number_literal ]) = (binary_expression "iVar10 * 2" identifier * number_literal)) ;) (expression_statement "puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5]);" (assignment_expression "puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5])" identifier = (cast_expression "(undefined4 *)(uVar12 * 4 + piVar3[5])" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar12 * 4 + piVar3[5])" ( (binary_expression "uVar12 * 4 + piVar3[5]" (binary_expression "uVar12 * 4" identifier * number_literal) + (subscript_expression "piVar3[5]" identifier [ number_literal ])) )))) ;) (for_statement "for (puVar1 = (undefined4 *)*puVar15; puVar1 != puVar16; puVar1 = (undefined4 *)*puVar1) {\n        puVar15 = puVar1;\n      }" for ( (assignment_expression "puVar1 = (undefined4 *)*puVar15" identifier = (cast_expression "(undefined4 *)*puVar15" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar15" * identifier))) ; (binary_expression "puVar1 != puVar16" identifier != identifier) ; (assignment_expression "puVar1 = (undefined4 *)*puVar1" identifier = (cast_expression "(undefined4 *)*puVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ) (compound_statement "{\n        puVar15 = puVar1;\n      }" { (expression_statement "puVar15 = puVar1;" (assignment_expression "puVar15 = puVar1" identifier = identifier) ;) })) (expression_statement "*puVar15 = puVar8;" (assignment_expression "*puVar15 = puVar8" (pointer_expression "*puVar15" * identifier) = identifier) ;) (expression_statement "local_50 = puVar8[4];" (assignment_expression "local_50 = puVar8[4]" identifier = (subscript_expression "puVar8[4]" identifier [ number_literal ])) ;) })) (expression_statement "local_50 = -local_50;" (assignment_expression "local_50 = -local_50" identifier = (unary_expression "-local_50" - identifier)) ;) (if_statement "if (puVar8[9] == extraout_ECX && puVar8[8] == uVar9) goto LAB_00088cd7;" if (parenthesized_expression "(puVar8[9] == extraout_ECX && puVar8[8] == uVar9)" ( (binary_expression "puVar8[9] == extraout_ECX && puVar8[8] == uVar9" (binary_expression "puVar8[9] == extraout_ECX" (subscript_expression "puVar8[9]" identifier [ number_literal ]) == identifier) && (binary_expression "puVar8[8] == uVar9" (subscript_expression "puVar8[8]" identifier [ number_literal ]) == identifier)) )) (goto_statement "goto LAB_00088cd7;" goto statement_identifier ;)) (expression_statement "FUN_00053040();" (call_expression "FUN_00053040()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar13 = uVar9 - puVar8[8];" (assignment_expression "uVar13 = uVar9 - puVar8[8]" identifier = (binary_expression "uVar9 - puVar8[8]" identifier - (subscript_expression "puVar8[8]" identifier [ number_literal ]))) ;) (expression_statement "iVar10 = (extraout_ECX - puVar8[9]) - (uint)(uVar9 < (uint)puVar8[8]);" (assignment_expression "iVar10 = (extraout_ECX - puVar8[9]) - (uint)(uVar9 < (uint)puVar8[8])" identifier = (binary_expression "(extraout_ECX - puVar8[9]) - (uint)(uVar9 < (uint)puVar8[8])" (parenthesized_expression "(extraout_ECX - puVar8[9])" ( (binary_expression "extraout_ECX - puVar8[9]" identifier - (subscript_expression "puVar8[9]" identifier [ number_literal ])) )) - (call_expression "(uint)(uVar9 < (uint)puVar8[8])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < (uint)puVar8[8])" ( (binary_expression "uVar9 < (uint)puVar8[8]" identifier < (cast_expression "(uint)puVar8[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar8[8]" identifier [ number_literal ]))) ))))) ;) (if_statement "if (iVar10 == 0 && (uint)(0x7f < uVar13) <= (uint)-iVar10) {\n      *(char *)(puVar8[4] + (int)puVar8) = (char)uVar13;\n      iVar10 = 1;\n    }\n    else {\n      iVar10 = FUN_00046180();\n    }" if (parenthesized_expression "(iVar10 == 0 && (uint)(0x7f < uVar13) <= (uint)-iVar10)" ( (binary_expression "iVar10 == 0 && (uint)(0x7f < uVar13) <= (uint)-iVar10" (binary_expression "iVar10 == 0" identifier == number_literal) && (binary_expression "(uint)(0x7f < uVar13) <= (uint)-iVar10" (call_expression "(uint)(0x7f < uVar13)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x7f < uVar13)" ( (binary_expression "0x7f < uVar13" number_literal < identifier) ))) <= (binary_expression "(uint)-iVar10" (parenthesized_expression "(uint)" ( identifier )) - identifier))) )) (compound_statement "{\n      *(char *)(puVar8[4] + (int)puVar8) = (char)uVar13;\n      iVar10 = 1;\n    }" { (expression_statement "*(char *)(puVar8[4] + (int)puVar8) = (char)uVar13;" (assignment_expression "*(char *)(puVar8[4] + (int)puVar8) = (char)uVar13" (pointer_expression "*(char *)(puVar8[4] + (int)puVar8)" * (cast_expression "(char *)(puVar8[4] + (int)puVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8[4] + (int)puVar8)" ( (binary_expression "puVar8[4] + (int)puVar8" (subscript_expression "puVar8[4]" identifier [ number_literal ]) + (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )))) = (cast_expression "(char)uVar13" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      iVar10 = FUN_00046180();\n    }" else (compound_statement "{\n      iVar10 = FUN_00046180();\n    }" { (expression_statement "iVar10 = FUN_00046180();" (assignment_expression "iVar10 = FUN_00046180()" identifier = (call_expression "FUN_00046180()" identifier (argument_list "()" ( )))) ;) }))) (expression_statement "iVar10 = iVar10 + puVar8[4];" (assignment_expression "iVar10 = iVar10 + puVar8[4]" identifier = (binary_expression "iVar10 + puVar8[4]" identifier + (subscript_expression "puVar8[4]" identifier [ number_literal ]))) ;) (expression_statement "puVar8[4] = iVar10;" (assignment_expression "puVar8[4] = iVar10" (subscript_expression "puVar8[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8[8] = uVar9;" (assignment_expression "puVar8[8] = uVar9" (subscript_expression "puVar8[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8[9] = extraout_ECX;" (assignment_expression "puVar8[9] = extraout_ECX" (subscript_expression "puVar8[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8[3] = iVar10;" (assignment_expression "puVar8[3] = iVar10" (subscript_expression "puVar8[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (*piVar3 != 1) {\n      bVar17 = true;\n      puVar8[4] = iVar10 + 1;\n      iVar10 = *piVar3;\n      puVar8[7] = 0;\n      *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0);\n      goto LAB_00088cd7;\n    }" if (parenthesized_expression "(*piVar3 != 1)" ( (binary_expression "*piVar3 != 1" (pointer_expression "*piVar3" * identifier) != number_literal) )) (compound_statement "{\n      bVar17 = true;\n      puVar8[4] = iVar10 + 1;\n      iVar10 = *piVar3;\n      puVar8[7] = 0;\n      *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0);\n      goto LAB_00088cd7;\n    }" { (expression_statement "bVar17 = true;" (assignment_expression "bVar17 = true" identifier = true) ;) (expression_statement "puVar8[4] = iVar10 + 1;" (assignment_expression "puVar8[4] = iVar10 + 1" (subscript_expression "puVar8[4]" identifier [ number_literal ]) = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "iVar10 = *piVar3;" (assignment_expression "iVar10 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "puVar8[7] = 0;" (assignment_expression "puVar8[7] = 0" (subscript_expression "puVar8[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0);" (assignment_expression "*(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0)" (pointer_expression "*(ushort *)((int)puVar8 + 0x1a)" * (cast_expression "(ushort *)((int)puVar8 + 0x1a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + 0x1a)" ( (binary_expression "(int)puVar8 + 0x1a" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (unary_expression "-(ushort)(iVar10 != 0)" - (call_expression "(ushort)(iVar10 != 0)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) ))))) ;) (goto_statement "goto LAB_00088cd7;" goto statement_identifier ;) })) (if_statement "if ((int)param_1 < 0) goto LAB_00089040;" if (parenthesized_expression "((int)param_1 < 0)" ( (binary_expression "(int)param_1 < 0" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00089040;" goto statement_identifier ;)) (goto_statement "goto LAB_000890ca;" goto statement_identifier ;) })) (labeled_statement "LAB_00088da4:\n  uVar4 = 0x80;" statement_identifier : (expression_statement "uVar4 = 0x80;" (assignment_expression "uVar4 = 0x80" identifier = number_literal) ;)) (if_statement "if (0x7f < param_5 + 0x6a) {\n    uVar4 = param_5 + 0x6a;\n  }" if (parenthesized_expression "(0x7f < param_5 + 0x6a)" ( (binary_expression "0x7f < param_5 + 0x6a" number_literal < (binary_expression "param_5 + 0x6a" identifier + number_literal)) )) (compound_statement "{\n    uVar4 = param_5 + 0x6a;\n  }" { (expression_statement "uVar4 = param_5 + 0x6a;" (assignment_expression "uVar4 = param_5 + 0x6a" identifier = (binary_expression "param_5 + 0x6a" identifier + number_literal)) ;) })) (expression_statement "uVar7 = piVar3[2] * 2;" (assignment_expression "uVar7 = piVar3[2] * 2" identifier = (binary_expression "piVar3[2] * 2" (subscript_expression "piVar3[2]" identifier [ number_literal ]) * number_literal)) ;) (if_statement "if (uVar13 == uVar7 || SBORROW4(uVar13,uVar7) != (int)(uVar13 + piVar3[2] * -2) < 0) {\n    iVar11 = FUN_0005b490();\n    if (iVar11 != 0) {\n      return 7;\n    }\n    uVar12 = uVar13 * 2;\n    __s = (void *)FUN_000421f0();\n    if (__s == (void *)0x0) {\n      return 7;\n    }\n    memset(__s,0,uVar13 << 3);\n    if (0 < piVar3[3]) {\n      local_38 = 0;\n      puVar16 = puVar8;\n      do {\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      } while (local_38 < piVar3[3]);\n    }\n    FUN_00042800(puVar8);\n    piVar3[3] = uVar12;\n    piVar3[5] = (int)__s;\n    if (iVar10 < 0) {\n      uVar13 = 0x68;\n      uVar7 = 0xd;\n    }\n    else {\n      uVar7 = 0xd;\n      do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);\n      uVar13 = uVar7 * 8;\n    }\n    uVar12 = (uVar7 ^ uVar13 ^ (uint)param_3) % uVar12;\n  }" if (parenthesized_expression "(uVar13 == uVar7 || SBORROW4(uVar13,uVar7) != (int)(uVar13 + piVar3[2] * -2) < 0)" ( (binary_expression "uVar13 == uVar7 || SBORROW4(uVar13,uVar7) != (int)(uVar13 + piVar3[2] * -2) < 0" (binary_expression "uVar13 == uVar7" identifier == identifier) || (binary_expression "SBORROW4(uVar13,uVar7) != (int)(uVar13 + piVar3[2] * -2) < 0" (call_expression "SBORROW4(uVar13,uVar7)" identifier (argument_list "(uVar13,uVar7)" ( identifier , identifier ))) != (binary_expression "(int)(uVar13 + piVar3[2] * -2) < 0" (cast_expression "(int)(uVar13 + piVar3[2] * -2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar13 + piVar3[2] * -2)" ( (binary_expression "uVar13 + piVar3[2] * -2" identifier + (binary_expression "piVar3[2] * -2" (subscript_expression "piVar3[2]" identifier [ number_literal ]) * number_literal)) ))) < number_literal))) )) (compound_statement "{\n    iVar11 = FUN_0005b490();\n    if (iVar11 != 0) {\n      return 7;\n    }\n    uVar12 = uVar13 * 2;\n    __s = (void *)FUN_000421f0();\n    if (__s == (void *)0x0) {\n      return 7;\n    }\n    memset(__s,0,uVar13 << 3);\n    if (0 < piVar3[3]) {\n      local_38 = 0;\n      puVar16 = puVar8;\n      do {\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      } while (local_38 < piVar3[3]);\n    }\n    FUN_00042800(puVar8);\n    piVar3[3] = uVar12;\n    piVar3[5] = (int)__s;\n    if (iVar10 < 0) {\n      uVar13 = 0x68;\n      uVar7 = 0xd;\n    }\n    else {\n      uVar7 = 0xd;\n      do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);\n      uVar13 = uVar7 * 8;\n    }\n    uVar12 = (uVar7 ^ uVar13 ^ (uint)param_3) % uVar12;\n  }" { (expression_statement "iVar11 = FUN_0005b490();" (assignment_expression "iVar11 = FUN_0005b490()" identifier = (call_expression "FUN_0005b490()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar11 != 0) {\n      return 7;\n    }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n      return 7;\n    }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "uVar12 = uVar13 * 2;" (assignment_expression "uVar12 = uVar13 * 2" identifier = (binary_expression "uVar13 * 2" identifier * number_literal)) ;) (expression_statement "__s = (void *)FUN_000421f0();" (assignment_expression "__s = (void *)FUN_000421f0()" identifier = (cast_expression "(void *)FUN_000421f0()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000421f0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (__s == (void *)0x0) {\n      return 7;\n    }" if (parenthesized_expression "(__s == (void *)0x0)" ( (binary_expression "__s == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 7;\n    }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "memset(__s,0,uVar13 << 3);" (call_expression "memset(__s,0,uVar13 << 3)" identifier (argument_list "(__s,0,uVar13 << 3)" ( identifier , number_literal , (binary_expression "uVar13 << 3" identifier << number_literal) ))) ;) (if_statement "if (0 < piVar3[3]) {\n      local_38 = 0;\n      puVar16 = puVar8;\n      do {\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      } while (local_38 < piVar3[3]);\n    }" if (parenthesized_expression "(0 < piVar3[3])" ( (binary_expression "0 < piVar3[3]" number_literal < (subscript_expression "piVar3[3]" identifier [ number_literal ])) )) (compound_statement "{\n      local_38 = 0;\n      puVar16 = puVar8;\n      do {\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      } while (local_38 < piVar3[3]);\n    }" { (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "puVar16 = puVar8;" (assignment_expression "puVar16 = puVar8" identifier = identifier) ;) (do_statement "do {\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      } while (local_38 < piVar3[3]);" do (compound_statement "{\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      }" { (expression_statement "puVar15 = (undefined4 *)*puVar16;" (assignment_expression "puVar15 = (undefined4 *)*puVar16" identifier = (cast_expression "(undefined4 *)*puVar16" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier))) ;) (while_statement "while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }" while (parenthesized_expression "(puVar15 != (undefined4 *)0x0)" ( (binary_expression "puVar15 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }" { (expression_statement "*puVar16 = *puVar15;" (assignment_expression "*puVar16 = *puVar15" (pointer_expression "*puVar16" * identifier) = (pointer_expression "*puVar15" * identifier)) ;) (expression_statement "sVar6 = strlen((char *)(puVar15 + 10));" (assignment_expression "sVar6 = strlen((char *)(puVar15 + 10))" identifier = (call_expression "strlen((char *)(puVar15 + 10))" identifier (argument_list "((char *)(puVar15 + 10))" ( (cast_expression "(char *)(puVar15 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + 10)" ( (binary_expression "puVar15 + 10" identifier + number_literal) ))) )))) ;) (if_statement "if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }" if (parenthesized_expression "(sVar6 == 0)" ( (binary_expression "sVar6 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar13 = 0xd;\n          }" { (expression_statement "uVar13 = 0xd;" (assignment_expression "uVar13 = 0xd" identifier = number_literal) ;) }) (else_clause "else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }" else (compound_statement "{\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }" { (expression_statement "pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);" (assignment_expression "pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27)" identifier = (cast_expression "(byte *)((int)puVar15 + sVar6 + 0x27)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar15 + sVar6 + 0x27)" ( (binary_expression "(int)puVar15 + sVar6 + 0x27" (binary_expression "(int)puVar15 + sVar6" (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "uVar13 = 0xd;" (assignment_expression "uVar13 = 0xd" identifier = number_literal) ;) (do_statement "do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);" do (compound_statement "{\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            }" { (expression_statement "bVar2 = *pbVar14;" (assignment_expression "bVar2 = *pbVar14" identifier = (pointer_expression "*pbVar14" * identifier)) ;) (expression_statement "pbVar14 = pbVar14 + -1;" (assignment_expression "pbVar14 = pbVar14 + -1" identifier = (binary_expression "pbVar14 + -1" identifier + number_literal)) ;) (expression_statement "uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;" (assignment_expression "uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2" identifier = (binary_expression "uVar13 ^ uVar13 * 8 ^ (uint)bVar2" (binary_expression "uVar13 ^ uVar13 * 8" identifier ^ (binary_expression "uVar13 * 8" identifier * number_literal)) ^ (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((byte *)((int)puVar15 + 0x27) != pbVar14)" ( (binary_expression "(byte *)((int)puVar15 + 0x27) != pbVar14" (cast_expression "(byte *)((int)puVar15 + 0x27)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar15 + 0x27)" ( (binary_expression "(int)puVar15 + 0x27" (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) != identifier) )) ;) }))) (expression_statement "puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);" (assignment_expression "puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4)" identifier = (cast_expression "(undefined4 *)((int)__s + (uVar13 % uVar12) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + (uVar13 % uVar12) * 4)" ( (binary_expression "(int)__s + (uVar13 % uVar12) * 4" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uVar13 % uVar12) * 4" (parenthesized_expression "(uVar13 % uVar12)" ( (binary_expression "uVar13 % uVar12" identifier % identifier) )) * number_literal)) )))) ;) (expression_statement "*puVar15 = *puVar1;" (assignment_expression "*puVar15 = *puVar1" (pointer_expression "*puVar15" * identifier) = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "*puVar1 = puVar15;" (assignment_expression "*puVar1 = puVar15" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "puVar15 = (undefined4 *)*puVar16;" (assignment_expression "puVar15 = (undefined4 *)*puVar16" identifier = (cast_expression "(undefined4 *)*puVar16" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier))) ;) })) (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_38 < piVar3[3])" ( (binary_expression "local_38 < piVar3[3]" identifier < (subscript_expression "piVar3[3]" identifier [ number_literal ])) )) ;) })) (expression_statement "FUN_00042800(puVar8);" (call_expression "FUN_00042800(puVar8)" identifier (argument_list "(puVar8)" ( identifier ))) ;) (expression_statement "piVar3[3] = uVar12;" (assignment_expression "piVar3[3] = uVar12" (subscript_expression "piVar3[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar3[5] = (int)__s;" (assignment_expression "piVar3[5] = (int)__s" (subscript_expression "piVar3[5]" identifier [ number_literal ]) = (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (iVar10 < 0) {\n      uVar13 = 0x68;\n      uVar7 = 0xd;\n    }\n    else {\n      uVar7 = 0xd;\n      do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);\n      uVar13 = uVar7 * 8;\n    }" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (compound_statement "{\n      uVar13 = 0x68;\n      uVar7 = 0xd;\n    }" { (expression_statement "uVar13 = 0x68;" (assignment_expression "uVar13 = 0x68" identifier = number_literal) ;) (expression_statement "uVar7 = 0xd;" (assignment_expression "uVar7 = 0xd" identifier = number_literal) ;) }) (else_clause "else {\n      uVar7 = 0xd;\n      do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);\n      uVar13 = uVar7 * 8;\n    }" else (compound_statement "{\n      uVar7 = 0xd;\n      do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);\n      uVar13 = uVar7 * 8;\n    }" { (expression_statement "uVar7 = 0xd;" (assignment_expression "uVar7 = 0xd" identifier = number_literal) ;) (do_statement "do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);" do (compound_statement "{\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      }" { (expression_statement "pbVar14 = (byte *)((int)param_4 + iVar10);" (assignment_expression "pbVar14 = (byte *)((int)param_4 + iVar10)" identifier = (cast_expression "(byte *)((int)param_4 + iVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + iVar10)" ( (binary_expression "(int)param_4 + iVar10" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;" (assignment_expression "uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14" identifier = (binary_expression "uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14" (binary_expression "uVar7 ^ uVar7 * 8" identifier ^ (binary_expression "uVar7 * 8" identifier * number_literal)) ^ (binary_expression "(uint)*pbVar14" (parenthesized_expression "(uint)" ( identifier )) * identifier))) ;) }) while (parenthesized_expression "(iVar10 != -1)" ( (binary_expression "iVar10 != -1" identifier != number_literal) )) ;) (expression_statement "uVar13 = uVar7 * 8;" (assignment_expression "uVar13 = uVar7 * 8" identifier = (binary_expression "uVar7 * 8" identifier * number_literal)) ;) }))) (expression_statement "uVar12 = (uVar7 ^ uVar13 ^ (uint)param_3) % uVar12;" (assignment_expression "uVar12 = (uVar7 ^ uVar13 ^ (uint)param_3) % uVar12" identifier = (binary_expression "(uVar7 ^ uVar13 ^ (uint)param_3) % uVar12" (parenthesized_expression "(uVar7 ^ uVar13 ^ (uint)param_3)" ( (binary_expression "uVar7 ^ uVar13 ^ (uint)param_3" (binary_expression "uVar7 ^ uVar13" identifier ^ identifier) ^ (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier)) )) % identifier)) ;) })) (expression_statement "iVar10 = FUN_0005b490();" (assignment_expression "iVar10 = FUN_0005b490()" identifier = (call_expression "FUN_0005b490()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar10 != 0) || (puVar8 = (undefined4 *)FUN_000421f0(), puVar8 == (undefined4 *)0x0)) {\n    return 7;\n  }" if (parenthesized_expression "((iVar10 != 0) || (puVar8 = (undefined4 *)FUN_000421f0(), puVar8 == (undefined4 *)0x0))" ( (binary_expression "(iVar10 != 0) || (puVar8 = (undefined4 *)FUN_000421f0(), puVar8 == (undefined4 *)0x0)" (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) || (parenthesized_expression "(puVar8 = (undefined4 *)FUN_000421f0(), puVar8 == (undefined4 *)0x0)" ( (comma_expression "puVar8 = (undefined4 *)FUN_000421f0(), puVar8 == (undefined4 *)0x0" (assignment_expression "puVar8 = (undefined4 *)FUN_000421f0()" identifier = (cast_expression "(undefined4 *)FUN_000421f0()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000421f0()" identifier (argument_list "()" ( ))))) , (binary_expression "puVar8 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    return 7;\n  }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "*puVar8 = 0;" (assignment_expression "*puVar8 = 0" (pointer_expression "*puVar8" * identifier) = number_literal) ;) (expression_statement "puVar8[9] = 0;" (assignment_expression "puVar8[9] = 0" (subscript_expression "puVar8[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar16 = (undefined4 *)((uint)(puVar8 + 1) & 0xfffffffc);" (assignment_expression "puVar16 = (undefined4 *)((uint)(puVar8 + 1) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(puVar8 + 1) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(puVar8 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar8 + 1) & 0xfffffffc" (call_expression "(uint)(puVar8 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar8 + 1)" ( (binary_expression "puVar8 + 1" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar13 = (uint)((int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc))) >> 2;\n      uVar13 != 0; uVar13 = uVar13 - 1) {\n    *puVar16 = 0;\n    puVar16 = puVar16 + (uint)bVar18 * -2 + 1;\n  }" for ( (assignment_expression "uVar13 = (uint)((int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc))) >> 2" identifier = (binary_expression "(uint)((int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc))) >> 2" (call_expression "(uint)((int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc)))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc)))" ( (binary_expression "(int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc))" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc))" ( (binary_expression "0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc)" number_literal - (cast_expression "(int)((uint)(puVar8 + 1) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(puVar8 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar8 + 1) & 0xfffffffc" (call_expression "(uint)(puVar8 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar8 + 1)" ( (binary_expression "puVar8 + 1" identifier + number_literal) ))) & number_literal) )))) ))) ))) >> number_literal)) ; (binary_expression "uVar13 != 0" identifier != number_literal) ; (assignment_expression "uVar13 = uVar13 - 1" identifier = (binary_expression "uVar13 - 1" identifier - number_literal)) ) (compound_statement "{\n    *puVar16 = 0;\n    puVar16 = puVar16 + (uint)bVar18 * -2 + 1;\n  }" { (expression_statement "*puVar16 = 0;" (assignment_expression "*puVar16 = 0" (pointer_expression "*puVar16" * identifier) = number_literal) ;) (expression_statement "puVar16 = puVar16 + (uint)bVar18 * -2 + 1;" (assignment_expression "puVar16 = puVar16 + (uint)bVar18 * -2 + 1" identifier = (binary_expression "puVar16 + (uint)bVar18 * -2 + 1" (binary_expression "puVar16 + (uint)bVar18 * -2" identifier + (binary_expression "(uint)bVar18 * -2" (cast_expression "(uint)bVar18" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "puVar8[2] = uVar4;" (assignment_expression "puVar8[2] = uVar4" (subscript_expression "puVar8[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(byte *)(puVar8 + 10) = param_3;" (assignment_expression "*(byte *)(puVar8 + 10) = param_3" (pointer_expression "*(byte *)(puVar8 + 10)" * (cast_expression "(byte *)(puVar8 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 10)" ( (binary_expression "puVar8 + 10" identifier + number_literal) )))) = identifier) ;) (expression_statement "memcpy((void *)((int)puVar8 + 0x29),param_4,param_5);" (call_expression "memcpy((void *)((int)puVar8 + 0x29),param_4,param_5)" identifier (argument_list "((void *)((int)puVar8 + 0x29),param_4,param_5)" ( (cast_expression "(void *)((int)puVar8 + 0x29)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + 0x29)" ( (binary_expression "(int)puVar8 + 0x29" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , identifier , identifier ))) ;) (expression_statement "puVar8[5] = param_5;" (assignment_expression "puVar8[5] = param_5" (subscript_expression "puVar8[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)((int)puVar8 + param_5 + 0x29) = 0;" (assignment_expression "*(undefined1 *)((int)puVar8 + param_5 + 0x29) = 0" (pointer_expression "*(undefined1 *)((int)puVar8 + param_5 + 0x29)" * (cast_expression "(undefined1 *)((int)puVar8 + param_5 + 0x29)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + param_5 + 0x29)" ( (binary_expression "(int)puVar8 + param_5 + 0x29" (binary_expression "(int)puVar8 + param_5" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar8[4] = param_5 + 0x2a;" (assignment_expression "puVar8[4] = param_5 + 0x2a" (subscript_expression "puVar8[4]" identifier [ number_literal ]) = (binary_expression "param_5 + 0x2a" identifier + number_literal)) ;) (expression_statement "*puVar8 = *(undefined4 *)(piVar3[5] + uVar12 * 4);" (assignment_expression "*puVar8 = *(undefined4 *)(piVar3[5] + uVar12 * 4)" (pointer_expression "*puVar8" * identifier) = (pointer_expression "*(undefined4 *)(piVar3[5] + uVar12 * 4)" * (cast_expression "(undefined4 *)(piVar3[5] + uVar12 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3[5] + uVar12 * 4)" ( (binary_expression "piVar3[5] + uVar12 * 4" (subscript_expression "piVar3[5]" identifier [ number_literal ]) + (binary_expression "uVar12 * 4" identifier * number_literal)) ))))) ;) (expression_statement "*(undefined4 **)(piVar3[5] + uVar12 * 4) = puVar8;" (assignment_expression "*(undefined4 **)(piVar3[5] + uVar12 * 4) = puVar8" (pointer_expression "*(undefined4 **)(piVar3[5] + uVar12 * 4)" * (cast_expression "(undefined4 **)(piVar3[5] + uVar12 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3[5] + uVar12 * 4)" ( (binary_expression "piVar3[5] + uVar12 * 4" (subscript_expression "piVar3[5]" identifier [ number_literal ]) + (binary_expression "uVar12 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "piVar3[2] = piVar3[2] + 1;" (assignment_expression "piVar3[2] = piVar3[2] + 1" (subscript_expression "piVar3[2]" identifier [ number_literal ]) = (binary_expression "piVar3[2] + 1" (subscript_expression "piVar3[2]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (extraout_ECX == 0 && (uint)(0x7f < uVar9) <= (uint)-extraout_ECX) {\n    local_44 = (undefined1)((ulonglong)uVar19 >> 0x20);\n    *(undefined1 *)(puVar8[4] + (int)puVar8) = local_44;\n    local_50 = 1;\n  }\n  else {\n    local_50 = FUN_00046180();\n  }" if (parenthesized_expression "(extraout_ECX == 0 && (uint)(0x7f < uVar9) <= (uint)-extraout_ECX)" ( (binary_expression "extraout_ECX == 0 && (uint)(0x7f < uVar9) <= (uint)-extraout_ECX" (binary_expression "extraout_ECX == 0" identifier == number_literal) && (binary_expression "(uint)(0x7f < uVar9) <= (uint)-extraout_ECX" (call_expression "(uint)(0x7f < uVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x7f < uVar9)" ( (binary_expression "0x7f < uVar9" number_literal < identifier) ))) <= (binary_expression "(uint)-extraout_ECX" (parenthesized_expression "(uint)" ( identifier )) - identifier))) )) (compound_statement "{\n    local_44 = (undefined1)((ulonglong)uVar19 >> 0x20);\n    *(undefined1 *)(puVar8[4] + (int)puVar8) = local_44;\n    local_50 = 1;\n  }" { (expression_statement "local_44 = (undefined1)((ulonglong)uVar19 >> 0x20);" (assignment_expression "local_44 = (undefined1)((ulonglong)uVar19 >> 0x20)" identifier = (call_expression "(undefined1)((ulonglong)uVar19 >> 0x20)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((ulonglong)uVar19 >> 0x20)" ( (binary_expression "(ulonglong)uVar19 >> 0x20" (cast_expression "(ulonglong)uVar19" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*(undefined1 *)(puVar8[4] + (int)puVar8) = local_44;" (assignment_expression "*(undefined1 *)(puVar8[4] + (int)puVar8) = local_44" (pointer_expression "*(undefined1 *)(puVar8[4] + (int)puVar8)" * (cast_expression "(undefined1 *)(puVar8[4] + (int)puVar8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8[4] + (int)puVar8)" ( (binary_expression "puVar8[4] + (int)puVar8" (subscript_expression "puVar8[4]" identifier [ number_literal ]) + (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )))) = identifier) ;) (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    local_50 = FUN_00046180();\n  }" else (compound_statement "{\n    local_50 = FUN_00046180();\n  }" { (expression_statement "local_50 = FUN_00046180();" (assignment_expression "local_50 = FUN_00046180()" identifier = (call_expression "FUN_00046180()" identifier (argument_list "()" ( )))) ;) }))) (expression_statement "local_50 = local_50 + puVar8[4];" (assignment_expression "local_50 = local_50 + puVar8[4]" identifier = (binary_expression "local_50 + puVar8[4]" identifier + (subscript_expression "puVar8[4]" identifier [ number_literal ]))) ;) (expression_statement "puVar8[4] = local_50;" (assignment_expression "puVar8[4] = local_50" (subscript_expression "puVar8[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8[9] = extraout_ECX;" (assignment_expression "puVar8[9] = extraout_ECX" (subscript_expression "puVar8[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8[8] = uVar9;" (assignment_expression "puVar8[8] = uVar9" (subscript_expression "puVar8[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8[3] = local_50;" (assignment_expression "puVar8[3] = local_50" (subscript_expression "puVar8[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (*piVar3 != 1) {\n    local_50 = local_50 + 1;\n    puVar8[4] = local_50;\n    *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(*piVar3 != 0);\n  }" if (parenthesized_expression "(*piVar3 != 1)" ( (binary_expression "*piVar3 != 1" (pointer_expression "*piVar3" * identifier) != number_literal) )) (compound_statement "{\n    local_50 = local_50 + 1;\n    puVar8[4] = local_50;\n    *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(*piVar3 != 0);\n  }" { (expression_statement "local_50 = local_50 + 1;" (assignment_expression "local_50 = local_50 + 1" identifier = (binary_expression "local_50 + 1" identifier + number_literal)) ;) (expression_statement "puVar8[4] = local_50;" (assignment_expression "puVar8[4] = local_50" (subscript_expression "puVar8[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(ushort *)((int)puVar8 + 0x1a) = -(ushort)(*piVar3 != 0);" (assignment_expression "*(ushort *)((int)puVar8 + 0x1a) = -(ushort)(*piVar3 != 0)" (pointer_expression "*(ushort *)((int)puVar8 + 0x1a)" * (cast_expression "(ushort *)((int)puVar8 + 0x1a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + 0x1a)" ( (binary_expression "(int)puVar8 + 0x1a" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (unary_expression "-(ushort)(*piVar3 != 0)" - (call_expression "(ushort)(*piVar3 != 0)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(*piVar3 != 0)" ( (binary_expression "*piVar3 != 0" (pointer_expression "*piVar3" * identifier) != number_literal) ))))) ;) })) (labeled_statement "LAB_00088cd7:\n  if ((int)param_1 < 0) {\nLAB_00089040:\n    *(undefined1 *)(puVar8 + 6) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }" statement_identifier : (if_statement "if ((int)param_1 < 0) {\nLAB_00089040:\n    *(undefined1 *)(puVar8 + 6) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }" if (parenthesized_expression "((int)param_1 < 0)" ( (binary_expression "(int)param_1 < 0" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00089040:\n    *(undefined1 *)(puVar8 + 6) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }" { (labeled_statement "LAB_00089040:\n    *(undefined1 *)(puVar8 + 6) = 1;" statement_identifier : (expression_statement "*(undefined1 *)(puVar8 + 6) = 1;" (assignment_expression "*(undefined1 *)(puVar8 + 6) = 1" (pointer_expression "*(undefined1 *)(puVar8 + 6)" * (cast_expression "(undefined1 *)(puVar8 + 6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 6)" ( (binary_expression "puVar8 + 6" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "iVar10 = puVar8[4];" (assignment_expression "iVar10 = puVar8[4]" identifier = (subscript_expression "puVar8[4]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_00089047;" goto statement_identifier ;) }))) (if_statement "if (*piVar3 == 1) {\nLAB_000890ca:\n    *(undefined1 *)((int)puVar8 + 0x19) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }" if (parenthesized_expression "(*piVar3 == 1)" ( (binary_expression "*piVar3 == 1" (pointer_expression "*piVar3" * identifier) == number_literal) )) (compound_statement "{\nLAB_000890ca:\n    *(undefined1 *)((int)puVar8 + 0x19) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }" { (labeled_statement "LAB_000890ca:\n    *(undefined1 *)((int)puVar8 + 0x19) = 1;" statement_identifier : (expression_statement "*(undefined1 *)((int)puVar8 + 0x19) = 1;" (assignment_expression "*(undefined1 *)((int)puVar8 + 0x19) = 1" (pointer_expression "*(undefined1 *)((int)puVar8 + 0x19)" * (cast_expression "(undefined1 *)((int)puVar8 + 0x19)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + 0x19)" ( (binary_expression "(int)puVar8 + 0x19" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;)) (expression_statement "iVar10 = puVar8[4];" (assignment_expression "iVar10 = puVar8[4]" identifier = (subscript_expression "puVar8[4]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_00089047;" goto statement_identifier ;) })) (expression_statement "iVar10 = puVar8[4];" (assignment_expression "iVar10 = puVar8[4]" identifier = (subscript_expression "puVar8[4]" identifier [ number_literal ])) ;) (if_statement "if ((int)*(short *)((int)puVar8 + 0x1a) == param_1) {\nLAB_00088d4f:\n    if (!bVar17) goto LAB_00089047;\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n  }\n  else {\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n    if (*piVar3 == 0) {\n      puVar8[4] = iVar10 + 1;\n      *puVar5 = 1;\n      if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }\n      iVar10 = iVar10 + puVar8[4];\n      puVar8[7] = 0;\n      puVar8[4] = iVar10;\n      *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n      goto LAB_00088d4f;\n    }\n    *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n    param_2 = param_1;\n  }" if (parenthesized_expression "((int)*(short *)((int)puVar8 + 0x1a) == param_1)" ( (binary_expression "(int)*(short *)((int)puVar8 + 0x1a) == param_1" (cast_expression "(int)*(short *)((int)puVar8 + 0x1a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)puVar8 + 0x1a)" * (cast_expression "(short *)((int)puVar8 + 0x1a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + 0x1a)" ( (binary_expression "(int)puVar8 + 0x1a" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) == identifier) )) (compound_statement "{\nLAB_00088d4f:\n    if (!bVar17) goto LAB_00089047;\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n  }" { (labeled_statement "LAB_00088d4f:\n    if (!bVar17) goto LAB_00089047;" statement_identifier : (if_statement "if (!bVar17) goto LAB_00089047;" if (parenthesized_expression "(!bVar17)" ( (unary_expression "!bVar17" ! identifier) )) (goto_statement "goto LAB_00089047;" goto statement_identifier ;))) (expression_statement "puVar5 = (undefined1 *)((int)puVar8 + iVar10);" (assignment_expression "puVar5 = (undefined1 *)((int)puVar8 + iVar10)" identifier = (cast_expression "(undefined1 *)((int)puVar8 + iVar10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + iVar10)" ( (binary_expression "(int)puVar8 + iVar10" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) (else_clause "else {\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n    if (*piVar3 == 0) {\n      puVar8[4] = iVar10 + 1;\n      *puVar5 = 1;\n      if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }\n      iVar10 = iVar10 + puVar8[4];\n      puVar8[7] = 0;\n      puVar8[4] = iVar10;\n      *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n      goto LAB_00088d4f;\n    }\n    *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n    param_2 = param_1;\n  }" else (compound_statement "{\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n    if (*piVar3 == 0) {\n      puVar8[4] = iVar10 + 1;\n      *puVar5 = 1;\n      if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }\n      iVar10 = iVar10 + puVar8[4];\n      puVar8[7] = 0;\n      puVar8[4] = iVar10;\n      *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n      goto LAB_00088d4f;\n    }\n    *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n    param_2 = param_1;\n  }" { (expression_statement "puVar5 = (undefined1 *)((int)puVar8 + iVar10);" (assignment_expression "puVar5 = (undefined1 *)((int)puVar8 + iVar10)" identifier = (cast_expression "(undefined1 *)((int)puVar8 + iVar10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + iVar10)" ( (binary_expression "(int)puVar8 + iVar10" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (if_statement "if (*piVar3 == 0) {\n      puVar8[4] = iVar10 + 1;\n      *puVar5 = 1;\n      if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }\n      iVar10 = iVar10 + puVar8[4];\n      puVar8[7] = 0;\n      puVar8[4] = iVar10;\n      *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n      goto LAB_00088d4f;\n    }" if (parenthesized_expression "(*piVar3 == 0)" ( (binary_expression "*piVar3 == 0" (pointer_expression "*piVar3" * identifier) == number_literal) )) (compound_statement "{\n      puVar8[4] = iVar10 + 1;\n      *puVar5 = 1;\n      if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }\n      iVar10 = iVar10 + puVar8[4];\n      puVar8[7] = 0;\n      puVar8[4] = iVar10;\n      *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n      goto LAB_00088d4f;\n    }" { (expression_statement "puVar8[4] = iVar10 + 1;" (assignment_expression "puVar8[4] = iVar10 + 1" (subscript_expression "puVar8[4]" identifier [ number_literal ]) = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "*puVar5 = 1;" (assignment_expression "*puVar5 = 1" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (if_statement "if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }" if (parenthesized_expression "((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1))" ( (binary_expression "(int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)" (binary_expression "(int)param_1 < 0" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) || (binary_expression "(uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)" (binary_expression "(uint)-((int)param_1 >> 0x1f)" (parenthesized_expression "(uint)" ( identifier )) - (parenthesized_expression "((int)param_1 >> 0x1f)" ( (binary_expression "(int)param_1 >> 0x1f" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) < (call_expression "(uint)(0x7f < param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x7f < param_1)" ( (binary_expression "0x7f < param_1" number_literal < identifier) ))))) )) (compound_statement "{\n        iVar10 = FUN_00046180();\n      }" { (expression_statement "iVar10 = FUN_00046180();" (assignment_expression "iVar10 = FUN_00046180()" identifier = (call_expression "FUN_00046180()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }" else (compound_statement "{\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }" { (expression_statement "*(char *)(puVar8[4] + (int)puVar8) = (char)param_1;" (assignment_expression "*(char *)(puVar8[4] + (int)puVar8) = (char)param_1" (pointer_expression "*(char *)(puVar8[4] + (int)puVar8)" * (cast_expression "(char *)(puVar8[4] + (int)puVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8[4] + (int)puVar8)" ( (binary_expression "puVar8[4] + (int)puVar8" (subscript_expression "puVar8[4]" identifier [ number_literal ]) + (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )))) = (cast_expression "(char)param_1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" identifier = number_literal) ;) }))) (expression_statement "iVar10 = iVar10 + puVar8[4];" (assignment_expression "iVar10 = iVar10 + puVar8[4]" identifier = (binary_expression "iVar10 + puVar8[4]" identifier + (subscript_expression "puVar8[4]" identifier [ number_literal ]))) ;) (expression_statement "puVar8[7] = 0;" (assignment_expression "puVar8[7] = 0" (subscript_expression "puVar8[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[4] = iVar10;" (assignment_expression "puVar8[4] = iVar10" (subscript_expression "puVar8[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;" (assignment_expression "*(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1" (pointer_expression "*(undefined2 *)((int)puVar8 + 0x1a)" * (cast_expression "(undefined2 *)((int)puVar8 + 0x1a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + 0x1a)" ( (binary_expression "(int)puVar8 + 0x1a" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(undefined2)param_1" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (goto_statement "goto LAB_00088d4f;" goto statement_identifier ;) })) (expression_statement "*(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;" (assignment_expression "*(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1" (pointer_expression "*(undefined2 *)((int)puVar8 + 0x1a)" * (cast_expression "(undefined2 *)((int)puVar8 + 0x1a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + 0x1a)" ( (binary_expression "(int)puVar8 + 0x1a" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(undefined2)param_1" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (expression_statement "param_2 = param_1;" (assignment_expression "param_2 = param_1" identifier = identifier) ;) }))) (expression_statement "uVar13 = (param_2 - puVar8[7]) + 2;" (assignment_expression "uVar13 = (param_2 - puVar8[7]) + 2" identifier = (binary_expression "(param_2 - puVar8[7]) + 2" (parenthesized_expression "(param_2 - puVar8[7])" ( (binary_expression "param_2 - puVar8[7]" identifier - (subscript_expression "puVar8[7]" identifier [ number_literal ])) )) + number_literal)) ;) (if_statement "if ((int)uVar13 < 0 || (uint)-((int)uVar13 >> 0x1f) < (uint)(0x7f < uVar13)) {\n    iVar10 = FUN_00046180();\n  }\n  else {\n    *puVar5 = (char)uVar13;\n    iVar10 = 1;\n  }" if (parenthesized_expression "((int)uVar13 < 0 || (uint)-((int)uVar13 >> 0x1f) < (uint)(0x7f < uVar13))" ( (binary_expression "(int)uVar13 < 0 || (uint)-((int)uVar13 >> 0x1f) < (uint)(0x7f < uVar13)" (binary_expression "(int)uVar13 < 0" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) || (binary_expression "(uint)-((int)uVar13 >> 0x1f) < (uint)(0x7f < uVar13)" (binary_expression "(uint)-((int)uVar13 >> 0x1f)" (parenthesized_expression "(uint)" ( identifier )) - (parenthesized_expression "((int)uVar13 >> 0x1f)" ( (binary_expression "(int)uVar13 >> 0x1f" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) < (call_expression "(uint)(0x7f < uVar13)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x7f < uVar13)" ( (binary_expression "0x7f < uVar13" number_literal < identifier) ))))) )) (compound_statement "{\n    iVar10 = FUN_00046180();\n  }" { (expression_statement "iVar10 = FUN_00046180();" (assignment_expression "iVar10 = FUN_00046180()" identifier = (call_expression "FUN_00046180()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n    *puVar5 = (char)uVar13;\n    iVar10 = 1;\n  }" else (compound_statement "{\n    *puVar5 = (char)uVar13;\n    iVar10 = 1;\n  }" { (expression_statement "*puVar5 = (char)uVar13;" (assignment_expression "*puVar5 = (char)uVar13" (pointer_expression "*puVar5" * identifier) = (cast_expression "(char)uVar13" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" identifier = number_literal) ;) }))) (expression_statement "iVar10 = iVar10 + puVar8[4];" (assignment_expression "iVar10 = iVar10 + puVar8[4]" identifier = (binary_expression "iVar10 + puVar8[4]" identifier + (subscript_expression "puVar8[4]" identifier [ number_literal ]))) ;) (expression_statement "puVar8[4] = iVar10;" (assignment_expression "puVar8[4] = iVar10" (subscript_expression "puVar8[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8[7] = param_2;" (assignment_expression "puVar8[7] = param_2" (subscript_expression "puVar8[7]" identifier [ number_literal ]) = identifier) ;) (labeled_statement "LAB_00089047:\n  *(int *)piVar3[1] = *(int *)piVar3[1] + iVar10 + local_50;" statement_identifier : (expression_statement "*(int *)piVar3[1] = *(int *)piVar3[1] + iVar10 + local_50;" (assignment_expression "*(int *)piVar3[1] = *(int *)piVar3[1] + iVar10 + local_50" (pointer_expression "*(int *)piVar3[1]" * (cast_expression "(int *)piVar3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[1]" identifier [ number_literal ]))) = (binary_expression "*(int *)piVar3[1] + iVar10 + local_50" (binary_expression "*(int *)piVar3[1] + iVar10" (pointer_expression "*(int *)piVar3[1]" * (cast_expression "(int *)piVar3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[1]" identifier [ number_literal ]))) + identifier) + identifier)) ;)) (return_statement "return 0;" return number_literal ;) (labeled_statement "LAB_00088bf0:\n  puVar16 = (undefined4 *)*puVar16;" statement_identifier : (expression_statement "puVar16 = (undefined4 *)*puVar16;" (assignment_expression "puVar16 = (undefined4 *)*puVar16" identifier = (cast_expression "(undefined4 *)*puVar16" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier))) ;)) (if_statement "if (puVar16 == (undefined4 *)0x0) goto LAB_00088da4;" if (parenthesized_expression "(puVar16 == (undefined4 *)0x0)" ( (binary_expression "puVar16 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00088da4;" goto statement_identifier ;)) (goto_statement "goto LAB_00088bfa;" goto statement_identifier ;) })))
(translation_unit "int sqlite3Fts5HashWrite\n              (Fts5Hash *pHash,i64 iRowid,int iCol,int iPos,char bByte,char *pToken,int nToken)\n\n{\n  undefined4 *puVar1;\n  byte bVar2;\n  int *piVar3;\n  uint uVar4;\n  uchar *p;\n  void *__s;\n  size_t sVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  int extraout_ECX;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  byte *pbVar13;\n  undefined4 *puVar14;\n  undefined4 *puVar15;\n  bool bVar16;\n  byte bVar17;\n  undefined8 uVar18;\n  Fts5Hash *in_stack_ffffffa4;\n  Fts5HashEntry *in_stack_ffffffa8;\n  Fts5HashEntry *in_stack_ffffffac;\n  int local_50;\n  uchar local_44;\n  int local_38;\n  undefined1 local_34;\n  \n  bVar17 = 0;\n  uVar18 = __x86_get_pc_thunk_di();\n  uVar8 = (uint)((ulonglong)uVar18 >> 0x20);\n  piVar3 = (int *)uVar18;\n  bVar16 = *piVar3 == 0;\n  uVar12 = piVar3[3];\n  iVar9 = iPos + -1;\n  if (iVar9 < 0) {\n    uVar11 = 0x68;\n    uVar4 = 0xd;\n  }\n  else {\n    uVar4 = 0xd;\n    iVar10 = iVar9;\n    do {\n      pbVar13 = (byte *)(iCol + iVar10);\n      iVar10 = iVar10 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar13;\n    } while (iVar10 != -1);\n    uVar11 = uVar4 * 8;\n  }\n  uVar11 = (uVar4 ^ uVar11 ^ iRowid._4_4_ & 0xff) % uVar12;\n  puVar7 = (undefined4 *)piVar3[5];\n  puVar15 = (undefined4 *)puVar7[uVar11];\n  uVar4 = iRowid._4_4_;\n  if (puVar15 != (undefined4 *)0x0) {\nLAB_00088bfa:\n    if ((*(char *)(puVar15 + 10) != (char)uVar4) || (puVar15[5] != iPos)) goto LAB_00088bf0;\n    iVar10 = memcmp((void *)((int)puVar15 + 0x29),(void *)iCol,iPos);\n    uVar4 = uVar4 & 0xff;\n    if (iVar10 != 0) goto LAB_00088bf0;\n    iVar9 = puVar15[2];\n    local_50 = puVar15[4];\n    puVar7 = puVar15;\n    if (iVar9 - local_50 < 0x16) {\n      iVar10 = sqlite3_initialize();\n      if (iVar10 != 0) {\n        return 7;\n      }\n      puVar7 = (undefined4 *)sqlite3Realloc(puVar15,CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n      if (puVar7 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar7[2] = iVar9 * 2;\n      puVar14 = (undefined4 *)(uVar11 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar14; puVar1 != puVar15; puVar1 = (undefined4 *)*puVar1) {\n        puVar14 = puVar1;\n      }\n      *puVar14 = puVar7;\n      local_50 = puVar7[4];\n    }\n    local_50 = -local_50;\n    if (puVar7[9] == extraout_ECX && puVar7[8] == uVar8) goto LAB_00088cd7;\n    fts5HashAddPoslistSize(in_stack_ffffffa4,in_stack_ffffffa8,in_stack_ffffffac);\n    uVar12 = uVar8 - puVar7[8];\n    iVar9 = (extraout_ECX - puVar7[9]) - (uint)(uVar8 < (uint)puVar7[8]);\n    if (iVar9 == 0 && (uint)(0x7f < uVar12) <= (uint)-iVar9) {\n      *(uchar *)(puVar7[4] + (int)puVar7) = (uchar)uVar12;\n      iVar9 = 1;\n    }\n    else {\n      iVar9 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                               CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n    }\n    iVar9 = iVar9 + puVar7[4];\n    puVar7[4] = iVar9;\n    puVar7[8] = uVar8;\n    puVar7[9] = extraout_ECX;\n    puVar7[3] = iVar9;\n    if (*piVar3 != 1) {\n      bVar16 = true;\n      puVar7[4] = iVar9 + 1;\n      iVar9 = *piVar3;\n      puVar7[7] = 0;\n      *(ushort *)((int)puVar7 + 0x1a) = -(ushort)(iVar9 != 0);\n      goto LAB_00088cd7;\n    }\n    if ((int)pHash < 0) goto LAB_00089040;\n    goto LAB_000890ca;\n  }\nLAB_00088da4:\n  uVar4 = 0x80;\n  if (0x7f < iPos + 0x6aU) {\n    uVar4 = iPos + 0x6aU;\n  }\n  uVar6 = piVar3[2] * 2;\n  if (uVar12 == uVar6 || SBORROW4(uVar12,uVar6) != (int)(uVar12 + piVar3[2] * -2) < 0) {\n    iVar10 = sqlite3_initialize();\n    if (iVar10 != 0) {\n      return 7;\n    }\n    uVar11 = uVar12 * 2;\n    __s = sqlite3Malloc(CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n    if (__s == (void *)0x0) {\n      return 7;\n    }\n    memset(__s,0,uVar12 << 3);\n    if (0 < piVar3[3]) {\n      local_38 = 0;\n      puVar15 = puVar7;\n      do {\n        puVar14 = (undefined4 *)*puVar15;\n        while (puVar14 != (undefined4 *)0x0) {\n          *puVar15 = *puVar14;\n          sVar5 = strlen((char *)(puVar14 + 10));\n          if (sVar5 == 0) {\n            uVar12 = 0xd;\n          }\n          else {\n            pbVar13 = (byte *)((int)puVar14 + sVar5 + 0x27);\n            uVar12 = 0xd;\n            do {\n              bVar2 = *pbVar13;\n              pbVar13 = pbVar13 + -1;\n              uVar12 = uVar12 ^ uVar12 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar14 + 0x27) != pbVar13);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar12 % uVar11) * 4);\n          *puVar14 = *puVar1;\n          *puVar1 = puVar14;\n          puVar14 = (undefined4 *)*puVar15;\n        }\n        local_38 = local_38 + 1;\n        puVar15 = puVar15 + 1;\n      } while (local_38 < piVar3[3]);\n    }\n    sqlite3_free(puVar7);\n    piVar3[3] = uVar11;\n    piVar3[5] = (int)__s;\n    if (iVar9 < 0) {\n      uVar12 = 0x68;\n      uVar6 = 0xd;\n    }\n    else {\n      uVar6 = 0xd;\n      do {\n        pbVar13 = (byte *)(iCol + iVar9);\n        iVar9 = iVar9 + -1;\n        uVar6 = uVar6 ^ uVar6 * 8 ^ (uint)*pbVar13;\n      } while (iVar9 != -1);\n      uVar12 = uVar6 * 8;\n    }\n    uVar11 = (uVar6 ^ uVar12 ^ iRowid._4_4_ & 0xff) % uVar11;\n  }\n  iVar9 = sqlite3_initialize();\n  if ((iVar9 != 0) ||\n     (puVar7 = (undefined4 *)sqlite3Malloc(CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4)),\n     puVar7 == (undefined4 *)0x0)) {\n    return 7;\n  }\n  *puVar7 = 0;\n  puVar7[9] = 0;\n  puVar15 = (undefined4 *)((uint)(puVar7 + 1) & 0xfffffffc);\n  for (uVar12 = (uint)((int)puVar7 + (0x28 - (int)((uint)(puVar7 + 1) & 0xfffffffc))) >> 2;\n      uVar12 != 0; uVar12 = uVar12 - 1) {\n    *puVar15 = 0;\n    puVar15 = puVar15 + (uint)bVar17 * -2 + 1;\n  }\n  local_34 = (undefined1)((ulonglong)iRowid >> 0x20);\n  puVar7[2] = uVar4;\n  *(undefined1 *)(puVar7 + 10) = local_34;\n  memcpy((void *)((int)puVar7 + 0x29),(void *)iCol,iPos);\n  puVar7[5] = iPos;\n  *(undefined1 *)((int)puVar7 + iPos + 0x29) = 0;\n  puVar7[4] = iPos + 0x2a;\n  *puVar7 = *(undefined4 *)(piVar3[5] + uVar11 * 4);\n  *(undefined4 **)(piVar3[5] + uVar11 * 4) = puVar7;\n  piVar3[2] = piVar3[2] + 1;\n  if (extraout_ECX == 0 && (uint)(0x7f < uVar8) <= (uint)-extraout_ECX) {\n    local_44 = (uchar)((ulonglong)uVar18 >> 0x20);\n    *(uchar *)(puVar7[4] + (int)puVar7) = local_44;\n    local_50 = 1;\n  }\n  else {\n    local_50 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                                CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n  }\n  local_50 = local_50 + puVar7[4];\n  puVar7[4] = local_50;\n  puVar7[9] = extraout_ECX;\n  puVar7[8] = uVar8;\n  puVar7[3] = local_50;\n  if (*piVar3 != 1) {\n    local_50 = local_50 + 1;\n    puVar7[4] = local_50;\n    *(ushort *)((int)puVar7 + 0x1a) = -(ushort)(*piVar3 != 0);\n  }\nLAB_00088cd7:\n  if ((int)pHash < 0) {\nLAB_00089040:\n    *(undefined1 *)(puVar7 + 6) = 1;\n    iVar9 = puVar7[4];\n    goto LAB_00089047;\n  }\n  if (*piVar3 == 1) {\nLAB_000890ca:\n    *(undefined1 *)((int)puVar7 + 0x19) = 1;\n    iVar9 = puVar7[4];\n    goto LAB_00089047;\n  }\n  iVar9 = puVar7[4];\n  if ((Fts5Hash *)(int)*(short *)((int)puVar7 + 0x1a) == pHash) {\nLAB_00088d4f:\n    if (!bVar16) goto LAB_00089047;\n    p = (uchar *)((int)puVar7 + iVar9);\n  }\n  else {\n    p = (uchar *)((int)puVar7 + iVar9);\n    if (*piVar3 == 0) {\n      puVar7[4] = iVar9 + 1;\n      *p = '\x01';\n      if ((int)pHash < 0 || (uint)-((int)pHash >> 0x1f) < (uint)((Fts5Hash *)0x7f < pHash)) {\n        iVar9 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                                 CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n      }\n      else {\n        *(uchar *)(puVar7[4] + (int)puVar7) = (uchar)pHash;\n        iVar9 = 1;\n      }\n      iVar9 = iVar9 + puVar7[4];\n      puVar7[7] = 0;\n      puVar7[4] = iVar9;\n      *(undefined2 *)((int)puVar7 + 0x1a) = pHash._0_2_;\n      goto LAB_00088d4f;\n    }\n    *(undefined2 *)((int)puVar7 + 0x1a) = pHash._0_2_;\n    iRowid._0_4_ = pHash;\n  }\n  uVar12 = (int)(Fts5Hash *)iRowid + (2 - puVar7[7]);\n  if ((int)uVar12 < 0 || (uint)-((int)uVar12 >> 0x1f) < (uint)(0x7f < uVar12)) {\n    iVar9 = sqlite3PutVarint(p,CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n  }\n  else {\n    *p = (uchar)uVar12;\n    iVar9 = 1;\n  }\n  iVar9 = iVar9 + puVar7[4];\n  puVar7[4] = iVar9;\n  puVar7[7] = (Fts5Hash *)iRowid;\nLAB_00089047:\n  *(int *)piVar3[1] = *(int *)piVar3[1] + iVar9 + local_50;\n  return 0;\nLAB_00088bf0:\n  puVar15 = (undefined4 *)*puVar15;\n  if (puVar15 == (undefined4 *)0x0) goto LAB_00088da4;\n  goto LAB_00088bfa;\n}\n\n" (function_definition "int sqlite3Fts5HashWrite\n              (Fts5Hash *pHash,i64 iRowid,int iCol,int iPos,char bByte,char *pToken,int nToken)\n\n{\n  undefined4 *puVar1;\n  byte bVar2;\n  int *piVar3;\n  uint uVar4;\n  uchar *p;\n  void *__s;\n  size_t sVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  int extraout_ECX;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  byte *pbVar13;\n  undefined4 *puVar14;\n  undefined4 *puVar15;\n  bool bVar16;\n  byte bVar17;\n  undefined8 uVar18;\n  Fts5Hash *in_stack_ffffffa4;\n  Fts5HashEntry *in_stack_ffffffa8;\n  Fts5HashEntry *in_stack_ffffffac;\n  int local_50;\n  uchar local_44;\n  int local_38;\n  undefined1 local_34;\n  \n  bVar17 = 0;\n  uVar18 = __x86_get_pc_thunk_di();\n  uVar8 = (uint)((ulonglong)uVar18 >> 0x20);\n  piVar3 = (int *)uVar18;\n  bVar16 = *piVar3 == 0;\n  uVar12 = piVar3[3];\n  iVar9 = iPos + -1;\n  if (iVar9 < 0) {\n    uVar11 = 0x68;\n    uVar4 = 0xd;\n  }\n  else {\n    uVar4 = 0xd;\n    iVar10 = iVar9;\n    do {\n      pbVar13 = (byte *)(iCol + iVar10);\n      iVar10 = iVar10 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar13;\n    } while (iVar10 != -1);\n    uVar11 = uVar4 * 8;\n  }\n  uVar11 = (uVar4 ^ uVar11 ^ iRowid._4_4_ & 0xff) % uVar12;\n  puVar7 = (undefined4 *)piVar3[5];\n  puVar15 = (undefined4 *)puVar7[uVar11];\n  uVar4 = iRowid._4_4_;\n  if (puVar15 != (undefined4 *)0x0) {\nLAB_00088bfa:\n    if ((*(char *)(puVar15 + 10) != (char)uVar4) || (puVar15[5] != iPos)) goto LAB_00088bf0;\n    iVar10 = memcmp((void *)((int)puVar15 + 0x29),(void *)iCol,iPos);\n    uVar4 = uVar4 & 0xff;\n    if (iVar10 != 0) goto LAB_00088bf0;\n    iVar9 = puVar15[2];\n    local_50 = puVar15[4];\n    puVar7 = puVar15;\n    if (iVar9 - local_50 < 0x16) {\n      iVar10 = sqlite3_initialize();\n      if (iVar10 != 0) {\n        return 7;\n      }\n      puVar7 = (undefined4 *)sqlite3Realloc(puVar15,CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n      if (puVar7 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar7[2] = iVar9 * 2;\n      puVar14 = (undefined4 *)(uVar11 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar14; puVar1 != puVar15; puVar1 = (undefined4 *)*puVar1) {\n        puVar14 = puVar1;\n      }\n      *puVar14 = puVar7;\n      local_50 = puVar7[4];\n    }\n    local_50 = -local_50;\n    if (puVar7[9] == extraout_ECX && puVar7[8] == uVar8) goto LAB_00088cd7;\n    fts5HashAddPoslistSize(in_stack_ffffffa4,in_stack_ffffffa8,in_stack_ffffffac);\n    uVar12 = uVar8 - puVar7[8];\n    iVar9 = (extraout_ECX - puVar7[9]) - (uint)(uVar8 < (uint)puVar7[8]);\n    if (iVar9 == 0 && (uint)(0x7f < uVar12) <= (uint)-iVar9) {\n      *(uchar *)(puVar7[4] + (int)puVar7) = (uchar)uVar12;\n      iVar9 = 1;\n    }\n    else {\n      iVar9 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                               CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n    }\n    iVar9 = iVar9 + puVar7[4];\n    puVar7[4] = iVar9;\n    puVar7[8] = uVar8;\n    puVar7[9] = extraout_ECX;\n    puVar7[3] = iVar9;\n    if (*piVar3 != 1) {\n      bVar16 = true;\n      puVar7[4] = iVar9 + 1;\n      iVar9 = *piVar3;\n      puVar7[7] = 0;\n      *(ushort *)((int)puVar7 + 0x1a) = -(ushort)(iVar9 != 0);\n      goto LAB_00088cd7;\n    }\n    if ((int)pHash < 0) goto LAB_00089040;\n    goto LAB_000890ca;\n  }\nLAB_00088da4:\n  uVar4 = 0x80;\n  if (0x7f < iPos + 0x6aU) {\n    uVar4 = iPos + 0x6aU;\n  }\n  uVar6 = piVar3[2] * 2;\n  if (uVar12 == uVar6 || SBORROW4(uVar12,uVar6) != (int)(uVar12 + piVar3[2] * -2) < 0) {\n    iVar10 = sqlite3_initialize();\n    if (iVar10 != 0) {\n      return 7;\n    }\n    uVar11 = uVar12 * 2;\n    __s = sqlite3Malloc(CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n    if (__s == (void *)0x0) {\n      return 7;\n    }\n    memset(__s,0,uVar12 << 3);\n    if (0 < piVar3[3]) {\n      local_38 = 0;\n      puVar15 = puVar7;\n      do {\n        puVar14 = (undefined4 *)*puVar15;\n        while (puVar14 != (undefined4 *)0x0) {\n          *puVar15 = *puVar14;\n          sVar5 = strlen((char *)(puVar14 + 10));\n          if (sVar5 == 0) {\n            uVar12 = 0xd;\n          }\n          else {\n            pbVar13 = (byte *)((int)puVar14 + sVar5 + 0x27);\n            uVar12 = 0xd;\n            do {\n              bVar2 = *pbVar13;\n              pbVar13 = pbVar13 + -1;\n              uVar12 = uVar12 ^ uVar12 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar14 + 0x27) != pbVar13);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar12 % uVar11) * 4);\n          *puVar14 = *puVar1;\n          *puVar1 = puVar14;\n          puVar14 = (undefined4 *)*puVar15;\n        }\n        local_38 = local_38 + 1;\n        puVar15 = puVar15 + 1;\n      } while (local_38 < piVar3[3]);\n    }\n    sqlite3_free(puVar7);\n    piVar3[3] = uVar11;\n    piVar3[5] = (int)__s;\n    if (iVar9 < 0) {\n      uVar12 = 0x68;\n      uVar6 = 0xd;\n    }\n    else {\n      uVar6 = 0xd;\n      do {\n        pbVar13 = (byte *)(iCol + iVar9);\n        iVar9 = iVar9 + -1;\n        uVar6 = uVar6 ^ uVar6 * 8 ^ (uint)*pbVar13;\n      } while (iVar9 != -1);\n      uVar12 = uVar6 * 8;\n    }\n    uVar11 = (uVar6 ^ uVar12 ^ iRowid._4_4_ & 0xff) % uVar11;\n  }\n  iVar9 = sqlite3_initialize();\n  if ((iVar9 != 0) ||\n     (puVar7 = (undefined4 *)sqlite3Malloc(CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4)),\n     puVar7 == (undefined4 *)0x0)) {\n    return 7;\n  }\n  *puVar7 = 0;\n  puVar7[9] = 0;\n  puVar15 = (undefined4 *)((uint)(puVar7 + 1) & 0xfffffffc);\n  for (uVar12 = (uint)((int)puVar7 + (0x28 - (int)((uint)(puVar7 + 1) & 0xfffffffc))) >> 2;\n      uVar12 != 0; uVar12 = uVar12 - 1) {\n    *puVar15 = 0;\n    puVar15 = puVar15 + (uint)bVar17 * -2 + 1;\n  }\n  local_34 = (undefined1)((ulonglong)iRowid >> 0x20);\n  puVar7[2] = uVar4;\n  *(undefined1 *)(puVar7 + 10) = local_34;\n  memcpy((void *)((int)puVar7 + 0x29),(void *)iCol,iPos);\n  puVar7[5] = iPos;\n  *(undefined1 *)((int)puVar7 + iPos + 0x29) = 0;\n  puVar7[4] = iPos + 0x2a;\n  *puVar7 = *(undefined4 *)(piVar3[5] + uVar11 * 4);\n  *(undefined4 **)(piVar3[5] + uVar11 * 4) = puVar7;\n  piVar3[2] = piVar3[2] + 1;\n  if (extraout_ECX == 0 && (uint)(0x7f < uVar8) <= (uint)-extraout_ECX) {\n    local_44 = (uchar)((ulonglong)uVar18 >> 0x20);\n    *(uchar *)(puVar7[4] + (int)puVar7) = local_44;\n    local_50 = 1;\n  }\n  else {\n    local_50 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                                CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n  }\n  local_50 = local_50 + puVar7[4];\n  puVar7[4] = local_50;\n  puVar7[9] = extraout_ECX;\n  puVar7[8] = uVar8;\n  puVar7[3] = local_50;\n  if (*piVar3 != 1) {\n    local_50 = local_50 + 1;\n    puVar7[4] = local_50;\n    *(ushort *)((int)puVar7 + 0x1a) = -(ushort)(*piVar3 != 0);\n  }\nLAB_00088cd7:\n  if ((int)pHash < 0) {\nLAB_00089040:\n    *(undefined1 *)(puVar7 + 6) = 1;\n    iVar9 = puVar7[4];\n    goto LAB_00089047;\n  }\n  if (*piVar3 == 1) {\nLAB_000890ca:\n    *(undefined1 *)((int)puVar7 + 0x19) = 1;\n    iVar9 = puVar7[4];\n    goto LAB_00089047;\n  }\n  iVar9 = puVar7[4];\n  if ((Fts5Hash *)(int)*(short *)((int)puVar7 + 0x1a) == pHash) {\nLAB_00088d4f:\n    if (!bVar16) goto LAB_00089047;\n    p = (uchar *)((int)puVar7 + iVar9);\n  }\n  else {\n    p = (uchar *)((int)puVar7 + iVar9);\n    if (*piVar3 == 0) {\n      puVar7[4] = iVar9 + 1;\n      *p = '\x01';\n      if ((int)pHash < 0 || (uint)-((int)pHash >> 0x1f) < (uint)((Fts5Hash *)0x7f < pHash)) {\n        iVar9 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                                 CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n      }\n      else {\n        *(uchar *)(puVar7[4] + (int)puVar7) = (uchar)pHash;\n        iVar9 = 1;\n      }\n      iVar9 = iVar9 + puVar7[4];\n      puVar7[7] = 0;\n      puVar7[4] = iVar9;\n      *(undefined2 *)((int)puVar7 + 0x1a) = pHash._0_2_;\n      goto LAB_00088d4f;\n    }\n    *(undefined2 *)((int)puVar7 + 0x1a) = pHash._0_2_;\n    iRowid._0_4_ = pHash;\n  }\n  uVar12 = (int)(Fts5Hash *)iRowid + (2 - puVar7[7]);\n  if ((int)uVar12 < 0 || (uint)-((int)uVar12 >> 0x1f) < (uint)(0x7f < uVar12)) {\n    iVar9 = sqlite3PutVarint(p,CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n  }\n  else {\n    *p = (uchar)uVar12;\n    iVar9 = 1;\n  }\n  iVar9 = iVar9 + puVar7[4];\n  puVar7[4] = iVar9;\n  puVar7[7] = (Fts5Hash *)iRowid;\nLAB_00089047:\n  *(int *)piVar3[1] = *(int *)piVar3[1] + iVar9 + local_50;\n  return 0;\nLAB_00088bf0:\n  puVar15 = (undefined4 *)*puVar15;\n  if (puVar15 == (undefined4 *)0x0) goto LAB_00088da4;\n  goto LAB_00088bfa;\n}" primitive_type (function_declarator "sqlite3Fts5HashWrite\n              (Fts5Hash *pHash,i64 iRowid,int iCol,int iPos,char bByte,char *pToken,int nToken)" identifier (parameter_list "(Fts5Hash *pHash,i64 iRowid,int iCol,int iPos,char bByte,char *pToken,int nToken)" ( (parameter_declaration "Fts5Hash *pHash" type_identifier (pointer_declarator "*pHash" * identifier)) , (parameter_declaration "i64 iRowid" type_identifier identifier) , (parameter_declaration "int iCol" primitive_type identifier) , (parameter_declaration "int iPos" primitive_type identifier) , (parameter_declaration "char bByte" primitive_type identifier) , (parameter_declaration "char *pToken" primitive_type (pointer_declarator "*pToken" * identifier)) , (parameter_declaration "int nToken" primitive_type identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  byte bVar2;\n  int *piVar3;\n  uint uVar4;\n  uchar *p;\n  void *__s;\n  size_t sVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  int extraout_ECX;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  byte *pbVar13;\n  undefined4 *puVar14;\n  undefined4 *puVar15;\n  bool bVar16;\n  byte bVar17;\n  undefined8 uVar18;\n  Fts5Hash *in_stack_ffffffa4;\n  Fts5HashEntry *in_stack_ffffffa8;\n  Fts5HashEntry *in_stack_ffffffac;\n  int local_50;\n  uchar local_44;\n  int local_38;\n  undefined1 local_34;\n  \n  bVar17 = 0;\n  uVar18 = __x86_get_pc_thunk_di();\n  uVar8 = (uint)((ulonglong)uVar18 >> 0x20);\n  piVar3 = (int *)uVar18;\n  bVar16 = *piVar3 == 0;\n  uVar12 = piVar3[3];\n  iVar9 = iPos + -1;\n  if (iVar9 < 0) {\n    uVar11 = 0x68;\n    uVar4 = 0xd;\n  }\n  else {\n    uVar4 = 0xd;\n    iVar10 = iVar9;\n    do {\n      pbVar13 = (byte *)(iCol + iVar10);\n      iVar10 = iVar10 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar13;\n    } while (iVar10 != -1);\n    uVar11 = uVar4 * 8;\n  }\n  uVar11 = (uVar4 ^ uVar11 ^ iRowid._4_4_ & 0xff) % uVar12;\n  puVar7 = (undefined4 *)piVar3[5];\n  puVar15 = (undefined4 *)puVar7[uVar11];\n  uVar4 = iRowid._4_4_;\n  if (puVar15 != (undefined4 *)0x0) {\nLAB_00088bfa:\n    if ((*(char *)(puVar15 + 10) != (char)uVar4) || (puVar15[5] != iPos)) goto LAB_00088bf0;\n    iVar10 = memcmp((void *)((int)puVar15 + 0x29),(void *)iCol,iPos);\n    uVar4 = uVar4 & 0xff;\n    if (iVar10 != 0) goto LAB_00088bf0;\n    iVar9 = puVar15[2];\n    local_50 = puVar15[4];\n    puVar7 = puVar15;\n    if (iVar9 - local_50 < 0x16) {\n      iVar10 = sqlite3_initialize();\n      if (iVar10 != 0) {\n        return 7;\n      }\n      puVar7 = (undefined4 *)sqlite3Realloc(puVar15,CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n      if (puVar7 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar7[2] = iVar9 * 2;\n      puVar14 = (undefined4 *)(uVar11 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar14; puVar1 != puVar15; puVar1 = (undefined4 *)*puVar1) {\n        puVar14 = puVar1;\n      }\n      *puVar14 = puVar7;\n      local_50 = puVar7[4];\n    }\n    local_50 = -local_50;\n    if (puVar7[9] == extraout_ECX && puVar7[8] == uVar8) goto LAB_00088cd7;\n    fts5HashAddPoslistSize(in_stack_ffffffa4,in_stack_ffffffa8,in_stack_ffffffac);\n    uVar12 = uVar8 - puVar7[8];\n    iVar9 = (extraout_ECX - puVar7[9]) - (uint)(uVar8 < (uint)puVar7[8]);\n    if (iVar9 == 0 && (uint)(0x7f < uVar12) <= (uint)-iVar9) {\n      *(uchar *)(puVar7[4] + (int)puVar7) = (uchar)uVar12;\n      iVar9 = 1;\n    }\n    else {\n      iVar9 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                               CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n    }\n    iVar9 = iVar9 + puVar7[4];\n    puVar7[4] = iVar9;\n    puVar7[8] = uVar8;\n    puVar7[9] = extraout_ECX;\n    puVar7[3] = iVar9;\n    if (*piVar3 != 1) {\n      bVar16 = true;\n      puVar7[4] = iVar9 + 1;\n      iVar9 = *piVar3;\n      puVar7[7] = 0;\n      *(ushort *)((int)puVar7 + 0x1a) = -(ushort)(iVar9 != 0);\n      goto LAB_00088cd7;\n    }\n    if ((int)pHash < 0) goto LAB_00089040;\n    goto LAB_000890ca;\n  }\nLAB_00088da4:\n  uVar4 = 0x80;\n  if (0x7f < iPos + 0x6aU) {\n    uVar4 = iPos + 0x6aU;\n  }\n  uVar6 = piVar3[2] * 2;\n  if (uVar12 == uVar6 || SBORROW4(uVar12,uVar6) != (int)(uVar12 + piVar3[2] * -2) < 0) {\n    iVar10 = sqlite3_initialize();\n    if (iVar10 != 0) {\n      return 7;\n    }\n    uVar11 = uVar12 * 2;\n    __s = sqlite3Malloc(CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n    if (__s == (void *)0x0) {\n      return 7;\n    }\n    memset(__s,0,uVar12 << 3);\n    if (0 < piVar3[3]) {\n      local_38 = 0;\n      puVar15 = puVar7;\n      do {\n        puVar14 = (undefined4 *)*puVar15;\n        while (puVar14 != (undefined4 *)0x0) {\n          *puVar15 = *puVar14;\n          sVar5 = strlen((char *)(puVar14 + 10));\n          if (sVar5 == 0) {\n            uVar12 = 0xd;\n          }\n          else {\n            pbVar13 = (byte *)((int)puVar14 + sVar5 + 0x27);\n            uVar12 = 0xd;\n            do {\n              bVar2 = *pbVar13;\n              pbVar13 = pbVar13 + -1;\n              uVar12 = uVar12 ^ uVar12 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar14 + 0x27) != pbVar13);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar12 % uVar11) * 4);\n          *puVar14 = *puVar1;\n          *puVar1 = puVar14;\n          puVar14 = (undefined4 *)*puVar15;\n        }\n        local_38 = local_38 + 1;\n        puVar15 = puVar15 + 1;\n      } while (local_38 < piVar3[3]);\n    }\n    sqlite3_free(puVar7);\n    piVar3[3] = uVar11;\n    piVar3[5] = (int)__s;\n    if (iVar9 < 0) {\n      uVar12 = 0x68;\n      uVar6 = 0xd;\n    }\n    else {\n      uVar6 = 0xd;\n      do {\n        pbVar13 = (byte *)(iCol + iVar9);\n        iVar9 = iVar9 + -1;\n        uVar6 = uVar6 ^ uVar6 * 8 ^ (uint)*pbVar13;\n      } while (iVar9 != -1);\n      uVar12 = uVar6 * 8;\n    }\n    uVar11 = (uVar6 ^ uVar12 ^ iRowid._4_4_ & 0xff) % uVar11;\n  }\n  iVar9 = sqlite3_initialize();\n  if ((iVar9 != 0) ||\n     (puVar7 = (undefined4 *)sqlite3Malloc(CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4)),\n     puVar7 == (undefined4 *)0x0)) {\n    return 7;\n  }\n  *puVar7 = 0;\n  puVar7[9] = 0;\n  puVar15 = (undefined4 *)((uint)(puVar7 + 1) & 0xfffffffc);\n  for (uVar12 = (uint)((int)puVar7 + (0x28 - (int)((uint)(puVar7 + 1) & 0xfffffffc))) >> 2;\n      uVar12 != 0; uVar12 = uVar12 - 1) {\n    *puVar15 = 0;\n    puVar15 = puVar15 + (uint)bVar17 * -2 + 1;\n  }\n  local_34 = (undefined1)((ulonglong)iRowid >> 0x20);\n  puVar7[2] = uVar4;\n  *(undefined1 *)(puVar7 + 10) = local_34;\n  memcpy((void *)((int)puVar7 + 0x29),(void *)iCol,iPos);\n  puVar7[5] = iPos;\n  *(undefined1 *)((int)puVar7 + iPos + 0x29) = 0;\n  puVar7[4] = iPos + 0x2a;\n  *puVar7 = *(undefined4 *)(piVar3[5] + uVar11 * 4);\n  *(undefined4 **)(piVar3[5] + uVar11 * 4) = puVar7;\n  piVar3[2] = piVar3[2] + 1;\n  if (extraout_ECX == 0 && (uint)(0x7f < uVar8) <= (uint)-extraout_ECX) {\n    local_44 = (uchar)((ulonglong)uVar18 >> 0x20);\n    *(uchar *)(puVar7[4] + (int)puVar7) = local_44;\n    local_50 = 1;\n  }\n  else {\n    local_50 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                                CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n  }\n  local_50 = local_50 + puVar7[4];\n  puVar7[4] = local_50;\n  puVar7[9] = extraout_ECX;\n  puVar7[8] = uVar8;\n  puVar7[3] = local_50;\n  if (*piVar3 != 1) {\n    local_50 = local_50 + 1;\n    puVar7[4] = local_50;\n    *(ushort *)((int)puVar7 + 0x1a) = -(ushort)(*piVar3 != 0);\n  }\nLAB_00088cd7:\n  if ((int)pHash < 0) {\nLAB_00089040:\n    *(undefined1 *)(puVar7 + 6) = 1;\n    iVar9 = puVar7[4];\n    goto LAB_00089047;\n  }\n  if (*piVar3 == 1) {\nLAB_000890ca:\n    *(undefined1 *)((int)puVar7 + 0x19) = 1;\n    iVar9 = puVar7[4];\n    goto LAB_00089047;\n  }\n  iVar9 = puVar7[4];\n  if ((Fts5Hash *)(int)*(short *)((int)puVar7 + 0x1a) == pHash) {\nLAB_00088d4f:\n    if (!bVar16) goto LAB_00089047;\n    p = (uchar *)((int)puVar7 + iVar9);\n  }\n  else {\n    p = (uchar *)((int)puVar7 + iVar9);\n    if (*piVar3 == 0) {\n      puVar7[4] = iVar9 + 1;\n      *p = '\x01';\n      if ((int)pHash < 0 || (uint)-((int)pHash >> 0x1f) < (uint)((Fts5Hash *)0x7f < pHash)) {\n        iVar9 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                                 CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n      }\n      else {\n        *(uchar *)(puVar7[4] + (int)puVar7) = (uchar)pHash;\n        iVar9 = 1;\n      }\n      iVar9 = iVar9 + puVar7[4];\n      puVar7[7] = 0;\n      puVar7[4] = iVar9;\n      *(undefined2 *)((int)puVar7 + 0x1a) = pHash._0_2_;\n      goto LAB_00088d4f;\n    }\n    *(undefined2 *)((int)puVar7 + 0x1a) = pHash._0_2_;\n    iRowid._0_4_ = pHash;\n  }\n  uVar12 = (int)(Fts5Hash *)iRowid + (2 - puVar7[7]);\n  if ((int)uVar12 < 0 || (uint)-((int)uVar12 >> 0x1f) < (uint)(0x7f < uVar12)) {\n    iVar9 = sqlite3PutVarint(p,CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n  }\n  else {\n    *p = (uchar)uVar12;\n    iVar9 = 1;\n  }\n  iVar9 = iVar9 + puVar7[4];\n  puVar7[4] = iVar9;\n  puVar7[7] = (Fts5Hash *)iRowid;\nLAB_00089047:\n  *(int *)piVar3[1] = *(int *)piVar3[1] + iVar9 + local_50;\n  return 0;\nLAB_00088bf0:\n  puVar15 = (undefined4 *)*puVar15;\n  if (puVar15 == (undefined4 *)0x0) goto LAB_00088da4;\n  goto LAB_00088bfa;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uchar *p;" type_identifier (pointer_declarator "*p" * identifier) ;) (declaration "void *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "undefined4 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined4 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "byte bVar17;" type_identifier identifier ;) (declaration "undefined8 uVar18;" type_identifier identifier ;) (declaration "Fts5Hash *in_stack_ffffffa4;" type_identifier (pointer_declarator "*in_stack_ffffffa4" * identifier) ;) (declaration "Fts5HashEntry *in_stack_ffffffa8;" type_identifier (pointer_declarator "*in_stack_ffffffa8" * identifier) ;) (declaration "Fts5HashEntry *in_stack_ffffffac;" type_identifier (pointer_declarator "*in_stack_ffffffac" * identifier) ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "uchar local_44;" type_identifier identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "undefined1 local_34;" type_identifier identifier ;) (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) (expression_statement "uVar18 = __x86_get_pc_thunk_di();" (assignment_expression "uVar18 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar8 = (uint)((ulonglong)uVar18 >> 0x20);" (assignment_expression "uVar8 = (uint)((ulonglong)uVar18 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar18 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar18 >> 0x20)" ( (binary_expression "(ulonglong)uVar18 >> 0x20" (cast_expression "(ulonglong)uVar18" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar3 = (int *)uVar18;" (assignment_expression "piVar3 = (int *)uVar18" identifier = (cast_expression "(int *)uVar18" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "bVar16 = *piVar3 == 0;" (assignment_expression "bVar16 = *piVar3 == 0" identifier = (binary_expression "*piVar3 == 0" (pointer_expression "*piVar3" * identifier) == number_literal)) ;) (expression_statement "uVar12 = piVar3[3];" (assignment_expression "uVar12 = piVar3[3]" identifier = (subscript_expression "piVar3[3]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = iPos + -1;" (assignment_expression "iVar9 = iPos + -1" identifier = (binary_expression "iPos + -1" identifier + number_literal)) ;) (if_statement "if (iVar9 < 0) {\n    uVar11 = 0x68;\n    uVar4 = 0xd;\n  }\n  else {\n    uVar4 = 0xd;\n    iVar10 = iVar9;\n    do {\n      pbVar13 = (byte *)(iCol + iVar10);\n      iVar10 = iVar10 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar13;\n    } while (iVar10 != -1);\n    uVar11 = uVar4 * 8;\n  }" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n    uVar11 = 0x68;\n    uVar4 = 0xd;\n  }" { (expression_statement "uVar11 = 0x68;" (assignment_expression "uVar11 = 0x68" identifier = number_literal) ;) (expression_statement "uVar4 = 0xd;" (assignment_expression "uVar4 = 0xd" identifier = number_literal) ;) }) (else_clause "else {\n    uVar4 = 0xd;\n    iVar10 = iVar9;\n    do {\n      pbVar13 = (byte *)(iCol + iVar10);\n      iVar10 = iVar10 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar13;\n    } while (iVar10 != -1);\n    uVar11 = uVar4 * 8;\n  }" else (compound_statement "{\n    uVar4 = 0xd;\n    iVar10 = iVar9;\n    do {\n      pbVar13 = (byte *)(iCol + iVar10);\n      iVar10 = iVar10 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar13;\n    } while (iVar10 != -1);\n    uVar11 = uVar4 * 8;\n  }" { (expression_statement "uVar4 = 0xd;" (assignment_expression "uVar4 = 0xd" identifier = number_literal) ;) (expression_statement "iVar10 = iVar9;" (assignment_expression "iVar10 = iVar9" identifier = identifier) ;) (do_statement "do {\n      pbVar13 = (byte *)(iCol + iVar10);\n      iVar10 = iVar10 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar13;\n    } while (iVar10 != -1);" do (compound_statement "{\n      pbVar13 = (byte *)(iCol + iVar10);\n      iVar10 = iVar10 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar13;\n    }" { (expression_statement "pbVar13 = (byte *)(iCol + iVar10);" (assignment_expression "pbVar13 = (byte *)(iCol + iVar10)" identifier = (cast_expression "(byte *)(iCol + iVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iCol + iVar10)" ( (binary_expression "iCol + iVar10" identifier + identifier) )))) ;) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar13;" (assignment_expression "uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar13" identifier = (binary_expression "uVar4 ^ uVar4 * 8 ^ (uint)*pbVar13" (binary_expression "uVar4 ^ uVar4 * 8" identifier ^ (binary_expression "uVar4 * 8" identifier * number_literal)) ^ (binary_expression "(uint)*pbVar13" (parenthesized_expression "(uint)" ( identifier )) * identifier))) ;) }) while (parenthesized_expression "(iVar10 != -1)" ( (binary_expression "iVar10 != -1" identifier != number_literal) )) ;) (expression_statement "uVar11 = uVar4 * 8;" (assignment_expression "uVar11 = uVar4 * 8" identifier = (binary_expression "uVar4 * 8" identifier * number_literal)) ;) }))) (expression_statement "uVar11 = (uVar4 ^ uVar11 ^ iRowid._4_4_ & 0xff) % uVar12;" (assignment_expression "uVar11 = (uVar4 ^ uVar11 ^ iRowid._4_4_ & 0xff) % uVar12" identifier = (binary_expression "(uVar4 ^ uVar11 ^ iRowid._4_4_ & 0xff) % uVar12" (parenthesized_expression "(uVar4 ^ uVar11 ^ iRowid._4_4_ & 0xff)" ( (binary_expression "uVar4 ^ uVar11 ^ iRowid._4_4_ & 0xff" (binary_expression "uVar4 ^ uVar11" identifier ^ identifier) ^ (binary_expression "iRowid._4_4_ & 0xff" (field_expression "iRowid._4_4_" identifier . field_identifier) & number_literal)) )) % identifier)) ;) (expression_statement "puVar7 = (undefined4 *)piVar3[5];" (assignment_expression "puVar7 = (undefined4 *)piVar3[5]" identifier = (cast_expression "(undefined4 *)piVar3[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[5]" identifier [ number_literal ]))) ;) (expression_statement "puVar15 = (undefined4 *)puVar7[uVar11];" (assignment_expression "puVar15 = (undefined4 *)puVar7[uVar11]" identifier = (cast_expression "(undefined4 *)puVar7[uVar11]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar7[uVar11]" identifier [ identifier ]))) ;) (expression_statement "uVar4 = iRowid._4_4_;" (assignment_expression "uVar4 = iRowid._4_4_" identifier = (field_expression "iRowid._4_4_" identifier . field_identifier)) ;) (if_statement "if (puVar15 != (undefined4 *)0x0) {\nLAB_00088bfa:\n    if ((*(char *)(puVar15 + 10) != (char)uVar4) || (puVar15[5] != iPos)) goto LAB_00088bf0;\n    iVar10 = memcmp((void *)((int)puVar15 + 0x29),(void *)iCol,iPos);\n    uVar4 = uVar4 & 0xff;\n    if (iVar10 != 0) goto LAB_00088bf0;\n    iVar9 = puVar15[2];\n    local_50 = puVar15[4];\n    puVar7 = puVar15;\n    if (iVar9 - local_50 < 0x16) {\n      iVar10 = sqlite3_initialize();\n      if (iVar10 != 0) {\n        return 7;\n      }\n      puVar7 = (undefined4 *)sqlite3Realloc(puVar15,CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n      if (puVar7 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar7[2] = iVar9 * 2;\n      puVar14 = (undefined4 *)(uVar11 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar14; puVar1 != puVar15; puVar1 = (undefined4 *)*puVar1) {\n        puVar14 = puVar1;\n      }\n      *puVar14 = puVar7;\n      local_50 = puVar7[4];\n    }\n    local_50 = -local_50;\n    if (puVar7[9] == extraout_ECX && puVar7[8] == uVar8) goto LAB_00088cd7;\n    fts5HashAddPoslistSize(in_stack_ffffffa4,in_stack_ffffffa8,in_stack_ffffffac);\n    uVar12 = uVar8 - puVar7[8];\n    iVar9 = (extraout_ECX - puVar7[9]) - (uint)(uVar8 < (uint)puVar7[8]);\n    if (iVar9 == 0 && (uint)(0x7f < uVar12) <= (uint)-iVar9) {\n      *(uchar *)(puVar7[4] + (int)puVar7) = (uchar)uVar12;\n      iVar9 = 1;\n    }\n    else {\n      iVar9 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                               CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n    }\n    iVar9 = iVar9 + puVar7[4];\n    puVar7[4] = iVar9;\n    puVar7[8] = uVar8;\n    puVar7[9] = extraout_ECX;\n    puVar7[3] = iVar9;\n    if (*piVar3 != 1) {\n      bVar16 = true;\n      puVar7[4] = iVar9 + 1;\n      iVar9 = *piVar3;\n      puVar7[7] = 0;\n      *(ushort *)((int)puVar7 + 0x1a) = -(ushort)(iVar9 != 0);\n      goto LAB_00088cd7;\n    }\n    if ((int)pHash < 0) goto LAB_00089040;\n    goto LAB_000890ca;\n  }" if (parenthesized_expression "(puVar15 != (undefined4 *)0x0)" ( (binary_expression "puVar15 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00088bfa:\n    if ((*(char *)(puVar15 + 10) != (char)uVar4) || (puVar15[5] != iPos)) goto LAB_00088bf0;\n    iVar10 = memcmp((void *)((int)puVar15 + 0x29),(void *)iCol,iPos);\n    uVar4 = uVar4 & 0xff;\n    if (iVar10 != 0) goto LAB_00088bf0;\n    iVar9 = puVar15[2];\n    local_50 = puVar15[4];\n    puVar7 = puVar15;\n    if (iVar9 - local_50 < 0x16) {\n      iVar10 = sqlite3_initialize();\n      if (iVar10 != 0) {\n        return 7;\n      }\n      puVar7 = (undefined4 *)sqlite3Realloc(puVar15,CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n      if (puVar7 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar7[2] = iVar9 * 2;\n      puVar14 = (undefined4 *)(uVar11 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar14; puVar1 != puVar15; puVar1 = (undefined4 *)*puVar1) {\n        puVar14 = puVar1;\n      }\n      *puVar14 = puVar7;\n      local_50 = puVar7[4];\n    }\n    local_50 = -local_50;\n    if (puVar7[9] == extraout_ECX && puVar7[8] == uVar8) goto LAB_00088cd7;\n    fts5HashAddPoslistSize(in_stack_ffffffa4,in_stack_ffffffa8,in_stack_ffffffac);\n    uVar12 = uVar8 - puVar7[8];\n    iVar9 = (extraout_ECX - puVar7[9]) - (uint)(uVar8 < (uint)puVar7[8]);\n    if (iVar9 == 0 && (uint)(0x7f < uVar12) <= (uint)-iVar9) {\n      *(uchar *)(puVar7[4] + (int)puVar7) = (uchar)uVar12;\n      iVar9 = 1;\n    }\n    else {\n      iVar9 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                               CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n    }\n    iVar9 = iVar9 + puVar7[4];\n    puVar7[4] = iVar9;\n    puVar7[8] = uVar8;\n    puVar7[9] = extraout_ECX;\n    puVar7[3] = iVar9;\n    if (*piVar3 != 1) {\n      bVar16 = true;\n      puVar7[4] = iVar9 + 1;\n      iVar9 = *piVar3;\n      puVar7[7] = 0;\n      *(ushort *)((int)puVar7 + 0x1a) = -(ushort)(iVar9 != 0);\n      goto LAB_00088cd7;\n    }\n    if ((int)pHash < 0) goto LAB_00089040;\n    goto LAB_000890ca;\n  }" { (labeled_statement "LAB_00088bfa:\n    if ((*(char *)(puVar15 + 10) != (char)uVar4) || (puVar15[5] != iPos)) goto LAB_00088bf0;" statement_identifier : (if_statement "if ((*(char *)(puVar15 + 10) != (char)uVar4) || (puVar15[5] != iPos)) goto LAB_00088bf0;" if (parenthesized_expression "((*(char *)(puVar15 + 10) != (char)uVar4) || (puVar15[5] != iPos))" ( (binary_expression "(*(char *)(puVar15 + 10) != (char)uVar4) || (puVar15[5] != iPos)" (parenthesized_expression "(*(char *)(puVar15 + 10) != (char)uVar4)" ( (binary_expression "*(char *)(puVar15 + 10) != (char)uVar4" (pointer_expression "*(char *)(puVar15 + 10)" * (cast_expression "(char *)(puVar15 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + 10)" ( (binary_expression "puVar15 + 10" identifier + number_literal) )))) != (cast_expression "(char)uVar4" ( (type_descriptor "char" primitive_type) ) identifier)) )) || (parenthesized_expression "(puVar15[5] != iPos)" ( (binary_expression "puVar15[5] != iPos" (subscript_expression "puVar15[5]" identifier [ number_literal ]) != identifier) ))) )) (goto_statement "goto LAB_00088bf0;" goto statement_identifier ;))) (expression_statement "iVar10 = memcmp((void *)((int)puVar15 + 0x29),(void *)iCol,iPos);" (assignment_expression "iVar10 = memcmp((void *)((int)puVar15 + 0x29),(void *)iCol,iPos)" identifier = (call_expression "memcmp((void *)((int)puVar15 + 0x29),(void *)iCol,iPos)" identifier (argument_list "((void *)((int)puVar15 + 0x29),(void *)iCol,iPos)" ( (cast_expression "(void *)((int)puVar15 + 0x29)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar15 + 0x29)" ( (binary_expression "(int)puVar15 + 0x29" (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , (cast_expression "(void *)iCol" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (expression_statement "uVar4 = uVar4 & 0xff;" (assignment_expression "uVar4 = uVar4 & 0xff" identifier = (binary_expression "uVar4 & 0xff" identifier & number_literal)) ;) (if_statement "if (iVar10 != 0) goto LAB_00088bf0;" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00088bf0;" goto statement_identifier ;)) (expression_statement "iVar9 = puVar15[2];" (assignment_expression "iVar9 = puVar15[2]" identifier = (subscript_expression "puVar15[2]" identifier [ number_literal ])) ;) (expression_statement "local_50 = puVar15[4];" (assignment_expression "local_50 = puVar15[4]" identifier = (subscript_expression "puVar15[4]" identifier [ number_literal ])) ;) (expression_statement "puVar7 = puVar15;" (assignment_expression "puVar7 = puVar15" identifier = identifier) ;) (if_statement "if (iVar9 - local_50 < 0x16) {\n      iVar10 = sqlite3_initialize();\n      if (iVar10 != 0) {\n        return 7;\n      }\n      puVar7 = (undefined4 *)sqlite3Realloc(puVar15,CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n      if (puVar7 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar7[2] = iVar9 * 2;\n      puVar14 = (undefined4 *)(uVar11 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar14; puVar1 != puVar15; puVar1 = (undefined4 *)*puVar1) {\n        puVar14 = puVar1;\n      }\n      *puVar14 = puVar7;\n      local_50 = puVar7[4];\n    }" if (parenthesized_expression "(iVar9 - local_50 < 0x16)" ( (binary_expression "iVar9 - local_50 < 0x16" (binary_expression "iVar9 - local_50" identifier - identifier) < number_literal) )) (compound_statement "{\n      iVar10 = sqlite3_initialize();\n      if (iVar10 != 0) {\n        return 7;\n      }\n      puVar7 = (undefined4 *)sqlite3Realloc(puVar15,CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n      if (puVar7 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar7[2] = iVar9 * 2;\n      puVar14 = (undefined4 *)(uVar11 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar14; puVar1 != puVar15; puVar1 = (undefined4 *)*puVar1) {\n        puVar14 = puVar1;\n      }\n      *puVar14 = puVar7;\n      local_50 = puVar7[4];\n    }" { (expression_statement "iVar10 = sqlite3_initialize();" (assignment_expression "iVar10 = sqlite3_initialize()" identifier = (call_expression "sqlite3_initialize()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar10 != 0) {\n        return 7;\n      }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n        return 7;\n      }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "puVar7 = (undefined4 *)sqlite3Realloc(puVar15,CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));" (assignment_expression "puVar7 = (undefined4 *)sqlite3Realloc(puVar15,CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4))" identifier = (cast_expression "(undefined4 *)sqlite3Realloc(puVar15,CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3Realloc(puVar15,CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4))" identifier (argument_list "(puVar15,CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4))" ( identifier , (call_expression "CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4)" identifier (argument_list "(in_stack_ffffffa8,in_stack_ffffffa4)" ( identifier , identifier ))) ))))) ;) (if_statement "if (puVar7 == (undefined4 *)0x0) {\n        return 7;\n      }" if (parenthesized_expression "(puVar7 == (undefined4 *)0x0)" ( (binary_expression "puVar7 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return 7;\n      }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "puVar7[2] = iVar9 * 2;" (assignment_expression "puVar7[2] = iVar9 * 2" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = (binary_expression "iVar9 * 2" identifier * number_literal)) ;) (expression_statement "puVar14 = (undefined4 *)(uVar11 * 4 + piVar3[5]);" (assignment_expression "puVar14 = (undefined4 *)(uVar11 * 4 + piVar3[5])" identifier = (cast_expression "(undefined4 *)(uVar11 * 4 + piVar3[5])" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar11 * 4 + piVar3[5])" ( (binary_expression "uVar11 * 4 + piVar3[5]" (binary_expression "uVar11 * 4" identifier * number_literal) + (subscript_expression "piVar3[5]" identifier [ number_literal ])) )))) ;) (for_statement "for (puVar1 = (undefined4 *)*puVar14; puVar1 != puVar15; puVar1 = (undefined4 *)*puVar1) {\n        puVar14 = puVar1;\n      }" for ( (assignment_expression "puVar1 = (undefined4 *)*puVar14" identifier = (cast_expression "(undefined4 *)*puVar14" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar14" * identifier))) ; (binary_expression "puVar1 != puVar15" identifier != identifier) ; (assignment_expression "puVar1 = (undefined4 *)*puVar1" identifier = (cast_expression "(undefined4 *)*puVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ) (compound_statement "{\n        puVar14 = puVar1;\n      }" { (expression_statement "puVar14 = puVar1;" (assignment_expression "puVar14 = puVar1" identifier = identifier) ;) })) (expression_statement "*puVar14 = puVar7;" (assignment_expression "*puVar14 = puVar7" (pointer_expression "*puVar14" * identifier) = identifier) ;) (expression_statement "local_50 = puVar7[4];" (assignment_expression "local_50 = puVar7[4]" identifier = (subscript_expression "puVar7[4]" identifier [ number_literal ])) ;) })) (expression_statement "local_50 = -local_50;" (assignment_expression "local_50 = -local_50" identifier = (unary_expression "-local_50" - identifier)) ;) (if_statement "if (puVar7[9] == extraout_ECX && puVar7[8] == uVar8) goto LAB_00088cd7;" if (parenthesized_expression "(puVar7[9] == extraout_ECX && puVar7[8] == uVar8)" ( (binary_expression "puVar7[9] == extraout_ECX && puVar7[8] == uVar8" (binary_expression "puVar7[9] == extraout_ECX" (subscript_expression "puVar7[9]" identifier [ number_literal ]) == identifier) && (binary_expression "puVar7[8] == uVar8" (subscript_expression "puVar7[8]" identifier [ number_literal ]) == identifier)) )) (goto_statement "goto LAB_00088cd7;" goto statement_identifier ;)) (expression_statement "fts5HashAddPoslistSize(in_stack_ffffffa4,in_stack_ffffffa8,in_stack_ffffffac);" (call_expression "fts5HashAddPoslistSize(in_stack_ffffffa4,in_stack_ffffffa8,in_stack_ffffffac)" identifier (argument_list "(in_stack_ffffffa4,in_stack_ffffffa8,in_stack_ffffffac)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar12 = uVar8 - puVar7[8];" (assignment_expression "uVar12 = uVar8 - puVar7[8]" identifier = (binary_expression "uVar8 - puVar7[8]" identifier - (subscript_expression "puVar7[8]" identifier [ number_literal ]))) ;) (expression_statement "iVar9 = (extraout_ECX - puVar7[9]) - (uint)(uVar8 < (uint)puVar7[8]);" (assignment_expression "iVar9 = (extraout_ECX - puVar7[9]) - (uint)(uVar8 < (uint)puVar7[8])" identifier = (binary_expression "(extraout_ECX - puVar7[9]) - (uint)(uVar8 < (uint)puVar7[8])" (parenthesized_expression "(extraout_ECX - puVar7[9])" ( (binary_expression "extraout_ECX - puVar7[9]" identifier - (subscript_expression "puVar7[9]" identifier [ number_literal ])) )) - (call_expression "(uint)(uVar8 < (uint)puVar7[8])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < (uint)puVar7[8])" ( (binary_expression "uVar8 < (uint)puVar7[8]" identifier < (cast_expression "(uint)puVar7[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar7[8]" identifier [ number_literal ]))) ))))) ;) (if_statement "if (iVar9 == 0 && (uint)(0x7f < uVar12) <= (uint)-iVar9) {\n      *(uchar *)(puVar7[4] + (int)puVar7) = (uchar)uVar12;\n      iVar9 = 1;\n    }\n    else {\n      iVar9 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                               CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n    }" if (parenthesized_expression "(iVar9 == 0 && (uint)(0x7f < uVar12) <= (uint)-iVar9)" ( (binary_expression "iVar9 == 0 && (uint)(0x7f < uVar12) <= (uint)-iVar9" (binary_expression "iVar9 == 0" identifier == number_literal) && (binary_expression "(uint)(0x7f < uVar12) <= (uint)-iVar9" (call_expression "(uint)(0x7f < uVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x7f < uVar12)" ( (binary_expression "0x7f < uVar12" number_literal < identifier) ))) <= (binary_expression "(uint)-iVar9" (parenthesized_expression "(uint)" ( identifier )) - identifier))) )) (compound_statement "{\n      *(uchar *)(puVar7[4] + (int)puVar7) = (uchar)uVar12;\n      iVar9 = 1;\n    }" { (expression_statement "*(uchar *)(puVar7[4] + (int)puVar7) = (uchar)uVar12;" (assignment_expression "*(uchar *)(puVar7[4] + (int)puVar7) = (uchar)uVar12" (pointer_expression "*(uchar *)(puVar7[4] + (int)puVar7)" * (cast_expression "(uchar *)(puVar7[4] + (int)puVar7)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7[4] + (int)puVar7)" ( (binary_expression "puVar7[4] + (int)puVar7" (subscript_expression "puVar7[4]" identifier [ number_literal ]) + (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )))) = (cast_expression "(uchar)uVar12" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      iVar9 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                               CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n    }" else (compound_statement "{\n      iVar9 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                               CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n    }" { (expression_statement "iVar9 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                               CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));" (assignment_expression "iVar9 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                               CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4))" identifier = (call_expression "sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                               CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4))" identifier (argument_list "((uchar *)(puVar7[4] + (int)puVar7),\n                               CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4))" ( (cast_expression "(uchar *)(puVar7[4] + (int)puVar7)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7[4] + (int)puVar7)" ( (binary_expression "puVar7[4] + (int)puVar7" (subscript_expression "puVar7[4]" identifier [ number_literal ]) + (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) , (call_expression "CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4)" identifier (argument_list "(in_stack_ffffffa8,in_stack_ffffffa4)" ( identifier , identifier ))) )))) ;) }))) (expression_statement "iVar9 = iVar9 + puVar7[4];" (assignment_expression "iVar9 = iVar9 + puVar7[4]" identifier = (binary_expression "iVar9 + puVar7[4]" identifier + (subscript_expression "puVar7[4]" identifier [ number_literal ]))) ;) (expression_statement "puVar7[4] = iVar9;" (assignment_expression "puVar7[4] = iVar9" (subscript_expression "puVar7[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7[8] = uVar8;" (assignment_expression "puVar7[8] = uVar8" (subscript_expression "puVar7[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7[9] = extraout_ECX;" (assignment_expression "puVar7[9] = extraout_ECX" (subscript_expression "puVar7[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7[3] = iVar9;" (assignment_expression "puVar7[3] = iVar9" (subscript_expression "puVar7[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (*piVar3 != 1) {\n      bVar16 = true;\n      puVar7[4] = iVar9 + 1;\n      iVar9 = *piVar3;\n      puVar7[7] = 0;\n      *(ushort *)((int)puVar7 + 0x1a) = -(ushort)(iVar9 != 0);\n      goto LAB_00088cd7;\n    }" if (parenthesized_expression "(*piVar3 != 1)" ( (binary_expression "*piVar3 != 1" (pointer_expression "*piVar3" * identifier) != number_literal) )) (compound_statement "{\n      bVar16 = true;\n      puVar7[4] = iVar9 + 1;\n      iVar9 = *piVar3;\n      puVar7[7] = 0;\n      *(ushort *)((int)puVar7 + 0x1a) = -(ushort)(iVar9 != 0);\n      goto LAB_00088cd7;\n    }" { (expression_statement "bVar16 = true;" (assignment_expression "bVar16 = true" identifier = true) ;) (expression_statement "puVar7[4] = iVar9 + 1;" (assignment_expression "puVar7[4] = iVar9 + 1" (subscript_expression "puVar7[4]" identifier [ number_literal ]) = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "iVar9 = *piVar3;" (assignment_expression "iVar9 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "puVar7[7] = 0;" (assignment_expression "puVar7[7] = 0" (subscript_expression "puVar7[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(ushort *)((int)puVar7 + 0x1a) = -(ushort)(iVar9 != 0);" (assignment_expression "*(ushort *)((int)puVar7 + 0x1a) = -(ushort)(iVar9 != 0)" (pointer_expression "*(ushort *)((int)puVar7 + 0x1a)" * (cast_expression "(ushort *)((int)puVar7 + 0x1a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + 0x1a)" ( (binary_expression "(int)puVar7 + 0x1a" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (unary_expression "-(ushort)(iVar9 != 0)" - (call_expression "(ushort)(iVar9 != 0)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) ))))) ;) (goto_statement "goto LAB_00088cd7;" goto statement_identifier ;) })) (if_statement "if ((int)pHash < 0) goto LAB_00089040;" if (parenthesized_expression "((int)pHash < 0)" ( (binary_expression "(int)pHash < 0" (cast_expression "(int)pHash" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00089040;" goto statement_identifier ;)) (goto_statement "goto LAB_000890ca;" goto statement_identifier ;) })) (labeled_statement "LAB_00088da4:\n  uVar4 = 0x80;" statement_identifier : (expression_statement "uVar4 = 0x80;" (assignment_expression "uVar4 = 0x80" identifier = number_literal) ;)) (if_statement "if (0x7f < iPos + 0x6aU) {\n    uVar4 = iPos + 0x6aU;\n  }" if (parenthesized_expression "(0x7f < iPos + 0x6aU)" ( (binary_expression "0x7f < iPos + 0x6aU" number_literal < (binary_expression "iPos + 0x6aU" identifier + number_literal)) )) (compound_statement "{\n    uVar4 = iPos + 0x6aU;\n  }" { (expression_statement "uVar4 = iPos + 0x6aU;" (assignment_expression "uVar4 = iPos + 0x6aU" identifier = (binary_expression "iPos + 0x6aU" identifier + number_literal)) ;) })) (expression_statement "uVar6 = piVar3[2] * 2;" (assignment_expression "uVar6 = piVar3[2] * 2" identifier = (binary_expression "piVar3[2] * 2" (subscript_expression "piVar3[2]" identifier [ number_literal ]) * number_literal)) ;) (if_statement "if (uVar12 == uVar6 || SBORROW4(uVar12,uVar6) != (int)(uVar12 + piVar3[2] * -2) < 0) {\n    iVar10 = sqlite3_initialize();\n    if (iVar10 != 0) {\n      return 7;\n    }\n    uVar11 = uVar12 * 2;\n    __s = sqlite3Malloc(CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n    if (__s == (void *)0x0) {\n      return 7;\n    }\n    memset(__s,0,uVar12 << 3);\n    if (0 < piVar3[3]) {\n      local_38 = 0;\n      puVar15 = puVar7;\n      do {\n        puVar14 = (undefined4 *)*puVar15;\n        while (puVar14 != (undefined4 *)0x0) {\n          *puVar15 = *puVar14;\n          sVar5 = strlen((char *)(puVar14 + 10));\n          if (sVar5 == 0) {\n            uVar12 = 0xd;\n          }\n          else {\n            pbVar13 = (byte *)((int)puVar14 + sVar5 + 0x27);\n            uVar12 = 0xd;\n            do {\n              bVar2 = *pbVar13;\n              pbVar13 = pbVar13 + -1;\n              uVar12 = uVar12 ^ uVar12 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar14 + 0x27) != pbVar13);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar12 % uVar11) * 4);\n          *puVar14 = *puVar1;\n          *puVar1 = puVar14;\n          puVar14 = (undefined4 *)*puVar15;\n        }\n        local_38 = local_38 + 1;\n        puVar15 = puVar15 + 1;\n      } while (local_38 < piVar3[3]);\n    }\n    sqlite3_free(puVar7);\n    piVar3[3] = uVar11;\n    piVar3[5] = (int)__s;\n    if (iVar9 < 0) {\n      uVar12 = 0x68;\n      uVar6 = 0xd;\n    }\n    else {\n      uVar6 = 0xd;\n      do {\n        pbVar13 = (byte *)(iCol + iVar9);\n        iVar9 = iVar9 + -1;\n        uVar6 = uVar6 ^ uVar6 * 8 ^ (uint)*pbVar13;\n      } while (iVar9 != -1);\n      uVar12 = uVar6 * 8;\n    }\n    uVar11 = (uVar6 ^ uVar12 ^ iRowid._4_4_ & 0xff) % uVar11;\n  }" if (parenthesized_expression "(uVar12 == uVar6 || SBORROW4(uVar12,uVar6) != (int)(uVar12 + piVar3[2] * -2) < 0)" ( (binary_expression "uVar12 == uVar6 || SBORROW4(uVar12,uVar6) != (int)(uVar12 + piVar3[2] * -2) < 0" (binary_expression "uVar12 == uVar6" identifier == identifier) || (binary_expression "SBORROW4(uVar12,uVar6) != (int)(uVar12 + piVar3[2] * -2) < 0" (call_expression "SBORROW4(uVar12,uVar6)" identifier (argument_list "(uVar12,uVar6)" ( identifier , identifier ))) != (binary_expression "(int)(uVar12 + piVar3[2] * -2) < 0" (cast_expression "(int)(uVar12 + piVar3[2] * -2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar12 + piVar3[2] * -2)" ( (binary_expression "uVar12 + piVar3[2] * -2" identifier + (binary_expression "piVar3[2] * -2" (subscript_expression "piVar3[2]" identifier [ number_literal ]) * number_literal)) ))) < number_literal))) )) (compound_statement "{\n    iVar10 = sqlite3_initialize();\n    if (iVar10 != 0) {\n      return 7;\n    }\n    uVar11 = uVar12 * 2;\n    __s = sqlite3Malloc(CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n    if (__s == (void *)0x0) {\n      return 7;\n    }\n    memset(__s,0,uVar12 << 3);\n    if (0 < piVar3[3]) {\n      local_38 = 0;\n      puVar15 = puVar7;\n      do {\n        puVar14 = (undefined4 *)*puVar15;\n        while (puVar14 != (undefined4 *)0x0) {\n          *puVar15 = *puVar14;\n          sVar5 = strlen((char *)(puVar14 + 10));\n          if (sVar5 == 0) {\n            uVar12 = 0xd;\n          }\n          else {\n            pbVar13 = (byte *)((int)puVar14 + sVar5 + 0x27);\n            uVar12 = 0xd;\n            do {\n              bVar2 = *pbVar13;\n              pbVar13 = pbVar13 + -1;\n              uVar12 = uVar12 ^ uVar12 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar14 + 0x27) != pbVar13);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar12 % uVar11) * 4);\n          *puVar14 = *puVar1;\n          *puVar1 = puVar14;\n          puVar14 = (undefined4 *)*puVar15;\n        }\n        local_38 = local_38 + 1;\n        puVar15 = puVar15 + 1;\n      } while (local_38 < piVar3[3]);\n    }\n    sqlite3_free(puVar7);\n    piVar3[3] = uVar11;\n    piVar3[5] = (int)__s;\n    if (iVar9 < 0) {\n      uVar12 = 0x68;\n      uVar6 = 0xd;\n    }\n    else {\n      uVar6 = 0xd;\n      do {\n        pbVar13 = (byte *)(iCol + iVar9);\n        iVar9 = iVar9 + -1;\n        uVar6 = uVar6 ^ uVar6 * 8 ^ (uint)*pbVar13;\n      } while (iVar9 != -1);\n      uVar12 = uVar6 * 8;\n    }\n    uVar11 = (uVar6 ^ uVar12 ^ iRowid._4_4_ & 0xff) % uVar11;\n  }" { (expression_statement "iVar10 = sqlite3_initialize();" (assignment_expression "iVar10 = sqlite3_initialize()" identifier = (call_expression "sqlite3_initialize()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar10 != 0) {\n      return 7;\n    }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n      return 7;\n    }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "uVar11 = uVar12 * 2;" (assignment_expression "uVar11 = uVar12 * 2" identifier = (binary_expression "uVar12 * 2" identifier * number_literal)) ;) (expression_statement "__s = sqlite3Malloc(CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));" (assignment_expression "__s = sqlite3Malloc(CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4))" identifier = (call_expression "sqlite3Malloc(CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4))" identifier (argument_list "(CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4))" ( (call_expression "CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4)" identifier (argument_list "(in_stack_ffffffa8,in_stack_ffffffa4)" ( identifier , identifier ))) )))) ;) (if_statement "if (__s == (void *)0x0) {\n      return 7;\n    }" if (parenthesized_expression "(__s == (void *)0x0)" ( (binary_expression "__s == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 7;\n    }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "memset(__s,0,uVar12 << 3);" (call_expression "memset(__s,0,uVar12 << 3)" identifier (argument_list "(__s,0,uVar12 << 3)" ( identifier , number_literal , (binary_expression "uVar12 << 3" identifier << number_literal) ))) ;) (if_statement "if (0 < piVar3[3]) {\n      local_38 = 0;\n      puVar15 = puVar7;\n      do {\n        puVar14 = (undefined4 *)*puVar15;\n        while (puVar14 != (undefined4 *)0x0) {\n          *puVar15 = *puVar14;\n          sVar5 = strlen((char *)(puVar14 + 10));\n          if (sVar5 == 0) {\n            uVar12 = 0xd;\n          }\n          else {\n            pbVar13 = (byte *)((int)puVar14 + sVar5 + 0x27);\n            uVar12 = 0xd;\n            do {\n              bVar2 = *pbVar13;\n              pbVar13 = pbVar13 + -1;\n              uVar12 = uVar12 ^ uVar12 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar14 + 0x27) != pbVar13);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar12 % uVar11) * 4);\n          *puVar14 = *puVar1;\n          *puVar1 = puVar14;\n          puVar14 = (undefined4 *)*puVar15;\n        }\n        local_38 = local_38 + 1;\n        puVar15 = puVar15 + 1;\n      } while (local_38 < piVar3[3]);\n    }" if (parenthesized_expression "(0 < piVar3[3])" ( (binary_expression "0 < piVar3[3]" number_literal < (subscript_expression "piVar3[3]" identifier [ number_literal ])) )) (compound_statement "{\n      local_38 = 0;\n      puVar15 = puVar7;\n      do {\n        puVar14 = (undefined4 *)*puVar15;\n        while (puVar14 != (undefined4 *)0x0) {\n          *puVar15 = *puVar14;\n          sVar5 = strlen((char *)(puVar14 + 10));\n          if (sVar5 == 0) {\n            uVar12 = 0xd;\n          }\n          else {\n            pbVar13 = (byte *)((int)puVar14 + sVar5 + 0x27);\n            uVar12 = 0xd;\n            do {\n              bVar2 = *pbVar13;\n              pbVar13 = pbVar13 + -1;\n              uVar12 = uVar12 ^ uVar12 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar14 + 0x27) != pbVar13);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar12 % uVar11) * 4);\n          *puVar14 = *puVar1;\n          *puVar1 = puVar14;\n          puVar14 = (undefined4 *)*puVar15;\n        }\n        local_38 = local_38 + 1;\n        puVar15 = puVar15 + 1;\n      } while (local_38 < piVar3[3]);\n    }" { (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "puVar15 = puVar7;" (assignment_expression "puVar15 = puVar7" identifier = identifier) ;) (do_statement "do {\n        puVar14 = (undefined4 *)*puVar15;\n        while (puVar14 != (undefined4 *)0x0) {\n          *puVar15 = *puVar14;\n          sVar5 = strlen((char *)(puVar14 + 10));\n          if (sVar5 == 0) {\n            uVar12 = 0xd;\n          }\n          else {\n            pbVar13 = (byte *)((int)puVar14 + sVar5 + 0x27);\n            uVar12 = 0xd;\n            do {\n              bVar2 = *pbVar13;\n              pbVar13 = pbVar13 + -1;\n              uVar12 = uVar12 ^ uVar12 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar14 + 0x27) != pbVar13);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar12 % uVar11) * 4);\n          *puVar14 = *puVar1;\n          *puVar1 = puVar14;\n          puVar14 = (undefined4 *)*puVar15;\n        }\n        local_38 = local_38 + 1;\n        puVar15 = puVar15 + 1;\n      } while (local_38 < piVar3[3]);" do (compound_statement "{\n        puVar14 = (undefined4 *)*puVar15;\n        while (puVar14 != (undefined4 *)0x0) {\n          *puVar15 = *puVar14;\n          sVar5 = strlen((char *)(puVar14 + 10));\n          if (sVar5 == 0) {\n            uVar12 = 0xd;\n          }\n          else {\n            pbVar13 = (byte *)((int)puVar14 + sVar5 + 0x27);\n            uVar12 = 0xd;\n            do {\n              bVar2 = *pbVar13;\n              pbVar13 = pbVar13 + -1;\n              uVar12 = uVar12 ^ uVar12 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar14 + 0x27) != pbVar13);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar12 % uVar11) * 4);\n          *puVar14 = *puVar1;\n          *puVar1 = puVar14;\n          puVar14 = (undefined4 *)*puVar15;\n        }\n        local_38 = local_38 + 1;\n        puVar15 = puVar15 + 1;\n      }" { (expression_statement "puVar14 = (undefined4 *)*puVar15;" (assignment_expression "puVar14 = (undefined4 *)*puVar15" identifier = (cast_expression "(undefined4 *)*puVar15" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar15" * identifier))) ;) (while_statement "while (puVar14 != (undefined4 *)0x0) {\n          *puVar15 = *puVar14;\n          sVar5 = strlen((char *)(puVar14 + 10));\n          if (sVar5 == 0) {\n            uVar12 = 0xd;\n          }\n          else {\n            pbVar13 = (byte *)((int)puVar14 + sVar5 + 0x27);\n            uVar12 = 0xd;\n            do {\n              bVar2 = *pbVar13;\n              pbVar13 = pbVar13 + -1;\n              uVar12 = uVar12 ^ uVar12 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar14 + 0x27) != pbVar13);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar12 % uVar11) * 4);\n          *puVar14 = *puVar1;\n          *puVar1 = puVar14;\n          puVar14 = (undefined4 *)*puVar15;\n        }" while (parenthesized_expression "(puVar14 != (undefined4 *)0x0)" ( (binary_expression "puVar14 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *puVar15 = *puVar14;\n          sVar5 = strlen((char *)(puVar14 + 10));\n          if (sVar5 == 0) {\n            uVar12 = 0xd;\n          }\n          else {\n            pbVar13 = (byte *)((int)puVar14 + sVar5 + 0x27);\n            uVar12 = 0xd;\n            do {\n              bVar2 = *pbVar13;\n              pbVar13 = pbVar13 + -1;\n              uVar12 = uVar12 ^ uVar12 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar14 + 0x27) != pbVar13);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar12 % uVar11) * 4);\n          *puVar14 = *puVar1;\n          *puVar1 = puVar14;\n          puVar14 = (undefined4 *)*puVar15;\n        }" { (expression_statement "*puVar15 = *puVar14;" (assignment_expression "*puVar15 = *puVar14" (pointer_expression "*puVar15" * identifier) = (pointer_expression "*puVar14" * identifier)) ;) (expression_statement "sVar5 = strlen((char *)(puVar14 + 10));" (assignment_expression "sVar5 = strlen((char *)(puVar14 + 10))" identifier = (call_expression "strlen((char *)(puVar14 + 10))" identifier (argument_list "((char *)(puVar14 + 10))" ( (cast_expression "(char *)(puVar14 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 10)" ( (binary_expression "puVar14 + 10" identifier + number_literal) ))) )))) ;) (if_statement "if (sVar5 == 0) {\n            uVar12 = 0xd;\n          }\n          else {\n            pbVar13 = (byte *)((int)puVar14 + sVar5 + 0x27);\n            uVar12 = 0xd;\n            do {\n              bVar2 = *pbVar13;\n              pbVar13 = pbVar13 + -1;\n              uVar12 = uVar12 ^ uVar12 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar14 + 0x27) != pbVar13);\n          }" if (parenthesized_expression "(sVar5 == 0)" ( (binary_expression "sVar5 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar12 = 0xd;\n          }" { (expression_statement "uVar12 = 0xd;" (assignment_expression "uVar12 = 0xd" identifier = number_literal) ;) }) (else_clause "else {\n            pbVar13 = (byte *)((int)puVar14 + sVar5 + 0x27);\n            uVar12 = 0xd;\n            do {\n              bVar2 = *pbVar13;\n              pbVar13 = pbVar13 + -1;\n              uVar12 = uVar12 ^ uVar12 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar14 + 0x27) != pbVar13);\n          }" else (compound_statement "{\n            pbVar13 = (byte *)((int)puVar14 + sVar5 + 0x27);\n            uVar12 = 0xd;\n            do {\n              bVar2 = *pbVar13;\n              pbVar13 = pbVar13 + -1;\n              uVar12 = uVar12 ^ uVar12 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar14 + 0x27) != pbVar13);\n          }" { (expression_statement "pbVar13 = (byte *)((int)puVar14 + sVar5 + 0x27);" (assignment_expression "pbVar13 = (byte *)((int)puVar14 + sVar5 + 0x27)" identifier = (cast_expression "(byte *)((int)puVar14 + sVar5 + 0x27)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar14 + sVar5 + 0x27)" ( (binary_expression "(int)puVar14 + sVar5 + 0x27" (binary_expression "(int)puVar14 + sVar5" (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "uVar12 = 0xd;" (assignment_expression "uVar12 = 0xd" identifier = number_literal) ;) (do_statement "do {\n              bVar2 = *pbVar13;\n              pbVar13 = pbVar13 + -1;\n              uVar12 = uVar12 ^ uVar12 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar14 + 0x27) != pbVar13);" do (compound_statement "{\n              bVar2 = *pbVar13;\n              pbVar13 = pbVar13 + -1;\n              uVar12 = uVar12 ^ uVar12 * 8 ^ (uint)bVar2;\n            }" { (expression_statement "bVar2 = *pbVar13;" (assignment_expression "bVar2 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) (expression_statement "pbVar13 = pbVar13 + -1;" (assignment_expression "pbVar13 = pbVar13 + -1" identifier = (binary_expression "pbVar13 + -1" identifier + number_literal)) ;) (expression_statement "uVar12 = uVar12 ^ uVar12 * 8 ^ (uint)bVar2;" (assignment_expression "uVar12 = uVar12 ^ uVar12 * 8 ^ (uint)bVar2" identifier = (binary_expression "uVar12 ^ uVar12 * 8 ^ (uint)bVar2" (binary_expression "uVar12 ^ uVar12 * 8" identifier ^ (binary_expression "uVar12 * 8" identifier * number_literal)) ^ (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((byte *)((int)puVar14 + 0x27) != pbVar13)" ( (binary_expression "(byte *)((int)puVar14 + 0x27) != pbVar13" (cast_expression "(byte *)((int)puVar14 + 0x27)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar14 + 0x27)" ( (binary_expression "(int)puVar14 + 0x27" (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) != identifier) )) ;) }))) (expression_statement "puVar1 = (undefined4 *)((int)__s + (uVar12 % uVar11) * 4);" (assignment_expression "puVar1 = (undefined4 *)((int)__s + (uVar12 % uVar11) * 4)" identifier = (cast_expression "(undefined4 *)((int)__s + (uVar12 % uVar11) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + (uVar12 % uVar11) * 4)" ( (binary_expression "(int)__s + (uVar12 % uVar11) * 4" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uVar12 % uVar11) * 4" (parenthesized_expression "(uVar12 % uVar11)" ( (binary_expression "uVar12 % uVar11" identifier % identifier) )) * number_literal)) )))) ;) (expression_statement "*puVar14 = *puVar1;" (assignment_expression "*puVar14 = *puVar1" (pointer_expression "*puVar14" * identifier) = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "*puVar1 = puVar14;" (assignment_expression "*puVar1 = puVar14" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "puVar14 = (undefined4 *)*puVar15;" (assignment_expression "puVar14 = (undefined4 *)*puVar15" identifier = (cast_expression "(undefined4 *)*puVar15" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar15" * identifier))) ;) })) (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_38 < piVar3[3])" ( (binary_expression "local_38 < piVar3[3]" identifier < (subscript_expression "piVar3[3]" identifier [ number_literal ])) )) ;) })) (expression_statement "sqlite3_free(puVar7);" (call_expression "sqlite3_free(puVar7)" identifier (argument_list "(puVar7)" ( identifier ))) ;) (expression_statement "piVar3[3] = uVar11;" (assignment_expression "piVar3[3] = uVar11" (subscript_expression "piVar3[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar3[5] = (int)__s;" (assignment_expression "piVar3[5] = (int)__s" (subscript_expression "piVar3[5]" identifier [ number_literal ]) = (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (iVar9 < 0) {\n      uVar12 = 0x68;\n      uVar6 = 0xd;\n    }\n    else {\n      uVar6 = 0xd;\n      do {\n        pbVar13 = (byte *)(iCol + iVar9);\n        iVar9 = iVar9 + -1;\n        uVar6 = uVar6 ^ uVar6 * 8 ^ (uint)*pbVar13;\n      } while (iVar9 != -1);\n      uVar12 = uVar6 * 8;\n    }" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n      uVar12 = 0x68;\n      uVar6 = 0xd;\n    }" { (expression_statement "uVar12 = 0x68;" (assignment_expression "uVar12 = 0x68" identifier = number_literal) ;) (expression_statement "uVar6 = 0xd;" (assignment_expression "uVar6 = 0xd" identifier = number_literal) ;) }) (else_clause "else {\n      uVar6 = 0xd;\n      do {\n        pbVar13 = (byte *)(iCol + iVar9);\n        iVar9 = iVar9 + -1;\n        uVar6 = uVar6 ^ uVar6 * 8 ^ (uint)*pbVar13;\n      } while (iVar9 != -1);\n      uVar12 = uVar6 * 8;\n    }" else (compound_statement "{\n      uVar6 = 0xd;\n      do {\n        pbVar13 = (byte *)(iCol + iVar9);\n        iVar9 = iVar9 + -1;\n        uVar6 = uVar6 ^ uVar6 * 8 ^ (uint)*pbVar13;\n      } while (iVar9 != -1);\n      uVar12 = uVar6 * 8;\n    }" { (expression_statement "uVar6 = 0xd;" (assignment_expression "uVar6 = 0xd" identifier = number_literal) ;) (do_statement "do {\n        pbVar13 = (byte *)(iCol + iVar9);\n        iVar9 = iVar9 + -1;\n        uVar6 = uVar6 ^ uVar6 * 8 ^ (uint)*pbVar13;\n      } while (iVar9 != -1);" do (compound_statement "{\n        pbVar13 = (byte *)(iCol + iVar9);\n        iVar9 = iVar9 + -1;\n        uVar6 = uVar6 ^ uVar6 * 8 ^ (uint)*pbVar13;\n      }" { (expression_statement "pbVar13 = (byte *)(iCol + iVar9);" (assignment_expression "pbVar13 = (byte *)(iCol + iVar9)" identifier = (cast_expression "(byte *)(iCol + iVar9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iCol + iVar9)" ( (binary_expression "iCol + iVar9" identifier + identifier) )))) ;) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar6 ^ uVar6 * 8 ^ (uint)*pbVar13;" (assignment_expression "uVar6 = uVar6 ^ uVar6 * 8 ^ (uint)*pbVar13" identifier = (binary_expression "uVar6 ^ uVar6 * 8 ^ (uint)*pbVar13" (binary_expression "uVar6 ^ uVar6 * 8" identifier ^ (binary_expression "uVar6 * 8" identifier * number_literal)) ^ (binary_expression "(uint)*pbVar13" (parenthesized_expression "(uint)" ( identifier )) * identifier))) ;) }) while (parenthesized_expression "(iVar9 != -1)" ( (binary_expression "iVar9 != -1" identifier != number_literal) )) ;) (expression_statement "uVar12 = uVar6 * 8;" (assignment_expression "uVar12 = uVar6 * 8" identifier = (binary_expression "uVar6 * 8" identifier * number_literal)) ;) }))) (expression_statement "uVar11 = (uVar6 ^ uVar12 ^ iRowid._4_4_ & 0xff) % uVar11;" (assignment_expression "uVar11 = (uVar6 ^ uVar12 ^ iRowid._4_4_ & 0xff) % uVar11" identifier = (binary_expression "(uVar6 ^ uVar12 ^ iRowid._4_4_ & 0xff) % uVar11" (parenthesized_expression "(uVar6 ^ uVar12 ^ iRowid._4_4_ & 0xff)" ( (binary_expression "uVar6 ^ uVar12 ^ iRowid._4_4_ & 0xff" (binary_expression "uVar6 ^ uVar12" identifier ^ identifier) ^ (binary_expression "iRowid._4_4_ & 0xff" (field_expression "iRowid._4_4_" identifier . field_identifier) & number_literal)) )) % identifier)) ;) })) (expression_statement "iVar9 = sqlite3_initialize();" (assignment_expression "iVar9 = sqlite3_initialize()" identifier = (call_expression "sqlite3_initialize()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar9 != 0) ||\n     (puVar7 = (undefined4 *)sqlite3Malloc(CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4)),\n     puVar7 == (undefined4 *)0x0)) {\n    return 7;\n  }" if (parenthesized_expression "((iVar9 != 0) ||\n     (puVar7 = (undefined4 *)sqlite3Malloc(CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4)),\n     puVar7 == (undefined4 *)0x0))" ( (binary_expression "(iVar9 != 0) ||\n     (puVar7 = (undefined4 *)sqlite3Malloc(CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4)),\n     puVar7 == (undefined4 *)0x0)" (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) || (parenthesized_expression "(puVar7 = (undefined4 *)sqlite3Malloc(CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4)),\n     puVar7 == (undefined4 *)0x0)" ( (comma_expression "puVar7 = (undefined4 *)sqlite3Malloc(CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4)),\n     puVar7 == (undefined4 *)0x0" (assignment_expression "puVar7 = (undefined4 *)sqlite3Malloc(CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4))" identifier = (cast_expression "(undefined4 *)sqlite3Malloc(CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3Malloc(CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4))" identifier (argument_list "(CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4))" ( (call_expression "CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4)" identifier (argument_list "(in_stack_ffffffa8,in_stack_ffffffa4)" ( identifier , identifier ))) ))))) , (binary_expression "puVar7 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    return 7;\n  }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (expression_statement "puVar7[9] = 0;" (assignment_expression "puVar7[9] = 0" (subscript_expression "puVar7[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar15 = (undefined4 *)((uint)(puVar7 + 1) & 0xfffffffc);" (assignment_expression "puVar15 = (undefined4 *)((uint)(puVar7 + 1) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(puVar7 + 1) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(puVar7 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar7 + 1) & 0xfffffffc" (call_expression "(uint)(puVar7 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar7 + 1)" ( (binary_expression "puVar7 + 1" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar12 = (uint)((int)puVar7 + (0x28 - (int)((uint)(puVar7 + 1) & 0xfffffffc))) >> 2;\n      uVar12 != 0; uVar12 = uVar12 - 1) {\n    *puVar15 = 0;\n    puVar15 = puVar15 + (uint)bVar17 * -2 + 1;\n  }" for ( (assignment_expression "uVar12 = (uint)((int)puVar7 + (0x28 - (int)((uint)(puVar7 + 1) & 0xfffffffc))) >> 2" identifier = (binary_expression "(uint)((int)puVar7 + (0x28 - (int)((uint)(puVar7 + 1) & 0xfffffffc))) >> 2" (call_expression "(uint)((int)puVar7 + (0x28 - (int)((uint)(puVar7 + 1) & 0xfffffffc)))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar7 + (0x28 - (int)((uint)(puVar7 + 1) & 0xfffffffc)))" ( (binary_expression "(int)puVar7 + (0x28 - (int)((uint)(puVar7 + 1) & 0xfffffffc))" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x28 - (int)((uint)(puVar7 + 1) & 0xfffffffc))" ( (binary_expression "0x28 - (int)((uint)(puVar7 + 1) & 0xfffffffc)" number_literal - (cast_expression "(int)((uint)(puVar7 + 1) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(puVar7 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar7 + 1) & 0xfffffffc" (call_expression "(uint)(puVar7 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar7 + 1)" ( (binary_expression "puVar7 + 1" identifier + number_literal) ))) & number_literal) )))) ))) ))) >> number_literal)) ; (binary_expression "uVar12 != 0" identifier != number_literal) ; (assignment_expression "uVar12 = uVar12 - 1" identifier = (binary_expression "uVar12 - 1" identifier - number_literal)) ) (compound_statement "{\n    *puVar15 = 0;\n    puVar15 = puVar15 + (uint)bVar17 * -2 + 1;\n  }" { (expression_statement "*puVar15 = 0;" (assignment_expression "*puVar15 = 0" (pointer_expression "*puVar15" * identifier) = number_literal) ;) (expression_statement "puVar15 = puVar15 + (uint)bVar17 * -2 + 1;" (assignment_expression "puVar15 = puVar15 + (uint)bVar17 * -2 + 1" identifier = (binary_expression "puVar15 + (uint)bVar17 * -2 + 1" (binary_expression "puVar15 + (uint)bVar17 * -2" identifier + (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "local_34 = (undefined1)((ulonglong)iRowid >> 0x20);" (assignment_expression "local_34 = (undefined1)((ulonglong)iRowid >> 0x20)" identifier = (call_expression "(undefined1)((ulonglong)iRowid >> 0x20)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((ulonglong)iRowid >> 0x20)" ( (binary_expression "(ulonglong)iRowid >> 0x20" (cast_expression "(ulonglong)iRowid" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "puVar7[2] = uVar4;" (assignment_expression "puVar7[2] = uVar4" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(puVar7 + 10) = local_34;" (assignment_expression "*(undefined1 *)(puVar7 + 10) = local_34" (pointer_expression "*(undefined1 *)(puVar7 + 10)" * (cast_expression "(undefined1 *)(puVar7 + 10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 10)" ( (binary_expression "puVar7 + 10" identifier + number_literal) )))) = identifier) ;) (expression_statement "memcpy((void *)((int)puVar7 + 0x29),(void *)iCol,iPos);" (call_expression "memcpy((void *)((int)puVar7 + 0x29),(void *)iCol,iPos)" identifier (argument_list "((void *)((int)puVar7 + 0x29),(void *)iCol,iPos)" ( (cast_expression "(void *)((int)puVar7 + 0x29)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + 0x29)" ( (binary_expression "(int)puVar7 + 0x29" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , (cast_expression "(void *)iCol" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;) (expression_statement "puVar7[5] = iPos;" (assignment_expression "puVar7[5] = iPos" (subscript_expression "puVar7[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)((int)puVar7 + iPos + 0x29) = 0;" (assignment_expression "*(undefined1 *)((int)puVar7 + iPos + 0x29) = 0" (pointer_expression "*(undefined1 *)((int)puVar7 + iPos + 0x29)" * (cast_expression "(undefined1 *)((int)puVar7 + iPos + 0x29)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + iPos + 0x29)" ( (binary_expression "(int)puVar7 + iPos + 0x29" (binary_expression "(int)puVar7 + iPos" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar7[4] = iPos + 0x2a;" (assignment_expression "puVar7[4] = iPos + 0x2a" (subscript_expression "puVar7[4]" identifier [ number_literal ]) = (binary_expression "iPos + 0x2a" identifier + number_literal)) ;) (expression_statement "*puVar7 = *(undefined4 *)(piVar3[5] + uVar11 * 4);" (assignment_expression "*puVar7 = *(undefined4 *)(piVar3[5] + uVar11 * 4)" (pointer_expression "*puVar7" * identifier) = (pointer_expression "*(undefined4 *)(piVar3[5] + uVar11 * 4)" * (cast_expression "(undefined4 *)(piVar3[5] + uVar11 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3[5] + uVar11 * 4)" ( (binary_expression "piVar3[5] + uVar11 * 4" (subscript_expression "piVar3[5]" identifier [ number_literal ]) + (binary_expression "uVar11 * 4" identifier * number_literal)) ))))) ;) (expression_statement "*(undefined4 **)(piVar3[5] + uVar11 * 4) = puVar7;" (assignment_expression "*(undefined4 **)(piVar3[5] + uVar11 * 4) = puVar7" (pointer_expression "*(undefined4 **)(piVar3[5] + uVar11 * 4)" * (cast_expression "(undefined4 **)(piVar3[5] + uVar11 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3[5] + uVar11 * 4)" ( (binary_expression "piVar3[5] + uVar11 * 4" (subscript_expression "piVar3[5]" identifier [ number_literal ]) + (binary_expression "uVar11 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "piVar3[2] = piVar3[2] + 1;" (assignment_expression "piVar3[2] = piVar3[2] + 1" (subscript_expression "piVar3[2]" identifier [ number_literal ]) = (binary_expression "piVar3[2] + 1" (subscript_expression "piVar3[2]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (extraout_ECX == 0 && (uint)(0x7f < uVar8) <= (uint)-extraout_ECX) {\n    local_44 = (uchar)((ulonglong)uVar18 >> 0x20);\n    *(uchar *)(puVar7[4] + (int)puVar7) = local_44;\n    local_50 = 1;\n  }\n  else {\n    local_50 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                                CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n  }" if (parenthesized_expression "(extraout_ECX == 0 && (uint)(0x7f < uVar8) <= (uint)-extraout_ECX)" ( (binary_expression "extraout_ECX == 0 && (uint)(0x7f < uVar8) <= (uint)-extraout_ECX" (binary_expression "extraout_ECX == 0" identifier == number_literal) && (binary_expression "(uint)(0x7f < uVar8) <= (uint)-extraout_ECX" (call_expression "(uint)(0x7f < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x7f < uVar8)" ( (binary_expression "0x7f < uVar8" number_literal < identifier) ))) <= (binary_expression "(uint)-extraout_ECX" (parenthesized_expression "(uint)" ( identifier )) - identifier))) )) (compound_statement "{\n    local_44 = (uchar)((ulonglong)uVar18 >> 0x20);\n    *(uchar *)(puVar7[4] + (int)puVar7) = local_44;\n    local_50 = 1;\n  }" { (expression_statement "local_44 = (uchar)((ulonglong)uVar18 >> 0x20);" (assignment_expression "local_44 = (uchar)((ulonglong)uVar18 >> 0x20)" identifier = (call_expression "(uchar)((ulonglong)uVar18 >> 0x20)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulonglong)uVar18 >> 0x20)" ( (binary_expression "(ulonglong)uVar18 >> 0x20" (cast_expression "(ulonglong)uVar18" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*(uchar *)(puVar7[4] + (int)puVar7) = local_44;" (assignment_expression "*(uchar *)(puVar7[4] + (int)puVar7) = local_44" (pointer_expression "*(uchar *)(puVar7[4] + (int)puVar7)" * (cast_expression "(uchar *)(puVar7[4] + (int)puVar7)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7[4] + (int)puVar7)" ( (binary_expression "puVar7[4] + (int)puVar7" (subscript_expression "puVar7[4]" identifier [ number_literal ]) + (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )))) = identifier) ;) (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    local_50 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                                CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n  }" else (compound_statement "{\n    local_50 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                                CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n  }" { (expression_statement "local_50 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                                CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));" (assignment_expression "local_50 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                                CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4))" identifier = (call_expression "sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                                CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4))" identifier (argument_list "((uchar *)(puVar7[4] + (int)puVar7),\n                                CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4))" ( (cast_expression "(uchar *)(puVar7[4] + (int)puVar7)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7[4] + (int)puVar7)" ( (binary_expression "puVar7[4] + (int)puVar7" (subscript_expression "puVar7[4]" identifier [ number_literal ]) + (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) , (call_expression "CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4)" identifier (argument_list "(in_stack_ffffffa8,in_stack_ffffffa4)" ( identifier , identifier ))) )))) ;) }))) (expression_statement "local_50 = local_50 + puVar7[4];" (assignment_expression "local_50 = local_50 + puVar7[4]" identifier = (binary_expression "local_50 + puVar7[4]" identifier + (subscript_expression "puVar7[4]" identifier [ number_literal ]))) ;) (expression_statement "puVar7[4] = local_50;" (assignment_expression "puVar7[4] = local_50" (subscript_expression "puVar7[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7[9] = extraout_ECX;" (assignment_expression "puVar7[9] = extraout_ECX" (subscript_expression "puVar7[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7[8] = uVar8;" (assignment_expression "puVar7[8] = uVar8" (subscript_expression "puVar7[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7[3] = local_50;" (assignment_expression "puVar7[3] = local_50" (subscript_expression "puVar7[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (*piVar3 != 1) {\n    local_50 = local_50 + 1;\n    puVar7[4] = local_50;\n    *(ushort *)((int)puVar7 + 0x1a) = -(ushort)(*piVar3 != 0);\n  }" if (parenthesized_expression "(*piVar3 != 1)" ( (binary_expression "*piVar3 != 1" (pointer_expression "*piVar3" * identifier) != number_literal) )) (compound_statement "{\n    local_50 = local_50 + 1;\n    puVar7[4] = local_50;\n    *(ushort *)((int)puVar7 + 0x1a) = -(ushort)(*piVar3 != 0);\n  }" { (expression_statement "local_50 = local_50 + 1;" (assignment_expression "local_50 = local_50 + 1" identifier = (binary_expression "local_50 + 1" identifier + number_literal)) ;) (expression_statement "puVar7[4] = local_50;" (assignment_expression "puVar7[4] = local_50" (subscript_expression "puVar7[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(ushort *)((int)puVar7 + 0x1a) = -(ushort)(*piVar3 != 0);" (assignment_expression "*(ushort *)((int)puVar7 + 0x1a) = -(ushort)(*piVar3 != 0)" (pointer_expression "*(ushort *)((int)puVar7 + 0x1a)" * (cast_expression "(ushort *)((int)puVar7 + 0x1a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + 0x1a)" ( (binary_expression "(int)puVar7 + 0x1a" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (unary_expression "-(ushort)(*piVar3 != 0)" - (call_expression "(ushort)(*piVar3 != 0)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(*piVar3 != 0)" ( (binary_expression "*piVar3 != 0" (pointer_expression "*piVar3" * identifier) != number_literal) ))))) ;) })) (labeled_statement "LAB_00088cd7:\n  if ((int)pHash < 0) {\nLAB_00089040:\n    *(undefined1 *)(puVar7 + 6) = 1;\n    iVar9 = puVar7[4];\n    goto LAB_00089047;\n  }" statement_identifier : (if_statement "if ((int)pHash < 0) {\nLAB_00089040:\n    *(undefined1 *)(puVar7 + 6) = 1;\n    iVar9 = puVar7[4];\n    goto LAB_00089047;\n  }" if (parenthesized_expression "((int)pHash < 0)" ( (binary_expression "(int)pHash < 0" (cast_expression "(int)pHash" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00089040:\n    *(undefined1 *)(puVar7 + 6) = 1;\n    iVar9 = puVar7[4];\n    goto LAB_00089047;\n  }" { (labeled_statement "LAB_00089040:\n    *(undefined1 *)(puVar7 + 6) = 1;" statement_identifier : (expression_statement "*(undefined1 *)(puVar7 + 6) = 1;" (assignment_expression "*(undefined1 *)(puVar7 + 6) = 1" (pointer_expression "*(undefined1 *)(puVar7 + 6)" * (cast_expression "(undefined1 *)(puVar7 + 6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 6)" ( (binary_expression "puVar7 + 6" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "iVar9 = puVar7[4];" (assignment_expression "iVar9 = puVar7[4]" identifier = (subscript_expression "puVar7[4]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_00089047;" goto statement_identifier ;) }))) (if_statement "if (*piVar3 == 1) {\nLAB_000890ca:\n    *(undefined1 *)((int)puVar7 + 0x19) = 1;\n    iVar9 = puVar7[4];\n    goto LAB_00089047;\n  }" if (parenthesized_expression "(*piVar3 == 1)" ( (binary_expression "*piVar3 == 1" (pointer_expression "*piVar3" * identifier) == number_literal) )) (compound_statement "{\nLAB_000890ca:\n    *(undefined1 *)((int)puVar7 + 0x19) = 1;\n    iVar9 = puVar7[4];\n    goto LAB_00089047;\n  }" { (labeled_statement "LAB_000890ca:\n    *(undefined1 *)((int)puVar7 + 0x19) = 1;" statement_identifier : (expression_statement "*(undefined1 *)((int)puVar7 + 0x19) = 1;" (assignment_expression "*(undefined1 *)((int)puVar7 + 0x19) = 1" (pointer_expression "*(undefined1 *)((int)puVar7 + 0x19)" * (cast_expression "(undefined1 *)((int)puVar7 + 0x19)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + 0x19)" ( (binary_expression "(int)puVar7 + 0x19" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;)) (expression_statement "iVar9 = puVar7[4];" (assignment_expression "iVar9 = puVar7[4]" identifier = (subscript_expression "puVar7[4]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_00089047;" goto statement_identifier ;) })) (expression_statement "iVar9 = puVar7[4];" (assignment_expression "iVar9 = puVar7[4]" identifier = (subscript_expression "puVar7[4]" identifier [ number_literal ])) ;) (if_statement "if ((Fts5Hash *)(int)*(short *)((int)puVar7 + 0x1a) == pHash) {\nLAB_00088d4f:\n    if (!bVar16) goto LAB_00089047;\n    p = (uchar *)((int)puVar7 + iVar9);\n  }\n  else {\n    p = (uchar *)((int)puVar7 + iVar9);\n    if (*piVar3 == 0) {\n      puVar7[4] = iVar9 + 1;\n      *p = '\x01';\n      if ((int)pHash < 0 || (uint)-((int)pHash >> 0x1f) < (uint)((Fts5Hash *)0x7f < pHash)) {\n        iVar9 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                                 CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n      }\n      else {\n        *(uchar *)(puVar7[4] + (int)puVar7) = (uchar)pHash;\n        iVar9 = 1;\n      }\n      iVar9 = iVar9 + puVar7[4];\n      puVar7[7] = 0;\n      puVar7[4] = iVar9;\n      *(undefined2 *)((int)puVar7 + 0x1a) = pHash._0_2_;\n      goto LAB_00088d4f;\n    }\n    *(undefined2 *)((int)puVar7 + 0x1a) = pHash._0_2_;\n    iRowid._0_4_ = pHash;\n  }" if (parenthesized_expression "((Fts5Hash *)(int)*(short *)((int)puVar7 + 0x1a) == pHash)" ( (binary_expression "(Fts5Hash *)(int)*(short *)((int)puVar7 + 0x1a) == pHash" (cast_expression "(Fts5Hash *)(int)*(short *)((int)puVar7 + 0x1a)" ( (type_descriptor "Fts5Hash *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*(short *)((int)puVar7 + 0x1a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)puVar7 + 0x1a)" * (cast_expression "(short *)((int)puVar7 + 0x1a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + 0x1a)" ( (binary_expression "(int)puVar7 + 0x1a" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) == identifier) )) (compound_statement "{\nLAB_00088d4f:\n    if (!bVar16) goto LAB_00089047;\n    p = (uchar *)((int)puVar7 + iVar9);\n  }" { (labeled_statement "LAB_00088d4f:\n    if (!bVar16) goto LAB_00089047;" statement_identifier : (if_statement "if (!bVar16) goto LAB_00089047;" if (parenthesized_expression "(!bVar16)" ( (unary_expression "!bVar16" ! identifier) )) (goto_statement "goto LAB_00089047;" goto statement_identifier ;))) (expression_statement "p = (uchar *)((int)puVar7 + iVar9);" (assignment_expression "p = (uchar *)((int)puVar7 + iVar9)" identifier = (cast_expression "(uchar *)((int)puVar7 + iVar9)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + iVar9)" ( (binary_expression "(int)puVar7 + iVar9" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) (else_clause "else {\n    p = (uchar *)((int)puVar7 + iVar9);\n    if (*piVar3 == 0) {\n      puVar7[4] = iVar9 + 1;\n      *p = '\x01';\n      if ((int)pHash < 0 || (uint)-((int)pHash >> 0x1f) < (uint)((Fts5Hash *)0x7f < pHash)) {\n        iVar9 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                                 CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n      }\n      else {\n        *(uchar *)(puVar7[4] + (int)puVar7) = (uchar)pHash;\n        iVar9 = 1;\n      }\n      iVar9 = iVar9 + puVar7[4];\n      puVar7[7] = 0;\n      puVar7[4] = iVar9;\n      *(undefined2 *)((int)puVar7 + 0x1a) = pHash._0_2_;\n      goto LAB_00088d4f;\n    }\n    *(undefined2 *)((int)puVar7 + 0x1a) = pHash._0_2_;\n    iRowid._0_4_ = pHash;\n  }" else (compound_statement "{\n    p = (uchar *)((int)puVar7 + iVar9);\n    if (*piVar3 == 0) {\n      puVar7[4] = iVar9 + 1;\n      *p = '\x01';\n      if ((int)pHash < 0 || (uint)-((int)pHash >> 0x1f) < (uint)((Fts5Hash *)0x7f < pHash)) {\n        iVar9 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                                 CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n      }\n      else {\n        *(uchar *)(puVar7[4] + (int)puVar7) = (uchar)pHash;\n        iVar9 = 1;\n      }\n      iVar9 = iVar9 + puVar7[4];\n      puVar7[7] = 0;\n      puVar7[4] = iVar9;\n      *(undefined2 *)((int)puVar7 + 0x1a) = pHash._0_2_;\n      goto LAB_00088d4f;\n    }\n    *(undefined2 *)((int)puVar7 + 0x1a) = pHash._0_2_;\n    iRowid._0_4_ = pHash;\n  }" { (expression_statement "p = (uchar *)((int)puVar7 + iVar9);" (assignment_expression "p = (uchar *)((int)puVar7 + iVar9)" identifier = (cast_expression "(uchar *)((int)puVar7 + iVar9)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + iVar9)" ( (binary_expression "(int)puVar7 + iVar9" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (if_statement "if (*piVar3 == 0) {\n      puVar7[4] = iVar9 + 1;\n      *p = '\x01';\n      if ((int)pHash < 0 || (uint)-((int)pHash >> 0x1f) < (uint)((Fts5Hash *)0x7f < pHash)) {\n        iVar9 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                                 CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n      }\n      else {\n        *(uchar *)(puVar7[4] + (int)puVar7) = (uchar)pHash;\n        iVar9 = 1;\n      }\n      iVar9 = iVar9 + puVar7[4];\n      puVar7[7] = 0;\n      puVar7[4] = iVar9;\n      *(undefined2 *)((int)puVar7 + 0x1a) = pHash._0_2_;\n      goto LAB_00088d4f;\n    }" if (parenthesized_expression "(*piVar3 == 0)" ( (binary_expression "*piVar3 == 0" (pointer_expression "*piVar3" * identifier) == number_literal) )) (compound_statement "{\n      puVar7[4] = iVar9 + 1;\n      *p = '\x01';\n      if ((int)pHash < 0 || (uint)-((int)pHash >> 0x1f) < (uint)((Fts5Hash *)0x7f < pHash)) {\n        iVar9 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                                 CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n      }\n      else {\n        *(uchar *)(puVar7[4] + (int)puVar7) = (uchar)pHash;\n        iVar9 = 1;\n      }\n      iVar9 = iVar9 + puVar7[4];\n      puVar7[7] = 0;\n      puVar7[4] = iVar9;\n      *(undefined2 *)((int)puVar7 + 0x1a) = pHash._0_2_;\n      goto LAB_00088d4f;\n    }" { (expression_statement "puVar7[4] = iVar9 + 1;" (assignment_expression "puVar7[4] = iVar9 + 1" (subscript_expression "puVar7[4]" identifier [ number_literal ]) = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "*p = '\x01';" (assignment_expression "*p = '\x01'" (pointer_expression "*p" * identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (if_statement "if ((int)pHash < 0 || (uint)-((int)pHash >> 0x1f) < (uint)((Fts5Hash *)0x7f < pHash)) {\n        iVar9 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                                 CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n      }\n      else {\n        *(uchar *)(puVar7[4] + (int)puVar7) = (uchar)pHash;\n        iVar9 = 1;\n      }" if (parenthesized_expression "((int)pHash < 0 || (uint)-((int)pHash >> 0x1f) < (uint)((Fts5Hash *)0x7f < pHash))" ( (binary_expression "(int)pHash < 0 || (uint)-((int)pHash >> 0x1f) < (uint)((Fts5Hash *)0x7f < pHash)" (binary_expression "(int)pHash < 0" (cast_expression "(int)pHash" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) || (binary_expression "(uint)-((int)pHash >> 0x1f) < (uint)((Fts5Hash *)0x7f < pHash)" (binary_expression "(uint)-((int)pHash >> 0x1f)" (parenthesized_expression "(uint)" ( identifier )) - (parenthesized_expression "((int)pHash >> 0x1f)" ( (binary_expression "(int)pHash >> 0x1f" (cast_expression "(int)pHash" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) < (call_expression "(uint)((Fts5Hash *)0x7f < pHash)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((Fts5Hash *)0x7f < pHash)" ( (binary_expression "(Fts5Hash *)0x7f < pHash" (cast_expression "(Fts5Hash *)0x7f" ( (type_descriptor "Fts5Hash *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) ))))) )) (compound_statement "{\n        iVar9 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                                 CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n      }" { (expression_statement "iVar9 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                                 CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));" (assignment_expression "iVar9 = sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                                 CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4))" identifier = (call_expression "sqlite3PutVarint((uchar *)(puVar7[4] + (int)puVar7),\n                                 CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4))" identifier (argument_list "((uchar *)(puVar7[4] + (int)puVar7),\n                                 CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4))" ( (cast_expression "(uchar *)(puVar7[4] + (int)puVar7)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7[4] + (int)puVar7)" ( (binary_expression "puVar7[4] + (int)puVar7" (subscript_expression "puVar7[4]" identifier [ number_literal ]) + (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) , (call_expression "CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4)" identifier (argument_list "(in_stack_ffffffa8,in_stack_ffffffa4)" ( identifier , identifier ))) )))) ;) }) (else_clause "else {\n        *(uchar *)(puVar7[4] + (int)puVar7) = (uchar)pHash;\n        iVar9 = 1;\n      }" else (compound_statement "{\n        *(uchar *)(puVar7[4] + (int)puVar7) = (uchar)pHash;\n        iVar9 = 1;\n      }" { (expression_statement "*(uchar *)(puVar7[4] + (int)puVar7) = (uchar)pHash;" (assignment_expression "*(uchar *)(puVar7[4] + (int)puVar7) = (uchar)pHash" (pointer_expression "*(uchar *)(puVar7[4] + (int)puVar7)" * (cast_expression "(uchar *)(puVar7[4] + (int)puVar7)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7[4] + (int)puVar7)" ( (binary_expression "puVar7[4] + (int)puVar7" (subscript_expression "puVar7[4]" identifier [ number_literal ]) + (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )))) = (cast_expression "(uchar)pHash" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) }))) (expression_statement "iVar9 = iVar9 + puVar7[4];" (assignment_expression "iVar9 = iVar9 + puVar7[4]" identifier = (binary_expression "iVar9 + puVar7[4]" identifier + (subscript_expression "puVar7[4]" identifier [ number_literal ]))) ;) (expression_statement "puVar7[7] = 0;" (assignment_expression "puVar7[7] = 0" (subscript_expression "puVar7[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar7[4] = iVar9;" (assignment_expression "puVar7[4] = iVar9" (subscript_expression "puVar7[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined2 *)((int)puVar7 + 0x1a) = pHash._0_2_;" (assignment_expression "*(undefined2 *)((int)puVar7 + 0x1a) = pHash._0_2_" (pointer_expression "*(undefined2 *)((int)puVar7 + 0x1a)" * (cast_expression "(undefined2 *)((int)puVar7 + 0x1a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + 0x1a)" ( (binary_expression "(int)puVar7 + 0x1a" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (field_expression "pHash._0_2_" identifier . field_identifier)) ;) (goto_statement "goto LAB_00088d4f;" goto statement_identifier ;) })) (expression_statement "*(undefined2 *)((int)puVar7 + 0x1a) = pHash._0_2_;" (assignment_expression "*(undefined2 *)((int)puVar7 + 0x1a) = pHash._0_2_" (pointer_expression "*(undefined2 *)((int)puVar7 + 0x1a)" * (cast_expression "(undefined2 *)((int)puVar7 + 0x1a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + 0x1a)" ( (binary_expression "(int)puVar7 + 0x1a" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (field_expression "pHash._0_2_" identifier . field_identifier)) ;) (expression_statement "iRowid._0_4_ = pHash;" (assignment_expression "iRowid._0_4_ = pHash" (field_expression "iRowid._0_4_" identifier . field_identifier) = identifier) ;) }))) (expression_statement "uVar12 = (int)(Fts5Hash *)iRowid + (2 - puVar7[7]);" (assignment_expression "uVar12 = (int)(Fts5Hash *)iRowid + (2 - puVar7[7])" identifier = (binary_expression "(int)(Fts5Hash *)iRowid + (2 - puVar7[7])" (cast_expression "(int)(Fts5Hash *)iRowid" ( (type_descriptor "int" primitive_type) ) (cast_expression "(Fts5Hash *)iRowid" ( (type_descriptor "Fts5Hash *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) + (parenthesized_expression "(2 - puVar7[7])" ( (binary_expression "2 - puVar7[7]" number_literal - (subscript_expression "puVar7[7]" identifier [ number_literal ])) )))) ;) (if_statement "if ((int)uVar12 < 0 || (uint)-((int)uVar12 >> 0x1f) < (uint)(0x7f < uVar12)) {\n    iVar9 = sqlite3PutVarint(p,CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n  }\n  else {\n    *p = (uchar)uVar12;\n    iVar9 = 1;\n  }" if (parenthesized_expression "((int)uVar12 < 0 || (uint)-((int)uVar12 >> 0x1f) < (uint)(0x7f < uVar12))" ( (binary_expression "(int)uVar12 < 0 || (uint)-((int)uVar12 >> 0x1f) < (uint)(0x7f < uVar12)" (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) || (binary_expression "(uint)-((int)uVar12 >> 0x1f) < (uint)(0x7f < uVar12)" (binary_expression "(uint)-((int)uVar12 >> 0x1f)" (parenthesized_expression "(uint)" ( identifier )) - (parenthesized_expression "((int)uVar12 >> 0x1f)" ( (binary_expression "(int)uVar12 >> 0x1f" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) < (call_expression "(uint)(0x7f < uVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x7f < uVar12)" ( (binary_expression "0x7f < uVar12" number_literal < identifier) ))))) )) (compound_statement "{\n    iVar9 = sqlite3PutVarint(p,CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));\n  }" { (expression_statement "iVar9 = sqlite3PutVarint(p,CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4));" (assignment_expression "iVar9 = sqlite3PutVarint(p,CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4))" identifier = (call_expression "sqlite3PutVarint(p,CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4))" identifier (argument_list "(p,CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4))" ( identifier , (call_expression "CONCAT44(in_stack_ffffffa8,in_stack_ffffffa4)" identifier (argument_list "(in_stack_ffffffa8,in_stack_ffffffa4)" ( identifier , identifier ))) )))) ;) }) (else_clause "else {\n    *p = (uchar)uVar12;\n    iVar9 = 1;\n  }" else (compound_statement "{\n    *p = (uchar)uVar12;\n    iVar9 = 1;\n  }" { (expression_statement "*p = (uchar)uVar12;" (assignment_expression "*p = (uchar)uVar12" (pointer_expression "*p" * identifier) = (cast_expression "(uchar)uVar12" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) }))) (expression_statement "iVar9 = iVar9 + puVar7[4];" (assignment_expression "iVar9 = iVar9 + puVar7[4]" identifier = (binary_expression "iVar9 + puVar7[4]" identifier + (subscript_expression "puVar7[4]" identifier [ number_literal ]))) ;) (expression_statement "puVar7[4] = iVar9;" (assignment_expression "puVar7[4] = iVar9" (subscript_expression "puVar7[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7[7] = (Fts5Hash *)iRowid;" (assignment_expression "puVar7[7] = (Fts5Hash *)iRowid" (subscript_expression "puVar7[7]" identifier [ number_literal ]) = (cast_expression "(Fts5Hash *)iRowid" ( (type_descriptor "Fts5Hash *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (labeled_statement "LAB_00089047:\n  *(int *)piVar3[1] = *(int *)piVar3[1] + iVar9 + local_50;" statement_identifier : (expression_statement "*(int *)piVar3[1] = *(int *)piVar3[1] + iVar9 + local_50;" (assignment_expression "*(int *)piVar3[1] = *(int *)piVar3[1] + iVar9 + local_50" (pointer_expression "*(int *)piVar3[1]" * (cast_expression "(int *)piVar3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[1]" identifier [ number_literal ]))) = (binary_expression "*(int *)piVar3[1] + iVar9 + local_50" (binary_expression "*(int *)piVar3[1] + iVar9" (pointer_expression "*(int *)piVar3[1]" * (cast_expression "(int *)piVar3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[1]" identifier [ number_literal ]))) + identifier) + identifier)) ;)) (return_statement "return 0;" return number_literal ;) (labeled_statement "LAB_00088bf0:\n  puVar15 = (undefined4 *)*puVar15;" statement_identifier : (expression_statement "puVar15 = (undefined4 *)*puVar15;" (assignment_expression "puVar15 = (undefined4 *)*puVar15" identifier = (cast_expression "(undefined4 *)*puVar15" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar15" * identifier))) ;)) (if_statement "if (puVar15 == (undefined4 *)0x0) goto LAB_00088da4;" if (parenthesized_expression "(puVar15 == (undefined4 *)0x0)" ( (binary_expression "puVar15 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00088da4;" goto statement_identifier ;)) (goto_statement "goto LAB_00088bfa;" goto statement_identifier ;) })))
(translation_unit "undefined4 FUN_00088b30(uint param_1,uint param_2,byte param_3,void *param_4,size_t param_5)\n\n{\n  undefined4 *puVar1;\n  byte bVar2;\n  int *piVar3;\n  uint uVar4;\n  undefined1 *puVar5;\n  void *__s;\n  size_t sVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  int extraout_ECX;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  uint uVar13;\n  byte *pbVar14;\n  undefined4 *puVar15;\n  undefined4 *puVar16;\n  bool bVar17;\n  byte bVar18;\n  undefined8 uVar19;\n  int local_50;\n  undefined1 local_44;\n  int local_38;\n  \n  bVar18 = 0;\n  uVar19 = FUN_00036ac5();\n  uVar9 = (uint)((ulonglong)uVar19 >> 0x20);\n  piVar3 = (int *)uVar19;\n  bVar17 = *piVar3 == 0;\n  uVar13 = piVar3[3];\n  iVar10 = param_5 - 1;\n  if (iVar10 < 0) {\n    uVar12 = 0x68;\n    uVar4 = 0xd;\n  }\n  else {\n    uVar4 = 0xd;\n    iVar11 = iVar10;\n    do {\n      pbVar14 = (byte *)((int)param_4 + iVar11);\n      iVar11 = iVar11 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;\n    } while (iVar11 != -1);\n    uVar12 = uVar4 * 8;\n  }\n  uVar12 = (uVar4 ^ uVar12 ^ (uint)param_3) % uVar13;\n  puVar8 = (undefined4 *)piVar3[5];\n  puVar16 = (undefined4 *)puVar8[uVar12];\n  if (puVar16 != (undefined4 *)0x0) {\nLAB_00088bfa:\n    if (((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0))\n    goto LAB_00088bf0;\n    iVar10 = puVar16[2];\n    local_50 = puVar16[4];\n    puVar8 = puVar16;\n    if (iVar10 - local_50 < 0x16) {\n      iVar11 = FUN_0005b490();\n      if (iVar11 != 0) {\n        return 7;\n      }\n      puVar8 = (undefined4 *)FUN_00044180();\n      if (puVar8 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar8[2] = iVar10 * 2;\n      puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar15; puVar1 != puVar16; puVar1 = (undefined4 *)*puVar1) {\n        puVar15 = puVar1;\n      }\n      *puVar15 = puVar8;\n      local_50 = puVar8[4];\n    }\n    local_50 = -local_50;\n    if (puVar8[9] == extraout_ECX && puVar8[8] == uVar9) goto LAB_00088cd7;\n    FUN_00053040();\n    uVar13 = uVar9 - puVar8[8];\n    iVar10 = (extraout_ECX - puVar8[9]) - (uint)(uVar9 < (uint)puVar8[8]);\n    if (iVar10 == 0 && (uint)(0x7f < uVar13) <= (uint)-iVar10) {\n      *(char *)(puVar8[4] + (int)puVar8) = (char)uVar13;\n      iVar10 = 1;\n    }\n    else {\n      iVar10 = FUN_00046180();\n    }\n    iVar10 = iVar10 + puVar8[4];\n    puVar8[4] = iVar10;\n    puVar8[8] = uVar9;\n    puVar8[9] = extraout_ECX;\n    puVar8[3] = iVar10;\n    if (*piVar3 != 1) {\n      bVar17 = true;\n      puVar8[4] = iVar10 + 1;\n      iVar10 = *piVar3;\n      puVar8[7] = 0;\n      *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0);\n      goto LAB_00088cd7;\n    }\n    if ((int)param_1 < 0) goto LAB_00089040;\n    goto LAB_000890ca;\n  }\nLAB_00088da4:\n  uVar4 = 0x80;\n  if (0x7f < param_5 + 0x6a) {\n    uVar4 = param_5 + 0x6a;\n  }\n  uVar7 = piVar3[2] * 2;\n  if (uVar13 == uVar7 || SBORROW4(uVar13,uVar7) != (int)(uVar13 + piVar3[2] * -2) < 0) {\n    iVar11 = FUN_0005b490();\n    if (iVar11 != 0) {\n      return 7;\n    }\n    uVar12 = uVar13 * 2;\n    __s = (void *)FUN_000421f0();\n    if (__s == (void *)0x0) {\n      return 7;\n    }\n    memset(__s,0,uVar13 << 3);\n    if (0 < piVar3[3]) {\n      local_38 = 0;\n      puVar16 = puVar8;\n      do {\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      } while (local_38 < piVar3[3]);\n    }\n    FUN_00042800(puVar8);\n    piVar3[3] = uVar12;\n    piVar3[5] = (int)__s;\n    if (iVar10 < 0) {\n      uVar13 = 0x68;\n      uVar7 = 0xd;\n    }\n    else {\n      uVar7 = 0xd;\n      do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);\n      uVar13 = uVar7 * 8;\n    }\n    uVar12 = (uVar7 ^ uVar13 ^ (uint)param_3) % uVar12;\n  }\n  iVar10 = FUN_0005b490();\n  if ((iVar10 != 0) || (puVar8 = (undefined4 *)FUN_000421f0(), puVar8 == (undefined4 *)0x0)) {\n    return 7;\n  }\n  *puVar8 = 0;\n  puVar8[9] = 0;\n  puVar16 = (undefined4 *)((uint)(puVar8 + 1) & 0xfffffffc);\n  for (uVar13 = (uint)((int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc))) >> 2;\n      uVar13 != 0; uVar13 = uVar13 - 1) {\n    *puVar16 = 0;\n    puVar16 = puVar16 + (uint)bVar18 * -2 + 1;\n  }\n  puVar8[2] = uVar4;\n  *(byte *)(puVar8 + 10) = param_3;\n  memcpy((void *)((int)puVar8 + 0x29),param_4,param_5);\n  puVar8[5] = param_5;\n  *(undefined1 *)((int)puVar8 + param_5 + 0x29) = 0;\n  puVar8[4] = param_5 + 0x2a;\n  *puVar8 = *(undefined4 *)(piVar3[5] + uVar12 * 4);\n  *(undefined4 **)(piVar3[5] + uVar12 * 4) = puVar8;\n  piVar3[2] = piVar3[2] + 1;\n  if (extraout_ECX == 0 && (uint)(0x7f < uVar9) <= (uint)-extraout_ECX) {\n    local_44 = (undefined1)((ulonglong)uVar19 >> 0x20);\n    *(undefined1 *)(puVar8[4] + (int)puVar8) = local_44;\n    local_50 = 1;\n  }\n  else {\n    local_50 = FUN_00046180();\n  }\n  local_50 = local_50 + puVar8[4];\n  puVar8[4] = local_50;\n  puVar8[9] = extraout_ECX;\n  puVar8[8] = uVar9;\n  puVar8[3] = local_50;\n  if (*piVar3 != 1) {\n    local_50 = local_50 + 1;\n    puVar8[4] = local_50;\n    *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(*piVar3 != 0);\n  }\nLAB_00088cd7:\n  if ((int)param_1 < 0) {\nLAB_00089040:\n    *(undefined1 *)(puVar8 + 6) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }\n  if (*piVar3 == 1) {\nLAB_000890ca:\n    *(undefined1 *)((int)puVar8 + 0x19) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }\n  iVar10 = puVar8[4];\n  if ((int)*(short *)((int)puVar8 + 0x1a) == param_1) {\nLAB_00088d4f:\n    if (!bVar17) goto LAB_00089047;\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n  }\n  else {\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n    if (*piVar3 == 0) {\n      puVar8[4] = iVar10 + 1;\n      *puVar5 = 1;\n      if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }\n      iVar10 = iVar10 + puVar8[4];\n      puVar8[7] = 0;\n      puVar8[4] = iVar10;\n      *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n      goto LAB_00088d4f;\n    }\n    *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n    param_2 = param_1;\n  }\n  uVar13 = (param_2 - puVar8[7]) + 2;\n  if ((int)uVar13 < 0 || (uint)-((int)uVar13 >> 0x1f) < (uint)(0x7f < uVar13)) {\n    iVar10 = FUN_00046180();\n  }\n  else {\n    *puVar5 = (char)uVar13;\n    iVar10 = 1;\n  }\n  iVar10 = iVar10 + puVar8[4];\n  puVar8[4] = iVar10;\n  puVar8[7] = param_2;\nLAB_00089047:\n  *(int *)piVar3[1] = *(int *)piVar3[1] + iVar10 + local_50;\n  return 0;\nLAB_00088bf0:\n  puVar16 = (undefined4 *)*puVar16;\n  if (puVar16 == (undefined4 *)0x0) goto LAB_00088da4;\n  goto LAB_00088bfa;\n}\n\n" (function_definition "undefined4 FUN_00088b30(uint param_1,uint param_2,byte param_3,void *param_4,size_t param_5)\n\n{\n  undefined4 *puVar1;\n  byte bVar2;\n  int *piVar3;\n  uint uVar4;\n  undefined1 *puVar5;\n  void *__s;\n  size_t sVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  int extraout_ECX;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  uint uVar13;\n  byte *pbVar14;\n  undefined4 *puVar15;\n  undefined4 *puVar16;\n  bool bVar17;\n  byte bVar18;\n  undefined8 uVar19;\n  int local_50;\n  undefined1 local_44;\n  int local_38;\n  \n  bVar18 = 0;\n  uVar19 = FUN_00036ac5();\n  uVar9 = (uint)((ulonglong)uVar19 >> 0x20);\n  piVar3 = (int *)uVar19;\n  bVar17 = *piVar3 == 0;\n  uVar13 = piVar3[3];\n  iVar10 = param_5 - 1;\n  if (iVar10 < 0) {\n    uVar12 = 0x68;\n    uVar4 = 0xd;\n  }\n  else {\n    uVar4 = 0xd;\n    iVar11 = iVar10;\n    do {\n      pbVar14 = (byte *)((int)param_4 + iVar11);\n      iVar11 = iVar11 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;\n    } while (iVar11 != -1);\n    uVar12 = uVar4 * 8;\n  }\n  uVar12 = (uVar4 ^ uVar12 ^ (uint)param_3) % uVar13;\n  puVar8 = (undefined4 *)piVar3[5];\n  puVar16 = (undefined4 *)puVar8[uVar12];\n  if (puVar16 != (undefined4 *)0x0) {\nLAB_00088bfa:\n    if (((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0))\n    goto LAB_00088bf0;\n    iVar10 = puVar16[2];\n    local_50 = puVar16[4];\n    puVar8 = puVar16;\n    if (iVar10 - local_50 < 0x16) {\n      iVar11 = FUN_0005b490();\n      if (iVar11 != 0) {\n        return 7;\n      }\n      puVar8 = (undefined4 *)FUN_00044180();\n      if (puVar8 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar8[2] = iVar10 * 2;\n      puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar15; puVar1 != puVar16; puVar1 = (undefined4 *)*puVar1) {\n        puVar15 = puVar1;\n      }\n      *puVar15 = puVar8;\n      local_50 = puVar8[4];\n    }\n    local_50 = -local_50;\n    if (puVar8[9] == extraout_ECX && puVar8[8] == uVar9) goto LAB_00088cd7;\n    FUN_00053040();\n    uVar13 = uVar9 - puVar8[8];\n    iVar10 = (extraout_ECX - puVar8[9]) - (uint)(uVar9 < (uint)puVar8[8]);\n    if (iVar10 == 0 && (uint)(0x7f < uVar13) <= (uint)-iVar10) {\n      *(char *)(puVar8[4] + (int)puVar8) = (char)uVar13;\n      iVar10 = 1;\n    }\n    else {\n      iVar10 = FUN_00046180();\n    }\n    iVar10 = iVar10 + puVar8[4];\n    puVar8[4] = iVar10;\n    puVar8[8] = uVar9;\n    puVar8[9] = extraout_ECX;\n    puVar8[3] = iVar10;\n    if (*piVar3 != 1) {\n      bVar17 = true;\n      puVar8[4] = iVar10 + 1;\n      iVar10 = *piVar3;\n      puVar8[7] = 0;\n      *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0);\n      goto LAB_00088cd7;\n    }\n    if ((int)param_1 < 0) goto LAB_00089040;\n    goto LAB_000890ca;\n  }\nLAB_00088da4:\n  uVar4 = 0x80;\n  if (0x7f < param_5 + 0x6a) {\n    uVar4 = param_5 + 0x6a;\n  }\n  uVar7 = piVar3[2] * 2;\n  if (uVar13 == uVar7 || SBORROW4(uVar13,uVar7) != (int)(uVar13 + piVar3[2] * -2) < 0) {\n    iVar11 = FUN_0005b490();\n    if (iVar11 != 0) {\n      return 7;\n    }\n    uVar12 = uVar13 * 2;\n    __s = (void *)FUN_000421f0();\n    if (__s == (void *)0x0) {\n      return 7;\n    }\n    memset(__s,0,uVar13 << 3);\n    if (0 < piVar3[3]) {\n      local_38 = 0;\n      puVar16 = puVar8;\n      do {\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      } while (local_38 < piVar3[3]);\n    }\n    FUN_00042800(puVar8);\n    piVar3[3] = uVar12;\n    piVar3[5] = (int)__s;\n    if (iVar10 < 0) {\n      uVar13 = 0x68;\n      uVar7 = 0xd;\n    }\n    else {\n      uVar7 = 0xd;\n      do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);\n      uVar13 = uVar7 * 8;\n    }\n    uVar12 = (uVar7 ^ uVar13 ^ (uint)param_3) % uVar12;\n  }\n  iVar10 = FUN_0005b490();\n  if ((iVar10 != 0) || (puVar8 = (undefined4 *)FUN_000421f0(), puVar8 == (undefined4 *)0x0)) {\n    return 7;\n  }\n  *puVar8 = 0;\n  puVar8[9] = 0;\n  puVar16 = (undefined4 *)((uint)(puVar8 + 1) & 0xfffffffc);\n  for (uVar13 = (uint)((int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc))) >> 2;\n      uVar13 != 0; uVar13 = uVar13 - 1) {\n    *puVar16 = 0;\n    puVar16 = puVar16 + (uint)bVar18 * -2 + 1;\n  }\n  puVar8[2] = uVar4;\n  *(byte *)(puVar8 + 10) = param_3;\n  memcpy((void *)((int)puVar8 + 0x29),param_4,param_5);\n  puVar8[5] = param_5;\n  *(undefined1 *)((int)puVar8 + param_5 + 0x29) = 0;\n  puVar8[4] = param_5 + 0x2a;\n  *puVar8 = *(undefined4 *)(piVar3[5] + uVar12 * 4);\n  *(undefined4 **)(piVar3[5] + uVar12 * 4) = puVar8;\n  piVar3[2] = piVar3[2] + 1;\n  if (extraout_ECX == 0 && (uint)(0x7f < uVar9) <= (uint)-extraout_ECX) {\n    local_44 = (undefined1)((ulonglong)uVar19 >> 0x20);\n    *(undefined1 *)(puVar8[4] + (int)puVar8) = local_44;\n    local_50 = 1;\n  }\n  else {\n    local_50 = FUN_00046180();\n  }\n  local_50 = local_50 + puVar8[4];\n  puVar8[4] = local_50;\n  puVar8[9] = extraout_ECX;\n  puVar8[8] = uVar9;\n  puVar8[3] = local_50;\n  if (*piVar3 != 1) {\n    local_50 = local_50 + 1;\n    puVar8[4] = local_50;\n    *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(*piVar3 != 0);\n  }\nLAB_00088cd7:\n  if ((int)param_1 < 0) {\nLAB_00089040:\n    *(undefined1 *)(puVar8 + 6) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }\n  if (*piVar3 == 1) {\nLAB_000890ca:\n    *(undefined1 *)((int)puVar8 + 0x19) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }\n  iVar10 = puVar8[4];\n  if ((int)*(short *)((int)puVar8 + 0x1a) == param_1) {\nLAB_00088d4f:\n    if (!bVar17) goto LAB_00089047;\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n  }\n  else {\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n    if (*piVar3 == 0) {\n      puVar8[4] = iVar10 + 1;\n      *puVar5 = 1;\n      if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }\n      iVar10 = iVar10 + puVar8[4];\n      puVar8[7] = 0;\n      puVar8[4] = iVar10;\n      *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n      goto LAB_00088d4f;\n    }\n    *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n    param_2 = param_1;\n  }\n  uVar13 = (param_2 - puVar8[7]) + 2;\n  if ((int)uVar13 < 0 || (uint)-((int)uVar13 >> 0x1f) < (uint)(0x7f < uVar13)) {\n    iVar10 = FUN_00046180();\n  }\n  else {\n    *puVar5 = (char)uVar13;\n    iVar10 = 1;\n  }\n  iVar10 = iVar10 + puVar8[4];\n  puVar8[4] = iVar10;\n  puVar8[7] = param_2;\nLAB_00089047:\n  *(int *)piVar3[1] = *(int *)piVar3[1] + iVar10 + local_50;\n  return 0;\nLAB_00088bf0:\n  puVar16 = (undefined4 *)*puVar16;\n  if (puVar16 == (undefined4 *)0x0) goto LAB_00088da4;\n  goto LAB_00088bfa;\n}" type_identifier (function_declarator "FUN_00088b30(uint param_1,uint param_2,byte param_3,void *param_4,size_t param_5)" identifier (parameter_list "(uint param_1,uint param_2,byte param_3,void *param_4,size_t param_5)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "byte param_3" type_identifier identifier) , (parameter_declaration "void *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "size_t param_5" primitive_type identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  byte bVar2;\n  int *piVar3;\n  uint uVar4;\n  undefined1 *puVar5;\n  void *__s;\n  size_t sVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  int extraout_ECX;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  uint uVar13;\n  byte *pbVar14;\n  undefined4 *puVar15;\n  undefined4 *puVar16;\n  bool bVar17;\n  byte bVar18;\n  undefined8 uVar19;\n  int local_50;\n  undefined1 local_44;\n  int local_38;\n  \n  bVar18 = 0;\n  uVar19 = FUN_00036ac5();\n  uVar9 = (uint)((ulonglong)uVar19 >> 0x20);\n  piVar3 = (int *)uVar19;\n  bVar17 = *piVar3 == 0;\n  uVar13 = piVar3[3];\n  iVar10 = param_5 - 1;\n  if (iVar10 < 0) {\n    uVar12 = 0x68;\n    uVar4 = 0xd;\n  }\n  else {\n    uVar4 = 0xd;\n    iVar11 = iVar10;\n    do {\n      pbVar14 = (byte *)((int)param_4 + iVar11);\n      iVar11 = iVar11 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;\n    } while (iVar11 != -1);\n    uVar12 = uVar4 * 8;\n  }\n  uVar12 = (uVar4 ^ uVar12 ^ (uint)param_3) % uVar13;\n  puVar8 = (undefined4 *)piVar3[5];\n  puVar16 = (undefined4 *)puVar8[uVar12];\n  if (puVar16 != (undefined4 *)0x0) {\nLAB_00088bfa:\n    if (((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0))\n    goto LAB_00088bf0;\n    iVar10 = puVar16[2];\n    local_50 = puVar16[4];\n    puVar8 = puVar16;\n    if (iVar10 - local_50 < 0x16) {\n      iVar11 = FUN_0005b490();\n      if (iVar11 != 0) {\n        return 7;\n      }\n      puVar8 = (undefined4 *)FUN_00044180();\n      if (puVar8 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar8[2] = iVar10 * 2;\n      puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar15; puVar1 != puVar16; puVar1 = (undefined4 *)*puVar1) {\n        puVar15 = puVar1;\n      }\n      *puVar15 = puVar8;\n      local_50 = puVar8[4];\n    }\n    local_50 = -local_50;\n    if (puVar8[9] == extraout_ECX && puVar8[8] == uVar9) goto LAB_00088cd7;\n    FUN_00053040();\n    uVar13 = uVar9 - puVar8[8];\n    iVar10 = (extraout_ECX - puVar8[9]) - (uint)(uVar9 < (uint)puVar8[8]);\n    if (iVar10 == 0 && (uint)(0x7f < uVar13) <= (uint)-iVar10) {\n      *(char *)(puVar8[4] + (int)puVar8) = (char)uVar13;\n      iVar10 = 1;\n    }\n    else {\n      iVar10 = FUN_00046180();\n    }\n    iVar10 = iVar10 + puVar8[4];\n    puVar8[4] = iVar10;\n    puVar8[8] = uVar9;\n    puVar8[9] = extraout_ECX;\n    puVar8[3] = iVar10;\n    if (*piVar3 != 1) {\n      bVar17 = true;\n      puVar8[4] = iVar10 + 1;\n      iVar10 = *piVar3;\n      puVar8[7] = 0;\n      *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0);\n      goto LAB_00088cd7;\n    }\n    if ((int)param_1 < 0) goto LAB_00089040;\n    goto LAB_000890ca;\n  }\nLAB_00088da4:\n  uVar4 = 0x80;\n  if (0x7f < param_5 + 0x6a) {\n    uVar4 = param_5 + 0x6a;\n  }\n  uVar7 = piVar3[2] * 2;\n  if (uVar13 == uVar7 || SBORROW4(uVar13,uVar7) != (int)(uVar13 + piVar3[2] * -2) < 0) {\n    iVar11 = FUN_0005b490();\n    if (iVar11 != 0) {\n      return 7;\n    }\n    uVar12 = uVar13 * 2;\n    __s = (void *)FUN_000421f0();\n    if (__s == (void *)0x0) {\n      return 7;\n    }\n    memset(__s,0,uVar13 << 3);\n    if (0 < piVar3[3]) {\n      local_38 = 0;\n      puVar16 = puVar8;\n      do {\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      } while (local_38 < piVar3[3]);\n    }\n    FUN_00042800(puVar8);\n    piVar3[3] = uVar12;\n    piVar3[5] = (int)__s;\n    if (iVar10 < 0) {\n      uVar13 = 0x68;\n      uVar7 = 0xd;\n    }\n    else {\n      uVar7 = 0xd;\n      do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);\n      uVar13 = uVar7 * 8;\n    }\n    uVar12 = (uVar7 ^ uVar13 ^ (uint)param_3) % uVar12;\n  }\n  iVar10 = FUN_0005b490();\n  if ((iVar10 != 0) || (puVar8 = (undefined4 *)FUN_000421f0(), puVar8 == (undefined4 *)0x0)) {\n    return 7;\n  }\n  *puVar8 = 0;\n  puVar8[9] = 0;\n  puVar16 = (undefined4 *)((uint)(puVar8 + 1) & 0xfffffffc);\n  for (uVar13 = (uint)((int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc))) >> 2;\n      uVar13 != 0; uVar13 = uVar13 - 1) {\n    *puVar16 = 0;\n    puVar16 = puVar16 + (uint)bVar18 * -2 + 1;\n  }\n  puVar8[2] = uVar4;\n  *(byte *)(puVar8 + 10) = param_3;\n  memcpy((void *)((int)puVar8 + 0x29),param_4,param_5);\n  puVar8[5] = param_5;\n  *(undefined1 *)((int)puVar8 + param_5 + 0x29) = 0;\n  puVar8[4] = param_5 + 0x2a;\n  *puVar8 = *(undefined4 *)(piVar3[5] + uVar12 * 4);\n  *(undefined4 **)(piVar3[5] + uVar12 * 4) = puVar8;\n  piVar3[2] = piVar3[2] + 1;\n  if (extraout_ECX == 0 && (uint)(0x7f < uVar9) <= (uint)-extraout_ECX) {\n    local_44 = (undefined1)((ulonglong)uVar19 >> 0x20);\n    *(undefined1 *)(puVar8[4] + (int)puVar8) = local_44;\n    local_50 = 1;\n  }\n  else {\n    local_50 = FUN_00046180();\n  }\n  local_50 = local_50 + puVar8[4];\n  puVar8[4] = local_50;\n  puVar8[9] = extraout_ECX;\n  puVar8[8] = uVar9;\n  puVar8[3] = local_50;\n  if (*piVar3 != 1) {\n    local_50 = local_50 + 1;\n    puVar8[4] = local_50;\n    *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(*piVar3 != 0);\n  }\nLAB_00088cd7:\n  if ((int)param_1 < 0) {\nLAB_00089040:\n    *(undefined1 *)(puVar8 + 6) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }\n  if (*piVar3 == 1) {\nLAB_000890ca:\n    *(undefined1 *)((int)puVar8 + 0x19) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }\n  iVar10 = puVar8[4];\n  if ((int)*(short *)((int)puVar8 + 0x1a) == param_1) {\nLAB_00088d4f:\n    if (!bVar17) goto LAB_00089047;\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n  }\n  else {\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n    if (*piVar3 == 0) {\n      puVar8[4] = iVar10 + 1;\n      *puVar5 = 1;\n      if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }\n      iVar10 = iVar10 + puVar8[4];\n      puVar8[7] = 0;\n      puVar8[4] = iVar10;\n      *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n      goto LAB_00088d4f;\n    }\n    *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n    param_2 = param_1;\n  }\n  uVar13 = (param_2 - puVar8[7]) + 2;\n  if ((int)uVar13 < 0 || (uint)-((int)uVar13 >> 0x1f) < (uint)(0x7f < uVar13)) {\n    iVar10 = FUN_00046180();\n  }\n  else {\n    *puVar5 = (char)uVar13;\n    iVar10 = 1;\n  }\n  iVar10 = iVar10 + puVar8[4];\n  puVar8[4] = iVar10;\n  puVar8[7] = param_2;\nLAB_00089047:\n  *(int *)piVar3[1] = *(int *)piVar3[1] + iVar10 + local_50;\n  return 0;\nLAB_00088bf0:\n  puVar16 = (undefined4 *)*puVar16;\n  if (puVar16 == (undefined4 *)0x0) goto LAB_00088da4;\n  goto LAB_00088bfa;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "void *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "undefined4 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined4 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "bool bVar17;" primitive_type identifier ;) (declaration "byte bVar18;" type_identifier identifier ;) (declaration "undefined8 uVar19;" type_identifier identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "undefined1 local_44;" type_identifier identifier ;) (declaration "int local_38;" primitive_type identifier ;) (expression_statement "bVar18 = 0;" (assignment_expression "bVar18 = 0" identifier = number_literal) ;) (expression_statement "uVar19 = FUN_00036ac5();" (assignment_expression "uVar19 = FUN_00036ac5()" identifier = (call_expression "FUN_00036ac5()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar9 = (uint)((ulonglong)uVar19 >> 0x20);" (assignment_expression "uVar9 = (uint)((ulonglong)uVar19 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar19 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar19 >> 0x20)" ( (binary_expression "(ulonglong)uVar19 >> 0x20" (cast_expression "(ulonglong)uVar19" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar3 = (int *)uVar19;" (assignment_expression "piVar3 = (int *)uVar19" identifier = (cast_expression "(int *)uVar19" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "bVar17 = *piVar3 == 0;" (assignment_expression "bVar17 = *piVar3 == 0" identifier = (binary_expression "*piVar3 == 0" (pointer_expression "*piVar3" * identifier) == number_literal)) ;) (expression_statement "uVar13 = piVar3[3];" (assignment_expression "uVar13 = piVar3[3]" identifier = (subscript_expression "piVar3[3]" identifier [ number_literal ])) ;) (expression_statement "iVar10 = param_5 - 1;" (assignment_expression "iVar10 = param_5 - 1" identifier = (binary_expression "param_5 - 1" identifier - number_literal)) ;) (if_statement "if (iVar10 < 0) {\n    uVar12 = 0x68;\n    uVar4 = 0xd;\n  }\n  else {\n    uVar4 = 0xd;\n    iVar11 = iVar10;\n    do {\n      pbVar14 = (byte *)((int)param_4 + iVar11);\n      iVar11 = iVar11 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;\n    } while (iVar11 != -1);\n    uVar12 = uVar4 * 8;\n  }" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (compound_statement "{\n    uVar12 = 0x68;\n    uVar4 = 0xd;\n  }" { (expression_statement "uVar12 = 0x68;" (assignment_expression "uVar12 = 0x68" identifier = number_literal) ;) (expression_statement "uVar4 = 0xd;" (assignment_expression "uVar4 = 0xd" identifier = number_literal) ;) }) (else_clause "else {\n    uVar4 = 0xd;\n    iVar11 = iVar10;\n    do {\n      pbVar14 = (byte *)((int)param_4 + iVar11);\n      iVar11 = iVar11 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;\n    } while (iVar11 != -1);\n    uVar12 = uVar4 * 8;\n  }" else (compound_statement "{\n    uVar4 = 0xd;\n    iVar11 = iVar10;\n    do {\n      pbVar14 = (byte *)((int)param_4 + iVar11);\n      iVar11 = iVar11 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;\n    } while (iVar11 != -1);\n    uVar12 = uVar4 * 8;\n  }" { (expression_statement "uVar4 = 0xd;" (assignment_expression "uVar4 = 0xd" identifier = number_literal) ;) (expression_statement "iVar11 = iVar10;" (assignment_expression "iVar11 = iVar10" identifier = identifier) ;) (do_statement "do {\n      pbVar14 = (byte *)((int)param_4 + iVar11);\n      iVar11 = iVar11 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;\n    } while (iVar11 != -1);" do (compound_statement "{\n      pbVar14 = (byte *)((int)param_4 + iVar11);\n      iVar11 = iVar11 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;\n    }" { (expression_statement "pbVar14 = (byte *)((int)param_4 + iVar11);" (assignment_expression "pbVar14 = (byte *)((int)param_4 + iVar11)" identifier = (cast_expression "(byte *)((int)param_4 + iVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + iVar11)" ( (binary_expression "(int)param_4 + iVar11" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;" (assignment_expression "uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14" identifier = (binary_expression "uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14" (binary_expression "uVar4 ^ uVar4 * 8" identifier ^ (binary_expression "uVar4 * 8" identifier * number_literal)) ^ (binary_expression "(uint)*pbVar14" (parenthesized_expression "(uint)" ( identifier )) * identifier))) ;) }) while (parenthesized_expression "(iVar11 != -1)" ( (binary_expression "iVar11 != -1" identifier != number_literal) )) ;) (expression_statement "uVar12 = uVar4 * 8;" (assignment_expression "uVar12 = uVar4 * 8" identifier = (binary_expression "uVar4 * 8" identifier * number_literal)) ;) }))) (expression_statement "uVar12 = (uVar4 ^ uVar12 ^ (uint)param_3) % uVar13;" (assignment_expression "uVar12 = (uVar4 ^ uVar12 ^ (uint)param_3) % uVar13" identifier = (binary_expression "(uVar4 ^ uVar12 ^ (uint)param_3) % uVar13" (parenthesized_expression "(uVar4 ^ uVar12 ^ (uint)param_3)" ( (binary_expression "uVar4 ^ uVar12 ^ (uint)param_3" (binary_expression "uVar4 ^ uVar12" identifier ^ identifier) ^ (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier)) )) % identifier)) ;) (expression_statement "puVar8 = (undefined4 *)piVar3[5];" (assignment_expression "puVar8 = (undefined4 *)piVar3[5]" identifier = (cast_expression "(undefined4 *)piVar3[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[5]" identifier [ number_literal ]))) ;) (expression_statement "puVar16 = (undefined4 *)puVar8[uVar12];" (assignment_expression "puVar16 = (undefined4 *)puVar8[uVar12]" identifier = (cast_expression "(undefined4 *)puVar8[uVar12]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar8[uVar12]" identifier [ identifier ]))) ;) (if_statement "if (puVar16 != (undefined4 *)0x0) {\nLAB_00088bfa:\n    if (((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0))\n    goto LAB_00088bf0;\n    iVar10 = puVar16[2];\n    local_50 = puVar16[4];\n    puVar8 = puVar16;\n    if (iVar10 - local_50 < 0x16) {\n      iVar11 = FUN_0005b490();\n      if (iVar11 != 0) {\n        return 7;\n      }\n      puVar8 = (undefined4 *)FUN_00044180();\n      if (puVar8 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar8[2] = iVar10 * 2;\n      puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar15; puVar1 != puVar16; puVar1 = (undefined4 *)*puVar1) {\n        puVar15 = puVar1;\n      }\n      *puVar15 = puVar8;\n      local_50 = puVar8[4];\n    }\n    local_50 = -local_50;\n    if (puVar8[9] == extraout_ECX && puVar8[8] == uVar9) goto LAB_00088cd7;\n    FUN_00053040();\n    uVar13 = uVar9 - puVar8[8];\n    iVar10 = (extraout_ECX - puVar8[9]) - (uint)(uVar9 < (uint)puVar8[8]);\n    if (iVar10 == 0 && (uint)(0x7f < uVar13) <= (uint)-iVar10) {\n      *(char *)(puVar8[4] + (int)puVar8) = (char)uVar13;\n      iVar10 = 1;\n    }\n    else {\n      iVar10 = FUN_00046180();\n    }\n    iVar10 = iVar10 + puVar8[4];\n    puVar8[4] = iVar10;\n    puVar8[8] = uVar9;\n    puVar8[9] = extraout_ECX;\n    puVar8[3] = iVar10;\n    if (*piVar3 != 1) {\n      bVar17 = true;\n      puVar8[4] = iVar10 + 1;\n      iVar10 = *piVar3;\n      puVar8[7] = 0;\n      *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0);\n      goto LAB_00088cd7;\n    }\n    if ((int)param_1 < 0) goto LAB_00089040;\n    goto LAB_000890ca;\n  }" if (parenthesized_expression "(puVar16 != (undefined4 *)0x0)" ( (binary_expression "puVar16 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00088bfa:\n    if (((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0))\n    goto LAB_00088bf0;\n    iVar10 = puVar16[2];\n    local_50 = puVar16[4];\n    puVar8 = puVar16;\n    if (iVar10 - local_50 < 0x16) {\n      iVar11 = FUN_0005b490();\n      if (iVar11 != 0) {\n        return 7;\n      }\n      puVar8 = (undefined4 *)FUN_00044180();\n      if (puVar8 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar8[2] = iVar10 * 2;\n      puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar15; puVar1 != puVar16; puVar1 = (undefined4 *)*puVar1) {\n        puVar15 = puVar1;\n      }\n      *puVar15 = puVar8;\n      local_50 = puVar8[4];\n    }\n    local_50 = -local_50;\n    if (puVar8[9] == extraout_ECX && puVar8[8] == uVar9) goto LAB_00088cd7;\n    FUN_00053040();\n    uVar13 = uVar9 - puVar8[8];\n    iVar10 = (extraout_ECX - puVar8[9]) - (uint)(uVar9 < (uint)puVar8[8]);\n    if (iVar10 == 0 && (uint)(0x7f < uVar13) <= (uint)-iVar10) {\n      *(char *)(puVar8[4] + (int)puVar8) = (char)uVar13;\n      iVar10 = 1;\n    }\n    else {\n      iVar10 = FUN_00046180();\n    }\n    iVar10 = iVar10 + puVar8[4];\n    puVar8[4] = iVar10;\n    puVar8[8] = uVar9;\n    puVar8[9] = extraout_ECX;\n    puVar8[3] = iVar10;\n    if (*piVar3 != 1) {\n      bVar17 = true;\n      puVar8[4] = iVar10 + 1;\n      iVar10 = *piVar3;\n      puVar8[7] = 0;\n      *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0);\n      goto LAB_00088cd7;\n    }\n    if ((int)param_1 < 0) goto LAB_00089040;\n    goto LAB_000890ca;\n  }" { (labeled_statement "LAB_00088bfa:\n    if (((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0))\n    goto LAB_00088bf0;" statement_identifier : (if_statement "if (((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0))\n    goto LAB_00088bf0;" if (parenthesized_expression "(((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0))" ( (binary_expression "((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0)" (parenthesized_expression "((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5))" ( (binary_expression "(*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)" (parenthesized_expression "(*(byte *)(puVar16 + 10) != param_3)" ( (binary_expression "*(byte *)(puVar16 + 10) != param_3" (pointer_expression "*(byte *)(puVar16 + 10)" * (cast_expression "(byte *)(puVar16 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 10)" ( (binary_expression "puVar16 + 10" identifier + number_literal) )))) != identifier) )) || (parenthesized_expression "(puVar16[5] != param_5)" ( (binary_expression "puVar16[5] != param_5" (subscript_expression "puVar16[5]" identifier [ number_literal ]) != identifier) ))) )) || (parenthesized_expression "(iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0)" ( (comma_expression "iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0" (assignment_expression "iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5)" identifier = (call_expression "memcmp((void *)((int)puVar16 + 0x29),param_4,param_5)" identifier (argument_list "((void *)((int)puVar16 + 0x29),param_4,param_5)" ( (cast_expression "(void *)((int)puVar16 + 0x29)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + 0x29)" ( (binary_expression "(int)puVar16 + 0x29" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , identifier , identifier )))) , (binary_expression "iVar11 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_00088bf0;" goto statement_identifier ;))) (expression_statement "iVar10 = puVar16[2];" (assignment_expression "iVar10 = puVar16[2]" identifier = (subscript_expression "puVar16[2]" identifier [ number_literal ])) ;) (expression_statement "local_50 = puVar16[4];" (assignment_expression "local_50 = puVar16[4]" identifier = (subscript_expression "puVar16[4]" identifier [ number_literal ])) ;) (expression_statement "puVar8 = puVar16;" (assignment_expression "puVar8 = puVar16" identifier = identifier) ;) (if_statement "if (iVar10 - local_50 < 0x16) {\n      iVar11 = FUN_0005b490();\n      if (iVar11 != 0) {\n        return 7;\n      }\n      puVar8 = (undefined4 *)FUN_00044180();\n      if (puVar8 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar8[2] = iVar10 * 2;\n      puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar15; puVar1 != puVar16; puVar1 = (undefined4 *)*puVar1) {\n        puVar15 = puVar1;\n      }\n      *puVar15 = puVar8;\n      local_50 = puVar8[4];\n    }" if (parenthesized_expression "(iVar10 - local_50 < 0x16)" ( (binary_expression "iVar10 - local_50 < 0x16" (binary_expression "iVar10 - local_50" identifier - identifier) < number_literal) )) (compound_statement "{\n      iVar11 = FUN_0005b490();\n      if (iVar11 != 0) {\n        return 7;\n      }\n      puVar8 = (undefined4 *)FUN_00044180();\n      if (puVar8 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar8[2] = iVar10 * 2;\n      puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar15; puVar1 != puVar16; puVar1 = (undefined4 *)*puVar1) {\n        puVar15 = puVar1;\n      }\n      *puVar15 = puVar8;\n      local_50 = puVar8[4];\n    }" { (expression_statement "iVar11 = FUN_0005b490();" (assignment_expression "iVar11 = FUN_0005b490()" identifier = (call_expression "FUN_0005b490()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar11 != 0) {\n        return 7;\n      }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n        return 7;\n      }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "puVar8 = (undefined4 *)FUN_00044180();" (assignment_expression "puVar8 = (undefined4 *)FUN_00044180()" identifier = (cast_expression "(undefined4 *)FUN_00044180()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00044180()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (puVar8 == (undefined4 *)0x0) {\n        return 7;\n      }" if (parenthesized_expression "(puVar8 == (undefined4 *)0x0)" ( (binary_expression "puVar8 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return 7;\n      }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "puVar8[2] = iVar10 * 2;" (assignment_expression "puVar8[2] = iVar10 * 2" (subscript_expression "puVar8[2]" identifier [ number_literal ]) = (binary_expression "iVar10 * 2" identifier * number_literal)) ;) (expression_statement "puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5]);" (assignment_expression "puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5])" identifier = (cast_expression "(undefined4 *)(uVar12 * 4 + piVar3[5])" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar12 * 4 + piVar3[5])" ( (binary_expression "uVar12 * 4 + piVar3[5]" (binary_expression "uVar12 * 4" identifier * number_literal) + (subscript_expression "piVar3[5]" identifier [ number_literal ])) )))) ;) (for_statement "for (puVar1 = (undefined4 *)*puVar15; puVar1 != puVar16; puVar1 = (undefined4 *)*puVar1) {\n        puVar15 = puVar1;\n      }" for ( (assignment_expression "puVar1 = (undefined4 *)*puVar15" identifier = (cast_expression "(undefined4 *)*puVar15" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar15" * identifier))) ; (binary_expression "puVar1 != puVar16" identifier != identifier) ; (assignment_expression "puVar1 = (undefined4 *)*puVar1" identifier = (cast_expression "(undefined4 *)*puVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ) (compound_statement "{\n        puVar15 = puVar1;\n      }" { (expression_statement "puVar15 = puVar1;" (assignment_expression "puVar15 = puVar1" identifier = identifier) ;) })) (expression_statement "*puVar15 = puVar8;" (assignment_expression "*puVar15 = puVar8" (pointer_expression "*puVar15" * identifier) = identifier) ;) (expression_statement "local_50 = puVar8[4];" (assignment_expression "local_50 = puVar8[4]" identifier = (subscript_expression "puVar8[4]" identifier [ number_literal ])) ;) })) (expression_statement "local_50 = -local_50;" (assignment_expression "local_50 = -local_50" identifier = (unary_expression "-local_50" - identifier)) ;) (if_statement "if (puVar8[9] == extraout_ECX && puVar8[8] == uVar9) goto LAB_00088cd7;" if (parenthesized_expression "(puVar8[9] == extraout_ECX && puVar8[8] == uVar9)" ( (binary_expression "puVar8[9] == extraout_ECX && puVar8[8] == uVar9" (binary_expression "puVar8[9] == extraout_ECX" (subscript_expression "puVar8[9]" identifier [ number_literal ]) == identifier) && (binary_expression "puVar8[8] == uVar9" (subscript_expression "puVar8[8]" identifier [ number_literal ]) == identifier)) )) (goto_statement "goto LAB_00088cd7;" goto statement_identifier ;)) (expression_statement "FUN_00053040();" (call_expression "FUN_00053040()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar13 = uVar9 - puVar8[8];" (assignment_expression "uVar13 = uVar9 - puVar8[8]" identifier = (binary_expression "uVar9 - puVar8[8]" identifier - (subscript_expression "puVar8[8]" identifier [ number_literal ]))) ;) (expression_statement "iVar10 = (extraout_ECX - puVar8[9]) - (uint)(uVar9 < (uint)puVar8[8]);" (assignment_expression "iVar10 = (extraout_ECX - puVar8[9]) - (uint)(uVar9 < (uint)puVar8[8])" identifier = (binary_expression "(extraout_ECX - puVar8[9]) - (uint)(uVar9 < (uint)puVar8[8])" (parenthesized_expression "(extraout_ECX - puVar8[9])" ( (binary_expression "extraout_ECX - puVar8[9]" identifier - (subscript_expression "puVar8[9]" identifier [ number_literal ])) )) - (call_expression "(uint)(uVar9 < (uint)puVar8[8])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < (uint)puVar8[8])" ( (binary_expression "uVar9 < (uint)puVar8[8]" identifier < (cast_expression "(uint)puVar8[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar8[8]" identifier [ number_literal ]))) ))))) ;) (if_statement "if (iVar10 == 0 && (uint)(0x7f < uVar13) <= (uint)-iVar10) {\n      *(char *)(puVar8[4] + (int)puVar8) = (char)uVar13;\n      iVar10 = 1;\n    }\n    else {\n      iVar10 = FUN_00046180();\n    }" if (parenthesized_expression "(iVar10 == 0 && (uint)(0x7f < uVar13) <= (uint)-iVar10)" ( (binary_expression "iVar10 == 0 && (uint)(0x7f < uVar13) <= (uint)-iVar10" (binary_expression "iVar10 == 0" identifier == number_literal) && (binary_expression "(uint)(0x7f < uVar13) <= (uint)-iVar10" (call_expression "(uint)(0x7f < uVar13)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x7f < uVar13)" ( (binary_expression "0x7f < uVar13" number_literal < identifier) ))) <= (binary_expression "(uint)-iVar10" (parenthesized_expression "(uint)" ( identifier )) - identifier))) )) (compound_statement "{\n      *(char *)(puVar8[4] + (int)puVar8) = (char)uVar13;\n      iVar10 = 1;\n    }" { (expression_statement "*(char *)(puVar8[4] + (int)puVar8) = (char)uVar13;" (assignment_expression "*(char *)(puVar8[4] + (int)puVar8) = (char)uVar13" (pointer_expression "*(char *)(puVar8[4] + (int)puVar8)" * (cast_expression "(char *)(puVar8[4] + (int)puVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8[4] + (int)puVar8)" ( (binary_expression "puVar8[4] + (int)puVar8" (subscript_expression "puVar8[4]" identifier [ number_literal ]) + (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )))) = (cast_expression "(char)uVar13" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      iVar10 = FUN_00046180();\n    }" else (compound_statement "{\n      iVar10 = FUN_00046180();\n    }" { (expression_statement "iVar10 = FUN_00046180();" (assignment_expression "iVar10 = FUN_00046180()" identifier = (call_expression "FUN_00046180()" identifier (argument_list "()" ( )))) ;) }))) (expression_statement "iVar10 = iVar10 + puVar8[4];" (assignment_expression "iVar10 = iVar10 + puVar8[4]" identifier = (binary_expression "iVar10 + puVar8[4]" identifier + (subscript_expression "puVar8[4]" identifier [ number_literal ]))) ;) (expression_statement "puVar8[4] = iVar10;" (assignment_expression "puVar8[4] = iVar10" (subscript_expression "puVar8[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8[8] = uVar9;" (assignment_expression "puVar8[8] = uVar9" (subscript_expression "puVar8[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8[9] = extraout_ECX;" (assignment_expression "puVar8[9] = extraout_ECX" (subscript_expression "puVar8[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8[3] = iVar10;" (assignment_expression "puVar8[3] = iVar10" (subscript_expression "puVar8[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (*piVar3 != 1) {\n      bVar17 = true;\n      puVar8[4] = iVar10 + 1;\n      iVar10 = *piVar3;\n      puVar8[7] = 0;\n      *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0);\n      goto LAB_00088cd7;\n    }" if (parenthesized_expression "(*piVar3 != 1)" ( (binary_expression "*piVar3 != 1" (pointer_expression "*piVar3" * identifier) != number_literal) )) (compound_statement "{\n      bVar17 = true;\n      puVar8[4] = iVar10 + 1;\n      iVar10 = *piVar3;\n      puVar8[7] = 0;\n      *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0);\n      goto LAB_00088cd7;\n    }" { (expression_statement "bVar17 = true;" (assignment_expression "bVar17 = true" identifier = true) ;) (expression_statement "puVar8[4] = iVar10 + 1;" (assignment_expression "puVar8[4] = iVar10 + 1" (subscript_expression "puVar8[4]" identifier [ number_literal ]) = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "iVar10 = *piVar3;" (assignment_expression "iVar10 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "puVar8[7] = 0;" (assignment_expression "puVar8[7] = 0" (subscript_expression "puVar8[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0);" (assignment_expression "*(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0)" (pointer_expression "*(ushort *)((int)puVar8 + 0x1a)" * (cast_expression "(ushort *)((int)puVar8 + 0x1a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + 0x1a)" ( (binary_expression "(int)puVar8 + 0x1a" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (unary_expression "-(ushort)(iVar10 != 0)" - (call_expression "(ushort)(iVar10 != 0)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) ))))) ;) (goto_statement "goto LAB_00088cd7;" goto statement_identifier ;) })) (if_statement "if ((int)param_1 < 0) goto LAB_00089040;" if (parenthesized_expression "((int)param_1 < 0)" ( (binary_expression "(int)param_1 < 0" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00089040;" goto statement_identifier ;)) (goto_statement "goto LAB_000890ca;" goto statement_identifier ;) })) (labeled_statement "LAB_00088da4:\n  uVar4 = 0x80;" statement_identifier : (expression_statement "uVar4 = 0x80;" (assignment_expression "uVar4 = 0x80" identifier = number_literal) ;)) (if_statement "if (0x7f < param_5 + 0x6a) {\n    uVar4 = param_5 + 0x6a;\n  }" if (parenthesized_expression "(0x7f < param_5 + 0x6a)" ( (binary_expression "0x7f < param_5 + 0x6a" number_literal < (binary_expression "param_5 + 0x6a" identifier + number_literal)) )) (compound_statement "{\n    uVar4 = param_5 + 0x6a;\n  }" { (expression_statement "uVar4 = param_5 + 0x6a;" (assignment_expression "uVar4 = param_5 + 0x6a" identifier = (binary_expression "param_5 + 0x6a" identifier + number_literal)) ;) })) (expression_statement "uVar7 = piVar3[2] * 2;" (assignment_expression "uVar7 = piVar3[2] * 2" identifier = (binary_expression "piVar3[2] * 2" (subscript_expression "piVar3[2]" identifier [ number_literal ]) * number_literal)) ;) (if_statement "if (uVar13 == uVar7 || SBORROW4(uVar13,uVar7) != (int)(uVar13 + piVar3[2] * -2) < 0) {\n    iVar11 = FUN_0005b490();\n    if (iVar11 != 0) {\n      return 7;\n    }\n    uVar12 = uVar13 * 2;\n    __s = (void *)FUN_000421f0();\n    if (__s == (void *)0x0) {\n      return 7;\n    }\n    memset(__s,0,uVar13 << 3);\n    if (0 < piVar3[3]) {\n      local_38 = 0;\n      puVar16 = puVar8;\n      do {\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      } while (local_38 < piVar3[3]);\n    }\n    FUN_00042800(puVar8);\n    piVar3[3] = uVar12;\n    piVar3[5] = (int)__s;\n    if (iVar10 < 0) {\n      uVar13 = 0x68;\n      uVar7 = 0xd;\n    }\n    else {\n      uVar7 = 0xd;\n      do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);\n      uVar13 = uVar7 * 8;\n    }\n    uVar12 = (uVar7 ^ uVar13 ^ (uint)param_3) % uVar12;\n  }" if (parenthesized_expression "(uVar13 == uVar7 || SBORROW4(uVar13,uVar7) != (int)(uVar13 + piVar3[2] * -2) < 0)" ( (binary_expression "uVar13 == uVar7 || SBORROW4(uVar13,uVar7) != (int)(uVar13 + piVar3[2] * -2) < 0" (binary_expression "uVar13 == uVar7" identifier == identifier) || (binary_expression "SBORROW4(uVar13,uVar7) != (int)(uVar13 + piVar3[2] * -2) < 0" (call_expression "SBORROW4(uVar13,uVar7)" identifier (argument_list "(uVar13,uVar7)" ( identifier , identifier ))) != (binary_expression "(int)(uVar13 + piVar3[2] * -2) < 0" (cast_expression "(int)(uVar13 + piVar3[2] * -2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar13 + piVar3[2] * -2)" ( (binary_expression "uVar13 + piVar3[2] * -2" identifier + (binary_expression "piVar3[2] * -2" (subscript_expression "piVar3[2]" identifier [ number_literal ]) * number_literal)) ))) < number_literal))) )) (compound_statement "{\n    iVar11 = FUN_0005b490();\n    if (iVar11 != 0) {\n      return 7;\n    }\n    uVar12 = uVar13 * 2;\n    __s = (void *)FUN_000421f0();\n    if (__s == (void *)0x0) {\n      return 7;\n    }\n    memset(__s,0,uVar13 << 3);\n    if (0 < piVar3[3]) {\n      local_38 = 0;\n      puVar16 = puVar8;\n      do {\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      } while (local_38 < piVar3[3]);\n    }\n    FUN_00042800(puVar8);\n    piVar3[3] = uVar12;\n    piVar3[5] = (int)__s;\n    if (iVar10 < 0) {\n      uVar13 = 0x68;\n      uVar7 = 0xd;\n    }\n    else {\n      uVar7 = 0xd;\n      do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);\n      uVar13 = uVar7 * 8;\n    }\n    uVar12 = (uVar7 ^ uVar13 ^ (uint)param_3) % uVar12;\n  }" { (expression_statement "iVar11 = FUN_0005b490();" (assignment_expression "iVar11 = FUN_0005b490()" identifier = (call_expression "FUN_0005b490()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar11 != 0) {\n      return 7;\n    }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n      return 7;\n    }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "uVar12 = uVar13 * 2;" (assignment_expression "uVar12 = uVar13 * 2" identifier = (binary_expression "uVar13 * 2" identifier * number_literal)) ;) (expression_statement "__s = (void *)FUN_000421f0();" (assignment_expression "__s = (void *)FUN_000421f0()" identifier = (cast_expression "(void *)FUN_000421f0()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000421f0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (__s == (void *)0x0) {\n      return 7;\n    }" if (parenthesized_expression "(__s == (void *)0x0)" ( (binary_expression "__s == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 7;\n    }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "memset(__s,0,uVar13 << 3);" (call_expression "memset(__s,0,uVar13 << 3)" identifier (argument_list "(__s,0,uVar13 << 3)" ( identifier , number_literal , (binary_expression "uVar13 << 3" identifier << number_literal) ))) ;) (if_statement "if (0 < piVar3[3]) {\n      local_38 = 0;\n      puVar16 = puVar8;\n      do {\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      } while (local_38 < piVar3[3]);\n    }" if (parenthesized_expression "(0 < piVar3[3])" ( (binary_expression "0 < piVar3[3]" number_literal < (subscript_expression "piVar3[3]" identifier [ number_literal ])) )) (compound_statement "{\n      local_38 = 0;\n      puVar16 = puVar8;\n      do {\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      } while (local_38 < piVar3[3]);\n    }" { (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "puVar16 = puVar8;" (assignment_expression "puVar16 = puVar8" identifier = identifier) ;) (do_statement "do {\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      } while (local_38 < piVar3[3]);" do (compound_statement "{\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      }" { (expression_statement "puVar15 = (undefined4 *)*puVar16;" (assignment_expression "puVar15 = (undefined4 *)*puVar16" identifier = (cast_expression "(undefined4 *)*puVar16" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier))) ;) (while_statement "while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }" while (parenthesized_expression "(puVar15 != (undefined4 *)0x0)" ( (binary_expression "puVar15 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }" { (expression_statement "*puVar16 = *puVar15;" (assignment_expression "*puVar16 = *puVar15" (pointer_expression "*puVar16" * identifier) = (pointer_expression "*puVar15" * identifier)) ;) (expression_statement "sVar6 = strlen((char *)(puVar15 + 10));" (assignment_expression "sVar6 = strlen((char *)(puVar15 + 10))" identifier = (call_expression "strlen((char *)(puVar15 + 10))" identifier (argument_list "((char *)(puVar15 + 10))" ( (cast_expression "(char *)(puVar15 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + 10)" ( (binary_expression "puVar15 + 10" identifier + number_literal) ))) )))) ;) (if_statement "if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }" if (parenthesized_expression "(sVar6 == 0)" ( (binary_expression "sVar6 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar13 = 0xd;\n          }" { (expression_statement "uVar13 = 0xd;" (assignment_expression "uVar13 = 0xd" identifier = number_literal) ;) }) (else_clause "else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }" else (compound_statement "{\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }" { (expression_statement "pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);" (assignment_expression "pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27)" identifier = (cast_expression "(byte *)((int)puVar15 + sVar6 + 0x27)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar15 + sVar6 + 0x27)" ( (binary_expression "(int)puVar15 + sVar6 + 0x27" (binary_expression "(int)puVar15 + sVar6" (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "uVar13 = 0xd;" (assignment_expression "uVar13 = 0xd" identifier = number_literal) ;) (do_statement "do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);" do (compound_statement "{\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            }" { (expression_statement "bVar2 = *pbVar14;" (assignment_expression "bVar2 = *pbVar14" identifier = (pointer_expression "*pbVar14" * identifier)) ;) (expression_statement "pbVar14 = pbVar14 + -1;" (assignment_expression "pbVar14 = pbVar14 + -1" identifier = (binary_expression "pbVar14 + -1" identifier + number_literal)) ;) (expression_statement "uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;" (assignment_expression "uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2" identifier = (binary_expression "uVar13 ^ uVar13 * 8 ^ (uint)bVar2" (binary_expression "uVar13 ^ uVar13 * 8" identifier ^ (binary_expression "uVar13 * 8" identifier * number_literal)) ^ (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((byte *)((int)puVar15 + 0x27) != pbVar14)" ( (binary_expression "(byte *)((int)puVar15 + 0x27) != pbVar14" (cast_expression "(byte *)((int)puVar15 + 0x27)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar15 + 0x27)" ( (binary_expression "(int)puVar15 + 0x27" (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) != identifier) )) ;) }))) (expression_statement "puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);" (assignment_expression "puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4)" identifier = (cast_expression "(undefined4 *)((int)__s + (uVar13 % uVar12) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + (uVar13 % uVar12) * 4)" ( (binary_expression "(int)__s + (uVar13 % uVar12) * 4" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uVar13 % uVar12) * 4" (parenthesized_expression "(uVar13 % uVar12)" ( (binary_expression "uVar13 % uVar12" identifier % identifier) )) * number_literal)) )))) ;) (expression_statement "*puVar15 = *puVar1;" (assignment_expression "*puVar15 = *puVar1" (pointer_expression "*puVar15" * identifier) = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "*puVar1 = puVar15;" (assignment_expression "*puVar1 = puVar15" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "puVar15 = (undefined4 *)*puVar16;" (assignment_expression "puVar15 = (undefined4 *)*puVar16" identifier = (cast_expression "(undefined4 *)*puVar16" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier))) ;) })) (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_38 < piVar3[3])" ( (binary_expression "local_38 < piVar3[3]" identifier < (subscript_expression "piVar3[3]" identifier [ number_literal ])) )) ;) })) (expression_statement "FUN_00042800(puVar8);" (call_expression "FUN_00042800(puVar8)" identifier (argument_list "(puVar8)" ( identifier ))) ;) (expression_statement "piVar3[3] = uVar12;" (assignment_expression "piVar3[3] = uVar12" (subscript_expression "piVar3[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar3[5] = (int)__s;" (assignment_expression "piVar3[5] = (int)__s" (subscript_expression "piVar3[5]" identifier [ number_literal ]) = (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (iVar10 < 0) {\n      uVar13 = 0x68;\n      uVar7 = 0xd;\n    }\n    else {\n      uVar7 = 0xd;\n      do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);\n      uVar13 = uVar7 * 8;\n    }" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (compound_statement "{\n      uVar13 = 0x68;\n      uVar7 = 0xd;\n    }" { (expression_statement "uVar13 = 0x68;" (assignment_expression "uVar13 = 0x68" identifier = number_literal) ;) (expression_statement "uVar7 = 0xd;" (assignment_expression "uVar7 = 0xd" identifier = number_literal) ;) }) (else_clause "else {\n      uVar7 = 0xd;\n      do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);\n      uVar13 = uVar7 * 8;\n    }" else (compound_statement "{\n      uVar7 = 0xd;\n      do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);\n      uVar13 = uVar7 * 8;\n    }" { (expression_statement "uVar7 = 0xd;" (assignment_expression "uVar7 = 0xd" identifier = number_literal) ;) (do_statement "do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);" do (compound_statement "{\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      }" { (expression_statement "pbVar14 = (byte *)((int)param_4 + iVar10);" (assignment_expression "pbVar14 = (byte *)((int)param_4 + iVar10)" identifier = (cast_expression "(byte *)((int)param_4 + iVar10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + iVar10)" ( (binary_expression "(int)param_4 + iVar10" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;" (assignment_expression "uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14" identifier = (binary_expression "uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14" (binary_expression "uVar7 ^ uVar7 * 8" identifier ^ (binary_expression "uVar7 * 8" identifier * number_literal)) ^ (binary_expression "(uint)*pbVar14" (parenthesized_expression "(uint)" ( identifier )) * identifier))) ;) }) while (parenthesized_expression "(iVar10 != -1)" ( (binary_expression "iVar10 != -1" identifier != number_literal) )) ;) (expression_statement "uVar13 = uVar7 * 8;" (assignment_expression "uVar13 = uVar7 * 8" identifier = (binary_expression "uVar7 * 8" identifier * number_literal)) ;) }))) (expression_statement "uVar12 = (uVar7 ^ uVar13 ^ (uint)param_3) % uVar12;" (assignment_expression "uVar12 = (uVar7 ^ uVar13 ^ (uint)param_3) % uVar12" identifier = (binary_expression "(uVar7 ^ uVar13 ^ (uint)param_3) % uVar12" (parenthesized_expression "(uVar7 ^ uVar13 ^ (uint)param_3)" ( (binary_expression "uVar7 ^ uVar13 ^ (uint)param_3" (binary_expression "uVar7 ^ uVar13" identifier ^ identifier) ^ (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier)) )) % identifier)) ;) })) (expression_statement "iVar10 = FUN_0005b490();" (assignment_expression "iVar10 = FUN_0005b490()" identifier = (call_expression "FUN_0005b490()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar10 != 0) || (puVar8 = (undefined4 *)FUN_000421f0(), puVar8 == (undefined4 *)0x0)) {\n    return 7;\n  }" if (parenthesized_expression "((iVar10 != 0) || (puVar8 = (undefined4 *)FUN_000421f0(), puVar8 == (undefined4 *)0x0))" ( (binary_expression "(iVar10 != 0) || (puVar8 = (undefined4 *)FUN_000421f0(), puVar8 == (undefined4 *)0x0)" (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) || (parenthesized_expression "(puVar8 = (undefined4 *)FUN_000421f0(), puVar8 == (undefined4 *)0x0)" ( (comma_expression "puVar8 = (undefined4 *)FUN_000421f0(), puVar8 == (undefined4 *)0x0" (assignment_expression "puVar8 = (undefined4 *)FUN_000421f0()" identifier = (cast_expression "(undefined4 *)FUN_000421f0()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000421f0()" identifier (argument_list "()" ( ))))) , (binary_expression "puVar8 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    return 7;\n  }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "*puVar8 = 0;" (assignment_expression "*puVar8 = 0" (pointer_expression "*puVar8" * identifier) = number_literal) ;) (expression_statement "puVar8[9] = 0;" (assignment_expression "puVar8[9] = 0" (subscript_expression "puVar8[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar16 = (undefined4 *)((uint)(puVar8 + 1) & 0xfffffffc);" (assignment_expression "puVar16 = (undefined4 *)((uint)(puVar8 + 1) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(puVar8 + 1) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(puVar8 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar8 + 1) & 0xfffffffc" (call_expression "(uint)(puVar8 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar8 + 1)" ( (binary_expression "puVar8 + 1" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar13 = (uint)((int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc))) >> 2;\n      uVar13 != 0; uVar13 = uVar13 - 1) {\n    *puVar16 = 0;\n    puVar16 = puVar16 + (uint)bVar18 * -2 + 1;\n  }" for ( (assignment_expression "uVar13 = (uint)((int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc))) >> 2" identifier = (binary_expression "(uint)((int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc))) >> 2" (call_expression "(uint)((int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc)))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc)))" ( (binary_expression "(int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc))" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc))" ( (binary_expression "0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc)" number_literal - (cast_expression "(int)((uint)(puVar8 + 1) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(puVar8 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar8 + 1) & 0xfffffffc" (call_expression "(uint)(puVar8 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar8 + 1)" ( (binary_expression "puVar8 + 1" identifier + number_literal) ))) & number_literal) )))) ))) ))) >> number_literal)) ; (binary_expression "uVar13 != 0" identifier != number_literal) ; (assignment_expression "uVar13 = uVar13 - 1" identifier = (binary_expression "uVar13 - 1" identifier - number_literal)) ) (compound_statement "{\n    *puVar16 = 0;\n    puVar16 = puVar16 + (uint)bVar18 * -2 + 1;\n  }" { (expression_statement "*puVar16 = 0;" (assignment_expression "*puVar16 = 0" (pointer_expression "*puVar16" * identifier) = number_literal) ;) (expression_statement "puVar16 = puVar16 + (uint)bVar18 * -2 + 1;" (assignment_expression "puVar16 = puVar16 + (uint)bVar18 * -2 + 1" identifier = (binary_expression "puVar16 + (uint)bVar18 * -2 + 1" (binary_expression "puVar16 + (uint)bVar18 * -2" identifier + (binary_expression "(uint)bVar18 * -2" (cast_expression "(uint)bVar18" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "puVar8[2] = uVar4;" (assignment_expression "puVar8[2] = uVar4" (subscript_expression "puVar8[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(byte *)(puVar8 + 10) = param_3;" (assignment_expression "*(byte *)(puVar8 + 10) = param_3" (pointer_expression "*(byte *)(puVar8 + 10)" * (cast_expression "(byte *)(puVar8 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 10)" ( (binary_expression "puVar8 + 10" identifier + number_literal) )))) = identifier) ;) (expression_statement "memcpy((void *)((int)puVar8 + 0x29),param_4,param_5);" (call_expression "memcpy((void *)((int)puVar8 + 0x29),param_4,param_5)" identifier (argument_list "((void *)((int)puVar8 + 0x29),param_4,param_5)" ( (cast_expression "(void *)((int)puVar8 + 0x29)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + 0x29)" ( (binary_expression "(int)puVar8 + 0x29" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , identifier , identifier ))) ;) (expression_statement "puVar8[5] = param_5;" (assignment_expression "puVar8[5] = param_5" (subscript_expression "puVar8[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)((int)puVar8 + param_5 + 0x29) = 0;" (assignment_expression "*(undefined1 *)((int)puVar8 + param_5 + 0x29) = 0" (pointer_expression "*(undefined1 *)((int)puVar8 + param_5 + 0x29)" * (cast_expression "(undefined1 *)((int)puVar8 + param_5 + 0x29)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + param_5 + 0x29)" ( (binary_expression "(int)puVar8 + param_5 + 0x29" (binary_expression "(int)puVar8 + param_5" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar8[4] = param_5 + 0x2a;" (assignment_expression "puVar8[4] = param_5 + 0x2a" (subscript_expression "puVar8[4]" identifier [ number_literal ]) = (binary_expression "param_5 + 0x2a" identifier + number_literal)) ;) (expression_statement "*puVar8 = *(undefined4 *)(piVar3[5] + uVar12 * 4);" (assignment_expression "*puVar8 = *(undefined4 *)(piVar3[5] + uVar12 * 4)" (pointer_expression "*puVar8" * identifier) = (pointer_expression "*(undefined4 *)(piVar3[5] + uVar12 * 4)" * (cast_expression "(undefined4 *)(piVar3[5] + uVar12 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3[5] + uVar12 * 4)" ( (binary_expression "piVar3[5] + uVar12 * 4" (subscript_expression "piVar3[5]" identifier [ number_literal ]) + (binary_expression "uVar12 * 4" identifier * number_literal)) ))))) ;) (expression_statement "*(undefined4 **)(piVar3[5] + uVar12 * 4) = puVar8;" (assignment_expression "*(undefined4 **)(piVar3[5] + uVar12 * 4) = puVar8" (pointer_expression "*(undefined4 **)(piVar3[5] + uVar12 * 4)" * (cast_expression "(undefined4 **)(piVar3[5] + uVar12 * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar3[5] + uVar12 * 4)" ( (binary_expression "piVar3[5] + uVar12 * 4" (subscript_expression "piVar3[5]" identifier [ number_literal ]) + (binary_expression "uVar12 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "piVar3[2] = piVar3[2] + 1;" (assignment_expression "piVar3[2] = piVar3[2] + 1" (subscript_expression "piVar3[2]" identifier [ number_literal ]) = (binary_expression "piVar3[2] + 1" (subscript_expression "piVar3[2]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (extraout_ECX == 0 && (uint)(0x7f < uVar9) <= (uint)-extraout_ECX) {\n    local_44 = (undefined1)((ulonglong)uVar19 >> 0x20);\n    *(undefined1 *)(puVar8[4] + (int)puVar8) = local_44;\n    local_50 = 1;\n  }\n  else {\n    local_50 = FUN_00046180();\n  }" if (parenthesized_expression "(extraout_ECX == 0 && (uint)(0x7f < uVar9) <= (uint)-extraout_ECX)" ( (binary_expression "extraout_ECX == 0 && (uint)(0x7f < uVar9) <= (uint)-extraout_ECX" (binary_expression "extraout_ECX == 0" identifier == number_literal) && (binary_expression "(uint)(0x7f < uVar9) <= (uint)-extraout_ECX" (call_expression "(uint)(0x7f < uVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x7f < uVar9)" ( (binary_expression "0x7f < uVar9" number_literal < identifier) ))) <= (binary_expression "(uint)-extraout_ECX" (parenthesized_expression "(uint)" ( identifier )) - identifier))) )) (compound_statement "{\n    local_44 = (undefined1)((ulonglong)uVar19 >> 0x20);\n    *(undefined1 *)(puVar8[4] + (int)puVar8) = local_44;\n    local_50 = 1;\n  }" { (expression_statement "local_44 = (undefined1)((ulonglong)uVar19 >> 0x20);" (assignment_expression "local_44 = (undefined1)((ulonglong)uVar19 >> 0x20)" identifier = (call_expression "(undefined1)((ulonglong)uVar19 >> 0x20)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((ulonglong)uVar19 >> 0x20)" ( (binary_expression "(ulonglong)uVar19 >> 0x20" (cast_expression "(ulonglong)uVar19" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*(undefined1 *)(puVar8[4] + (int)puVar8) = local_44;" (assignment_expression "*(undefined1 *)(puVar8[4] + (int)puVar8) = local_44" (pointer_expression "*(undefined1 *)(puVar8[4] + (int)puVar8)" * (cast_expression "(undefined1 *)(puVar8[4] + (int)puVar8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8[4] + (int)puVar8)" ( (binary_expression "puVar8[4] + (int)puVar8" (subscript_expression "puVar8[4]" identifier [ number_literal ]) + (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )))) = identifier) ;) (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    local_50 = FUN_00046180();\n  }" else (compound_statement "{\n    local_50 = FUN_00046180();\n  }" { (expression_statement "local_50 = FUN_00046180();" (assignment_expression "local_50 = FUN_00046180()" identifier = (call_expression "FUN_00046180()" identifier (argument_list "()" ( )))) ;) }))) (expression_statement "local_50 = local_50 + puVar8[4];" (assignment_expression "local_50 = local_50 + puVar8[4]" identifier = (binary_expression "local_50 + puVar8[4]" identifier + (subscript_expression "puVar8[4]" identifier [ number_literal ]))) ;) (expression_statement "puVar8[4] = local_50;" (assignment_expression "puVar8[4] = local_50" (subscript_expression "puVar8[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8[9] = extraout_ECX;" (assignment_expression "puVar8[9] = extraout_ECX" (subscript_expression "puVar8[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8[8] = uVar9;" (assignment_expression "puVar8[8] = uVar9" (subscript_expression "puVar8[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8[3] = local_50;" (assignment_expression "puVar8[3] = local_50" (subscript_expression "puVar8[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (*piVar3 != 1) {\n    local_50 = local_50 + 1;\n    puVar8[4] = local_50;\n    *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(*piVar3 != 0);\n  }" if (parenthesized_expression "(*piVar3 != 1)" ( (binary_expression "*piVar3 != 1" (pointer_expression "*piVar3" * identifier) != number_literal) )) (compound_statement "{\n    local_50 = local_50 + 1;\n    puVar8[4] = local_50;\n    *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(*piVar3 != 0);\n  }" { (expression_statement "local_50 = local_50 + 1;" (assignment_expression "local_50 = local_50 + 1" identifier = (binary_expression "local_50 + 1" identifier + number_literal)) ;) (expression_statement "puVar8[4] = local_50;" (assignment_expression "puVar8[4] = local_50" (subscript_expression "puVar8[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(ushort *)((int)puVar8 + 0x1a) = -(ushort)(*piVar3 != 0);" (assignment_expression "*(ushort *)((int)puVar8 + 0x1a) = -(ushort)(*piVar3 != 0)" (pointer_expression "*(ushort *)((int)puVar8 + 0x1a)" * (cast_expression "(ushort *)((int)puVar8 + 0x1a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + 0x1a)" ( (binary_expression "(int)puVar8 + 0x1a" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (unary_expression "-(ushort)(*piVar3 != 0)" - (call_expression "(ushort)(*piVar3 != 0)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(*piVar3 != 0)" ( (binary_expression "*piVar3 != 0" (pointer_expression "*piVar3" * identifier) != number_literal) ))))) ;) })) (labeled_statement "LAB_00088cd7:\n  if ((int)param_1 < 0) {\nLAB_00089040:\n    *(undefined1 *)(puVar8 + 6) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }" statement_identifier : (if_statement "if ((int)param_1 < 0) {\nLAB_00089040:\n    *(undefined1 *)(puVar8 + 6) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }" if (parenthesized_expression "((int)param_1 < 0)" ( (binary_expression "(int)param_1 < 0" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00089040:\n    *(undefined1 *)(puVar8 + 6) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }" { (labeled_statement "LAB_00089040:\n    *(undefined1 *)(puVar8 + 6) = 1;" statement_identifier : (expression_statement "*(undefined1 *)(puVar8 + 6) = 1;" (assignment_expression "*(undefined1 *)(puVar8 + 6) = 1" (pointer_expression "*(undefined1 *)(puVar8 + 6)" * (cast_expression "(undefined1 *)(puVar8 + 6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 6)" ( (binary_expression "puVar8 + 6" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "iVar10 = puVar8[4];" (assignment_expression "iVar10 = puVar8[4]" identifier = (subscript_expression "puVar8[4]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_00089047;" goto statement_identifier ;) }))) (if_statement "if (*piVar3 == 1) {\nLAB_000890ca:\n    *(undefined1 *)((int)puVar8 + 0x19) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }" if (parenthesized_expression "(*piVar3 == 1)" ( (binary_expression "*piVar3 == 1" (pointer_expression "*piVar3" * identifier) == number_literal) )) (compound_statement "{\nLAB_000890ca:\n    *(undefined1 *)((int)puVar8 + 0x19) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }" { (labeled_statement "LAB_000890ca:\n    *(undefined1 *)((int)puVar8 + 0x19) = 1;" statement_identifier : (expression_statement "*(undefined1 *)((int)puVar8 + 0x19) = 1;" (assignment_expression "*(undefined1 *)((int)puVar8 + 0x19) = 1" (pointer_expression "*(undefined1 *)((int)puVar8 + 0x19)" * (cast_expression "(undefined1 *)((int)puVar8 + 0x19)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + 0x19)" ( (binary_expression "(int)puVar8 + 0x19" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;)) (expression_statement "iVar10 = puVar8[4];" (assignment_expression "iVar10 = puVar8[4]" identifier = (subscript_expression "puVar8[4]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_00089047;" goto statement_identifier ;) })) (expression_statement "iVar10 = puVar8[4];" (assignment_expression "iVar10 = puVar8[4]" identifier = (subscript_expression "puVar8[4]" identifier [ number_literal ])) ;) (if_statement "if ((int)*(short *)((int)puVar8 + 0x1a) == param_1) {\nLAB_00088d4f:\n    if (!bVar17) goto LAB_00089047;\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n  }\n  else {\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n    if (*piVar3 == 0) {\n      puVar8[4] = iVar10 + 1;\n      *puVar5 = 1;\n      if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }\n      iVar10 = iVar10 + puVar8[4];\n      puVar8[7] = 0;\n      puVar8[4] = iVar10;\n      *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n      goto LAB_00088d4f;\n    }\n    *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n    param_2 = param_1;\n  }" if (parenthesized_expression "((int)*(short *)((int)puVar8 + 0x1a) == param_1)" ( (binary_expression "(int)*(short *)((int)puVar8 + 0x1a) == param_1" (cast_expression "(int)*(short *)((int)puVar8 + 0x1a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)puVar8 + 0x1a)" * (cast_expression "(short *)((int)puVar8 + 0x1a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + 0x1a)" ( (binary_expression "(int)puVar8 + 0x1a" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) == identifier) )) (compound_statement "{\nLAB_00088d4f:\n    if (!bVar17) goto LAB_00089047;\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n  }" { (labeled_statement "LAB_00088d4f:\n    if (!bVar17) goto LAB_00089047;" statement_identifier : (if_statement "if (!bVar17) goto LAB_00089047;" if (parenthesized_expression "(!bVar17)" ( (unary_expression "!bVar17" ! identifier) )) (goto_statement "goto LAB_00089047;" goto statement_identifier ;))) (expression_statement "puVar5 = (undefined1 *)((int)puVar8 + iVar10);" (assignment_expression "puVar5 = (undefined1 *)((int)puVar8 + iVar10)" identifier = (cast_expression "(undefined1 *)((int)puVar8 + iVar10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + iVar10)" ( (binary_expression "(int)puVar8 + iVar10" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) (else_clause "else {\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n    if (*piVar3 == 0) {\n      puVar8[4] = iVar10 + 1;\n      *puVar5 = 1;\n      if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }\n      iVar10 = iVar10 + puVar8[4];\n      puVar8[7] = 0;\n      puVar8[4] = iVar10;\n      *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n      goto LAB_00088d4f;\n    }\n    *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n    param_2 = param_1;\n  }" else (compound_statement "{\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n    if (*piVar3 == 0) {\n      puVar8[4] = iVar10 + 1;\n      *puVar5 = 1;\n      if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }\n      iVar10 = iVar10 + puVar8[4];\n      puVar8[7] = 0;\n      puVar8[4] = iVar10;\n      *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n      goto LAB_00088d4f;\n    }\n    *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n    param_2 = param_1;\n  }" { (expression_statement "puVar5 = (undefined1 *)((int)puVar8 + iVar10);" (assignment_expression "puVar5 = (undefined1 *)((int)puVar8 + iVar10)" identifier = (cast_expression "(undefined1 *)((int)puVar8 + iVar10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + iVar10)" ( (binary_expression "(int)puVar8 + iVar10" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (if_statement "if (*piVar3 == 0) {\n      puVar8[4] = iVar10 + 1;\n      *puVar5 = 1;\n      if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }\n      iVar10 = iVar10 + puVar8[4];\n      puVar8[7] = 0;\n      puVar8[4] = iVar10;\n      *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n      goto LAB_00088d4f;\n    }" if (parenthesized_expression "(*piVar3 == 0)" ( (binary_expression "*piVar3 == 0" (pointer_expression "*piVar3" * identifier) == number_literal) )) (compound_statement "{\n      puVar8[4] = iVar10 + 1;\n      *puVar5 = 1;\n      if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }\n      iVar10 = iVar10 + puVar8[4];\n      puVar8[7] = 0;\n      puVar8[4] = iVar10;\n      *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n      goto LAB_00088d4f;\n    }" { (expression_statement "puVar8[4] = iVar10 + 1;" (assignment_expression "puVar8[4] = iVar10 + 1" (subscript_expression "puVar8[4]" identifier [ number_literal ]) = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "*puVar5 = 1;" (assignment_expression "*puVar5 = 1" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (if_statement "if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }" if (parenthesized_expression "((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1))" ( (binary_expression "(int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)" (binary_expression "(int)param_1 < 0" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) || (binary_expression "(uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)" (binary_expression "(uint)-((int)param_1 >> 0x1f)" (parenthesized_expression "(uint)" ( identifier )) - (parenthesized_expression "((int)param_1 >> 0x1f)" ( (binary_expression "(int)param_1 >> 0x1f" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) < (call_expression "(uint)(0x7f < param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x7f < param_1)" ( (binary_expression "0x7f < param_1" number_literal < identifier) ))))) )) (compound_statement "{\n        iVar10 = FUN_00046180();\n      }" { (expression_statement "iVar10 = FUN_00046180();" (assignment_expression "iVar10 = FUN_00046180()" identifier = (call_expression "FUN_00046180()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }" else (compound_statement "{\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }" { (expression_statement "*(char *)(puVar8[4] + (int)puVar8) = (char)param_1;" (assignment_expression "*(char *)(puVar8[4] + (int)puVar8) = (char)param_1" (pointer_expression "*(char *)(puVar8[4] + (int)puVar8)" * (cast_expression "(char *)(puVar8[4] + (int)puVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8[4] + (int)puVar8)" ( (binary_expression "puVar8[4] + (int)puVar8" (subscript_expression "puVar8[4]" identifier [ number_literal ]) + (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )))) = (cast_expression "(char)param_1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" identifier = number_literal) ;) }))) (expression_statement "iVar10 = iVar10 + puVar8[4];" (assignment_expression "iVar10 = iVar10 + puVar8[4]" identifier = (binary_expression "iVar10 + puVar8[4]" identifier + (subscript_expression "puVar8[4]" identifier [ number_literal ]))) ;) (expression_statement "puVar8[7] = 0;" (assignment_expression "puVar8[7] = 0" (subscript_expression "puVar8[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[4] = iVar10;" (assignment_expression "puVar8[4] = iVar10" (subscript_expression "puVar8[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;" (assignment_expression "*(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1" (pointer_expression "*(undefined2 *)((int)puVar8 + 0x1a)" * (cast_expression "(undefined2 *)((int)puVar8 + 0x1a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + 0x1a)" ( (binary_expression "(int)puVar8 + 0x1a" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(undefined2)param_1" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (goto_statement "goto LAB_00088d4f;" goto statement_identifier ;) })) (expression_statement "*(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;" (assignment_expression "*(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1" (pointer_expression "*(undefined2 *)((int)puVar8 + 0x1a)" * (cast_expression "(undefined2 *)((int)puVar8 + 0x1a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + 0x1a)" ( (binary_expression "(int)puVar8 + 0x1a" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(undefined2)param_1" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (expression_statement "param_2 = param_1;" (assignment_expression "param_2 = param_1" identifier = identifier) ;) }))) (expression_statement "uVar13 = (param_2 - puVar8[7]) + 2;" (assignment_expression "uVar13 = (param_2 - puVar8[7]) + 2" identifier = (binary_expression "(param_2 - puVar8[7]) + 2" (parenthesized_expression "(param_2 - puVar8[7])" ( (binary_expression "param_2 - puVar8[7]" identifier - (subscript_expression "puVar8[7]" identifier [ number_literal ])) )) + number_literal)) ;) (if_statement "if ((int)uVar13 < 0 || (uint)-((int)uVar13 >> 0x1f) < (uint)(0x7f < uVar13)) {\n    iVar10 = FUN_00046180();\n  }\n  else {\n    *puVar5 = (char)uVar13;\n    iVar10 = 1;\n  }" if (parenthesized_expression "((int)uVar13 < 0 || (uint)-((int)uVar13 >> 0x1f) < (uint)(0x7f < uVar13))" ( (binary_expression "(int)uVar13 < 0 || (uint)-((int)uVar13 >> 0x1f) < (uint)(0x7f < uVar13)" (binary_expression "(int)uVar13 < 0" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) || (binary_expression "(uint)-((int)uVar13 >> 0x1f) < (uint)(0x7f < uVar13)" (binary_expression "(uint)-((int)uVar13 >> 0x1f)" (parenthesized_expression "(uint)" ( identifier )) - (parenthesized_expression "((int)uVar13 >> 0x1f)" ( (binary_expression "(int)uVar13 >> 0x1f" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) < (call_expression "(uint)(0x7f < uVar13)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x7f < uVar13)" ( (binary_expression "0x7f < uVar13" number_literal < identifier) ))))) )) (compound_statement "{\n    iVar10 = FUN_00046180();\n  }" { (expression_statement "iVar10 = FUN_00046180();" (assignment_expression "iVar10 = FUN_00046180()" identifier = (call_expression "FUN_00046180()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n    *puVar5 = (char)uVar13;\n    iVar10 = 1;\n  }" else (compound_statement "{\n    *puVar5 = (char)uVar13;\n    iVar10 = 1;\n  }" { (expression_statement "*puVar5 = (char)uVar13;" (assignment_expression "*puVar5 = (char)uVar13" (pointer_expression "*puVar5" * identifier) = (cast_expression "(char)uVar13" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" identifier = number_literal) ;) }))) (expression_statement "iVar10 = iVar10 + puVar8[4];" (assignment_expression "iVar10 = iVar10 + puVar8[4]" identifier = (binary_expression "iVar10 + puVar8[4]" identifier + (subscript_expression "puVar8[4]" identifier [ number_literal ]))) ;) (expression_statement "puVar8[4] = iVar10;" (assignment_expression "puVar8[4] = iVar10" (subscript_expression "puVar8[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8[7] = param_2;" (assignment_expression "puVar8[7] = param_2" (subscript_expression "puVar8[7]" identifier [ number_literal ]) = identifier) ;) (labeled_statement "LAB_00089047:\n  *(int *)piVar3[1] = *(int *)piVar3[1] + iVar10 + local_50;" statement_identifier : (expression_statement "*(int *)piVar3[1] = *(int *)piVar3[1] + iVar10 + local_50;" (assignment_expression "*(int *)piVar3[1] = *(int *)piVar3[1] + iVar10 + local_50" (pointer_expression "*(int *)piVar3[1]" * (cast_expression "(int *)piVar3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[1]" identifier [ number_literal ]))) = (binary_expression "*(int *)piVar3[1] + iVar10 + local_50" (binary_expression "*(int *)piVar3[1] + iVar10" (pointer_expression "*(int *)piVar3[1]" * (cast_expression "(int *)piVar3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[1]" identifier [ number_literal ]))) + identifier) + identifier)) ;)) (return_statement "return 0;" return number_literal ;) (labeled_statement "LAB_00088bf0:\n  puVar16 = (undefined4 *)*puVar16;" statement_identifier : (expression_statement "puVar16 = (undefined4 *)*puVar16;" (assignment_expression "puVar16 = (undefined4 *)*puVar16" identifier = (cast_expression "(undefined4 *)*puVar16" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier))) ;)) (if_statement "if (puVar16 == (undefined4 *)0x0) goto LAB_00088da4;" if (parenthesized_expression "(puVar16 == (undefined4 *)0x0)" ( (binary_expression "puVar16 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00088da4;" goto statement_identifier ;)) (goto_statement "goto LAB_00088bfa;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT ^ (binary_expression IDENT * LIT)) ^ (binary_expression (parenthesized_expression ( IDENT )) * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT ^ IDENT) ^ (cast_expression ( (type_descriptor TYPE) ) 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 *)) ) (subscript_expression IDENT [ IDENT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) ))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) , IDENT , IDENT )))) , (binary_expression IDENT != LIT)) ))) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + (subscript_expression IDENT [ LIT ])) )))) ;) (for_statement for ( (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ; (binary_expression IDENT != IDENT) ; (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT) && (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - (subscript_expression IDENT [ LIT ])) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) ))) <= (binary_expression (parenthesized_expression ( IDENT )) - IDENT))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) || (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT)) ))) < LIT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression IDENT << LIT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT ^ (binary_expression IDENT * LIT)) ^ (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) != IDENT) )) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT % IDENT) )) * LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (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) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT ^ (binary_expression IDENT * LIT)) ^ (binary_expression (parenthesized_expression ( IDENT )) * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT ^ IDENT) ^ (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) % IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (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 (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )))) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )))) ))) ))) >> LIT)) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) ))) <= (binary_expression (parenthesized_expression ( IDENT )) - IDENT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (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 (subscript_expression IDENT [ LIT ]) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) != LIT) ))))) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + 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) + IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) || (binary_expression (binary_expression (parenthesized_expression ( IDENT )) - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression 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 (subscript_expression IDENT [ LIT ]) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - (subscript_expression IDENT [ LIT ])) )) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) || (binary_expression (binary_expression (parenthesized_expression ( IDENT )) - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression 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 * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) + IDENT) + IDENT)) ;)) (return_statement return 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 == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })))
(function_definition "undefined4 FUN_00088b30(uint param_1,uint param_2,byte param_3,void *param_4,size_t param_5)\n\n{\n  undefined4 *puVar1;\n  byte bVar2;\n  int *piVar3;\n  uint uVar4;\n  undefined1 *puVar5;\n  void *__s;\n  size_t sVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  int extraout_ECX;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  uint uVar13;\n  byte *pbVar14;\n  undefined4 *puVar15;\n  undefined4 *puVar16;\n  bool bVar17;\n  byte bVar18;\n  undefined8 uVar19;\n  int local_50;\n  undefined1 local_44;\n  int local_38;\n  \n  bVar18 = 0;\n  uVar19 = FUN_00036ac5();\n  uVar9 = (uint)((ulonglong)uVar19 >> 0x20);\n  piVar3 = (int *)uVar19;\n  bVar17 = *piVar3 == 0;\n  uVar13 = piVar3[3];\n  iVar10 = param_5 - 1;\n  if (iVar10 < 0) {\n    uVar12 = 0x68;\n    uVar4 = 0xd;\n  }\n  else {\n    uVar4 = 0xd;\n    iVar11 = iVar10;\n    do {\n      pbVar14 = (byte *)((int)param_4 + iVar11);\n      iVar11 = iVar11 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;\n    } while (iVar11 != -1);\n    uVar12 = uVar4 * 8;\n  }\n  uVar12 = (uVar4 ^ uVar12 ^ (uint)param_3) % uVar13;\n  puVar8 = (undefined4 *)piVar3[5];\n  puVar16 = (undefined4 *)puVar8[uVar12];\n  if (puVar16 != (undefined4 *)0x0) {\nLAB_00088bfa:\n    if (((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0))\n    goto LAB_00088bf0;\n    iVar10 = puVar16[2];\n    local_50 = puVar16[4];\n    puVar8 = puVar16;\n    if (iVar10 - local_50 < 0x16) {\n      iVar11 = FUN_0005b490();\n      if (iVar11 != 0) {\n        return 7;\n      }\n      puVar8 = (undefined4 *)FUN_00044180();\n      if (puVar8 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar8[2] = iVar10 * 2;\n      puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar15; puVar1 != puVar16; puVar1 = (undefined4 *)*puVar1) {\n        puVar15 = puVar1;\n      }\n      *puVar15 = puVar8;\n      local_50 = puVar8[4];\n    }\n    local_50 = -local_50;\n    if (puVar8[9] == extraout_ECX && puVar8[8] == uVar9) goto LAB_00088cd7;\n    FUN_00053040();\n    uVar13 = uVar9 - puVar8[8];\n    iVar10 = (extraout_ECX - puVar8[9]) - (uint)(uVar9 < (uint)puVar8[8]);\n    if (iVar10 == 0 && (uint)(0x7f < uVar13) <= (uint)-iVar10) {\n      *(char *)(puVar8[4] + (int)puVar8) = (char)uVar13;\n      iVar10 = 1;\n    }\n    else {\n      iVar10 = FUN_00046180();\n    }\n    iVar10 = iVar10 + puVar8[4];\n    puVar8[4] = iVar10;\n    puVar8[8] = uVar9;\n    puVar8[9] = extraout_ECX;\n    puVar8[3] = iVar10;\n    if (*piVar3 != 1) {\n      bVar17 = true;\n      puVar8[4] = iVar10 + 1;\n      iVar10 = *piVar3;\n      puVar8[7] = 0;\n      *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0);\n      goto LAB_00088cd7;\n    }\n    if ((int)param_1 < 0) goto LAB_00089040;\n    goto LAB_000890ca;\n  }\nLAB_00088da4:\n  uVar4 = 0x80;\n  if (0x7f < param_5 + 0x6a) {\n    uVar4 = param_5 + 0x6a;\n  }\n  uVar7 = piVar3[2] * 2;\n  if (uVar13 == uVar7 || SBORROW4(uVar13,uVar7) != (int)(uVar13 + piVar3[2] * -2) < 0) {\n    iVar11 = FUN_0005b490();\n    if (iVar11 != 0) {\n      return 7;\n    }\n    uVar12 = uVar13 * 2;\n    __s = (void *)FUN_000421f0();\n    if (__s == (void *)0x0) {\n      return 7;\n    }\n    memset(__s,0,uVar13 << 3);\n    if (0 < piVar3[3]) {\n      local_38 = 0;\n      puVar16 = puVar8;\n      do {\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      } while (local_38 < piVar3[3]);\n    }\n    FUN_00042800(puVar8);\n    piVar3[3] = uVar12;\n    piVar3[5] = (int)__s;\n    if (iVar10 < 0) {\n      uVar13 = 0x68;\n      uVar7 = 0xd;\n    }\n    else {\n      uVar7 = 0xd;\n      do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);\n      uVar13 = uVar7 * 8;\n    }\n    uVar12 = (uVar7 ^ uVar13 ^ (uint)param_3) % uVar12;\n  }\n  iVar10 = FUN_0005b490();\n  if ((iVar10 != 0) || (puVar8 = (undefined4 *)FUN_000421f0(), puVar8 == (undefined4 *)0x0)) {\n    return 7;\n  }\n  *puVar8 = 0;\n  puVar8[9] = 0;\n  puVar16 = (undefined4 *)((uint)(puVar8 + 1) & 0xfffffffc);\n  for (uVar13 = (uint)((int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc))) >> 2;\n      uVar13 != 0; uVar13 = uVar13 - 1) {\n    *puVar16 = 0;\n    puVar16 = puVar16 + (uint)bVar18 * -2 + 1;\n  }\n  puVar8[2] = uVar4;\n  *(byte *)(puVar8 + 10) = param_3;\n  memcpy((void *)((int)puVar8 + 0x29),param_4,param_5);\n  puVar8[5] = param_5;\n  *(undefined1 *)((int)puVar8 + param_5 + 0x29) = 0;\n  puVar8[4] = param_5 + 0x2a;\n  *puVar8 = *(undefined4 *)(piVar3[5] + uVar12 * 4);\n  *(undefined4 **)(piVar3[5] + uVar12 * 4) = puVar8;\n  piVar3[2] = piVar3[2] + 1;\n  if (extraout_ECX == 0 && (uint)(0x7f < uVar9) <= (uint)-extraout_ECX) {\n    local_44 = (undefined1)((ulonglong)uVar19 >> 0x20);\n    *(undefined1 *)(puVar8[4] + (int)puVar8) = local_44;\n    local_50 = 1;\n  }\n  else {\n    local_50 = FUN_00046180();\n  }\n  local_50 = local_50 + puVar8[4];\n  puVar8[4] = local_50;\n  puVar8[9] = extraout_ECX;\n  puVar8[8] = uVar9;\n  puVar8[3] = local_50;\n  if (*piVar3 != 1) {\n    local_50 = local_50 + 1;\n    puVar8[4] = local_50;\n    *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(*piVar3 != 0);\n  }\nLAB_00088cd7:\n  if ((int)param_1 < 0) {\nLAB_00089040:\n    *(undefined1 *)(puVar8 + 6) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }\n  if (*piVar3 == 1) {\nLAB_000890ca:\n    *(undefined1 *)((int)puVar8 + 0x19) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }\n  iVar10 = puVar8[4];\n  if ((int)*(short *)((int)puVar8 + 0x1a) == param_1) {\nLAB_00088d4f:\n    if (!bVar17) goto LAB_00089047;\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n  }\n  else {\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n    if (*piVar3 == 0) {\n      puVar8[4] = iVar10 + 1;\n      *puVar5 = 1;\n      if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }\n      iVar10 = iVar10 + puVar8[4];\n      puVar8[7] = 0;\n      puVar8[4] = iVar10;\n      *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n      goto LAB_00088d4f;\n    }\n    *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n    param_2 = param_1;\n  }\n  uVar13 = (param_2 - puVar8[7]) + 2;\n  if ((int)uVar13 < 0 || (uint)-((int)uVar13 >> 0x1f) < (uint)(0x7f < uVar13)) {\n    iVar10 = FUN_00046180();\n  }\n  else {\n    *puVar5 = (char)uVar13;\n    iVar10 = 1;\n  }\n  iVar10 = iVar10 + puVar8[4];\n  puVar8[4] = iVar10;\n  puVar8[7] = param_2;\nLAB_00089047:\n  *(int *)piVar3[1] = *(int *)piVar3[1] + iVar10 + local_50;\n  return 0;\nLAB_00088bf0:\n  puVar16 = (undefined4 *)*puVar16;\n  if (puVar16 == (undefined4 *)0x0) goto LAB_00088da4;\n  goto LAB_00088bfa;\n}" (type_identifier "undefined4") (function_declarator "FUN_00088b30(uint param_1,uint param_2,byte param_3,void *param_4,size_t param_5)" (identifier "FUN_00088b30") (parameter_list "(uint param_1,uint param_2,byte param_3,void *param_4,size_t param_5)" (( "(") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "byte param_3" (type_identifier "byte") (identifier "param_3")) (, ",") (parameter_declaration "void *param_4" (primitive_type "void") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "size_t param_5" (primitive_type "size_t") (identifier "param_5")) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  byte bVar2;\n  int *piVar3;\n  uint uVar4;\n  undefined1 *puVar5;\n  void *__s;\n  size_t sVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  int extraout_ECX;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  uint uVar13;\n  byte *pbVar14;\n  undefined4 *puVar15;\n  undefined4 *puVar16;\n  bool bVar17;\n  byte bVar18;\n  undefined8 uVar19;\n  int local_50;\n  undefined1 local_44;\n  int local_38;\n  \n  bVar18 = 0;\n  uVar19 = FUN_00036ac5();\n  uVar9 = (uint)((ulonglong)uVar19 >> 0x20);\n  piVar3 = (int *)uVar19;\n  bVar17 = *piVar3 == 0;\n  uVar13 = piVar3[3];\n  iVar10 = param_5 - 1;\n  if (iVar10 < 0) {\n    uVar12 = 0x68;\n    uVar4 = 0xd;\n  }\n  else {\n    uVar4 = 0xd;\n    iVar11 = iVar10;\n    do {\n      pbVar14 = (byte *)((int)param_4 + iVar11);\n      iVar11 = iVar11 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;\n    } while (iVar11 != -1);\n    uVar12 = uVar4 * 8;\n  }\n  uVar12 = (uVar4 ^ uVar12 ^ (uint)param_3) % uVar13;\n  puVar8 = (undefined4 *)piVar3[5];\n  puVar16 = (undefined4 *)puVar8[uVar12];\n  if (puVar16 != (undefined4 *)0x0) {\nLAB_00088bfa:\n    if (((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0))\n    goto LAB_00088bf0;\n    iVar10 = puVar16[2];\n    local_50 = puVar16[4];\n    puVar8 = puVar16;\n    if (iVar10 - local_50 < 0x16) {\n      iVar11 = FUN_0005b490();\n      if (iVar11 != 0) {\n        return 7;\n      }\n      puVar8 = (undefined4 *)FUN_00044180();\n      if (puVar8 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar8[2] = iVar10 * 2;\n      puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar15; puVar1 != puVar16; puVar1 = (undefined4 *)*puVar1) {\n        puVar15 = puVar1;\n      }\n      *puVar15 = puVar8;\n      local_50 = puVar8[4];\n    }\n    local_50 = -local_50;\n    if (puVar8[9] == extraout_ECX && puVar8[8] == uVar9) goto LAB_00088cd7;\n    FUN_00053040();\n    uVar13 = uVar9 - puVar8[8];\n    iVar10 = (extraout_ECX - puVar8[9]) - (uint)(uVar9 < (uint)puVar8[8]);\n    if (iVar10 == 0 && (uint)(0x7f < uVar13) <= (uint)-iVar10) {\n      *(char *)(puVar8[4] + (int)puVar8) = (char)uVar13;\n      iVar10 = 1;\n    }\n    else {\n      iVar10 = FUN_00046180();\n    }\n    iVar10 = iVar10 + puVar8[4];\n    puVar8[4] = iVar10;\n    puVar8[8] = uVar9;\n    puVar8[9] = extraout_ECX;\n    puVar8[3] = iVar10;\n    if (*piVar3 != 1) {\n      bVar17 = true;\n      puVar8[4] = iVar10 + 1;\n      iVar10 = *piVar3;\n      puVar8[7] = 0;\n      *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0);\n      goto LAB_00088cd7;\n    }\n    if ((int)param_1 < 0) goto LAB_00089040;\n    goto LAB_000890ca;\n  }\nLAB_00088da4:\n  uVar4 = 0x80;\n  if (0x7f < param_5 + 0x6a) {\n    uVar4 = param_5 + 0x6a;\n  }\n  uVar7 = piVar3[2] * 2;\n  if (uVar13 == uVar7 || SBORROW4(uVar13,uVar7) != (int)(uVar13 + piVar3[2] * -2) < 0) {\n    iVar11 = FUN_0005b490();\n    if (iVar11 != 0) {\n      return 7;\n    }\n    uVar12 = uVar13 * 2;\n    __s = (void *)FUN_000421f0();\n    if (__s == (void *)0x0) {\n      return 7;\n    }\n    memset(__s,0,uVar13 << 3);\n    if (0 < piVar3[3]) {\n      local_38 = 0;\n      puVar16 = puVar8;\n      do {\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      } while (local_38 < piVar3[3]);\n    }\n    FUN_00042800(puVar8);\n    piVar3[3] = uVar12;\n    piVar3[5] = (int)__s;\n    if (iVar10 < 0) {\n      uVar13 = 0x68;\n      uVar7 = 0xd;\n    }\n    else {\n      uVar7 = 0xd;\n      do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);\n      uVar13 = uVar7 * 8;\n    }\n    uVar12 = (uVar7 ^ uVar13 ^ (uint)param_3) % uVar12;\n  }\n  iVar10 = FUN_0005b490();\n  if ((iVar10 != 0) || (puVar8 = (undefined4 *)FUN_000421f0(), puVar8 == (undefined4 *)0x0)) {\n    return 7;\n  }\n  *puVar8 = 0;\n  puVar8[9] = 0;\n  puVar16 = (undefined4 *)((uint)(puVar8 + 1) & 0xfffffffc);\n  for (uVar13 = (uint)((int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc))) >> 2;\n      uVar13 != 0; uVar13 = uVar13 - 1) {\n    *puVar16 = 0;\n    puVar16 = puVar16 + (uint)bVar18 * -2 + 1;\n  }\n  puVar8[2] = uVar4;\n  *(byte *)(puVar8 + 10) = param_3;\n  memcpy((void *)((int)puVar8 + 0x29),param_4,param_5);\n  puVar8[5] = param_5;\n  *(undefined1 *)((int)puVar8 + param_5 + 0x29) = 0;\n  puVar8[4] = param_5 + 0x2a;\n  *puVar8 = *(undefined4 *)(piVar3[5] + uVar12 * 4);\n  *(undefined4 **)(piVar3[5] + uVar12 * 4) = puVar8;\n  piVar3[2] = piVar3[2] + 1;\n  if (extraout_ECX == 0 && (uint)(0x7f < uVar9) <= (uint)-extraout_ECX) {\n    local_44 = (undefined1)((ulonglong)uVar19 >> 0x20);\n    *(undefined1 *)(puVar8[4] + (int)puVar8) = local_44;\n    local_50 = 1;\n  }\n  else {\n    local_50 = FUN_00046180();\n  }\n  local_50 = local_50 + puVar8[4];\n  puVar8[4] = local_50;\n  puVar8[9] = extraout_ECX;\n  puVar8[8] = uVar9;\n  puVar8[3] = local_50;\n  if (*piVar3 != 1) {\n    local_50 = local_50 + 1;\n    puVar8[4] = local_50;\n    *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(*piVar3 != 0);\n  }\nLAB_00088cd7:\n  if ((int)param_1 < 0) {\nLAB_00089040:\n    *(undefined1 *)(puVar8 + 6) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }\n  if (*piVar3 == 1) {\nLAB_000890ca:\n    *(undefined1 *)((int)puVar8 + 0x19) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }\n  iVar10 = puVar8[4];\n  if ((int)*(short *)((int)puVar8 + 0x1a) == param_1) {\nLAB_00088d4f:\n    if (!bVar17) goto LAB_00089047;\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n  }\n  else {\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n    if (*piVar3 == 0) {\n      puVar8[4] = iVar10 + 1;\n      *puVar5 = 1;\n      if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }\n      iVar10 = iVar10 + puVar8[4];\n      puVar8[7] = 0;\n      puVar8[4] = iVar10;\n      *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n      goto LAB_00088d4f;\n    }\n    *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n    param_2 = param_1;\n  }\n  uVar13 = (param_2 - puVar8[7]) + 2;\n  if ((int)uVar13 < 0 || (uint)-((int)uVar13 >> 0x1f) < (uint)(0x7f < uVar13)) {\n    iVar10 = FUN_00046180();\n  }\n  else {\n    *puVar5 = (char)uVar13;\n    iVar10 = 1;\n  }\n  iVar10 = iVar10 + puVar8[4];\n  puVar8[4] = iVar10;\n  puVar8[7] = param_2;\nLAB_00089047:\n  *(int *)piVar3[1] = *(int *)piVar3[1] + iVar10 + local_50;\n  return 0;\nLAB_00088bf0:\n  puVar16 = (undefined4 *)*puVar16;\n  if (puVar16 == (undefined4 *)0x0) goto LAB_00088da4;\n  goto LAB_00088bfa;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "undefined1 *puVar5;" (type_identifier "undefined1") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "void *__s;" (primitive_type "void") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "size_t sVar6;" (primitive_type "size_t") (identifier "sVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "undefined4 *puVar8;" (type_identifier "undefined4") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "int extraout_ECX;" (primitive_type "int") (identifier "extraout_ECX") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "byte *pbVar14;" (type_identifier "byte") (pointer_declarator "*pbVar14" (* "*") (identifier "pbVar14")) (; ";")) (declaration "undefined4 *puVar15;" (type_identifier "undefined4") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "undefined4 *puVar16;" (type_identifier "undefined4") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "bool bVar17;" (primitive_type "bool") (identifier "bVar17") (; ";")) (declaration "byte bVar18;" (type_identifier "byte") (identifier "bVar18") (; ";")) (declaration "undefined8 uVar19;" (type_identifier "undefined8") (identifier "uVar19") (; ";")) (declaration "int local_50;" (primitive_type "int") (identifier "local_50") (; ";")) (declaration "undefined1 local_44;" (type_identifier "undefined1") (identifier "local_44") (; ";")) (declaration "int local_38;" (primitive_type "int") (identifier "local_38") (; ";")) (expression_statement "bVar18 = 0;" (assignment_expression "bVar18 = 0" (identifier "bVar18") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar19 = FUN_00036ac5();" (assignment_expression "uVar19 = FUN_00036ac5()" (identifier "uVar19") (= "=") (call_expression "FUN_00036ac5()" (identifier "FUN_00036ac5") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar9 = (uint)((ulonglong)uVar19 >> 0x20);" (assignment_expression "uVar9 = (uint)((ulonglong)uVar19 >> 0x20)" (identifier "uVar9") (= "=") (call_expression "(uint)((ulonglong)uVar19 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)uVar19 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar19 >> 0x20" (cast_expression "(ulonglong)uVar19" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar19")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "piVar3 = (int *)uVar19;" (assignment_expression "piVar3 = (int *)uVar19" (identifier "piVar3") (= "=") (cast_expression "(int *)uVar19" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar19"))) (; ";")) (expression_statement "bVar17 = *piVar3 == 0;" (assignment_expression "bVar17 = *piVar3 == 0" (identifier "bVar17") (= "=") (binary_expression "*piVar3 == 0" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (== "==") (number_literal "0"))) (; ";")) (expression_statement "uVar13 = piVar3[3];" (assignment_expression "uVar13 = piVar3[3]" (identifier "uVar13") (= "=") (subscript_expression "piVar3[3]" (identifier "piVar3") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "iVar10 = param_5 - 1;" (assignment_expression "iVar10 = param_5 - 1" (identifier "iVar10") (= "=") (binary_expression "param_5 - 1" (identifier "param_5") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (iVar10 < 0) {\n    uVar12 = 0x68;\n    uVar4 = 0xd;\n  }\n  else {\n    uVar4 = 0xd;\n    iVar11 = iVar10;\n    do {\n      pbVar14 = (byte *)((int)param_4 + iVar11);\n      iVar11 = iVar11 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;\n    } while (iVar11 != -1);\n    uVar12 = uVar4 * 8;\n  }" (if "if") (parenthesized_expression "(iVar10 < 0)" (( "(") (binary_expression "iVar10 < 0" (identifier "iVar10") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    uVar12 = 0x68;\n    uVar4 = 0xd;\n  }" ({ "{") (expression_statement "uVar12 = 0x68;" (assignment_expression "uVar12 = 0x68" (identifier "uVar12") (= "=") (number_literal "0x68")) (; ";")) (expression_statement "uVar4 = 0xd;" (assignment_expression "uVar4 = 0xd" (identifier "uVar4") (= "=") (number_literal "0xd")) (; ";")) (} "}")) (else_clause "else {\n    uVar4 = 0xd;\n    iVar11 = iVar10;\n    do {\n      pbVar14 = (byte *)((int)param_4 + iVar11);\n      iVar11 = iVar11 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;\n    } while (iVar11 != -1);\n    uVar12 = uVar4 * 8;\n  }" (else "else") (compound_statement "{\n    uVar4 = 0xd;\n    iVar11 = iVar10;\n    do {\n      pbVar14 = (byte *)((int)param_4 + iVar11);\n      iVar11 = iVar11 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;\n    } while (iVar11 != -1);\n    uVar12 = uVar4 * 8;\n  }" ({ "{") (expression_statement "uVar4 = 0xd;" (assignment_expression "uVar4 = 0xd" (identifier "uVar4") (= "=") (number_literal "0xd")) (; ";")) (expression_statement "iVar11 = iVar10;" (assignment_expression "iVar11 = iVar10" (identifier "iVar11") (= "=") (identifier "iVar10")) (; ";")) (do_statement "do {\n      pbVar14 = (byte *)((int)param_4 + iVar11);\n      iVar11 = iVar11 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;\n    } while (iVar11 != -1);" (do "do") (compound_statement "{\n      pbVar14 = (byte *)((int)param_4 + iVar11);\n      iVar11 = iVar11 + -1;\n      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;\n    }" ({ "{") (expression_statement "pbVar14 = (byte *)((int)param_4 + iVar11);" (assignment_expression "pbVar14 = (byte *)((int)param_4 + iVar11)" (identifier "pbVar14") (= "=") (cast_expression "(byte *)((int)param_4 + iVar11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + iVar11)" (( "(") (binary_expression "(int)param_4 + iVar11" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (identifier "iVar11")) () ")")))) (; ";")) (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" (identifier "iVar11") (= "=") (binary_expression "iVar11 + -1" (identifier "iVar11") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;" (assignment_expression "uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14" (identifier "uVar4") (= "=") (binary_expression "uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14" (binary_expression "uVar4 ^ uVar4 * 8" (identifier "uVar4") (^ "^") (binary_expression "uVar4 * 8" (identifier "uVar4") (* "*") (number_literal "8"))) (^ "^") (binary_expression "(uint)*pbVar14" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar14")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar11 != -1)" (( "(") (binary_expression "iVar11 != -1" (identifier "iVar11") (!= "!=") (number_literal "-1")) () ")")) (; ";")) (expression_statement "uVar12 = uVar4 * 8;" (assignment_expression "uVar12 = uVar4 * 8" (identifier "uVar12") (= "=") (binary_expression "uVar4 * 8" (identifier "uVar4") (* "*") (number_literal "8"))) (; ";")) (} "}")))) (expression_statement "uVar12 = (uVar4 ^ uVar12 ^ (uint)param_3) % uVar13;" (assignment_expression "uVar12 = (uVar4 ^ uVar12 ^ (uint)param_3) % uVar13" (identifier "uVar12") (= "=") (binary_expression "(uVar4 ^ uVar12 ^ (uint)param_3) % uVar13" (parenthesized_expression "(uVar4 ^ uVar12 ^ (uint)param_3)" (( "(") (binary_expression "uVar4 ^ uVar12 ^ (uint)param_3" (binary_expression "uVar4 ^ uVar12" (identifier "uVar4") (^ "^") (identifier "uVar12")) (^ "^") (cast_expression "(uint)param_3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_3"))) () ")")) (% "%") (identifier "uVar13"))) (; ";")) (expression_statement "puVar8 = (undefined4 *)piVar3[5];" (assignment_expression "puVar8 = (undefined4 *)piVar3[5]" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)piVar3[5]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar3[5]" (identifier "piVar3") ([ "[") (number_literal "5") (] "]")))) (; ";")) (expression_statement "puVar16 = (undefined4 *)puVar8[uVar12];" (assignment_expression "puVar16 = (undefined4 *)puVar8[uVar12]" (identifier "puVar16") (= "=") (cast_expression "(undefined4 *)puVar8[uVar12]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar8[uVar12]" (identifier "puVar8") ([ "[") (identifier "uVar12") (] "]")))) (; ";")) (if_statement "if (puVar16 != (undefined4 *)0x0) {\nLAB_00088bfa:\n    if (((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0))\n    goto LAB_00088bf0;\n    iVar10 = puVar16[2];\n    local_50 = puVar16[4];\n    puVar8 = puVar16;\n    if (iVar10 - local_50 < 0x16) {\n      iVar11 = FUN_0005b490();\n      if (iVar11 != 0) {\n        return 7;\n      }\n      puVar8 = (undefined4 *)FUN_00044180();\n      if (puVar8 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar8[2] = iVar10 * 2;\n      puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar15; puVar1 != puVar16; puVar1 = (undefined4 *)*puVar1) {\n        puVar15 = puVar1;\n      }\n      *puVar15 = puVar8;\n      local_50 = puVar8[4];\n    }\n    local_50 = -local_50;\n    if (puVar8[9] == extraout_ECX && puVar8[8] == uVar9) goto LAB_00088cd7;\n    FUN_00053040();\n    uVar13 = uVar9 - puVar8[8];\n    iVar10 = (extraout_ECX - puVar8[9]) - (uint)(uVar9 < (uint)puVar8[8]);\n    if (iVar10 == 0 && (uint)(0x7f < uVar13) <= (uint)-iVar10) {\n      *(char *)(puVar8[4] + (int)puVar8) = (char)uVar13;\n      iVar10 = 1;\n    }\n    else {\n      iVar10 = FUN_00046180();\n    }\n    iVar10 = iVar10 + puVar8[4];\n    puVar8[4] = iVar10;\n    puVar8[8] = uVar9;\n    puVar8[9] = extraout_ECX;\n    puVar8[3] = iVar10;\n    if (*piVar3 != 1) {\n      bVar17 = true;\n      puVar8[4] = iVar10 + 1;\n      iVar10 = *piVar3;\n      puVar8[7] = 0;\n      *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0);\n      goto LAB_00088cd7;\n    }\n    if ((int)param_1 < 0) goto LAB_00089040;\n    goto LAB_000890ca;\n  }" (if "if") (parenthesized_expression "(puVar16 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar16 != (undefined4 *)0x0" (identifier "puVar16") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_00088bfa:\n    if (((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0))\n    goto LAB_00088bf0;\n    iVar10 = puVar16[2];\n    local_50 = puVar16[4];\n    puVar8 = puVar16;\n    if (iVar10 - local_50 < 0x16) {\n      iVar11 = FUN_0005b490();\n      if (iVar11 != 0) {\n        return 7;\n      }\n      puVar8 = (undefined4 *)FUN_00044180();\n      if (puVar8 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar8[2] = iVar10 * 2;\n      puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar15; puVar1 != puVar16; puVar1 = (undefined4 *)*puVar1) {\n        puVar15 = puVar1;\n      }\n      *puVar15 = puVar8;\n      local_50 = puVar8[4];\n    }\n    local_50 = -local_50;\n    if (puVar8[9] == extraout_ECX && puVar8[8] == uVar9) goto LAB_00088cd7;\n    FUN_00053040();\n    uVar13 = uVar9 - puVar8[8];\n    iVar10 = (extraout_ECX - puVar8[9]) - (uint)(uVar9 < (uint)puVar8[8]);\n    if (iVar10 == 0 && (uint)(0x7f < uVar13) <= (uint)-iVar10) {\n      *(char *)(puVar8[4] + (int)puVar8) = (char)uVar13;\n      iVar10 = 1;\n    }\n    else {\n      iVar10 = FUN_00046180();\n    }\n    iVar10 = iVar10 + puVar8[4];\n    puVar8[4] = iVar10;\n    puVar8[8] = uVar9;\n    puVar8[9] = extraout_ECX;\n    puVar8[3] = iVar10;\n    if (*piVar3 != 1) {\n      bVar17 = true;\n      puVar8[4] = iVar10 + 1;\n      iVar10 = *piVar3;\n      puVar8[7] = 0;\n      *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0);\n      goto LAB_00088cd7;\n    }\n    if ((int)param_1 < 0) goto LAB_00089040;\n    goto LAB_000890ca;\n  }" ({ "{") (labeled_statement "LAB_00088bfa:\n    if (((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0))\n    goto LAB_00088bf0;" (statement_identifier "LAB_00088bfa") (: ":") (if_statement "if (((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0))\n    goto LAB_00088bf0;" (if "if") (parenthesized_expression "(((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0))" (( "(") (binary_expression "((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||\n       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0)" (parenthesized_expression "((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5))" (( "(") (binary_expression "(*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)" (parenthesized_expression "(*(byte *)(puVar16 + 10) != param_3)" (( "(") (binary_expression "*(byte *)(puVar16 + 10) != param_3" (pointer_expression "*(byte *)(puVar16 + 10)" (* "*") (cast_expression "(byte *)(puVar16 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 10)" (( "(") (binary_expression "puVar16 + 10" (identifier "puVar16") (+ "+") (number_literal "10")) () ")")))) (!= "!=") (identifier "param_3")) () ")")) (|| "||") (parenthesized_expression "(puVar16[5] != param_5)" (( "(") (binary_expression "puVar16[5] != param_5" (subscript_expression "puVar16[5]" (identifier "puVar16") ([ "[") (number_literal "5") (] "]")) (!= "!=") (identifier "param_5")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0)" (( "(") (comma_expression "iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0" (assignment_expression "iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5)" (identifier "iVar11") (= "=") (call_expression "memcmp((void *)((int)puVar16 + 0x29),param_4,param_5)" (identifier "memcmp") (argument_list "((void *)((int)puVar16 + 0x29),param_4,param_5)" (( "(") (cast_expression "(void *)((int)puVar16 + 0x29)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar16 + 0x29)" (( "(") (binary_expression "(int)puVar16 + 0x29" (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")) (+ "+") (number_literal "0x29")) () ")"))) (, ",") (identifier "param_4") (, ",") (identifier "param_5") () ")")))) (, ",") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_00088bf0;" (goto "goto") (statement_identifier "LAB_00088bf0") (; ";")))) (expression_statement "iVar10 = puVar16[2];" (assignment_expression "iVar10 = puVar16[2]" (identifier "iVar10") (= "=") (subscript_expression "puVar16[2]" (identifier "puVar16") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_50 = puVar16[4];" (assignment_expression "local_50 = puVar16[4]" (identifier "local_50") (= "=") (subscript_expression "puVar16[4]" (identifier "puVar16") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "puVar8 = puVar16;" (assignment_expression "puVar8 = puVar16" (identifier "puVar8") (= "=") (identifier "puVar16")) (; ";")) (if_statement "if (iVar10 - local_50 < 0x16) {\n      iVar11 = FUN_0005b490();\n      if (iVar11 != 0) {\n        return 7;\n      }\n      puVar8 = (undefined4 *)FUN_00044180();\n      if (puVar8 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar8[2] = iVar10 * 2;\n      puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar15; puVar1 != puVar16; puVar1 = (undefined4 *)*puVar1) {\n        puVar15 = puVar1;\n      }\n      *puVar15 = puVar8;\n      local_50 = puVar8[4];\n    }" (if "if") (parenthesized_expression "(iVar10 - local_50 < 0x16)" (( "(") (binary_expression "iVar10 - local_50 < 0x16" (binary_expression "iVar10 - local_50" (identifier "iVar10") (- "-") (identifier "local_50")) (< "<") (number_literal "0x16")) () ")")) (compound_statement "{\n      iVar11 = FUN_0005b490();\n      if (iVar11 != 0) {\n        return 7;\n      }\n      puVar8 = (undefined4 *)FUN_00044180();\n      if (puVar8 == (undefined4 *)0x0) {\n        return 7;\n      }\n      puVar8[2] = iVar10 * 2;\n      puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5]);\n      for (puVar1 = (undefined4 *)*puVar15; puVar1 != puVar16; puVar1 = (undefined4 *)*puVar1) {\n        puVar15 = puVar1;\n      }\n      *puVar15 = puVar8;\n      local_50 = puVar8[4];\n    }" ({ "{") (expression_statement "iVar11 = FUN_0005b490();" (assignment_expression "iVar11 = FUN_0005b490()" (identifier "iVar11") (= "=") (call_expression "FUN_0005b490()" (identifier "FUN_0005b490") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar11 != 0) {\n        return 7;\n      }" (if "if") (parenthesized_expression "(iVar11 != 0)" (( "(") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        return 7;\n      }" ({ "{") (return_statement "return 7;" (return "return") (number_literal "7") (; ";")) (} "}"))) (expression_statement "puVar8 = (undefined4 *)FUN_00044180();" (assignment_expression "puVar8 = (undefined4 *)FUN_00044180()" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)FUN_00044180()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00044180()" (identifier "FUN_00044180") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (puVar8 == (undefined4 *)0x0) {\n        return 7;\n      }" (if "if") (parenthesized_expression "(puVar8 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar8 == (undefined4 *)0x0" (identifier "puVar8") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        return 7;\n      }" ({ "{") (return_statement "return 7;" (return "return") (number_literal "7") (; ";")) (} "}"))) (expression_statement "puVar8[2] = iVar10 * 2;" (assignment_expression "puVar8[2] = iVar10 * 2" (subscript_expression "puVar8[2]" (identifier "puVar8") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "iVar10 * 2" (identifier "iVar10") (* "*") (number_literal "2"))) (; ";")) (expression_statement "puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5]);" (assignment_expression "puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5])" (identifier "puVar15") (= "=") (cast_expression "(undefined4 *)(uVar12 * 4 + piVar3[5])" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar12 * 4 + piVar3[5])" (( "(") (binary_expression "uVar12 * 4 + piVar3[5]" (binary_expression "uVar12 * 4" (identifier "uVar12") (* "*") (number_literal "4")) (+ "+") (subscript_expression "piVar3[5]" (identifier "piVar3") ([ "[") (number_literal "5") (] "]"))) () ")")))) (; ";")) (for_statement "for (puVar1 = (undefined4 *)*puVar15; puVar1 != puVar16; puVar1 = (undefined4 *)*puVar1) {\n        puVar15 = puVar1;\n      }" (for "for") (( "(") (assignment_expression "puVar1 = (undefined4 *)*puVar15" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)*puVar15" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar15" (* "*") (identifier "puVar15")))) (; ";") (binary_expression "puVar1 != puVar16" (identifier "puVar1") (!= "!=") (identifier "puVar16")) (; ";") (assignment_expression "puVar1 = (undefined4 *)*puVar1" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)*puVar1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")))) () ")") (compound_statement "{\n        puVar15 = puVar1;\n      }" ({ "{") (expression_statement "puVar15 = puVar1;" (assignment_expression "puVar15 = puVar1" (identifier "puVar15") (= "=") (identifier "puVar1")) (; ";")) (} "}"))) (expression_statement "*puVar15 = puVar8;" (assignment_expression "*puVar15 = puVar8" (pointer_expression "*puVar15" (* "*") (identifier "puVar15")) (= "=") (identifier "puVar8")) (; ";")) (expression_statement "local_50 = puVar8[4];" (assignment_expression "local_50 = puVar8[4]" (identifier "local_50") (= "=") (subscript_expression "puVar8[4]" (identifier "puVar8") ([ "[") (number_literal "4") (] "]"))) (; ";")) (} "}"))) (expression_statement "local_50 = -local_50;" (assignment_expression "local_50 = -local_50" (identifier "local_50") (= "=") (unary_expression "-local_50" (- "-") (identifier "local_50"))) (; ";")) (if_statement "if (puVar8[9] == extraout_ECX && puVar8[8] == uVar9) goto LAB_00088cd7;" (if "if") (parenthesized_expression "(puVar8[9] == extraout_ECX && puVar8[8] == uVar9)" (( "(") (binary_expression "puVar8[9] == extraout_ECX && puVar8[8] == uVar9" (binary_expression "puVar8[9] == extraout_ECX" (subscript_expression "puVar8[9]" (identifier "puVar8") ([ "[") (number_literal "9") (] "]")) (== "==") (identifier "extraout_ECX")) (&& "&&") (binary_expression "puVar8[8] == uVar9" (subscript_expression "puVar8[8]" (identifier "puVar8") ([ "[") (number_literal "8") (] "]")) (== "==") (identifier "uVar9"))) () ")")) (goto_statement "goto LAB_00088cd7;" (goto "goto") (statement_identifier "LAB_00088cd7") (; ";"))) (expression_statement "FUN_00053040();" (call_expression "FUN_00053040()" (identifier "FUN_00053040") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar13 = uVar9 - puVar8[8];" (assignment_expression "uVar13 = uVar9 - puVar8[8]" (identifier "uVar13") (= "=") (binary_expression "uVar9 - puVar8[8]" (identifier "uVar9") (- "-") (subscript_expression "puVar8[8]" (identifier "puVar8") ([ "[") (number_literal "8") (] "]")))) (; ";")) (expression_statement "iVar10 = (extraout_ECX - puVar8[9]) - (uint)(uVar9 < (uint)puVar8[8]);" (assignment_expression "iVar10 = (extraout_ECX - puVar8[9]) - (uint)(uVar9 < (uint)puVar8[8])" (identifier "iVar10") (= "=") (binary_expression "(extraout_ECX - puVar8[9]) - (uint)(uVar9 < (uint)puVar8[8])" (parenthesized_expression "(extraout_ECX - puVar8[9])" (( "(") (binary_expression "extraout_ECX - puVar8[9]" (identifier "extraout_ECX") (- "-") (subscript_expression "puVar8[9]" (identifier "puVar8") ([ "[") (number_literal "9") (] "]"))) () ")")) (- "-") (call_expression "(uint)(uVar9 < (uint)puVar8[8])" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar9 < (uint)puVar8[8])" (( "(") (binary_expression "uVar9 < (uint)puVar8[8]" (identifier "uVar9") (< "<") (cast_expression "(uint)puVar8[8]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "puVar8[8]" (identifier "puVar8") ([ "[") (number_literal "8") (] "]")))) () ")"))))) (; ";")) (if_statement "if (iVar10 == 0 && (uint)(0x7f < uVar13) <= (uint)-iVar10) {\n      *(char *)(puVar8[4] + (int)puVar8) = (char)uVar13;\n      iVar10 = 1;\n    }\n    else {\n      iVar10 = FUN_00046180();\n    }" (if "if") (parenthesized_expression "(iVar10 == 0 && (uint)(0x7f < uVar13) <= (uint)-iVar10)" (( "(") (binary_expression "iVar10 == 0 && (uint)(0x7f < uVar13) <= (uint)-iVar10" (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) (&& "&&") (binary_expression "(uint)(0x7f < uVar13) <= (uint)-iVar10" (call_expression "(uint)(0x7f < uVar13)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0x7f < uVar13)" (( "(") (binary_expression "0x7f < uVar13" (number_literal "0x7f") (< "<") (identifier "uVar13")) () ")"))) (<= "<=") (binary_expression "(uint)-iVar10" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (identifier "iVar10")))) () ")")) (compound_statement "{\n      *(char *)(puVar8[4] + (int)puVar8) = (char)uVar13;\n      iVar10 = 1;\n    }" ({ "{") (expression_statement "*(char *)(puVar8[4] + (int)puVar8) = (char)uVar13;" (assignment_expression "*(char *)(puVar8[4] + (int)puVar8) = (char)uVar13" (pointer_expression "*(char *)(puVar8[4] + (int)puVar8)" (* "*") (cast_expression "(char *)(puVar8[4] + (int)puVar8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8[4] + (int)puVar8)" (( "(") (binary_expression "puVar8[4] + (int)puVar8" (subscript_expression "puVar8[4]" (identifier "puVar8") ([ "[") (number_literal "4") (] "]")) (+ "+") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8"))) () ")")))) (= "=") (cast_expression "(char)uVar13" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar13"))) (; ";")) (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" (identifier "iVar10") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n      iVar10 = FUN_00046180();\n    }" (else "else") (compound_statement "{\n      iVar10 = FUN_00046180();\n    }" ({ "{") (expression_statement "iVar10 = FUN_00046180();" (assignment_expression "iVar10 = FUN_00046180()" (identifier "iVar10") (= "=") (call_expression "FUN_00046180()" (identifier "FUN_00046180") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (expression_statement "iVar10 = iVar10 + puVar8[4];" (assignment_expression "iVar10 = iVar10 + puVar8[4]" (identifier "iVar10") (= "=") (binary_expression "iVar10 + puVar8[4]" (identifier "iVar10") (+ "+") (subscript_expression "puVar8[4]" (identifier "puVar8") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "puVar8[4] = iVar10;" (assignment_expression "puVar8[4] = iVar10" (subscript_expression "puVar8[4]" (identifier "puVar8") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "puVar8[8] = uVar9;" (assignment_expression "puVar8[8] = uVar9" (subscript_expression "puVar8[8]" (identifier "puVar8") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "puVar8[9] = extraout_ECX;" (assignment_expression "puVar8[9] = extraout_ECX" (subscript_expression "puVar8[9]" (identifier "puVar8") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "extraout_ECX")) (; ";")) (expression_statement "puVar8[3] = iVar10;" (assignment_expression "puVar8[3] = iVar10" (subscript_expression "puVar8[3]" (identifier "puVar8") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "iVar10")) (; ";")) (if_statement "if (*piVar3 != 1) {\n      bVar17 = true;\n      puVar8[4] = iVar10 + 1;\n      iVar10 = *piVar3;\n      puVar8[7] = 0;\n      *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0);\n      goto LAB_00088cd7;\n    }" (if "if") (parenthesized_expression "(*piVar3 != 1)" (( "(") (binary_expression "*piVar3 != 1" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n      bVar17 = true;\n      puVar8[4] = iVar10 + 1;\n      iVar10 = *piVar3;\n      puVar8[7] = 0;\n      *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0);\n      goto LAB_00088cd7;\n    }" ({ "{") (expression_statement "bVar17 = true;" (assignment_expression "bVar17 = true" (identifier "bVar17") (= "=") (true "true")) (; ";")) (expression_statement "puVar8[4] = iVar10 + 1;" (assignment_expression "puVar8[4] = iVar10 + 1" (subscript_expression "puVar8[4]" (identifier "puVar8") ([ "[") (number_literal "4") (] "]")) (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar10 = *piVar3;" (assignment_expression "iVar10 = *piVar3" (identifier "iVar10") (= "=") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (; ";")) (expression_statement "puVar8[7] = 0;" (assignment_expression "puVar8[7] = 0" (subscript_expression "puVar8[7]" (identifier "puVar8") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0);" (assignment_expression "*(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0)" (pointer_expression "*(ushort *)((int)puVar8 + 0x1a)" (* "*") (cast_expression "(ushort *)((int)puVar8 + 0x1a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 + 0x1a)" (( "(") (binary_expression "(int)puVar8 + 0x1a" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (number_literal "0x1a")) () ")")))) (= "=") (unary_expression "-(ushort)(iVar10 != 0)" (- "-") (call_expression "(ushort)(iVar10 != 0)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")"))))) (; ";")) (goto_statement "goto LAB_00088cd7;" (goto "goto") (statement_identifier "LAB_00088cd7") (; ";")) (} "}"))) (if_statement "if ((int)param_1 < 0) goto LAB_00089040;" (if "if") (parenthesized_expression "((int)param_1 < 0)" (( "(") (binary_expression "(int)param_1 < 0" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_00089040;" (goto "goto") (statement_identifier "LAB_00089040") (; ";"))) (goto_statement "goto LAB_000890ca;" (goto "goto") (statement_identifier "LAB_000890ca") (; ";")) (} "}"))) (labeled_statement "LAB_00088da4:\n  uVar4 = 0x80;" (statement_identifier "LAB_00088da4") (: ":") (expression_statement "uVar4 = 0x80;" (assignment_expression "uVar4 = 0x80" (identifier "uVar4") (= "=") (number_literal "0x80")) (; ";"))) (if_statement "if (0x7f < param_5 + 0x6a) {\n    uVar4 = param_5 + 0x6a;\n  }" (if "if") (parenthesized_expression "(0x7f < param_5 + 0x6a)" (( "(") (binary_expression "0x7f < param_5 + 0x6a" (number_literal "0x7f") (< "<") (binary_expression "param_5 + 0x6a" (identifier "param_5") (+ "+") (number_literal "0x6a"))) () ")")) (compound_statement "{\n    uVar4 = param_5 + 0x6a;\n  }" ({ "{") (expression_statement "uVar4 = param_5 + 0x6a;" (assignment_expression "uVar4 = param_5 + 0x6a" (identifier "uVar4") (= "=") (binary_expression "param_5 + 0x6a" (identifier "param_5") (+ "+") (number_literal "0x6a"))) (; ";")) (} "}"))) (expression_statement "uVar7 = piVar3[2] * 2;" (assignment_expression "uVar7 = piVar3[2] * 2" (identifier "uVar7") (= "=") (binary_expression "piVar3[2] * 2" (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]")) (* "*") (number_literal "2"))) (; ";")) (if_statement "if (uVar13 == uVar7 || SBORROW4(uVar13,uVar7) != (int)(uVar13 + piVar3[2] * -2) < 0) {\n    iVar11 = FUN_0005b490();\n    if (iVar11 != 0) {\n      return 7;\n    }\n    uVar12 = uVar13 * 2;\n    __s = (void *)FUN_000421f0();\n    if (__s == (void *)0x0) {\n      return 7;\n    }\n    memset(__s,0,uVar13 << 3);\n    if (0 < piVar3[3]) {\n      local_38 = 0;\n      puVar16 = puVar8;\n      do {\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      } while (local_38 < piVar3[3]);\n    }\n    FUN_00042800(puVar8);\n    piVar3[3] = uVar12;\n    piVar3[5] = (int)__s;\n    if (iVar10 < 0) {\n      uVar13 = 0x68;\n      uVar7 = 0xd;\n    }\n    else {\n      uVar7 = 0xd;\n      do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);\n      uVar13 = uVar7 * 8;\n    }\n    uVar12 = (uVar7 ^ uVar13 ^ (uint)param_3) % uVar12;\n  }" (if "if") (parenthesized_expression "(uVar13 == uVar7 || SBORROW4(uVar13,uVar7) != (int)(uVar13 + piVar3[2] * -2) < 0)" (( "(") (binary_expression "uVar13 == uVar7 || SBORROW4(uVar13,uVar7) != (int)(uVar13 + piVar3[2] * -2) < 0" (binary_expression "uVar13 == uVar7" (identifier "uVar13") (== "==") (identifier "uVar7")) (|| "||") (binary_expression "SBORROW4(uVar13,uVar7) != (int)(uVar13 + piVar3[2] * -2) < 0" (call_expression "SBORROW4(uVar13,uVar7)" (identifier "SBORROW4") (argument_list "(uVar13,uVar7)" (( "(") (identifier "uVar13") (, ",") (identifier "uVar7") () ")"))) (!= "!=") (binary_expression "(int)(uVar13 + piVar3[2] * -2) < 0" (cast_expression "(int)(uVar13 + piVar3[2] * -2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar13 + piVar3[2] * -2)" (( "(") (binary_expression "uVar13 + piVar3[2] * -2" (identifier "uVar13") (+ "+") (binary_expression "piVar3[2] * -2" (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]")) (* "*") (number_literal "-2"))) () ")"))) (< "<") (number_literal "0")))) () ")")) (compound_statement "{\n    iVar11 = FUN_0005b490();\n    if (iVar11 != 0) {\n      return 7;\n    }\n    uVar12 = uVar13 * 2;\n    __s = (void *)FUN_000421f0();\n    if (__s == (void *)0x0) {\n      return 7;\n    }\n    memset(__s,0,uVar13 << 3);\n    if (0 < piVar3[3]) {\n      local_38 = 0;\n      puVar16 = puVar8;\n      do {\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      } while (local_38 < piVar3[3]);\n    }\n    FUN_00042800(puVar8);\n    piVar3[3] = uVar12;\n    piVar3[5] = (int)__s;\n    if (iVar10 < 0) {\n      uVar13 = 0x68;\n      uVar7 = 0xd;\n    }\n    else {\n      uVar7 = 0xd;\n      do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);\n      uVar13 = uVar7 * 8;\n    }\n    uVar12 = (uVar7 ^ uVar13 ^ (uint)param_3) % uVar12;\n  }" ({ "{") (expression_statement "iVar11 = FUN_0005b490();" (assignment_expression "iVar11 = FUN_0005b490()" (identifier "iVar11") (= "=") (call_expression "FUN_0005b490()" (identifier "FUN_0005b490") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar11 != 0) {\n      return 7;\n    }" (if "if") (parenthesized_expression "(iVar11 != 0)" (( "(") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return 7;\n    }" ({ "{") (return_statement "return 7;" (return "return") (number_literal "7") (; ";")) (} "}"))) (expression_statement "uVar12 = uVar13 * 2;" (assignment_expression "uVar12 = uVar13 * 2" (identifier "uVar12") (= "=") (binary_expression "uVar13 * 2" (identifier "uVar13") (* "*") (number_literal "2"))) (; ";")) (expression_statement "__s = (void *)FUN_000421f0();" (assignment_expression "__s = (void *)FUN_000421f0()" (identifier "__s") (= "=") (cast_expression "(void *)FUN_000421f0()" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000421f0()" (identifier "FUN_000421f0") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (__s == (void *)0x0) {\n      return 7;\n    }" (if "if") (parenthesized_expression "(__s == (void *)0x0)" (( "(") (binary_expression "__s == (void *)0x0" (identifier "__s") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return 7;\n    }" ({ "{") (return_statement "return 7;" (return "return") (number_literal "7") (; ";")) (} "}"))) (expression_statement "memset(__s,0,uVar13 << 3);" (call_expression "memset(__s,0,uVar13 << 3)" (identifier "memset") (argument_list "(__s,0,uVar13 << 3)" (( "(") (identifier "__s") (, ",") (number_literal "0") (, ",") (binary_expression "uVar13 << 3" (identifier "uVar13") (<< "<<") (number_literal "3")) () ")"))) (; ";")) (if_statement "if (0 < piVar3[3]) {\n      local_38 = 0;\n      puVar16 = puVar8;\n      do {\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      } while (local_38 < piVar3[3]);\n    }" (if "if") (parenthesized_expression "(0 < piVar3[3])" (( "(") (binary_expression "0 < piVar3[3]" (number_literal "0") (< "<") (subscript_expression "piVar3[3]" (identifier "piVar3") ([ "[") (number_literal "3") (] "]"))) () ")")) (compound_statement "{\n      local_38 = 0;\n      puVar16 = puVar8;\n      do {\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      } while (local_38 < piVar3[3]);\n    }" ({ "{") (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar16 = puVar8;" (assignment_expression "puVar16 = puVar8" (identifier "puVar16") (= "=") (identifier "puVar8")) (; ";")) (do_statement "do {\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      } while (local_38 < piVar3[3]);" (do "do") (compound_statement "{\n        puVar15 = (undefined4 *)*puVar16;\n        while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }\n        local_38 = local_38 + 1;\n        puVar16 = puVar16 + 1;\n      }" ({ "{") (expression_statement "puVar15 = (undefined4 *)*puVar16;" (assignment_expression "puVar15 = (undefined4 *)*puVar16" (identifier "puVar15") (= "=") (cast_expression "(undefined4 *)*puVar16" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar16" (* "*") (identifier "puVar16")))) (; ";")) (while_statement "while (puVar15 != (undefined4 *)0x0) {\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }" (while "while") (parenthesized_expression "(puVar15 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar15 != (undefined4 *)0x0" (identifier "puVar15") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          *puVar16 = *puVar15;\n          sVar6 = strlen((char *)(puVar15 + 10));\n          if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }\n          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);\n          *puVar15 = *puVar1;\n          *puVar1 = puVar15;\n          puVar15 = (undefined4 *)*puVar16;\n        }" ({ "{") (expression_statement "*puVar16 = *puVar15;" (assignment_expression "*puVar16 = *puVar15" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (pointer_expression "*puVar15" (* "*") (identifier "puVar15"))) (; ";")) (expression_statement "sVar6 = strlen((char *)(puVar15 + 10));" (assignment_expression "sVar6 = strlen((char *)(puVar15 + 10))" (identifier "sVar6") (= "=") (call_expression "strlen((char *)(puVar15 + 10))" (identifier "strlen") (argument_list "((char *)(puVar15 + 10))" (( "(") (cast_expression "(char *)(puVar15 + 10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar15 + 10)" (( "(") (binary_expression "puVar15 + 10" (identifier "puVar15") (+ "+") (number_literal "10")) () ")"))) () ")")))) (; ";")) (if_statement "if (sVar6 == 0) {\n            uVar13 = 0xd;\n          }\n          else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }" (if "if") (parenthesized_expression "(sVar6 == 0)" (( "(") (binary_expression "sVar6 == 0" (identifier "sVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            uVar13 = 0xd;\n          }" ({ "{") (expression_statement "uVar13 = 0xd;" (assignment_expression "uVar13 = 0xd" (identifier "uVar13") (= "=") (number_literal "0xd")) (; ";")) (} "}")) (else_clause "else {\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }" (else "else") (compound_statement "{\n            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);\n            uVar13 = 0xd;\n            do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);\n          }" ({ "{") (expression_statement "pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);" (assignment_expression "pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27)" (identifier "pbVar14") (= "=") (cast_expression "(byte *)((int)puVar15 + sVar6 + 0x27)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar15 + sVar6 + 0x27)" (( "(") (binary_expression "(int)puVar15 + sVar6 + 0x27" (binary_expression "(int)puVar15 + sVar6" (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15")) (+ "+") (identifier "sVar6")) (+ "+") (number_literal "0x27")) () ")")))) (; ";")) (expression_statement "uVar13 = 0xd;" (assignment_expression "uVar13 = 0xd" (identifier "uVar13") (= "=") (number_literal "0xd")) (; ";")) (do_statement "do {\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);" (do "do") (compound_statement "{\n              bVar2 = *pbVar14;\n              pbVar14 = pbVar14 + -1;\n              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;\n            }" ({ "{") (expression_statement "bVar2 = *pbVar14;" (assignment_expression "bVar2 = *pbVar14" (identifier "bVar2") (= "=") (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14"))) (; ";")) (expression_statement "pbVar14 = pbVar14 + -1;" (assignment_expression "pbVar14 = pbVar14 + -1" (identifier "pbVar14") (= "=") (binary_expression "pbVar14 + -1" (identifier "pbVar14") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;" (assignment_expression "uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2" (identifier "uVar13") (= "=") (binary_expression "uVar13 ^ uVar13 * 8 ^ (uint)bVar2" (binary_expression "uVar13 ^ uVar13 * 8" (identifier "uVar13") (^ "^") (binary_expression "uVar13 * 8" (identifier "uVar13") (* "*") (number_literal "8"))) (^ "^") (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((byte *)((int)puVar15 + 0x27) != pbVar14)" (( "(") (binary_expression "(byte *)((int)puVar15 + 0x27) != pbVar14" (cast_expression "(byte *)((int)puVar15 + 0x27)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar15 + 0x27)" (( "(") (binary_expression "(int)puVar15 + 0x27" (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15")) (+ "+") (number_literal "0x27")) () ")"))) (!= "!=") (identifier "pbVar14")) () ")")) (; ";")) (} "}")))) (expression_statement "puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);" (assignment_expression "puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4)" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)((int)__s + (uVar13 % uVar12) * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__s + (uVar13 % uVar12) * 4)" (( "(") (binary_expression "(int)__s + (uVar13 % uVar12) * 4" (cast_expression "(int)__s" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__s")) (+ "+") (binary_expression "(uVar13 % uVar12) * 4" (parenthesized_expression "(uVar13 % uVar12)" (( "(") (binary_expression "uVar13 % uVar12" (identifier "uVar13") (% "%") (identifier "uVar12")) () ")")) (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "*puVar15 = *puVar1;" (assignment_expression "*puVar15 = *puVar1" (pointer_expression "*puVar15" (* "*") (identifier "puVar15")) (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (expression_statement "*puVar1 = puVar15;" (assignment_expression "*puVar1 = puVar15" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (identifier "puVar15")) (; ";")) (expression_statement "puVar15 = (undefined4 *)*puVar16;" (assignment_expression "puVar15 = (undefined4 *)*puVar16" (identifier "puVar15") (= "=") (cast_expression "(undefined4 *)*puVar16" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar16" (* "*") (identifier "puVar16")))) (; ";")) (} "}"))) (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" (identifier "local_38") (= "=") (binary_expression "local_38 + 1" (identifier "local_38") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" (identifier "puVar16") (= "=") (binary_expression "puVar16 + 1" (identifier "puVar16") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_38 < piVar3[3])" (( "(") (binary_expression "local_38 < piVar3[3]" (identifier "local_38") (< "<") (subscript_expression "piVar3[3]" (identifier "piVar3") ([ "[") (number_literal "3") (] "]"))) () ")")) (; ";")) (} "}"))) (expression_statement "FUN_00042800(puVar8);" (call_expression "FUN_00042800(puVar8)" (identifier "FUN_00042800") (argument_list "(puVar8)" (( "(") (identifier "puVar8") () ")"))) (; ";")) (expression_statement "piVar3[3] = uVar12;" (assignment_expression "piVar3[3] = uVar12" (subscript_expression "piVar3[3]" (identifier "piVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "piVar3[5] = (int)__s;" (assignment_expression "piVar3[5] = (int)__s" (subscript_expression "piVar3[5]" (identifier "piVar3") ([ "[") (number_literal "5") (] "]")) (= "=") (cast_expression "(int)__s" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__s"))) (; ";")) (if_statement "if (iVar10 < 0) {\n      uVar13 = 0x68;\n      uVar7 = 0xd;\n    }\n    else {\n      uVar7 = 0xd;\n      do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);\n      uVar13 = uVar7 * 8;\n    }" (if "if") (parenthesized_expression "(iVar10 < 0)" (( "(") (binary_expression "iVar10 < 0" (identifier "iVar10") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      uVar13 = 0x68;\n      uVar7 = 0xd;\n    }" ({ "{") (expression_statement "uVar13 = 0x68;" (assignment_expression "uVar13 = 0x68" (identifier "uVar13") (= "=") (number_literal "0x68")) (; ";")) (expression_statement "uVar7 = 0xd;" (assignment_expression "uVar7 = 0xd" (identifier "uVar7") (= "=") (number_literal "0xd")) (; ";")) (} "}")) (else_clause "else {\n      uVar7 = 0xd;\n      do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);\n      uVar13 = uVar7 * 8;\n    }" (else "else") (compound_statement "{\n      uVar7 = 0xd;\n      do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);\n      uVar13 = uVar7 * 8;\n    }" ({ "{") (expression_statement "uVar7 = 0xd;" (assignment_expression "uVar7 = 0xd" (identifier "uVar7") (= "=") (number_literal "0xd")) (; ";")) (do_statement "do {\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      } while (iVar10 != -1);" (do "do") (compound_statement "{\n        pbVar14 = (byte *)((int)param_4 + iVar10);\n        iVar10 = iVar10 + -1;\n        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;\n      }" ({ "{") (expression_statement "pbVar14 = (byte *)((int)param_4 + iVar10);" (assignment_expression "pbVar14 = (byte *)((int)param_4 + iVar10)" (identifier "pbVar14") (= "=") (cast_expression "(byte *)((int)param_4 + iVar10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + iVar10)" (( "(") (binary_expression "(int)param_4 + iVar10" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (identifier "iVar10")) () ")")))) (; ";")) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;" (assignment_expression "uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14" (identifier "uVar7") (= "=") (binary_expression "uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14" (binary_expression "uVar7 ^ uVar7 * 8" (identifier "uVar7") (^ "^") (binary_expression "uVar7 * 8" (identifier "uVar7") (* "*") (number_literal "8"))) (^ "^") (binary_expression "(uint)*pbVar14" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar14")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar10 != -1)" (( "(") (binary_expression "iVar10 != -1" (identifier "iVar10") (!= "!=") (number_literal "-1")) () ")")) (; ";")) (expression_statement "uVar13 = uVar7 * 8;" (assignment_expression "uVar13 = uVar7 * 8" (identifier "uVar13") (= "=") (binary_expression "uVar7 * 8" (identifier "uVar7") (* "*") (number_literal "8"))) (; ";")) (} "}")))) (expression_statement "uVar12 = (uVar7 ^ uVar13 ^ (uint)param_3) % uVar12;" (assignment_expression "uVar12 = (uVar7 ^ uVar13 ^ (uint)param_3) % uVar12" (identifier "uVar12") (= "=") (binary_expression "(uVar7 ^ uVar13 ^ (uint)param_3) % uVar12" (parenthesized_expression "(uVar7 ^ uVar13 ^ (uint)param_3)" (( "(") (binary_expression "uVar7 ^ uVar13 ^ (uint)param_3" (binary_expression "uVar7 ^ uVar13" (identifier "uVar7") (^ "^") (identifier "uVar13")) (^ "^") (cast_expression "(uint)param_3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_3"))) () ")")) (% "%") (identifier "uVar12"))) (; ";")) (} "}"))) (expression_statement "iVar10 = FUN_0005b490();" (assignment_expression "iVar10 = FUN_0005b490()" (identifier "iVar10") (= "=") (call_expression "FUN_0005b490()" (identifier "FUN_0005b490") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((iVar10 != 0) || (puVar8 = (undefined4 *)FUN_000421f0(), puVar8 == (undefined4 *)0x0)) {\n    return 7;\n  }" (if "if") (parenthesized_expression "((iVar10 != 0) || (puVar8 = (undefined4 *)FUN_000421f0(), puVar8 == (undefined4 *)0x0))" (( "(") (binary_expression "(iVar10 != 0) || (puVar8 = (undefined4 *)FUN_000421f0(), puVar8 == (undefined4 *)0x0)" (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(puVar8 = (undefined4 *)FUN_000421f0(), puVar8 == (undefined4 *)0x0)" (( "(") (comma_expression "puVar8 = (undefined4 *)FUN_000421f0(), puVar8 == (undefined4 *)0x0" (assignment_expression "puVar8 = (undefined4 *)FUN_000421f0()" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)FUN_000421f0()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000421f0()" (identifier "FUN_000421f0") (argument_list "()" (( "(") () ")"))))) (, ",") (binary_expression "puVar8 == (undefined4 *)0x0" (identifier "puVar8") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n    return 7;\n  }" ({ "{") (return_statement "return 7;" (return "return") (number_literal "7") (; ";")) (} "}"))) (expression_statement "*puVar8 = 0;" (assignment_expression "*puVar8 = 0" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[9] = 0;" (assignment_expression "puVar8[9] = 0" (subscript_expression "puVar8[9]" (identifier "puVar8") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar16 = (undefined4 *)((uint)(puVar8 + 1) & 0xfffffffc);" (assignment_expression "puVar16 = (undefined4 *)((uint)(puVar8 + 1) & 0xfffffffc)" (identifier "puVar16") (= "=") (cast_expression "(undefined4 *)((uint)(puVar8 + 1) & 0xfffffffc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)(puVar8 + 1) & 0xfffffffc)" (( "(") (binary_expression "(uint)(puVar8 + 1) & 0xfffffffc" (call_expression "(uint)(puVar8 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar8 + 1)" (( "(") (binary_expression "puVar8 + 1" (identifier "puVar8") (+ "+") (number_literal "1")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")")))) (; ";")) (for_statement "for (uVar13 = (uint)((int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc))) >> 2;\n      uVar13 != 0; uVar13 = uVar13 - 1) {\n    *puVar16 = 0;\n    puVar16 = puVar16 + (uint)bVar18 * -2 + 1;\n  }" (for "for") (( "(") (assignment_expression "uVar13 = (uint)((int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc))) >> 2" (identifier "uVar13") (= "=") (binary_expression "(uint)((int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc))) >> 2" (call_expression "(uint)((int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc)))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc)))" (( "(") (binary_expression "(int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc))" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (parenthesized_expression "(0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc))" (( "(") (binary_expression "0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc)" (number_literal "0x28") (- "-") (cast_expression "(int)((uint)(puVar8 + 1) & 0xfffffffc)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uint)(puVar8 + 1) & 0xfffffffc)" (( "(") (binary_expression "(uint)(puVar8 + 1) & 0xfffffffc" (call_expression "(uint)(puVar8 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar8 + 1)" (( "(") (binary_expression "puVar8 + 1" (identifier "puVar8") (+ "+") (number_literal "1")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")")))) () ")"))) () ")"))) (>> ">>") (number_literal "2"))) (; ";") (binary_expression "uVar13 != 0" (identifier "uVar13") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "uVar13 = uVar13 - 1" (identifier "uVar13") (= "=") (binary_expression "uVar13 - 1" (identifier "uVar13") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n    *puVar16 = 0;\n    puVar16 = puVar16 + (uint)bVar18 * -2 + 1;\n  }" ({ "{") (expression_statement "*puVar16 = 0;" (assignment_expression "*puVar16 = 0" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar16 = puVar16 + (uint)bVar18 * -2 + 1;" (assignment_expression "puVar16 = puVar16 + (uint)bVar18 * -2 + 1" (identifier "puVar16") (= "=") (binary_expression "puVar16 + (uint)bVar18 * -2 + 1" (binary_expression "puVar16 + (uint)bVar18 * -2" (identifier "puVar16") (+ "+") (binary_expression "(uint)bVar18 * -2" (cast_expression "(uint)bVar18" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar18")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "puVar8[2] = uVar4;" (assignment_expression "puVar8[2] = uVar4" (subscript_expression "puVar8[2]" (identifier "puVar8") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "*(byte *)(puVar8 + 10) = param_3;" (assignment_expression "*(byte *)(puVar8 + 10) = param_3" (pointer_expression "*(byte *)(puVar8 + 10)" (* "*") (cast_expression "(byte *)(puVar8 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 10)" (( "(") (binary_expression "puVar8 + 10" (identifier "puVar8") (+ "+") (number_literal "10")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "memcpy((void *)((int)puVar8 + 0x29),param_4,param_5);" (call_expression "memcpy((void *)((int)puVar8 + 0x29),param_4,param_5)" (identifier "memcpy") (argument_list "((void *)((int)puVar8 + 0x29),param_4,param_5)" (( "(") (cast_expression "(void *)((int)puVar8 + 0x29)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 + 0x29)" (( "(") (binary_expression "(int)puVar8 + 0x29" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (number_literal "0x29")) () ")"))) (, ",") (identifier "param_4") (, ",") (identifier "param_5") () ")"))) (; ";")) (expression_statement "puVar8[5] = param_5;" (assignment_expression "puVar8[5] = param_5" (subscript_expression "puVar8[5]" (identifier "puVar8") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "param_5")) (; ";")) (expression_statement "*(undefined1 *)((int)puVar8 + param_5 + 0x29) = 0;" (assignment_expression "*(undefined1 *)((int)puVar8 + param_5 + 0x29) = 0" (pointer_expression "*(undefined1 *)((int)puVar8 + param_5 + 0x29)" (* "*") (cast_expression "(undefined1 *)((int)puVar8 + param_5 + 0x29)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 + param_5 + 0x29)" (( "(") (binary_expression "(int)puVar8 + param_5 + 0x29" (binary_expression "(int)puVar8 + param_5" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (identifier "param_5")) (+ "+") (number_literal "0x29")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[4] = param_5 + 0x2a;" (assignment_expression "puVar8[4] = param_5 + 0x2a" (subscript_expression "puVar8[4]" (identifier "puVar8") ([ "[") (number_literal "4") (] "]")) (= "=") (binary_expression "param_5 + 0x2a" (identifier "param_5") (+ "+") (number_literal "0x2a"))) (; ";")) (expression_statement "*puVar8 = *(undefined4 *)(piVar3[5] + uVar12 * 4);" (assignment_expression "*puVar8 = *(undefined4 *)(piVar3[5] + uVar12 * 4)" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (pointer_expression "*(undefined4 *)(piVar3[5] + uVar12 * 4)" (* "*") (cast_expression "(undefined4 *)(piVar3[5] + uVar12 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar3[5] + uVar12 * 4)" (( "(") (binary_expression "piVar3[5] + uVar12 * 4" (subscript_expression "piVar3[5]" (identifier "piVar3") ([ "[") (number_literal "5") (] "]")) (+ "+") (binary_expression "uVar12 * 4" (identifier "uVar12") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "*(undefined4 **)(piVar3[5] + uVar12 * 4) = puVar8;" (assignment_expression "*(undefined4 **)(piVar3[5] + uVar12 * 4) = puVar8" (pointer_expression "*(undefined4 **)(piVar3[5] + uVar12 * 4)" (* "*") (cast_expression "(undefined4 **)(piVar3[5] + uVar12 * 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar3[5] + uVar12 * 4)" (( "(") (binary_expression "piVar3[5] + uVar12 * 4" (subscript_expression "piVar3[5]" (identifier "piVar3") ([ "[") (number_literal "5") (] "]")) (+ "+") (binary_expression "uVar12 * 4" (identifier "uVar12") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "puVar8")) (; ";")) (expression_statement "piVar3[2] = piVar3[2] + 1;" (assignment_expression "piVar3[2] = piVar3[2] + 1" (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "piVar3[2] + 1" (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (extraout_ECX == 0 && (uint)(0x7f < uVar9) <= (uint)-extraout_ECX) {\n    local_44 = (undefined1)((ulonglong)uVar19 >> 0x20);\n    *(undefined1 *)(puVar8[4] + (int)puVar8) = local_44;\n    local_50 = 1;\n  }\n  else {\n    local_50 = FUN_00046180();\n  }" (if "if") (parenthesized_expression "(extraout_ECX == 0 && (uint)(0x7f < uVar9) <= (uint)-extraout_ECX)" (( "(") (binary_expression "extraout_ECX == 0 && (uint)(0x7f < uVar9) <= (uint)-extraout_ECX" (binary_expression "extraout_ECX == 0" (identifier "extraout_ECX") (== "==") (number_literal "0")) (&& "&&") (binary_expression "(uint)(0x7f < uVar9) <= (uint)-extraout_ECX" (call_expression "(uint)(0x7f < uVar9)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0x7f < uVar9)" (( "(") (binary_expression "0x7f < uVar9" (number_literal "0x7f") (< "<") (identifier "uVar9")) () ")"))) (<= "<=") (binary_expression "(uint)-extraout_ECX" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (identifier "extraout_ECX")))) () ")")) (compound_statement "{\n    local_44 = (undefined1)((ulonglong)uVar19 >> 0x20);\n    *(undefined1 *)(puVar8[4] + (int)puVar8) = local_44;\n    local_50 = 1;\n  }" ({ "{") (expression_statement "local_44 = (undefined1)((ulonglong)uVar19 >> 0x20);" (assignment_expression "local_44 = (undefined1)((ulonglong)uVar19 >> 0x20)" (identifier "local_44") (= "=") (call_expression "(undefined1)((ulonglong)uVar19 >> 0x20)" (parenthesized_expression "(undefined1)" (( "(") (identifier "undefined1") () ")")) (argument_list "((ulonglong)uVar19 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar19 >> 0x20" (cast_expression "(ulonglong)uVar19" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar19")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "*(undefined1 *)(puVar8[4] + (int)puVar8) = local_44;" (assignment_expression "*(undefined1 *)(puVar8[4] + (int)puVar8) = local_44" (pointer_expression "*(undefined1 *)(puVar8[4] + (int)puVar8)" (* "*") (cast_expression "(undefined1 *)(puVar8[4] + (int)puVar8)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8[4] + (int)puVar8)" (( "(") (binary_expression "puVar8[4] + (int)puVar8" (subscript_expression "puVar8[4]" (identifier "puVar8") ([ "[") (number_literal "4") (] "]")) (+ "+") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8"))) () ")")))) (= "=") (identifier "local_44")) (; ";")) (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" (identifier "local_50") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    local_50 = FUN_00046180();\n  }" (else "else") (compound_statement "{\n    local_50 = FUN_00046180();\n  }" ({ "{") (expression_statement "local_50 = FUN_00046180();" (assignment_expression "local_50 = FUN_00046180()" (identifier "local_50") (= "=") (call_expression "FUN_00046180()" (identifier "FUN_00046180") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (expression_statement "local_50 = local_50 + puVar8[4];" (assignment_expression "local_50 = local_50 + puVar8[4]" (identifier "local_50") (= "=") (binary_expression "local_50 + puVar8[4]" (identifier "local_50") (+ "+") (subscript_expression "puVar8[4]" (identifier "puVar8") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "puVar8[4] = local_50;" (assignment_expression "puVar8[4] = local_50" (subscript_expression "puVar8[4]" (identifier "puVar8") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "local_50")) (; ";")) (expression_statement "puVar8[9] = extraout_ECX;" (assignment_expression "puVar8[9] = extraout_ECX" (subscript_expression "puVar8[9]" (identifier "puVar8") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "extraout_ECX")) (; ";")) (expression_statement "puVar8[8] = uVar9;" (assignment_expression "puVar8[8] = uVar9" (subscript_expression "puVar8[8]" (identifier "puVar8") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "puVar8[3] = local_50;" (assignment_expression "puVar8[3] = local_50" (subscript_expression "puVar8[3]" (identifier "puVar8") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "local_50")) (; ";")) (if_statement "if (*piVar3 != 1) {\n    local_50 = local_50 + 1;\n    puVar8[4] = local_50;\n    *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(*piVar3 != 0);\n  }" (if "if") (parenthesized_expression "(*piVar3 != 1)" (( "(") (binary_expression "*piVar3 != 1" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n    local_50 = local_50 + 1;\n    puVar8[4] = local_50;\n    *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(*piVar3 != 0);\n  }" ({ "{") (expression_statement "local_50 = local_50 + 1;" (assignment_expression "local_50 = local_50 + 1" (identifier "local_50") (= "=") (binary_expression "local_50 + 1" (identifier "local_50") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar8[4] = local_50;" (assignment_expression "puVar8[4] = local_50" (subscript_expression "puVar8[4]" (identifier "puVar8") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "local_50")) (; ";")) (expression_statement "*(ushort *)((int)puVar8 + 0x1a) = -(ushort)(*piVar3 != 0);" (assignment_expression "*(ushort *)((int)puVar8 + 0x1a) = -(ushort)(*piVar3 != 0)" (pointer_expression "*(ushort *)((int)puVar8 + 0x1a)" (* "*") (cast_expression "(ushort *)((int)puVar8 + 0x1a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 + 0x1a)" (( "(") (binary_expression "(int)puVar8 + 0x1a" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (number_literal "0x1a")) () ")")))) (= "=") (unary_expression "-(ushort)(*piVar3 != 0)" (- "-") (call_expression "(ushort)(*piVar3 != 0)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(*piVar3 != 0)" (( "(") (binary_expression "*piVar3 != 0" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (!= "!=") (number_literal "0")) () ")"))))) (; ";")) (} "}"))) (labeled_statement "LAB_00088cd7:\n  if ((int)param_1 < 0) {\nLAB_00089040:\n    *(undefined1 *)(puVar8 + 6) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }" (statement_identifier "LAB_00088cd7") (: ":") (if_statement "if ((int)param_1 < 0) {\nLAB_00089040:\n    *(undefined1 *)(puVar8 + 6) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }" (if "if") (parenthesized_expression "((int)param_1 < 0)" (( "(") (binary_expression "(int)param_1 < 0" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00089040:\n    *(undefined1 *)(puVar8 + 6) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }" ({ "{") (labeled_statement "LAB_00089040:\n    *(undefined1 *)(puVar8 + 6) = 1;" (statement_identifier "LAB_00089040") (: ":") (expression_statement "*(undefined1 *)(puVar8 + 6) = 1;" (assignment_expression "*(undefined1 *)(puVar8 + 6) = 1" (pointer_expression "*(undefined1 *)(puVar8 + 6)" (* "*") (cast_expression "(undefined1 *)(puVar8 + 6)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 6)" (( "(") (binary_expression "puVar8 + 6" (identifier "puVar8") (+ "+") (number_literal "6")) () ")")))) (= "=") (number_literal "1")) (; ";"))) (expression_statement "iVar10 = puVar8[4];" (assignment_expression "iVar10 = puVar8[4]" (identifier "iVar10") (= "=") (subscript_expression "puVar8[4]" (identifier "puVar8") ([ "[") (number_literal "4") (] "]"))) (; ";")) (goto_statement "goto LAB_00089047;" (goto "goto") (statement_identifier "LAB_00089047") (; ";")) (} "}")))) (if_statement "if (*piVar3 == 1) {\nLAB_000890ca:\n    *(undefined1 *)((int)puVar8 + 0x19) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }" (if "if") (parenthesized_expression "(*piVar3 == 1)" (( "(") (binary_expression "*piVar3 == 1" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\nLAB_000890ca:\n    *(undefined1 *)((int)puVar8 + 0x19) = 1;\n    iVar10 = puVar8[4];\n    goto LAB_00089047;\n  }" ({ "{") (labeled_statement "LAB_000890ca:\n    *(undefined1 *)((int)puVar8 + 0x19) = 1;" (statement_identifier "LAB_000890ca") (: ":") (expression_statement "*(undefined1 *)((int)puVar8 + 0x19) = 1;" (assignment_expression "*(undefined1 *)((int)puVar8 + 0x19) = 1" (pointer_expression "*(undefined1 *)((int)puVar8 + 0x19)" (* "*") (cast_expression "(undefined1 *)((int)puVar8 + 0x19)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 + 0x19)" (( "(") (binary_expression "(int)puVar8 + 0x19" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (number_literal "0x19")) () ")")))) (= "=") (number_literal "1")) (; ";"))) (expression_statement "iVar10 = puVar8[4];" (assignment_expression "iVar10 = puVar8[4]" (identifier "iVar10") (= "=") (subscript_expression "puVar8[4]" (identifier "puVar8") ([ "[") (number_literal "4") (] "]"))) (; ";")) (goto_statement "goto LAB_00089047;" (goto "goto") (statement_identifier "LAB_00089047") (; ";")) (} "}"))) (expression_statement "iVar10 = puVar8[4];" (assignment_expression "iVar10 = puVar8[4]" (identifier "iVar10") (= "=") (subscript_expression "puVar8[4]" (identifier "puVar8") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if ((int)*(short *)((int)puVar8 + 0x1a) == param_1) {\nLAB_00088d4f:\n    if (!bVar17) goto LAB_00089047;\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n  }\n  else {\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n    if (*piVar3 == 0) {\n      puVar8[4] = iVar10 + 1;\n      *puVar5 = 1;\n      if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }\n      iVar10 = iVar10 + puVar8[4];\n      puVar8[7] = 0;\n      puVar8[4] = iVar10;\n      *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n      goto LAB_00088d4f;\n    }\n    *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n    param_2 = param_1;\n  }" (if "if") (parenthesized_expression "((int)*(short *)((int)puVar8 + 0x1a) == param_1)" (( "(") (binary_expression "(int)*(short *)((int)puVar8 + 0x1a) == param_1" (cast_expression "(int)*(short *)((int)puVar8 + 0x1a)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)((int)puVar8 + 0x1a)" (* "*") (cast_expression "(short *)((int)puVar8 + 0x1a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 + 0x1a)" (( "(") (binary_expression "(int)puVar8 + 0x1a" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (number_literal "0x1a")) () ")"))))) (== "==") (identifier "param_1")) () ")")) (compound_statement "{\nLAB_00088d4f:\n    if (!bVar17) goto LAB_00089047;\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n  }" ({ "{") (labeled_statement "LAB_00088d4f:\n    if (!bVar17) goto LAB_00089047;" (statement_identifier "LAB_00088d4f") (: ":") (if_statement "if (!bVar17) goto LAB_00089047;" (if "if") (parenthesized_expression "(!bVar17)" (( "(") (unary_expression "!bVar17" (! "!") (identifier "bVar17")) () ")")) (goto_statement "goto LAB_00089047;" (goto "goto") (statement_identifier "LAB_00089047") (; ";")))) (expression_statement "puVar5 = (undefined1 *)((int)puVar8 + iVar10);" (assignment_expression "puVar5 = (undefined1 *)((int)puVar8 + iVar10)" (identifier "puVar5") (= "=") (cast_expression "(undefined1 *)((int)puVar8 + iVar10)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 + iVar10)" (( "(") (binary_expression "(int)puVar8 + iVar10" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (identifier "iVar10")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n    if (*piVar3 == 0) {\n      puVar8[4] = iVar10 + 1;\n      *puVar5 = 1;\n      if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }\n      iVar10 = iVar10 + puVar8[4];\n      puVar8[7] = 0;\n      puVar8[4] = iVar10;\n      *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n      goto LAB_00088d4f;\n    }\n    *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n    param_2 = param_1;\n  }" (else "else") (compound_statement "{\n    puVar5 = (undefined1 *)((int)puVar8 + iVar10);\n    if (*piVar3 == 0) {\n      puVar8[4] = iVar10 + 1;\n      *puVar5 = 1;\n      if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }\n      iVar10 = iVar10 + puVar8[4];\n      puVar8[7] = 0;\n      puVar8[4] = iVar10;\n      *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n      goto LAB_00088d4f;\n    }\n    *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n    param_2 = param_1;\n  }" ({ "{") (expression_statement "puVar5 = (undefined1 *)((int)puVar8 + iVar10);" (assignment_expression "puVar5 = (undefined1 *)((int)puVar8 + iVar10)" (identifier "puVar5") (= "=") (cast_expression "(undefined1 *)((int)puVar8 + iVar10)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 + iVar10)" (( "(") (binary_expression "(int)puVar8 + iVar10" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (identifier "iVar10")) () ")")))) (; ";")) (if_statement "if (*piVar3 == 0) {\n      puVar8[4] = iVar10 + 1;\n      *puVar5 = 1;\n      if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }\n      iVar10 = iVar10 + puVar8[4];\n      puVar8[7] = 0;\n      puVar8[4] = iVar10;\n      *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n      goto LAB_00088d4f;\n    }" (if "if") (parenthesized_expression "(*piVar3 == 0)" (( "(") (binary_expression "*piVar3 == 0" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      puVar8[4] = iVar10 + 1;\n      *puVar5 = 1;\n      if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }\n      iVar10 = iVar10 + puVar8[4];\n      puVar8[7] = 0;\n      puVar8[4] = iVar10;\n      *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;\n      goto LAB_00088d4f;\n    }" ({ "{") (expression_statement "puVar8[4] = iVar10 + 1;" (assignment_expression "puVar8[4] = iVar10 + 1" (subscript_expression "puVar8[4]" (identifier "puVar8") ([ "[") (number_literal "4") (] "]")) (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar5 = 1;" (assignment_expression "*puVar5 = 1" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (number_literal "1")) (; ";")) (if_statement "if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {\n        iVar10 = FUN_00046180();\n      }\n      else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }" (if "if") (parenthesized_expression "((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1))" (( "(") (binary_expression "(int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)" (binary_expression "(int)param_1 < 0" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (< "<") (number_literal "0")) (|| "||") (binary_expression "(uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)" (binary_expression "(uint)-((int)param_1 >> 0x1f)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (parenthesized_expression "((int)param_1 >> 0x1f)" (( "(") (binary_expression "(int)param_1 >> 0x1f" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (>> ">>") (number_literal "0x1f")) () ")"))) (< "<") (call_expression "(uint)(0x7f < param_1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0x7f < param_1)" (( "(") (binary_expression "0x7f < param_1" (number_literal "0x7f") (< "<") (identifier "param_1")) () ")"))))) () ")")) (compound_statement "{\n        iVar10 = FUN_00046180();\n      }" ({ "{") (expression_statement "iVar10 = FUN_00046180();" (assignment_expression "iVar10 = FUN_00046180()" (identifier "iVar10") (= "=") (call_expression "FUN_00046180()" (identifier "FUN_00046180") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }" (else "else") (compound_statement "{\n        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;\n        iVar10 = 1;\n      }" ({ "{") (expression_statement "*(char *)(puVar8[4] + (int)puVar8) = (char)param_1;" (assignment_expression "*(char *)(puVar8[4] + (int)puVar8) = (char)param_1" (pointer_expression "*(char *)(puVar8[4] + (int)puVar8)" (* "*") (cast_expression "(char *)(puVar8[4] + (int)puVar8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8[4] + (int)puVar8)" (( "(") (binary_expression "puVar8[4] + (int)puVar8" (subscript_expression "puVar8[4]" (identifier "puVar8") ([ "[") (number_literal "4") (] "]")) (+ "+") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8"))) () ")")))) (= "=") (cast_expression "(char)param_1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "param_1"))) (; ";")) (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" (identifier "iVar10") (= "=") (number_literal "1")) (; ";")) (} "}")))) (expression_statement "iVar10 = iVar10 + puVar8[4];" (assignment_expression "iVar10 = iVar10 + puVar8[4]" (identifier "iVar10") (= "=") (binary_expression "iVar10 + puVar8[4]" (identifier "iVar10") (+ "+") (subscript_expression "puVar8[4]" (identifier "puVar8") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "puVar8[7] = 0;" (assignment_expression "puVar8[7] = 0" (subscript_expression "puVar8[7]" (identifier "puVar8") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[4] = iVar10;" (assignment_expression "puVar8[4] = iVar10" (subscript_expression "puVar8[4]" (identifier "puVar8") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "*(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;" (assignment_expression "*(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1" (pointer_expression "*(undefined2 *)((int)puVar8 + 0x1a)" (* "*") (cast_expression "(undefined2 *)((int)puVar8 + 0x1a)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 + 0x1a)" (( "(") (binary_expression "(int)puVar8 + 0x1a" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (number_literal "0x1a")) () ")")))) (= "=") (cast_expression "(undefined2)param_1" (( "(") (type_descriptor "undefined2" (type_identifier "undefined2")) () ")") (identifier "param_1"))) (; ";")) (goto_statement "goto LAB_00088d4f;" (goto "goto") (statement_identifier "LAB_00088d4f") (; ";")) (} "}"))) (expression_statement "*(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;" (assignment_expression "*(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1" (pointer_expression "*(undefined2 *)((int)puVar8 + 0x1a)" (* "*") (cast_expression "(undefined2 *)((int)puVar8 + 0x1a)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 + 0x1a)" (( "(") (binary_expression "(int)puVar8 + 0x1a" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (number_literal "0x1a")) () ")")))) (= "=") (cast_expression "(undefined2)param_1" (( "(") (type_descriptor "undefined2" (type_identifier "undefined2")) () ")") (identifier "param_1"))) (; ";")) (expression_statement "param_2 = param_1;" (assignment_expression "param_2 = param_1" (identifier "param_2") (= "=") (identifier "param_1")) (; ";")) (} "}")))) (expression_statement "uVar13 = (param_2 - puVar8[7]) + 2;" (assignment_expression "uVar13 = (param_2 - puVar8[7]) + 2" (identifier "uVar13") (= "=") (binary_expression "(param_2 - puVar8[7]) + 2" (parenthesized_expression "(param_2 - puVar8[7])" (( "(") (binary_expression "param_2 - puVar8[7]" (identifier "param_2") (- "-") (subscript_expression "puVar8[7]" (identifier "puVar8") ([ "[") (number_literal "7") (] "]"))) () ")")) (+ "+") (number_literal "2"))) (; ";")) (if_statement "if ((int)uVar13 < 0 || (uint)-((int)uVar13 >> 0x1f) < (uint)(0x7f < uVar13)) {\n    iVar10 = FUN_00046180();\n  }\n  else {\n    *puVar5 = (char)uVar13;\n    iVar10 = 1;\n  }" (if "if") (parenthesized_expression "((int)uVar13 < 0 || (uint)-((int)uVar13 >> 0x1f) < (uint)(0x7f < uVar13))" (( "(") (binary_expression "(int)uVar13 < 0 || (uint)-((int)uVar13 >> 0x1f) < (uint)(0x7f < uVar13)" (binary_expression "(int)uVar13 < 0" (cast_expression "(int)uVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar13")) (< "<") (number_literal "0")) (|| "||") (binary_expression "(uint)-((int)uVar13 >> 0x1f) < (uint)(0x7f < uVar13)" (binary_expression "(uint)-((int)uVar13 >> 0x1f)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (parenthesized_expression "((int)uVar13 >> 0x1f)" (( "(") (binary_expression "(int)uVar13 >> 0x1f" (cast_expression "(int)uVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar13")) (>> ">>") (number_literal "0x1f")) () ")"))) (< "<") (call_expression "(uint)(0x7f < uVar13)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0x7f < uVar13)" (( "(") (binary_expression "0x7f < uVar13" (number_literal "0x7f") (< "<") (identifier "uVar13")) () ")"))))) () ")")) (compound_statement "{\n    iVar10 = FUN_00046180();\n  }" ({ "{") (expression_statement "iVar10 = FUN_00046180();" (assignment_expression "iVar10 = FUN_00046180()" (identifier "iVar10") (= "=") (call_expression "FUN_00046180()" (identifier "FUN_00046180") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n    *puVar5 = (char)uVar13;\n    iVar10 = 1;\n  }" (else "else") (compound_statement "{\n    *puVar5 = (char)uVar13;\n    iVar10 = 1;\n  }" ({ "{") (expression_statement "*puVar5 = (char)uVar13;" (assignment_expression "*puVar5 = (char)uVar13" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (cast_expression "(char)uVar13" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar13"))) (; ";")) (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" (identifier "iVar10") (= "=") (number_literal "1")) (; ";")) (} "}")))) (expression_statement "iVar10 = iVar10 + puVar8[4];" (assignment_expression "iVar10 = iVar10 + puVar8[4]" (identifier "iVar10") (= "=") (binary_expression "iVar10 + puVar8[4]" (identifier "iVar10") (+ "+") (subscript_expression "puVar8[4]" (identifier "puVar8") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "puVar8[4] = iVar10;" (assignment_expression "puVar8[4] = iVar10" (subscript_expression "puVar8[4]" (identifier "puVar8") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "puVar8[7] = param_2;" (assignment_expression "puVar8[7] = param_2" (subscript_expression "puVar8[7]" (identifier "puVar8") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "param_2")) (; ";")) (labeled_statement "LAB_00089047:\n  *(int *)piVar3[1] = *(int *)piVar3[1] + iVar10 + local_50;" (statement_identifier "LAB_00089047") (: ":") (expression_statement "*(int *)piVar3[1] = *(int *)piVar3[1] + iVar10 + local_50;" (assignment_expression "*(int *)piVar3[1] = *(int *)piVar3[1] + iVar10 + local_50" (pointer_expression "*(int *)piVar3[1]" (* "*") (cast_expression "(int *)piVar3[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]")))) (= "=") (binary_expression "*(int *)piVar3[1] + iVar10 + local_50" (binary_expression "*(int *)piVar3[1] + iVar10" (pointer_expression "*(int *)piVar3[1]" (* "*") (cast_expression "(int *)piVar3[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]")))) (+ "+") (identifier "iVar10")) (+ "+") (identifier "local_50"))) (; ";"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (labeled_statement "LAB_00088bf0:\n  puVar16 = (undefined4 *)*puVar16;" (statement_identifier "LAB_00088bf0") (: ":") (expression_statement "puVar16 = (undefined4 *)*puVar16;" (assignment_expression "puVar16 = (undefined4 *)*puVar16" (identifier "puVar16") (= "=") (cast_expression "(undefined4 *)*puVar16" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar16" (* "*") (identifier "puVar16")))) (; ";"))) (if_statement "if (puVar16 == (undefined4 *)0x0) goto LAB_00088da4;" (if "if") (parenthesized_expression "(puVar16 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar16 == (undefined4 *)0x0" (identifier "puVar16") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00088da4;" (goto "goto") (statement_identifier "LAB_00088da4") (; ";"))) (goto_statement "goto LAB_00088bfa;" (goto "goto") (statement_identifier "LAB_00088bfa") (; ";")) (} "}")))

int function_1
              (type_1 *var_33,type_2 iRowid,int var_4,int var_2,char bByte,char *pToken,int nToken)

{
  type_3 *var_17;
  type_4 bVar2;
  int *piVar3;
  type_5 var_6;
  type_6 *p;
  void *var_25;
  size_t var_29;
  type_5 var_22;
  type_3 *var_16;
  int var_18;
  type_5 var_19;
  int var_3;
  int var_5;
  type_5 var_8;
  type_5 var_9;
  type_4 *var_7;
  type_3 *var_27;
  type_3 *var_10;
  bool bVar16;
  type_4 bVar17;
  type_7 uVar18;
  type_1 *in_stack_ffffffa4;
  type_8 *in_stack_ffffffa8;
  type_8 *in_stack_ffffffac;
  int var_12;
  type_6 local_44;
  int var_30;
  type_9 local_34;
  
  bVar17 = 0;
  uVar18 = var_1();
  var_19 = (type_5)((type_10)uVar18 >> 0x20);
  piVar3 = (int *)uVar18;
  bVar16 = *piVar3 == 0;
  var_9 = piVar3[3];
  var_3 = var_2 + -1;
  if (var_3 < 0) {
    var_8 = 0x68;
    var_6 = 0xd;
  }
  else {
    var_6 = 0xd;
    var_5 = var_3;
    do {
      var_7 = (type_4 *)(var_4 + var_5);
      var_5 = var_5 + -1;
      var_6 = var_6 ^ var_6 * 8 ^ (type_5)*var_7;
    } while (var_5 != -1);
    var_8 = var_6 * 8;
  }
  var_8 = (var_6 ^ var_8 ^ iRowid._4_4_ & 0xff) % var_9;
  var_16 = (type_3 *)piVar3[5];
  var_10 = (type_3 *)var_16[var_8];
  var_6 = iRowid._4_4_;
  if (var_10 != (type_3 *)0x0) {
LAB_00088bfa:
    if ((*(char *)(var_10 + 10) != (char)var_6) || (var_10[5] != var_2)) goto LAB_00088bf0;
    var_5 = var_11((void *)((int)var_10 + 0x29),(void *)var_4,var_2);
    var_6 = var_6 & 0xff;
    if (var_5 != 0) goto LAB_00088bf0;
    var_3 = var_10[2];
    var_12 = var_10[4];
    var_16 = var_10;
    if (var_3 - var_12 < 0x16) {
      var_5 = var_13();
      if (var_5 != 0) {
        return 7;
      }
      var_16 = (type_3 *)var_14(var_10,var_15(in_stack_ffffffa8,in_stack_ffffffa4));
      if (var_16 == (type_3 *)0x0) {
        return 7;
      }
      var_16[2] = var_3 * 2;
      var_27 = (type_3 *)(var_8 * 4 + piVar3[5]);
      for (var_17 = (type_3 *)*var_27; var_17 != var_10; var_17 = (type_3 *)*var_17) {
        var_27 = var_17;
      }
      *var_27 = var_16;
      var_12 = var_16[4];
    }
    var_12 = -var_12;
    if (var_16[9] == var_18 && var_16[8] == var_19) goto LAB_00088cd7;
    var_20(in_stack_ffffffa4,in_stack_ffffffa8,in_stack_ffffffac);
    var_9 = var_19 - var_16[8];
    var_3 = (var_18 - var_16[9]) - (type_5)(var_19 < (type_5)var_16[8]);
    if (var_3 == 0 && (type_5)(0x7f < var_9) <= (type_5)-var_3) {
      *(type_6 *)(var_16[4] + (int)var_16) = (type_6)var_9;
      var_3 = 1;
    }
    else {
      var_3 = var_21((type_6 *)(var_16[4] + (int)var_16),
                               var_15(in_stack_ffffffa8,in_stack_ffffffa4));
    }
    var_3 = var_3 + var_16[4];
    var_16[4] = var_3;
    var_16[8] = var_19;
    var_16[9] = var_18;
    var_16[3] = var_3;
    if (*piVar3 != 1) {
      bVar16 = true;
      var_16[4] = var_3 + 1;
      var_3 = *piVar3;
      var_16[7] = 0;
      *(type_11 *)((int)var_16 + 0x1a) = -(type_11)(var_3 != 0);
      goto LAB_00088cd7;
    }
    if ((int)var_33 < 0) goto LAB_00089040;
    goto LAB_000890ca;
  }
LAB_00088da4:
  var_6 = 0x80;
  if (0x7f < var_2 + 0x6aU) {
    var_6 = var_2 + 0x6aU;
  }
  var_22 = piVar3[2] * 2;
  if (var_9 == var_22 || var_23(var_9,var_22) != (int)(var_9 + piVar3[2] * -2) < 0) {
    var_5 = var_13();
    if (var_5 != 0) {
      return 7;
    }
    var_8 = var_9 * 2;
    var_25 = var_24(var_15(in_stack_ffffffa8,in_stack_ffffffa4));
    if (var_25 == (void *)0x0) {
      return 7;
    }
    var_26(var_25,0,var_9 << 3);
    if (0 < piVar3[3]) {
      var_30 = 0;
      var_10 = var_16;
      do {
        var_27 = (type_3 *)*var_10;
        while (var_27 != (type_3 *)0x0) {
          *var_10 = *var_27;
          var_29 = var_28((char *)(var_27 + 10));
          if (var_29 == 0) {
            var_9 = 0xd;
          }
          else {
            var_7 = (type_4 *)((int)var_27 + var_29 + 0x27);
            var_9 = 0xd;
            do {
              bVar2 = *var_7;
              var_7 = var_7 + -1;
              var_9 = var_9 ^ var_9 * 8 ^ (type_5)bVar2;
            } while ((type_4 *)((int)var_27 + 0x27) != var_7);
          }
          var_17 = (type_3 *)((int)var_25 + (var_9 % var_8) * 4);
          *var_27 = *var_17;
          *var_17 = var_27;
          var_27 = (type_3 *)*var_10;
        }
        var_30 = var_30 + 1;
        var_10 = var_10 + 1;
      } while (var_30 < piVar3[3]);
    }
    var_31(var_16);
    piVar3[3] = var_8;
    piVar3[5] = (int)var_25;
    if (var_3 < 0) {
      var_9 = 0x68;
      var_22 = 0xd;
    }
    else {
      var_22 = 0xd;
      do {
        var_7 = (type_4 *)(var_4 + var_3);
        var_3 = var_3 + -1;
        var_22 = var_22 ^ var_22 * 8 ^ (type_5)*var_7;
      } while (var_3 != -1);
      var_9 = var_22 * 8;
    }
    var_8 = (var_22 ^ var_9 ^ iRowid._4_4_ & 0xff) % var_8;
  }
  var_3 = var_13();
  if ((var_3 != 0) ||
     (var_16 = (type_3 *)var_24(var_15(in_stack_ffffffa8,in_stack_ffffffa4)),
     var_16 == (type_3 *)0x0)) {
    return 7;
  }
  *var_16 = 0;
  var_16[9] = 0;
  var_10 = (type_3 *)((type_5)(var_16 + 1) & 0xfffffffc);
  for (var_9 = (type_5)((int)var_16 + (0x28 - (int)((type_5)(var_16 + 1) & 0xfffffffc))) >> 2;
      var_9 != 0; var_9 = var_9 - 1) {
    *var_10 = 0;
    var_10 = var_10 + (type_5)bVar17 * -2 + 1;
  }
  local_34 = (type_9)((type_10)iRowid >> 0x20);
  var_16[2] = var_6;
  *(type_9 *)(var_16 + 10) = local_34;
  var_32((void *)((int)var_16 + 0x29),(void *)var_4,var_2);
  var_16[5] = var_2;
  *(type_9 *)((int)var_16 + var_2 + 0x29) = 0;
  var_16[4] = var_2 + 0x2a;
  *var_16 = *(type_3 *)(piVar3[5] + var_8 * 4);
  *(type_3 **)(piVar3[5] + var_8 * 4) = var_16;
  piVar3[2] = piVar3[2] + 1;
  if (var_18 == 0 && (type_5)(0x7f < var_19) <= (type_5)-var_18) {
    local_44 = (type_6)((type_10)uVar18 >> 0x20);
    *(type_6 *)(var_16[4] + (int)var_16) = local_44;
    var_12 = 1;
  }
  else {
    var_12 = var_21((type_6 *)(var_16[4] + (int)var_16),
                                var_15(in_stack_ffffffa8,in_stack_ffffffa4));
  }
  var_12 = var_12 + var_16[4];
  var_16[4] = var_12;
  var_16[9] = var_18;
  var_16[8] = var_19;
  var_16[3] = var_12;
  if (*piVar3 != 1) {
    var_12 = var_12 + 1;
    var_16[4] = var_12;
    *(type_11 *)((int)var_16 + 0x1a) = -(type_11)(*piVar3 != 0);
  }
LAB_00088cd7:
  if ((int)var_33 < 0) {
LAB_00089040:
    *(type_9 *)(var_16 + 6) = 1;
    var_3 = var_16[4];
    goto LAB_00089047;
  }
  if (*piVar3 == 1) {
LAB_000890ca:
    *(type_9 *)((int)var_16 + 0x19) = 1;
    var_3 = var_16[4];
    goto LAB_00089047;
  }
  var_3 = var_16[4];
  if ((type_1 *)(int)*(short *)((int)var_16 + 0x1a) == var_33) {
LAB_00088d4f:
    if (!bVar16) goto LAB_00089047;
    p = (type_6 *)((int)var_16 + var_3);
  }
  else {
    p = (type_6 *)((int)var_16 + var_3);
    if (*piVar3 == 0) {
      var_16[4] = var_3 + 1;
      *p = '\x01';
      if ((int)var_33 < 0 || (type_5)-((int)var_33 >> 0x1f) < (type_5)((type_1 *)0x7f < var_33)) {
        var_3 = var_21((type_6 *)(var_16[4] + (int)var_16),
                                 var_15(in_stack_ffffffa8,in_stack_ffffffa4));
      }
      else {
        *(type_6 *)(var_16[4] + (int)var_16) = (type_6)var_33;
        var_3 = 1;
      }
      var_3 = var_3 + var_16[4];
      var_16[7] = 0;
      var_16[4] = var_3;
      *(type_12 *)((int)var_16 + 0x1a) = var_33._0_2_;
      goto LAB_00088d4f;
    }
    *(type_12 *)((int)var_16 + 0x1a) = var_33._0_2_;
    iRowid._0_4_ = var_33;
  }
  var_9 = (int)(type_1 *)iRowid + (2 - var_16[7]);
  if ((int)var_9 < 0 || (type_5)-((int)var_9 >> 0x1f) < (type_5)(0x7f < var_9)) {
    var_3 = var_21(p,var_15(in_stack_ffffffa8,in_stack_ffffffa4));
  }
  else {
    *p = (type_6)var_9;
    var_3 = 1;
  }
  var_3 = var_3 + var_16[4];
  var_16[4] = var_3;
  var_16[7] = (type_1 *)iRowid;
LAB_00089047:
  *(int *)piVar3[1] = *(int *)piVar3[1] + var_3 + var_12;
  return 0;
LAB_00088bf0:
  var_10 = (type_3 *)*var_10;
  if (var_10 == (type_3 *)0x0) goto LAB_00088da4;
  goto LAB_00088bfa;
}


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

undefined4 MASKED(uint param_1,uint param_2,byte param_3,void *param_4,size_t param_5)

{
  undefined4 *puVar1;
  byte bVar2;
  int *piVar3;
  uint uVar4;
  undefined1 *puVar5;
  void *__s;
  size_t sVar6;
  uint uVar7;
  undefined4 *puVar8;
  int extraout_ECX;
  uint uVar9;
  int iVar10;
  int iVar11;
  uint uVar12;
  uint uVar13;
  byte *pbVar14;
  undefined4 *puVar15;
  undefined4 *puVar16;
  bool bVar17;
  byte bVar18;
  undefined8 uVar19;
  int local_50;
  undefined1 local_44;
  int local_38;
  
  bVar18 = 0;
  uVar19 = FUN_00036ac5();
  uVar9 = (uint)((ulonglong)uVar19 >> 0x20);
  piVar3 = (int *)uVar19;
  bVar17 = *piVar3 == 0;
  uVar13 = piVar3[3];
  iVar10 = param_5 - 1;
  if (iVar10 < 0) {
    uVar12 = 0x68;
    uVar4 = 0xd;
  }
  else {
    uVar4 = 0xd;
    iVar11 = iVar10;
    do {
      pbVar14 = (byte *)((int)param_4 + iVar11);
      iVar11 = iVar11 + -1;
      uVar4 = uVar4 ^ uVar4 * 8 ^ (uint)*pbVar14;
    } while (iVar11 != -1);
    uVar12 = uVar4 * 8;
  }
  uVar12 = (uVar4 ^ uVar12 ^ (uint)param_3) % uVar13;
  puVar8 = (undefined4 *)piVar3[5];
  puVar16 = (undefined4 *)puVar8[uVar12];
  if (puVar16 != (undefined4 *)0x0) {
LAB_00088bfa:
    if (((*(byte *)(puVar16 + 10) != param_3) || (puVar16[5] != param_5)) ||
       (iVar11 = memcmp((void *)((int)puVar16 + 0x29),param_4,param_5), iVar11 != 0))
    goto LAB_00088bf0;
    iVar10 = puVar16[2];
    local_50 = puVar16[4];
    puVar8 = puVar16;
    if (iVar10 - local_50 < 0x16) {
      iVar11 = FUN_0005b490();
      if (iVar11 != 0) {
        return 7;
      }
      puVar8 = (undefined4 *)FUN_00044180();
      if (puVar8 == (undefined4 *)0x0) {
        return 7;
      }
      puVar8[2] = iVar10 * 2;
      puVar15 = (undefined4 *)(uVar12 * 4 + piVar3[5]);
      for (puVar1 = (undefined4 *)*puVar15; puVar1 != puVar16; puVar1 = (undefined4 *)*puVar1) {
        puVar15 = puVar1;
      }
      *puVar15 = puVar8;
      local_50 = puVar8[4];
    }
    local_50 = -local_50;
    if (puVar8[9] == extraout_ECX && puVar8[8] == uVar9) goto LAB_00088cd7;
    FUN_00053040();
    uVar13 = uVar9 - puVar8[8];
    iVar10 = (extraout_ECX - puVar8[9]) - (uint)(uVar9 < (uint)puVar8[8]);
    if (iVar10 == 0 && (uint)(0x7f < uVar13) <= (uint)-iVar10) {
      *(char *)(puVar8[4] + (int)puVar8) = (char)uVar13;
      iVar10 = 1;
    }
    else {
      iVar10 = FUN_00046180();
    }
    iVar10 = iVar10 + puVar8[4];
    puVar8[4] = iVar10;
    puVar8[8] = uVar9;
    puVar8[9] = extraout_ECX;
    puVar8[3] = iVar10;
    if (*piVar3 != 1) {
      bVar17 = true;
      puVar8[4] = iVar10 + 1;
      iVar10 = *piVar3;
      puVar8[7] = 0;
      *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(iVar10 != 0);
      goto LAB_00088cd7;
    }
    if ((int)param_1 < 0) goto LAB_00089040;
    goto LAB_000890ca;
  }
LAB_00088da4:
  uVar4 = 0x80;
  if (0x7f < param_5 + 0x6a) {
    uVar4 = param_5 + 0x6a;
  }
  uVar7 = piVar3[2] * 2;
  if (uVar13 == uVar7 || SBORROW4(uVar13,uVar7) != (int)(uVar13 + piVar3[2] * -2) < 0) {
    iVar11 = FUN_0005b490();
    if (iVar11 != 0) {
      return 7;
    }
    uVar12 = uVar13 * 2;
    __s = (void *)FUN_000421f0();
    if (__s == (void *)0x0) {
      return 7;
    }
    memset(__s,0,uVar13 << 3);
    if (0 < piVar3[3]) {
      local_38 = 0;
      puVar16 = puVar8;
      do {
        puVar15 = (undefined4 *)*puVar16;
        while (puVar15 != (undefined4 *)0x0) {
          *puVar16 = *puVar15;
          sVar6 = strlen((char *)(puVar15 + 10));
          if (sVar6 == 0) {
            uVar13 = 0xd;
          }
          else {
            pbVar14 = (byte *)((int)puVar15 + sVar6 + 0x27);
            uVar13 = 0xd;
            do {
              bVar2 = *pbVar14;
              pbVar14 = pbVar14 + -1;
              uVar13 = uVar13 ^ uVar13 * 8 ^ (uint)bVar2;
            } while ((byte *)((int)puVar15 + 0x27) != pbVar14);
          }
          puVar1 = (undefined4 *)((int)__s + (uVar13 % uVar12) * 4);
          *puVar15 = *puVar1;
          *puVar1 = puVar15;
          puVar15 = (undefined4 *)*puVar16;
        }
        local_38 = local_38 + 1;
        puVar16 = puVar16 + 1;
      } while (local_38 < piVar3[3]);
    }
    FUN_00042800(puVar8);
    piVar3[3] = uVar12;
    piVar3[5] = (int)__s;
    if (iVar10 < 0) {
      uVar13 = 0x68;
      uVar7 = 0xd;
    }
    else {
      uVar7 = 0xd;
      do {
        pbVar14 = (byte *)((int)param_4 + iVar10);
        iVar10 = iVar10 + -1;
        uVar7 = uVar7 ^ uVar7 * 8 ^ (uint)*pbVar14;
      } while (iVar10 != -1);
      uVar13 = uVar7 * 8;
    }
    uVar12 = (uVar7 ^ uVar13 ^ (uint)param_3) % uVar12;
  }
  iVar10 = FUN_0005b490();
  if ((iVar10 != 0) || (puVar8 = (undefined4 *)FUN_000421f0(), puVar8 == (undefined4 *)0x0)) {
    return 7;
  }
  *puVar8 = 0;
  puVar8[9] = 0;
  puVar16 = (undefined4 *)((uint)(puVar8 + 1) & 0xfffffffc);
  for (uVar13 = (uint)((int)puVar8 + (0x28 - (int)((uint)(puVar8 + 1) & 0xfffffffc))) >> 2;
      uVar13 != 0; uVar13 = uVar13 - 1) {
    *puVar16 = 0;
    puVar16 = puVar16 + (uint)bVar18 * -2 + 1;
  }
  puVar8[2] = uVar4;
  *(byte *)(puVar8 + 10) = param_3;
  memcpy((void *)((int)puVar8 + 0x29),param_4,param_5);
  puVar8[5] = param_5;
  *(undefined1 *)((int)puVar8 + param_5 + 0x29) = 0;
  puVar8[4] = param_5 + 0x2a;
  *puVar8 = *(undefined4 *)(piVar3[5] + uVar12 * 4);
  *(undefined4 **)(piVar3[5] + uVar12 * 4) = puVar8;
  piVar3[2] = piVar3[2] + 1;
  if (extraout_ECX == 0 && (uint)(0x7f < uVar9) <= (uint)-extraout_ECX) {
    local_44 = (undefined1)((ulonglong)uVar19 >> 0x20);
    *(undefined1 *)(puVar8[4] + (int)puVar8) = local_44;
    local_50 = 1;
  }
  else {
    local_50 = FUN_00046180();
  }
  local_50 = local_50 + puVar8[4];
  puVar8[4] = local_50;
  puVar8[9] = extraout_ECX;
  puVar8[8] = uVar9;
  puVar8[3] = local_50;
  if (*piVar3 != 1) {
    local_50 = local_50 + 1;
    puVar8[4] = local_50;
    *(ushort *)((int)puVar8 + 0x1a) = -(ushort)(*piVar3 != 0);
  }
LAB_00088cd7:
  if ((int)param_1 < 0) {
LAB_00089040:
    *(undefined1 *)(puVar8 + 6) = 1;
    iVar10 = puVar8[4];
    goto LAB_00089047;
  }
  if (*piVar3 == 1) {
LAB_000890ca:
    *(undefined1 *)((int)puVar8 + 0x19) = 1;
    iVar10 = puVar8[4];
    goto LAB_00089047;
  }
  iVar10 = puVar8[4];
  if ((int)*(short *)((int)puVar8 + 0x1a) == param_1) {
LAB_00088d4f:
    if (!bVar17) goto LAB_00089047;
    puVar5 = (undefined1 *)((int)puVar8 + iVar10);
  }
  else {
    puVar5 = (undefined1 *)((int)puVar8 + iVar10);
    if (*piVar3 == 0) {
      puVar8[4] = iVar10 + 1;
      *puVar5 = 1;
      if ((int)param_1 < 0 || (uint)-((int)param_1 >> 0x1f) < (uint)(0x7f < param_1)) {
        iVar10 = FUN_00046180();
      }
      else {
        *(char *)(puVar8[4] + (int)puVar8) = (char)param_1;
        iVar10 = 1;
      }
      iVar10 = iVar10 + puVar8[4];
      puVar8[7] = 0;
      puVar8[4] = iVar10;
      *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;
      goto LAB_00088d4f;
    }
    *(undefined2 *)((int)puVar8 + 0x1a) = (undefined2)param_1;
    param_2 = param_1;
  }
  uVar13 = (param_2 - puVar8[7]) + 2;
  if ((int)uVar13 < 0 || (uint)-((int)uVar13 >> 0x1f) < (uint)(0x7f < uVar13)) {
    iVar10 = FUN_00046180();
  }
  else {
    *puVar5 = (char)uVar13;
    iVar10 = 1;
  }
  iVar10 = iVar10 + puVar8[4];
  puVar8[4] = iVar10;
  puVar8[7] = param_2;
LAB_00089047:
  *(int *)piVar3[1] = *(int *)piVar3[1] + iVar10 + local_50;
  return 0;
LAB_00088bf0:
  puVar16 = (undefined4 *)*puVar16;
  if (puVar16 == (undefined4 *)0x0) goto LAB_00088da4;
  goto LAB_00088bfa;
}

