L L4D2node

BZ2_compressBlock

0x00290ce0 · 22927 bytes · __cdecl

_Z17BZ2_compressBlockP6EStateh

Decompiled

undefined (2 params)

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* BZ2_compressBlock(EState*, unsigned char) */

void BZ2_compressBlock(EState *param_1,uchar param_2)

{
  short *psVar1;
  int *piVar2;
  EState EVar3;
  ushort uVar4;
  char cVar5;
  EState EVar6;
  uint uVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  EState *pEVar11;
  ushort *puVar12;
  uint uVar13;
  int iVar14;
  EState EVar15;
  int iVar16;
  uint uVar17;
  EState *pEVar18;
  int iVar19;
  int iVar20;
  uint uVar21;
  uint uVar22;
  uint uVar23;
  uint uVar24;
  uint uVar25;
  uint uVar26;
  uint uVar27;
  uint uVar28;
  uint uVar29;
  uint uVar30;
  uint uVar31;
  uint uVar32;
  uint uVar33;
  uint uVar34;
  uint uVar35;
  uint uVar36;
  uint uVar37;
  uint uVar38;
  uint uVar39;
  uint uVar40;
  uint uVar41;
  uint uVar42;
  uint uVar43;
  uint uVar44;
  uint uVar45;
  uint uVar46;
  uint uVar47;
  uint uVar48;
  uint uVar49;
  uint uVar50;
  uint uVar51;
  uint uVar52;
  uint uVar53;
  uint uVar54;
  uint uVar55;
  uint uVar56;
  uint uVar57;
  uint uVar58;
  uint uVar59;
  uint uVar60;
  uint uVar61;
  uint uVar62;
  uint uVar63;
  uint uVar64;
  uint uVar65;
  uint uVar66;
  EState *pEVar67;
  uint uVar68;
  uint uVar69;
  int iVar70;
  int in_GS_OFFSET;
  bool bVar71;
  int local_18c;
  int local_188;
  int local_180;
  int local_17c;
  EState *local_178;
  uint local_170;
  int local_16c;
  uint local_168;
  int local_164;
  int local_160;
  EState *local_158;
  EState *local_154;
  EState *local_150;
  undefined4 local_144;
  undefined4 local_140;
  undefined4 local_13c;
  int aiStack_138 [6];
  EState local_120 [16];
  EState local_110 [240];
  int local_20;
  
  iVar8 = *(int *)(param_1 + 0x44);
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (0 < iVar8) {
    uVar17 = ~*(uint *)(param_1 + 0x260);
    *(uint *)(param_1 + 0x260) = uVar17;
    uVar7 = (*(uint *)(param_1 + 0x264) >> 0x1f | *(uint *)(param_1 + 0x264) << 1) ^ uVar17;
    *(uint *)(param_1 + 0x264) = uVar7;
    if (1 < *(int *)(param_1 + 0x26c)) {
      *(undefined4 *)(param_1 + 0x4c) = 0;
    }
    if (1 < *(int *)(param_1 + 0x268)) {
      fprintf(_stderr,"    block %d: crc = 0x%8x, combined CRC = 0x%8x, size = %d\n",
              *(int *)(param_1 + 0x26c),uVar17,uVar7,iVar8);
    }
    BZ2_blockSort(param_1);
    iVar8 = *(int *)(param_1 + 0x44);
  }
  *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x14) + iVar8;
  if (*(int *)(param_1 + 0x26c) == 1) {
    iVar8 = *(int *)(param_1 + 0x4c);
    uVar7 = 0x42000000;
    *(undefined4 *)(param_1 + 600) = 0x42000000;
    *(undefined4 *)(param_1 + 0x25c) = 8;
    do {
      *(char *)(*(int *)(param_1 + 0x2c) + iVar8) = (char)(uVar7 >> 0x18);
      iVar14 = *(int *)(param_1 + 0x25c);
      iVar9 = iVar14 + -8;
      iVar8 = *(int *)(param_1 + 0x4c) + 1;
      *(int *)(param_1 + 0x25c) = iVar9;
      uVar7 = *(int *)(param_1 + 600) << 8;
      *(int *)(param_1 + 0x4c) = iVar8;
      *(uint *)(param_1 + 600) = uVar7;
    } while (7 < iVar9);
    *(int *)(param_1 + 0x25c) = iVar14;
    uVar7 = 0x5a << (0x18U - (char)iVar9 & 0x1f) | uVar7;
    *(uint *)(param_1 + 600) = uVar7;
    while (7 < iVar14) {
      *(char *)(*(int *)(param_1 + 0x2c) + iVar8) = (char)(uVar7 >> 0x18);
      iVar14 = *(int *)(param_1 + 0x25c) + -8;
      iVar8 = *(int *)(param_1 + 0x4c) + 1;
      *(int *)(param_1 + 0x25c) = iVar14;
      uVar7 = *(int *)(param_1 + 600) << 8;
      *(int *)(param_1 + 0x4c) = iVar8;
      *(uint *)(param_1 + 600) = uVar7;
    }
    iVar9 = iVar14 + 8;
    EVar15 = param_1[0x270];
    *(int *)(param_1 + 0x25c) = iVar9;
    uVar7 = 0x68 << (0x18U - (char)iVar14 & 0x1f) | uVar7;
    *(uint *)(param_1 + 600) = uVar7;
    while (7 < iVar9) {
      *(char *)(*(int *)(param_1 + 0x2c) + iVar8) = (char)(uVar7 >> 0x18);
      iVar8 = *(int *)(param_1 + 0x4c) + 1;
      iVar9 = *(int *)(param_1 + 0x25c) + -8;
      *(int *)(param_1 + 0x4c) = iVar8;
      *(int *)(param_1 + 0x25c) = iVar9;
      uVar7 = *(int *)(param_1 + 600) << 8;
      *(uint *)(param_1 + 600) = uVar7;
    }
    *(int *)(param_1 + 0x25c) = iVar9 + 8;
    iVar8 = *(int *)(param_1 + 0x44);
    *(uint *)(param_1 + 600) =
         (uint)(byte)((char)EVar15 + 0x30) << (0x18U - (char)iVar9 & 0x1f) | uVar7;
  }
  if (0 < iVar8) {
    iVar8 = *(int *)(param_1 + 0x25c);
    if (iVar8 < 8) {
      uVar7 = *(uint *)(param_1 + 600);
    }
    else {
      iVar9 = *(int *)(param_1 + 0x4c);
      uVar7 = *(uint *)(param_1 + 600);
      do {
        *(char *)(*(int *)(param_1 + 0x2c) + iVar9) = (char)(uVar7 >> 0x18);
        iVar9 = *(int *)(param_1 + 0x4c) + 1;
        uVar7 = *(int *)(param_1 + 600) << 8;
        *(int *)(param_1 + 0x4c) = iVar9;
        *(uint *)(param_1 + 600) = uVar7;
        iVar8 = *(int *)(param_1 + 0x25c) + -8;
        *(int *)(param_1 + 0x25c) = iVar8;
      } while (7 < iVar8);
    }
    iVar9 = iVar8 + 8;
    *(int *)(param_1 + 0x25c) = iVar9;
    uVar7 = 0x31 << (0x18U - (char)iVar8 & 0x1f) | uVar7;
    *(uint *)(param_1 + 600) = uVar7;
    if (7 < iVar9) {
      iVar8 = *(int *)(param_1 + 0x4c);
      do {
        *(char *)(*(int *)(param_1 + 0x2c) + iVar8) = (char)(uVar7 >> 0x18);
        iVar8 = *(int *)(param_1 + 0x4c) + 1;
        uVar7 = *(int *)(param_1 + 600) << 8;
        *(int *)(param_1 + 0x4c) = iVar8;
        *(uint *)(param_1 + 600) = uVar7;
        iVar9 = *(int *)(param_1 + 0x25c) + -8;
        *(int *)(param_1 + 0x25c) = iVar9;
      } while (7 < iVar9);
    }
    iVar8 = iVar9 + 8;
    *(int *)(param_1 + 0x25c) = iVar8;
    uVar7 = 0x41 << (0x18U - (char)iVar9 & 0x1f) | uVar7;
    *(uint *)(param_1 + 600) = uVar7;
    if (7 < iVar8) {
      iVar9 = *(int *)(param_1 + 0x4c);
      do {
        *(char *)(*(int *)(param_1 + 0x2c) + iVar9) = (char)(uVar7 >> 0x18);
        iVar9 = *(int *)(param_1 + 0x4c) + 1;
        uVar7 = *(int *)(param_1 + 600) << 8;
        *(int *)(param_1 + 0x4c) = iVar9;
        *(uint *)(param_1 + 600) = uVar7;
        iVar8 = *(int *)(param_1 + 0x25c) + -8;
        *(int *)(param_1 + 0x25c) = iVar8;
      } while (7 < iVar8);
    }
    iVar9 = iVar8 + 8;
    *(int *)(param_1 + 0x25c) = iVar9;
    uVar7 = 0x59 << (0x18U - (char)iVar8 & 0x1f) | uVar7;
    *(uint *)(param_1 + 600) = uVar7;
    if (7 < iVar9) {
      iVar8 = *(int *)(param_1 + 0x4c);
      do {
        *(char *)(*(int *)(param_1 + 0x2c) + iVar8) = (char)(uVar7 >> 0x18);
        iVar8 = *(int *)(param_1 + 0x4c) + 1;
        uVar7 = *(int *)(param_1 + 600) << 8;
        *(int *)(param_1 + 0x4c) = iVar8;
        *(uint *)(param_1 + 600) = uVar7;
        iVar9 = *(int *)(param_1 + 0x25c) + -8;
        *(int *)(param_1 + 0x25c) = iVar9;
      } while (7 < iVar9);
    }
    iVar8 = iVar9 + 8;
    *(int *)(param_1 + 0x25c) = iVar8;
    uVar7 = 0x26 << (0x18U - (char)iVar9 & 0x1f) | uVar7;
    *(uint *)(param_1 + 600) = uVar7;
    if (7 < iVar8) {
      iVar9 = *(int *)(param_1 + 0x4c);
      do {
        *(char *)(*(int *)(param_1 + 0x2c) + iVar9) = (char)(uVar7 >> 0x18);
        iVar9 = *(int *)(param_1 + 0x4c) + 1;
        uVar7 = *(int *)(param_1 + 600) << 8;
        *(int *)(param_1 + 0x4c) = iVar9;
        *(uint *)(param_1 + 600) = uVar7;
        iVar8 = *(int *)(param_1 + 0x25c) + -8;
        *(int *)(param_1 + 0x25c) = iVar8;
      } while (7 < iVar8);
    }
    iVar9 = iVar8 + 8;
    *(int *)(param_1 + 0x25c) = iVar9;
    uVar7 = 0x53 << (0x18U - (char)iVar8 & 0x1f) | uVar7;
    *(uint *)(param_1 + 600) = uVar7;
    if (7 < iVar9) {
      iVar8 = *(int *)(param_1 + 0x4c);
      do {
        *(char *)(*(int *)(param_1 + 0x2c) + iVar8) = (char)(uVar7 >> 0x18);
        iVar8 = *(int *)(param_1 + 0x4c) + 1;
        uVar7 = *(int *)(param_1 + 600) << 8;
        *(int *)(param_1 + 0x4c) = iVar8;
        *(uint *)(param_1 + 600) = uVar7;
        iVar9 = *(int *)(param_1 + 0x25c) + -8;
        *(int *)(param_1 + 0x25c) = iVar9;
      } while (7 < iVar9);
    }
    *(int *)(param_1 + 0x25c) = iVar9 + 8;
    *(uint *)(param_1 + 600) = 0x59 << (0x18U - (char)iVar9 & 0x1f) | uVar7;
    bsPutUInt32(param_1,*(uint *)(param_1 + 0x260));
    iVar8 = *(int *)(param_1 + 0x25c);
    if (iVar8 < 8) {
      uVar7 = *(uint *)(param_1 + 600);
    }
    else {
      iVar9 = *(int *)(param_1 + 0x4c);
      uVar7 = *(uint *)(param_1 + 600);
      do {
        *(char *)(*(int *)(param_1 + 0x2c) + iVar9) = (char)(uVar7 >> 0x18);
        iVar9 = *(int *)(param_1 + 0x4c) + 1;
        uVar7 = *(int *)(param_1 + 600) << 8;
        *(int *)(param_1 + 0x4c) = iVar9;
        *(uint *)(param_1 + 600) = uVar7;
        iVar8 = *(int *)(param_1 + 0x25c) + -8;
        *(int *)(param_1 + 0x25c) = iVar8;
      } while (7 < iVar8);
    }
    iVar8 = iVar8 + 1;
    iVar9 = *(int *)(param_1 + 0x1c);
    *(int *)(param_1 + 0x25c) = iVar8;
    if (iVar8 == 8) {
      iVar14 = *(int *)(param_1 + 0x4c);
      do {
        *(char *)(*(int *)(param_1 + 0x2c) + iVar14) = (char)(uVar7 >> 0x18);
        iVar14 = *(int *)(param_1 + 0x4c) + 1;
        uVar7 = *(int *)(param_1 + 600) << 8;
        *(int *)(param_1 + 0x4c) = iVar14;
        *(uint *)(param_1 + 600) = uVar7;
        iVar8 = *(int *)(param_1 + 0x25c) + -8;
        *(int *)(param_1 + 0x25c) = iVar8;
      } while (7 < iVar8);
    }
    *(undefined4 *)(param_1 + 0x54) = 0;
    *(int *)(param_1 + 0x25c) = iVar8 + 0x18;
    iVar14 = *(int *)(param_1 + 0x20);
    iVar10 = *(int *)(param_1 + 0x28);
    *(uint *)(param_1 + 600) = iVar9 << (8U - (char)iVar8 & 0x1f) | uVar7;
    pEVar18 = param_1 + 0x58;
    iVar8 = *(int *)(param_1 + 0x24);
    iVar9 = 0;
    do {
      if (*pEVar18 != (EState)0x0) {
        pEVar18[0x100] = SUB41(iVar9,0);
        iVar9 = iVar9 + 1;
        *(int *)(param_1 + 0x54) = iVar9;
      }
      pEVar18 = pEVar18 + 1;
    } while (pEVar18 != param_1 + 0x158);
    iVar19 = 0;
    do {
      *(undefined4 *)(param_1 + iVar19 * 4 + 0x278) = 0;
      iVar19 = iVar19 + 1;
    } while (iVar19 != iVar9 + 2);
    if (iVar9 != 0) {
      iVar19 = 0;
      do {
        local_120[iVar19] = SUB41(iVar19,0);
        iVar19 = iVar19 + 1;
      } while (iVar19 != iVar9);
    }
    local_178 = local_120;
    local_150 = *(EState **)(param_1 + 0x44);
    iVar20 = 0;
    iVar70 = 0;
    iVar19 = 0;
    if ((int)local_150 < 1) {
      iVar8 = 1;
    }
    else {
      do {
        EVar15 = local_120[1];
        iVar16 = *(int *)(iVar14 + iVar70 * 4) + -1;
        if (iVar16 < 0) {
          iVar16 = (int)local_150 + iVar16;
        }
        EVar3 = param_1[*(byte *)(iVar8 + iVar16) + 0x158];
        if (EVar3 == local_120[0]) {
          iVar20 = iVar20 + 1;
        }
        else {
          if (iVar20 != 0) {
            uVar7 = iVar20 - 1;
            while( true ) {
              iVar19 = iVar19 + 1;
              if ((uVar7 & 1) == 0) {
                *(undefined2 *)(iVar10 + -2 + iVar19 * 2) = 0;
                *(int *)(param_1 + 0x278) = *(int *)(param_1 + 0x278) + 1;
              }
              else {
                *(undefined2 *)(iVar10 + -2 + iVar19 * 2) = 1;
                *(int *)(param_1 + 0x27c) = *(int *)(param_1 + 0x27c) + 1;
              }
              if ((int)uVar7 < 2) break;
              uVar7 = (int)(uVar7 - 2) >> 1;
            }
          }
          bVar71 = EVar3 == local_120[1];
          local_120[1] = local_120[0];
          if (bVar71) {
            pEVar18 = local_120 + 1;
          }
          else {
            pEVar18 = local_120 + 1;
            EVar6 = EVar15;
            do {
              pEVar18 = pEVar18 + 1;
              EVar15 = *pEVar18;
              *pEVar18 = EVar6;
              EVar6 = EVar15;
            } while (EVar3 != EVar15);
          }
          local_120[0] = EVar15;
          *(short *)(iVar10 + iVar19 * 2) = (short)((int)pEVar18 - (int)local_178) + 1;
          iVar19 = iVar19 + 1;
          *(int *)(param_1 + ((int)pEVar18 - (int)local_178) * 4 + 0x27c) =
               *(int *)(param_1 + ((int)pEVar18 - (int)local_178) * 4 + 0x27c) + 1;
          iVar20 = 0;
          local_150 = *(EState **)(param_1 + 0x44);
        }
        iVar70 = iVar70 + 1;
      } while (iVar70 < (int)local_150);
      uVar7 = iVar20 - 1;
      iVar8 = iVar19 + 1;
      if (iVar20 == 0) {
        iVar20 = iVar19 * 2;
      }
      else {
        while( true ) {
          if ((uVar7 & 1) == 0) {
            *(undefined2 *)(iVar10 + -2 + iVar8 * 2) = 0;
            *(int *)(param_1 + 0x278) = *(int *)(param_1 + 0x278) + 1;
          }
          else {
            *(undefined2 *)(iVar10 + -2 + iVar8 * 2) = 1;
            *(int *)(param_1 + 0x27c) = *(int *)(param_1 + 0x27c) + 1;
          }
          if ((int)uVar7 < 2) break;
          iVar8 = iVar8 + 1;
          uVar7 = (int)(uVar7 - 2) >> 1;
        }
        iVar20 = iVar8 * 2;
        iVar8 = iVar8 + 1;
      }
    }
    *(short *)(iVar10 + iVar20) = (short)(iVar9 + 1);
    *(int *)(param_1 + (iVar9 + 1) * 4 + 0x278) = *(int *)(param_1 + (iVar9 + 1) * 4 + 0x278) + 1;
    *(int *)(param_1 + 0x274) = iVar8;
    iVar9 = *(int *)(param_1 + 0x28);
    if (2 < *(int *)(param_1 + 0x268)) {
      fprintf(_stderr,"      %d in block, %d after MTF & 1-2 coding, %d+2 syms in use\n",
              *(undefined4 *)(param_1 + 0x44),iVar8,*(undefined4 *)(param_1 + 0x54));
      iVar8 = *(int *)(param_1 + 0x274);
    }
    iVar14 = *(int *)(param_1 + 0x54);
    iVar10 = iVar14 + 2;
    pEVar18 = param_1 + 0x9324;
    pEVar67 = pEVar18;
    do {
      if (0 < iVar10) {
        pEVar11 = pEVar67;
        do {
          *pEVar11 = (EState)0xf;
          pEVar11 = pEVar11 + 1;
        } while (pEVar11 != pEVar67 + iVar10);
      }
      pEVar67 = pEVar67 + 0x102;
    } while (pEVar67 != param_1 + 0x9930);
    if (iVar8 < 1) {
      BZ2_bz__AssertH__fail(0xbb9);
      iVar8 = *(int *)(param_1 + 0x274);
    }
    if (iVar8 < 200) {
      local_180 = 2;
      local_168 = 2;
    }
    else if (iVar8 < 600) {
      local_180 = 3;
      local_168 = 3;
    }
    else if (iVar8 < 0x4b0) {
      local_180 = 4;
      local_168 = 4;
    }
    else {
      local_180 = (0x95f < iVar8) + 5;
      local_168 = (0x95f < iVar8) + 5;
    }
    local_188 = *(int *)(param_1 + 0x268);
    bVar71 = false;
    local_150 = (EState *)0x0;
    local_158 = param_1 + (local_168 - 1) * 0x102 + 0x9324;
    uVar7 = local_168;
    local_170 = iVar8;
    do {
      iVar19 = 0;
      iVar20 = (int)local_150 + -1;
      if (0 < iVar8 / (int)uVar7) {
        do {
          if (iVar14 + 1 <= iVar20) break;
          iVar20 = iVar20 + 1;
          iVar19 = iVar19 + *(int *)(param_1 + iVar20 * 4 + 0x278);
        } while (iVar19 < iVar8 / (int)uVar7);
      }
      if (((((int)local_150 < iVar20) && (local_168 != uVar7)) && (uVar7 != 1)) && (bVar71)) {
        iVar19 = iVar19 - *(int *)(param_1 + iVar20 * 4 + 0x278);
        iVar20 = iVar20 + -1;
      }
      if (2 < local_188) {
        fprintf(_stderr,"      initial group %d, [%d .. %d], has %d syms (%4.1f%%)\n",uVar7,
                local_150,iVar20,iVar19,((double)iVar19 * 100.0) / (double)(int)local_170);
        local_188 = *(int *)(param_1 + 0x268);
        local_170 = *(uint *)(param_1 + 0x274);
      }
      uVar7 = uVar7 - 1;
      iVar70 = 0;
      pEVar67 = local_158;
      if (0 < iVar10) {
        do {
          while ((iVar70 <= iVar20 && ((int)local_150 <= iVar70))) {
            iVar70 = iVar70 + 1;
            *pEVar67 = (EState)0x0;
            pEVar67 = pEVar67 + 1;
            if (iVar70 == iVar10) goto LAB_002946ee;
          }
          iVar70 = iVar70 + 1;
          *pEVar67 = (EState)0xf;
          pEVar67 = pEVar67 + 1;
        } while (iVar70 != iVar10);
      }
LAB_002946ee:
      local_150 = (EState *)(iVar20 + 1);
      iVar8 = iVar8 - iVar19;
      bVar71 = (bool)(bVar71 ^ 1);
      local_158 = local_158 + -0x102;
    } while (0 < (int)uVar7);
    local_18c = 1;
    while( true ) {
      iVar8 = 0;
      do {
        aiStack_138[iVar8] = 0;
        iVar8 = iVar8 + 1;
      } while (iVar8 < (int)local_168);
      iVar8 = 0;
      pEVar67 = param_1 + 0xb160;
      do {
        if (0 < iVar10) {
          pEVar11 = pEVar67;
          do {
            *(int *)pEVar11 = 0;
            pEVar11 = pEVar11 + 4;
          } while (pEVar67 + iVar14 * 4 + 8 != pEVar11);
        }
        iVar8 = iVar8 + 1;
        pEVar67 = pEVar67 + 0x408;
      } while (iVar8 < (int)local_168);
      if ((local_168 == 6) && (0 < iVar10)) {
        iVar8 = 0;
        pEVar67 = param_1 + 0x9426;
        pEVar11 = param_1 + 0xc990;
        do {
          iVar8 = iVar8 + 1;
          *(uint *)pEVar11 = (uint)(byte)*pEVar67 << 0x10 | (uint)(byte)pEVar67[-0x102];
          *(uint *)(pEVar11 + 4) = (uint)(byte)pEVar67[0x204] << 0x10 | (uint)(byte)pEVar67[0x102];
          *(uint *)(pEVar11 + 8) = (uint)(byte)pEVar67[0x408] << 0x10 | (uint)(byte)pEVar67[0x306];
          pEVar67 = pEVar67 + 1;
          pEVar11 = pEVar11 + 0x10;
        } while (iVar8 != iVar10);
      }
      if ((int)local_170 < 1) {
        local_16c = 0;
        local_17c = 0;
      }
      else {
        local_16c = 0;
        local_17c = 0;
        local_158 = (EState *)0x0;
        do {
          iVar8 = (int)local_158 + 0x31;
          if ((int)local_170 <= (int)local_158 + 0x31) {
            iVar8 = local_170 + -1;
          }
          iVar19 = 0;
          do {
            *(undefined2 *)((int)&local_144 + iVar19 * 2) = 0;
            iVar19 = iVar19 + 1;
          } while (iVar19 < (int)local_168);
          if ((local_168 == 6) && (iVar8 - (int)local_158 == 0x31)) {
            iVar19 = (int)local_158 * 2;
            uVar68 = (uint)*(ushort *)(iVar9 + (int)local_158 * 2);
            uVar69 = (uint)*(ushort *)(iVar9 + 2 + iVar19);
            uVar17 = (uint)*(ushort *)(iVar9 + 4 + iVar19);
            uVar13 = (uint)*(ushort *)(iVar9 + 6 + iVar19);
            uVar21 = (uint)*(ushort *)(iVar9 + 8 + iVar19);
            uVar22 = (uint)*(ushort *)(iVar9 + 10 + iVar19);
            uVar23 = (uint)*(ushort *)(iVar9 + 0xc + iVar19);
            uVar24 = (uint)*(ushort *)(iVar9 + 0xe + iVar19);
            uVar25 = (uint)*(ushort *)(iVar9 + 0x10 + iVar19);
            uVar26 = (uint)*(ushort *)(iVar9 + 0x12 + iVar19);
            uVar27 = (uint)*(ushort *)(iVar9 + 0x14 + iVar19);
            uVar28 = (uint)*(ushort *)(iVar9 + 0x16 + iVar19);
            uVar29 = (uint)*(ushort *)(iVar9 + 0x18 + iVar19);
            uVar30 = (uint)*(ushort *)(iVar9 + 0x1a + iVar19);
            uVar31 = (uint)*(ushort *)(iVar9 + 0x1c + iVar19);
            uVar32 = (uint)*(ushort *)(iVar9 + 0x1e + iVar19);
            uVar33 = (uint)*(ushort *)(iVar9 + 0x20 + iVar19);
            uVar34 = (uint)*(ushort *)(iVar9 + 0x22 + iVar19);
            uVar35 = (uint)*(ushort *)(iVar9 + 0x24 + iVar19);
            uVar36 = (uint)*(ushort *)(iVar9 + 0x26 + iVar19);
            uVar37 = (uint)*(ushort *)(iVar9 + 0x28 + iVar19);
            uVar38 = (uint)*(ushort *)(iVar9 + 0x2a + iVar19);
            uVar39 = (uint)*(ushort *)(iVar9 + 0x2c + iVar19);
            uVar40 = (uint)*(ushort *)(iVar9 + 0x2e + iVar19);
            uVar41 = (uint)*(ushort *)(iVar9 + 0x30 + iVar19);
            uVar42 = (uint)*(ushort *)(iVar9 + 0x32 + iVar19);
            uVar43 = (uint)*(ushort *)(iVar9 + 0x34 + iVar19);
            uVar44 = (uint)*(ushort *)(iVar9 + 0x36 + iVar19);
            uVar45 = (uint)*(ushort *)(iVar9 + 0x38 + iVar19);
            uVar46 = (uint)*(ushort *)(iVar9 + 0x3a + iVar19);
            uVar47 = (uint)*(ushort *)(iVar9 + 0x3c + iVar19);
            uVar48 = (uint)*(ushort *)(iVar9 + 0x3e + iVar19);
            uVar49 = (uint)*(ushort *)(iVar9 + 0x40 + iVar19);
            uVar50 = (uint)*(ushort *)(iVar9 + 0x42 + iVar19);
            uVar51 = (uint)*(ushort *)(iVar9 + 0x44 + iVar19);
            uVar52 = (uint)*(ushort *)(iVar9 + 0x46 + iVar19);
            uVar53 = (uint)*(ushort *)(iVar9 + 0x48 + iVar19);
            uVar54 = (uint)*(ushort *)(iVar9 + 0x4a + iVar19);
            uVar55 = (uint)*(ushort *)(iVar9 + 0x4c + iVar19);
            uVar56 = (uint)*(ushort *)(iVar9 + 0x4e + iVar19);
            uVar57 = (uint)*(ushort *)(iVar9 + 0x50 + iVar19);
            uVar58 = (uint)*(ushort *)(iVar9 + 0x52 + iVar19);
            uVar59 = (uint)*(ushort *)(iVar9 + 0x54 + iVar19);
            uVar60 = (uint)*(ushort *)(iVar9 + 0x56 + iVar19);
            uVar61 = (uint)*(ushort *)(iVar9 + 0x58 + iVar19);
            uVar62 = (uint)*(ushort *)(iVar9 + 0x5a + iVar19);
            uVar63 = (uint)*(ushort *)(iVar9 + 0x5c + iVar19);
            uVar64 = (uint)*(ushort *)(iVar9 + 0x5e + iVar19);
            uVar65 = (uint)*(ushort *)(iVar9 + 0x60 + iVar19);
            uVar66 = (uint)*(ushort *)(iVar9 + 0x62 + iVar19);
            uVar7 = *(int *)(param_1 + (uVar69 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar68 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar17 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar13 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar21 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar22 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar23 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar24 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar25 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar26 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar27 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar28 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar29 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar30 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar31 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar32 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar33 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar34 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar35 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar36 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar37 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar38 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar39 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar40 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar41 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar42 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar43 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar44 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar45 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar46 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar47 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar48 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar49 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar50 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar51 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar52 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar53 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar54 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar55 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar56 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar57 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar58 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar59 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar60 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar61 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar62 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar63 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar64 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar65 + 0xc99) * 0x10) +
                    *(int *)(param_1 + (uVar66 + 0xc99) * 0x10);
            local_140 = *(int *)(param_1 + uVar69 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar68 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar17 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar13 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar21 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar22 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar23 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar24 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar25 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar26 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar27 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar28 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar29 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar30 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar31 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar32 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar33 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar34 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar35 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar36 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar37 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar38 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar39 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar40 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar41 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar42 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar43 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar44 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar45 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar46 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar47 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar48 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar49 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar50 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar51 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar52 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar53 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar54 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar55 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar56 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar57 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar58 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar59 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar60 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar61 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar62 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar63 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar64 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar65 * 0x10 + 0xc994) +
                        *(int *)(param_1 + uVar66 * 0x10 + 0xc994);
            local_13c = *(int *)(param_1 + uVar69 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar68 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar17 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar13 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar21 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar22 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar23 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar24 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar25 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar26 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar27 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar28 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar29 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar30 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar31 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar32 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar33 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar34 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar35 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar36 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar37 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar38 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar39 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar40 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar41 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar42 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar43 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar44 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar45 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar46 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar47 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar48 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar49 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar50 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar51 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar52 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar53 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar54 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar55 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar56 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar57 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar58 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar59 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar60 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar61 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar62 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar63 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar64 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar65 * 0x10 + 0xc998) +
                        *(int *)(param_1 + uVar66 * 0x10 + 0xc998);
            local_144 = uVar7;
          }
          else {
            puVar12 = (ushort *)(iVar9 + (int)local_158 * 2);
            if ((int)local_158 <= iVar8) {
              do {
                pEVar67 = param_1 + *puVar12 + 0x9324;
                iVar19 = 0;
                do {
                  EVar15 = *pEVar67;
                  pEVar67 = pEVar67 + 0x102;
                  psVar1 = (short *)((int)&local_144 + iVar19 * 2);
                  *psVar1 = *psVar1 + (ushort)(byte)EVar15;
                  iVar19 = iVar19 + 1;
                } while (iVar19 < (int)local_168);
                puVar12 = puVar12 + 1;
              } while (puVar12 != (ushort *)(iVar9 + 2 + iVar8 * 2));
            }
            uVar7 = local_144 & 0xffff;
          }
          iVar19 = -1;
          uVar17 = 999999999;
          iVar20 = 0;
          while( true ) {
            if ((uVar7 & 0xffff) < uVar17) {
              iVar19 = iVar20;
              uVar17 = uVar7 & 0xffff;
            }
            iVar20 = iVar20 + 1;
            if ((int)local_168 <= iVar20) break;
            uVar7 = (uint)*(ushort *)((int)&local_144 + iVar20 * 2);
          }
          local_17c = local_17c + uVar17;
          aiStack_138[iVar19] = aiStack_138[iVar19] + 1;
          iVar20 = local_16c + 1;
          param_1[local_16c + 0x680] = SUB41(iVar19,0);
          if ((local_168 == 6) && (iVar8 - (int)local_158 == 0x31)) {
            iVar19 = iVar19 * 0x102;
            iVar70 = (int)local_158 * 2;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + (int)local_158 * 2) + iVar19) * 4 + 0xb160
                    ) = *(int *)(param_1 +
                                ((uint)*(ushort *)(iVar9 + (int)local_158 * 2) + iVar19) * 4 +
                                0xb160) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 2 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 2 + iVar70) + iVar19) * 4 + 0xb160) +
                 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 4 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 4 + iVar70) + iVar19) * 4 + 0xb160) +
                 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 6 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 6 + iVar70) + iVar19) * 4 + 0xb160) +
                 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 8 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 8 + iVar70) + iVar19) * 4 + 0xb160) +
                 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 10 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 10 + iVar70) + iVar19) * 4 + 0xb160)
                 + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0xc + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0xc + iVar70) + iVar19) * 4 + 0xb160)
                 + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0xe + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0xe + iVar70) + iVar19) * 4 + 0xb160)
                 + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x10 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x10 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x12 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x12 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x14 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x14 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x16 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x16 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x18 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x18 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x1a + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x1a + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x1c + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x1c + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x1e + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x1e + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x20 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x20 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x22 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x22 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x24 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x24 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x26 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x26 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x28 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x28 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x2a + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x2a + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x2c + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x2c + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x2e + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x2e + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x30 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x30 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x32 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x32 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x34 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x34 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x36 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x36 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x38 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x38 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x3a + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x3a + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x3c + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x3c + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x3e + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x3e + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x40 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x40 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x42 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x42 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x44 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x44 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x46 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x46 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x48 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x48 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x4a + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x4a + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x4c + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x4c + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x4e + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x4e + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x50 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x50 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x52 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x52 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x54 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x54 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x56 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x56 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x58 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x58 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x5a + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x5a + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x5c + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x5c + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x5e + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x5e + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x60 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x60 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
            *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x62 + iVar70) + iVar19) * 4 + 0xb160) =
                 *(int *)(param_1 + ((uint)*(ushort *)(iVar9 + 0x62 + iVar70) + iVar19) * 4 + 0xb160
                         ) + 1;
          }
          else if ((int)local_158 <= iVar8) {
            puVar12 = (ushort *)(iVar9 + (int)local_158 * 2);
            do {
              uVar4 = *puVar12;
              puVar12 = puVar12 + 1;
              *(int *)(param_1 + ((uint)uVar4 + iVar19 * 0x102) * 4 + 0xb160) =
                   *(int *)(param_1 + ((uint)uVar4 + iVar19 * 0x102) * 4 + 0xb160) + 1;
            } while (puVar12 != (ushort *)(iVar9 + 2 + iVar8 * 2));
          }
          local_158 = (EState *)(iVar8 + 1);
          local_16c = iVar20;
        } while ((int)local_158 < (int)local_170);
      }
      if (2 < local_188) {
        iVar8 = 0;
        local_17c = local_17c >> 3;
        fprintf(_stderr,"      pass %d: size is %d, grp uses are ",local_18c,local_17c);
        do {
          piVar2 = aiStack_138 + iVar8;
          iVar8 = iVar8 + 1;
          fprintf(_stderr,"%d ",*piVar2,local_17c);
        } while (iVar8 < (int)local_168);
        fputc(10,_stderr);
      }
      iVar8 = 0;
      pEVar67 = pEVar18;
      pEVar11 = param_1 + 0xb160;
      do {
        iVar8 = iVar8 + 1;
        BZ2_hbMakeCodeLengths((uchar *)pEVar67,(int *)pEVar11,iVar10,0x14);
        pEVar67 = pEVar67 + 0x102;
        pEVar11 = pEVar11 + 0x408;
      } while (iVar8 < (int)local_168);
      local_18c = local_18c + 1;
      if (local_18c == 5) break;
      local_188 = *(int *)(param_1 + 0x268);
      local_170 = *(uint *)(param_1 + 0x274);
    }
    if (0x4652 < local_16c) {
      BZ2_bz__AssertH__fail(0xbbb);
    }
    iVar8 = 0;
    do {
      local_178[iVar8] = SUB41(iVar8,0);
      iVar8 = iVar8 + 1;
    } while (iVar8 < (int)local_168);
    if (local_16c != 0) {
      pEVar67 = param_1 + 0x680;
      pEVar11 = pEVar67 + local_16c;
      do {
        EVar15 = *pEVar67;
        if (EVar15 == local_120[0]) {
          iVar8 = 0;
        }
        else {
          iVar8 = 0;
          do {
            iVar8 = iVar8 + 1;
            EVar3 = local_178[iVar8];
            local_178[iVar8] = local_120[0];
            local_120[0] = EVar3;
          } while (EVar15 != EVar3);
        }
        pEVar67[0x4652] = SUB41(iVar8,0);
        pEVar67 = pEVar67 + 1;
      } while (pEVar67 != pEVar11);
    }
    local_154 = (EState *)0x0;
    local_150 = param_1 + 0x9930;
    do {
      if (iVar10 < 1) {
        uVar17 = 0;
        uVar7 = 0x20;
      }
      else {
        uVar17 = 0;
        uVar7 = 0x20;
        pEVar67 = pEVar18;
        do {
          uVar13 = (uint)(byte)*pEVar67;
          if (uVar17 < uVar13) {
            uVar17 = uVar13;
          }
          if (uVar13 < uVar7) {
            uVar7 = uVar13;
          }
          pEVar67 = pEVar67 + 1;
        } while (pEVar67 != pEVar18 + iVar10);
        if (0x14 < uVar17) {
          BZ2_bz__AssertH__fail(0xbbc);
        }
        if (uVar7 == 0) {
          BZ2_bz__AssertH__fail(0xbbd);
        }
      }
      BZ2_hbAssignCodes((int *)local_150,(uchar *)pEVar18,uVar7,uVar17,iVar10);
      local_154 = (EState *)((int)local_154 + 1);
      local_150 = local_150 + 0x408;
      pEVar18 = pEVar18 + 0x102;
    } while ((int)local_154 < (int)local_168);
    pEVar18 = param_1 + 0x68;
    pEVar67 = local_178;
    do {
      *pEVar67 = (EState)0x0;
      pEVar11 = pEVar18 + -0x10;
      do {
        if (*pEVar11 != (EState)0x0) {
          *pEVar67 = (EState)0x1;
        }
        pEVar11 = pEVar11 + 1;
      } while (pEVar18 != pEVar11);
      pEVar67 = pEVar67 + 1;
      pEVar18 = pEVar18 + 0x10;
    } while (pEVar67 != local_110);
    iVar14 = *(int *)(param_1 + 0x4c);
    iVar8 = iVar14;
    pEVar18 = local_178;
    do {
      iVar19 = *(int *)(param_1 + 0x25c);
      if (*pEVar18 == (EState)0x0) {
        if (7 < iVar19) {
          iVar20 = *(int *)(param_1 + 600);
          do {
            *(char *)(*(int *)(param_1 + 0x2c) + iVar8) = (char)((uint)iVar20 >> 0x18);
            iVar8 = *(int *)(param_1 + 0x4c) + 1;
            iVar20 = *(int *)(param_1 + 600) << 8;
            *(int *)(param_1 + 0x4c) = iVar8;
            *(int *)(param_1 + 600) = iVar20;
            iVar19 = *(int *)(param_1 + 0x25c) + -8;
            *(int *)(param_1 + 0x25c) = iVar19;
          } while (7 < iVar19);
        }
        *(int *)(param_1 + 0x25c) = iVar19 + 1;
      }
      else {
        if (iVar19 < 8) {
          local_150 = *(EState **)(param_1 + 600);
        }
        else {
          local_150 = *(EState **)(param_1 + 600);
          do {
            *(char *)(*(int *)(param_1 + 0x2c) + iVar8) = (char)((uint)local_150 >> 0x18);
            iVar8 = *(int *)(param_1 + 0x4c) + 1;
            local_150 = (EState *)(*(int *)(param_1 + 600) << 8);
            *(int *)(param_1 + 0x4c) = iVar8;
            *(EState **)(param_1 + 600) = local_150;
            iVar19 = *(int *)(param_1 + 0x25c) + -8;
            *(int *)(param_1 + 0x25c) = iVar19;
          } while (7 < iVar19);
        }
        *(int *)(param_1 + 0x25c) = iVar19 + 1;
        *(uint *)(param_1 + 600) = (uint)local_150 | 1 << (0x1fU - (char)iVar19 & 0x1f);
      }
      pEVar18 = pEVar18 + 1;
    } while (local_110 != pEVar18);
    local_154 = param_1;
    do {
      if (*local_178 != (EState)0x0) {
        local_150 = (EState *)0x0;
        do {
          if (local_154[(int)local_150 + 0x58] == (EState)0x0) {
            iVar19 = *(int *)(param_1 + 0x25c);
            if (7 < iVar19) {
              iVar20 = *(int *)(param_1 + 600);
              do {
                *(char *)(*(int *)(param_1 + 0x2c) + iVar8) = (char)((uint)iVar20 >> 0x18);
                iVar8 = *(int *)(param_1 + 0x4c) + 1;
                iVar19 = *(int *)(param_1 + 0x25c) + -8;
                *(int *)(param_1 + 0x4c) = iVar8;
                *(int *)(param_1 + 0x25c) = iVar19;
                iVar20 = *(int *)(param_1 + 600) << 8;
                *(int *)(param_1 + 600) = iVar20;
              } while (7 < iVar19);
            }
            *(int *)(param_1 + 0x25c) = iVar19 + 1;
          }
          else {
            iVar19 = *(int *)(param_1 + 0x25c);
            if (iVar19 < 8) {
              local_158 = *(EState **)(param_1 + 600);
            }
            else {
              local_158 = *(EState **)(param_1 + 600);
              do {
                *(char *)(*(int *)(param_1 + 0x2c) + iVar8) = (char)((uint)local_158 >> 0x18);
                iVar8 = *(int *)(param_1 + 0x4c) + 1;
                local_158 = (EState *)(*(int *)(param_1 + 600) << 8);
                *(int *)(param_1 + 0x4c) = iVar8;
                *(EState **)(param_1 + 600) = local_158;
                iVar19 = *(int *)(param_1 + 0x25c) + -8;
                *(int *)(param_1 + 0x25c) = iVar19;
              } while (7 < iVar19);
            }
            *(int *)(param_1 + 0x25c) = iVar19 + 1;
            *(uint *)(param_1 + 600) = (uint)local_158 | 1 << (0x1fU - (char)iVar19 & 0x1f);
          }
          local_150 = (EState *)((int)local_150 + 1);
        } while (local_150 != (EState *)0x10);
      }
      local_154 = local_154 + 0x10;
      local_178 = local_178 + 1;
    } while (local_110 != local_178);
    if (2 < *(int *)(param_1 + 0x268)) {
      fprintf(_stderr,"      bytes: mapping %d, ",iVar8 - iVar14);
      iVar8 = *(int *)(param_1 + 0x4c);
    }
    iVar14 = *(int *)(param_1 + 0x25c);
    uVar7 = *(uint *)(param_1 + 600);
    local_160 = iVar8;
    while (7 < iVar14) {
      *(char *)(*(int *)(param_1 + 0x2c) + local_160) = (char)(uVar7 >> 0x18);
      local_160 = *(int *)(param_1 + 0x4c) + 1;
      uVar7 = *(int *)(param_1 + 600) << 8;
      *(int *)(param_1 + 0x4c) = local_160;
      *(uint *)(param_1 + 600) = uVar7;
      iVar14 = *(int *)(param_1 + 0x25c) + -8;
      *(int *)(param_1 + 0x25c) = iVar14;
    }
    iVar19 = iVar14 + 3;
    *(int *)(param_1 + 0x25c) = iVar19;
    uVar7 = local_180 << (0x1dU - (char)iVar14 & 0x1f) | uVar7;
    *(uint *)(param_1 + 600) = uVar7;
    while (7 < iVar19) {
      *(char *)(*(int *)(param_1 + 0x2c) + local_160) = (char)(uVar7 >> 0x18);
      local_160 = *(int *)(param_1 + 0x4c) + 1;
      uVar7 = *(int *)(param_1 + 600) << 8;
      *(int *)(param_1 + 0x4c) = local_160;
      *(uint *)(param_1 + 600) = uVar7;
      iVar19 = *(int *)(param_1 + 0x25c) + -8;
      *(int *)(param_1 + 0x25c) = iVar19;
    }
    iVar14 = iVar19 + 0xf;
    *(int *)(param_1 + 0x25c) = iVar14;
    *(uint *)(param_1 + 600) = local_16c << (0x11U - (char)iVar19 & 0x1f) | uVar7;
    if (local_16c != 0) {
      local_154 = param_1 + 0x4cd2;
      pEVar18 = local_154 + local_16c;
      do {
        if (*local_154 != (EState)0x0) {
          uVar7 = *(uint *)(param_1 + 600);
          iVar19 = 0;
          do {
            while (7 < iVar14) {
              *(char *)(*(int *)(param_1 + 0x2c) + local_160) = (char)(uVar7 >> 0x18);
              local_160 = *(int *)(param_1 + 0x4c) + 1;
              iVar14 = *(int *)(param_1 + 0x25c) + -8;
              *(int *)(param_1 + 0x4c) = local_160;
              *(int *)(param_1 + 0x25c) = iVar14;
              uVar7 = *(int *)(param_1 + 600) << 8;
              *(uint *)(param_1 + 600) = uVar7;
            }
            iVar19 = iVar19 + 1;
            cVar5 = (char)iVar14;
            iVar14 = iVar14 + 1;
            *(int *)(param_1 + 0x25c) = iVar14;
            uVar7 = 1 << (0x1fU - cVar5 & 0x1f) | uVar7;
            *(uint *)(param_1 + 600) = uVar7;
          } while (iVar19 < (int)(uint)(byte)*local_154);
        }
        if (7 < iVar14) {
          iVar19 = *(int *)(param_1 + 600);
          do {
            *(char *)(*(int *)(param_1 + 0x2c) + local_160) = (char)((uint)iVar19 >> 0x18);
            local_160 = *(int *)(param_1 + 0x4c) + 1;
            iVar14 = *(int *)(param_1 + 0x25c) + -8;
            *(int *)(param_1 + 0x4c) = local_160;
            *(int *)(param_1 + 0x25c) = iVar14;
            iVar19 = *(int *)(param_1 + 600) << 8;
            *(int *)(param_1 + 600) = iVar19;
          } while (7 < iVar14);
        }
        local_154 = local_154 + 1;
        iVar14 = iVar14 + 1;
        *(int *)(param_1 + 0x25c) = iVar14;
      } while (local_154 != pEVar18);
    }
    if (2 < *(int *)(param_1 + 0x268)) {
      fprintf(_stderr,"selectors %d, ",local_160 - iVar8);
      local_160 = *(int *)(param_1 + 0x4c);
    }
    local_154 = param_1;
    local_170 = 0;
    iVar8 = local_160;
    do {
      iVar14 = *(int *)(param_1 + 0x25c);
      uVar17 = (uint)(byte)local_154[0x9324];
      uVar7 = *(uint *)(param_1 + 600);
      while (7 < iVar14) {
        *(char *)(*(int *)(param_1 + 0x2c) + iVar8) = (char)(uVar7 >> 0x18);
        iVar8 = *(int *)(param_1 + 0x4c) + 1;
        iVar14 = *(int *)(param_1 + 0x25c) + -8;
        *(int *)(param_1 + 0x4c) = iVar8;
        *(int *)(param_1 + 0x25c) = iVar14;
        uVar7 = *(int *)(param_1 + 600) << 8;
        *(uint *)(param_1 + 600) = uVar7;
      }
      iVar19 = iVar14 + 5;
      *(uint *)(param_1 + 600) = uVar7 | uVar17 << (0x1bU - (char)iVar14 & 0x1f);
      *(int *)(param_1 + 0x25c) = iVar19;
      if (0 < iVar10) {
        local_150 = (EState *)0x0;
        do {
          uVar7 = (uint)(byte)local_154[(int)local_150 + 0x9324];
          if ((int)uVar17 < (int)uVar7) {
            uVar13 = *(uint *)(param_1 + 600);
            do {
              while (7 < iVar19) {
                *(char *)(*(int *)(param_1 + 0x2c) + iVar8) = (char)(uVar13 >> 0x18);
                iVar8 = *(int *)(param_1 + 0x4c) + 1;
                uVar13 = *(int *)(param_1 + 600) << 8;
                *(int *)(param_1 + 0x4c) = iVar8;
                *(uint *)(param_1 + 600) = uVar13;
                iVar19 = *(int *)(param_1 + 0x25c) + -8;
                *(int *)(param_1 + 0x25c) = iVar19;
              }
              uVar17 = uVar17 + 1;
              cVar5 = (char)iVar19;
              iVar19 = iVar19 + 2;
              *(int *)(param_1 + 0x25c) = iVar19;
              uVar13 = 2 << (0x1eU - cVar5 & 0x1f) | uVar13;
              *(uint *)(param_1 + 600) = uVar13;
              uVar7 = (uint)(byte)local_154[(int)local_150 + 0x9324];
            } while ((int)uVar17 < (int)uVar7);
          }
          if ((int)uVar7 < (int)uVar17) {
            uVar7 = *(uint *)(param_1 + 600);
            do {
              while (7 < iVar19) {
                *(char *)(*(int *)(param_1 + 0x2c) + iVar8) = (char)(uVar7 >> 0x18);
                iVar8 = *(int *)(param_1 + 0x4c) + 1;
                uVar7 = *(int *)(param_1 + 600) << 8;
                *(int *)(param_1 + 0x4c) = iVar8;
                *(uint *)(param_1 + 600) = uVar7;
                iVar19 = *(int *)(param_1 + 0x25c) + -8;
                *(int *)(param_1 + 0x25c) = iVar19;
              }
              uVar17 = uVar17 - 1;
              cVar5 = (char)iVar19;
              iVar19 = iVar19 + 2;
              *(int *)(param_1 + 0x25c) = iVar19;
              uVar7 = 3 << (0x1eU - cVar5 & 0x1f) | uVar7;
              *(uint *)(param_1 + 600) = uVar7;
            } while ((int)(uint)(byte)local_154[(int)local_150 + 0x9324] < (int)uVar17);
          }
          if (7 < iVar19) {
            iVar14 = *(int *)(param_1 + 600);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + iVar8) = (char)((uint)iVar14 >> 0x18);
              iVar8 = *(int *)(param_1 + 0x4c) + 1;
              iVar14 = *(int *)(param_1 + 600) << 8;
              *(int *)(param_1 + 0x4c) = iVar8;
              *(int *)(param_1 + 600) = iVar14;
              iVar19 = *(int *)(param_1 + 0x25c) + -8;
              *(int *)(param_1 + 0x25c) = iVar19;
            } while (7 < iVar19);
          }
          local_150 = (EState *)((int)local_150 + 1);
          iVar19 = iVar19 + 1;
          *(int *)(param_1 + 0x25c) = iVar19;
        } while (local_150 != (EState *)iVar10);
      }
      local_170 = local_170 + 1;
      local_154 = local_154 + 0x102;
    } while ((int)local_170 < (int)local_168);
    if (2 < *(int *)(param_1 + 0x268)) {
      fprintf(_stderr,"code lengths %d, ",iVar8 - local_160);
      iVar8 = *(int *)(param_1 + 0x4c);
    }
    local_154 = (EState *)0x0;
    iVar14 = *(int *)(param_1 + 0x274);
    if (0 < iVar14) {
      iVar10 = 0;
      do {
        iVar19 = iVar14 + -1;
        if (iVar10 + 0x31 < iVar14) {
          iVar19 = iVar10 + 0x31;
        }
        if (local_168 <= (byte)param_1[(int)local_154 + 0x680]) {
          BZ2_bz__AssertH__fail(0xbbe);
        }
        if ((local_168 == 6) && (iVar19 - iVar10 == 0x31)) {
          iVar70 = iVar10 * 2;
          iVar14 = (uint)(byte)param_1[(int)local_154 + 0x680] * 0x102 + 0x9320;
          iVar20 = (uint)(byte)param_1[(int)local_154 + 0x680] * 0x408 + 0x9930;
          uVar7 = (uint)*(ushort *)(iVar9 + iVar10 * 2);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          local_164 = *(int *)(param_1 + 0x25c);
          if (local_164 < 8) {
            local_170 = *(uint *)(param_1 + 600);
          }
          else {
            iVar16 = *(int *)(param_1 + 0x4c);
            local_170 = *(uint *)(param_1 + 600);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + iVar16) = (char)(local_170 >> 0x18);
              iVar16 = *(int *)(param_1 + 0x4c) + 1;
              local_170 = *(int *)(param_1 + 600) << 8;
              *(int *)(param_1 + 0x4c) = iVar16;
              *(uint *)(param_1 + 600) = local_170;
              local_164 = *(int *)(param_1 + 0x25c) + -8;
              *(int *)(param_1 + 0x25c) = local_164;
            } while (7 < local_164);
          }
          local_170 = iVar10 << ((' ' - (char)local_164) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + local_164);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 2 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 4 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 6 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 8 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 10 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0xc + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0xe + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x10 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x12 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x14 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x16 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x18 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x1a + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x1c + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x1e + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x20 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x22 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x24 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x26 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x28 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x2a + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x2c + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x2e + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x30 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x32 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x34 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x36 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x38 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x3a + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x3c + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x3e + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x40 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x42 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x44 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x46 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x48 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x4a + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x4c + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x4e + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x50 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x52 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x54 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x56 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x58 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x5a + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x5c + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x5e + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          local_158 = (EState *)((uint)(byte)EVar15 + (int)local_158);
          *(EState **)(param_1 + 0x25c) = local_158;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x60 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < (int)local_158) {
            local_150 = *(EState **)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + (int)local_150) = (char)(local_170 >> 0x18);
              local_150 = (EState *)(*(int *)(param_1 + 0x4c) + 1);
              local_170 = *(int *)(param_1 + 600) << 8;
              *(EState **)(param_1 + 0x4c) = local_150;
              *(uint *)(param_1 + 600) = local_170;
              local_158 = (EState *)(*(int *)(param_1 + 0x25c) + -8);
              *(EState **)(param_1 + 0x25c) = local_158;
            } while (7 < (int)local_158);
          }
          local_170 = iVar10 << ((' ' - (char)local_158) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 600) = local_170;
          iVar16 = (uint)(byte)EVar15 + (int)local_158;
          *(int *)(param_1 + 0x25c) = iVar16;
          uVar7 = (uint)*(ushort *)(iVar9 + 0x62 + iVar70);
          iVar10 = *(int *)(param_1 + uVar7 * 4 + iVar20);
          EVar15 = param_1[uVar7 + 4 + iVar14];
          if (7 < iVar16) {
            iVar14 = *(int *)(param_1 + 0x4c);
            do {
              *(char *)(*(int *)(param_1 + 0x2c) + iVar14) = (char)(local_170 >> 0x18);
              iVar16 = *(int *)(param_1 + 0x25c) + -8;
              iVar14 = *(int *)(param_1 + 0x4c) + 1;
              *(int *)(param_1 + 0x25c) = iVar16;
              local_170 = *(int *)(param_1 + 600) << 8;
              *(int *)(param_1 + 0x4c) = iVar14;
              *(uint *)(param_1 + 600) = local_170;
            } while (7 < iVar16);
          }
          *(uint *)(param_1 + 600) =
               iVar10 << ((' ' - (char)iVar16) - (char)EVar15 & 0x1fU) | local_170;
          *(uint *)(param_1 + 0x25c) = (uint)(byte)EVar15 + iVar16;
        }
        else if (iVar10 <= iVar19) {
          local_150 = (EState *)(iVar9 + iVar10 * 2);
          iVar14 = *(int *)(param_1 + 0x25c);
          uVar7 = *(uint *)(param_1 + 600);
          do {
            iVar10 = *(int *)(param_1 +
                             (*(ushort *)local_150 + 0x264c +
                             (uint)(byte)param_1[(int)local_154 + 0x680] * 0x102) * 4);
            EVar15 = param_1[*(ushort *)local_150 + 0x9324 +
                             (uint)(byte)param_1[(int)local_154 + 0x680] * 0x102];
            if (7 < iVar14) {
              iVar20 = *(int *)(param_1 + 0x4c);
              do {
                *(char *)(*(int *)(param_1 + 0x2c) + iVar20) = (char)(uVar7 >> 0x18);
                iVar20 = *(int *)(param_1 + 0x4c) + 1;
                uVar7 = *(int *)(param_1 + 600) << 8;
                *(int *)(param_1 + 0x4c) = iVar20;
                *(uint *)(param_1 + 600) = uVar7;
                iVar14 = *(int *)(param_1 + 0x25c) + -8;
                *(int *)(param_1 + 0x25c) = iVar14;
              } while (7 < iVar14);
            }
            local_150 = (EState *)((int)local_150 + 2);
            cVar5 = (char)iVar14;
            iVar14 = iVar14 + (uint)(byte)EVar15;
            *(int *)(param_1 + 0x25c) = iVar14;
            uVar7 = iVar10 << ((' ' - cVar5) - (char)EVar15 & 0x1fU) | uVar7;
            *(uint *)(param_1 + 600) = uVar7;
          } while (local_150 != (EState *)(iVar9 + 2 + iVar19 * 2));
        }
        local_154 = (EState *)((int)local_154 + 1);
        iVar14 = *(int *)(param_1 + 0x274);
        iVar10 = iVar19 + 1;
      } while (iVar10 < iVar14);
    }
    if (local_154 != (EState *)local_16c) {
      BZ2_bz__AssertH__fail(0xbbf);
    }
    if (2 < *(int *)(param_1 + 0x268)) {
      fprintf(_stderr,"codes %d\n",*(int *)(param_1 + 0x4c) - iVar8);
    }
  }
  if (param_2 != '\0') {
    iVar8 = *(int *)(param_1 + 0x25c);
    if (iVar8 < 8) {
      uVar7 = *(uint *)(param_1 + 600);
    }
    else {
      iVar9 = *(int *)(param_1 + 0x4c);
      uVar7 = *(uint *)(param_1 + 600);
      do {
        *(char *)(*(int *)(param_1 + 0x2c) + iVar9) = (char)(uVar7 >> 0x18);
        iVar9 = *(int *)(param_1 + 0x4c) + 1;
        uVar7 = *(int *)(param_1 + 600) << 8;
        *(int *)(param_1 + 0x4c) = iVar9;
        *(uint *)(param_1 + 600) = uVar7;
        iVar8 = *(int *)(param_1 + 0x25c) + -8;
        *(int *)(param_1 + 0x25c) = iVar8;
      } while (7 < iVar8);
    }
    iVar9 = iVar8 + 8;
    *(int *)(param_1 + 0x25c) = iVar9;
    uVar7 = 0x17 << (0x18U - (char)iVar8 & 0x1f) | uVar7;
    *(uint *)(param_1 + 600) = uVar7;
    if (7 < iVar9) {
      iVar8 = *(int *)(param_1 + 0x4c);
      do {
        *(char *)(*(int *)(param_1 + 0x2c) + iVar8) = (char)(uVar7 >> 0x18);
        iVar8 = *(int *)(param_1 + 0x4c) + 1;
        uVar7 = *(int *)(param_1 + 600) << 8;
        *(int *)(param_1 + 0x4c) = iVar8;
        *(uint *)(param_1 + 600) = uVar7;
        iVar9 = *(int *)(param_1 + 0x25c) + -8;
        *(int *)(param_1 + 0x25c) = iVar9;
      } while (7 < iVar9);
    }
    iVar8 = iVar9 + 8;
    *(int *)(param_1 + 0x25c) = iVar8;
    uVar7 = 0x72 << (0x18U - (char)iVar9 & 0x1f) | uVar7;
    *(uint *)(param_1 + 600) = uVar7;
    if (7 < iVar8) {
      iVar9 = *(int *)(param_1 + 0x4c);
      do {
        *(char *)(*(int *)(param_1 + 0x2c) + iVar9) = (char)(uVar7 >> 0x18);
        iVar9 = *(int *)(param_1 + 0x4c) + 1;
        uVar7 = *(int *)(param_1 + 600) << 8;
        *(int *)(param_1 + 0x4c) = iVar9;
        *(uint *)(param_1 + 600) = uVar7;
        iVar8 = *(int *)(param_1 + 0x25c) + -8;
        *(int *)(param_1 + 0x25c) = iVar8;
      } while (7 < iVar8);
    }
    iVar9 = iVar8 + 8;
    *(int *)(param_1 + 0x25c) = iVar9;
    uVar7 = 0x45 << (0x18U - (char)iVar8 & 0x1f) | uVar7;
    *(uint *)(param_1 + 600) = uVar7;
    if (7 < iVar9) {
      iVar8 = *(int *)(param_1 + 0x4c);
      do {
        *(char *)(*(int *)(param_1 + 0x2c) + iVar8) = (char)(uVar7 >> 0x18);
        iVar8 = *(int *)(param_1 + 0x4c) + 1;
        uVar7 = *(int *)(param_1 + 600) << 8;
        *(int *)(param_1 + 0x4c) = iVar8;
        *(uint *)(param_1 + 600) = uVar7;
        iVar9 = *(int *)(param_1 + 0x25c) + -8;
        *(int *)(param_1 + 0x25c) = iVar9;
      } while (7 < iVar9);
    }
    iVar8 = iVar9 + 8;
    *(int *)(param_1 + 0x25c) = iVar8;
    uVar7 = 0x38 << (0x18U - (char)iVar9 & 0x1f) | uVar7;
    *(uint *)(param_1 + 600) = uVar7;
    if (7 < iVar8) {
      iVar9 = *(int *)(param_1 + 0x4c);
      do {
        *(char *)(*(int *)(param_1 + 0x2c) + iVar9) = (char)(uVar7 >> 0x18);
        iVar9 = *(int *)(param_1 + 0x4c) + 1;
        uVar7 = *(int *)(param_1 + 600) << 8;
        *(int *)(param_1 + 0x4c) = iVar9;
        *(uint *)(param_1 + 600) = uVar7;
        iVar8 = *(int *)(param_1 + 0x25c) + -8;
        *(int *)(param_1 + 0x25c) = iVar8;
      } while (7 < iVar8);
    }
    iVar9 = iVar8 + 8;
    *(int *)(param_1 + 0x25c) = iVar9;
    uVar7 = 0x50 << (0x18U - (char)iVar8 & 0x1f) | uVar7;
    *(uint *)(param_1 + 600) = uVar7;
    if (7 < iVar9) {
      iVar8 = *(int *)(param_1 + 0x4c);
      do {
        *(char *)(*(int *)(param_1 + 0x2c) + iVar8) = (char)(uVar7 >> 0x18);
        iVar8 = *(int *)(param_1 + 0x4c) + 1;
        uVar7 = *(int *)(param_1 + 600) << 8;
        *(int *)(param_1 + 0x4c) = iVar8;
        *(uint *)(param_1 + 600) = uVar7;
        iVar9 = *(int *)(param_1 + 0x25c) + -8;
        *(int *)(param_1 + 0x25c) = iVar9;
      } while (7 < iVar9);
    }
    *(int *)(param_1 + 0x25c) = iVar9 + 8;
    *(uint *)(param_1 + 600) = 0x90 << (0x18U - (char)iVar9 & 0x1f) | uVar7;
    bsPutUInt32(param_1,*(uint *)(param_1 + 0x264));
    if (1 < *(int *)(param_1 + 0x268)) {
      fprintf(_stderr,"    final combined CRC = 0x%x\n   ",*(undefined4 *)(param_1 + 0x264));
    }
    if (0 < *(int *)(param_1 + 0x25c)) {
      iVar8 = *(int *)(param_1 + 0x4c);
      iVar9 = *(int *)(param_1 + 600);
      do {
        *(char *)(*(int *)(param_1 + 0x2c) + iVar8) = (char)((uint)iVar9 >> 0x18);
        iVar14 = *(int *)(param_1 + 0x25c);
        iVar8 = *(int *)(param_1 + 0x4c) + 1;
        *(int *)(param_1 + 0x4c) = iVar8;
        *(int *)(param_1 + 0x25c) = iVar14 + -8;
        iVar9 = *(int *)(param_1 + 600) << 8;
        *(int *)(param_1 + 600) = iVar9;
      } while (0 < iVar14 + -8);
    }
  }
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return;
}

SourceMod gamedata

paste into addons/sourcemod/gamedata/<your_plugin>.txt
used as the SourceMod key — change to fit your plugin's convention
SourceMod library name (server / engine / matchmaking)

Just a Signatures{} block, ready to drop into a gamedata file. Wire it up in your plugin however you like - SDKCall, DHooks, raw memory ops, or anything else.



        

        

          

Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.

Return-type handling cheatsheet (DHookReturn)