
zlib_table * zlib_mktable(uchar *lengths,int nlengths)

{
  byte bVar1;
  short sVar2;
  bool bVar3;
  undefined *puVar4;
  uint uVar5;
  zlib_table *pzVar6;
  undefined4 *puVar7;
  short *psVar8;
  byte *pbVar9;
  byte *pbVar10;
  uint *puVar11;
  uint *puVar12;
  int *piVar13;
  byte bVar14;
  undefined1 uVar15;
  int *piVar16;
  uint uVar17;
  int iVar18;
  int iVar19;
  uint uVar20;
  int *piVar21;
  int iVar22;
  uint uVar23;
  int iVar24;
  int iVar25;
  uint uVar26;
  int iVar27;
  byte *pbVar28;
  int iVar29;
  int iVar30;
  undefined *puVar31;
  code *pcVar32;
  int iStackY_674;
  uint uStackY_670;
  int aiStackY_660 [64];
  byte bStackY_560;
  byte bStackY_55f;
  byte bStackY_55e;
  zlib_table *pzStackY_55c;
  undefined *puStackY_558;
  int count [16];
  int startcode [16];
  int codes [288];
  
  puVar4 = PTR___stack_chk_guard_000adcd4;
  piVar13 = count + 1;
  piVar16 = *(int **)PTR___stack_chk_guard_000adcd4;
  piVar21 = piVar13;
  do {
    *piVar21 = 0;
    piVar21 = piVar21 + 1;
  } while (piVar21 != startcode);
  uVar17 = 0;
  if (nlengths < 1) {
    uVar23 = 0;
  }
  else {
    pbVar10 = lengths;
    do {
      uVar23 = (uint)*pbVar10;
      pbVar10 = pbVar10 + 1;
      if (uVar17 < uVar23) {
        uVar17 = uVar23;
      }
      count[uVar23] = count[uVar23] + 1;
    } while (lengths + nlengths != pbVar10);
    uVar23 = 9;
    if (uVar17 < 10) {
      uVar23 = uVar17;
    }
  }
  uVar17 = 0;
  puVar11 = (uint *)(startcode + 1);
  do {
    iVar24 = *piVar13;
    puVar12 = puVar11 + 1;
    *puVar11 = uVar17;
    piVar13 = piVar13 + 1;
    uVar17 = (uVar17 + iVar24) * 2;
    puVar11 = puVar12;
  } while (puVar12 != (uint *)codes);
  pbVar10 = lengths;
  puVar11 = (uint *)codes;
  if (0 < nlengths) {
    do {
      uVar26 = (uint)*pbVar10;
      *puVar11 = 0;
      uVar17 = startcode[uVar26];
      startcode[uVar26] = uVar17 + 1;
      if (uVar26 != 0) {
        uVar5 = 0;
        uVar20 = 0;
        do {
          uVar20 = uVar20 + 1;
          uVar5 = uVar5 << 1 | uVar17 & 1;
          uVar17 = (int)uVar17 >> 1;
        } while (uVar26 != uVar20);
        *puVar11 = uVar5;
      }
      pbVar10 = pbVar10 + 1;
      puVar11 = puVar11 + 1;
    } while (lengths + nlengths != pbVar10);
  }
  piVar21 = (int *)0x0;
  pzVar6 = zlib_mkonetab(codes,lengths,nlengths,0,0,uVar23);
  if (piVar16 == *(int **)puVar4) {
    return pzVar6;
  }
  puVar31 = PTR___stack_chk_fail_000adca4;
  (*(code *)PTR___stack_chk_fail_000adca4)();
  puVar7 = *(undefined4 **)(puVar31 + 0x3a284);
  iVar30 = *piVar16;
  puStackY_558 = puVar4;
  pzStackY_55c = (zlib_table *)*puVar7;
  iVar24 = *(int *)(&LAB_00038ff8 + iVar30);
  if (iVar24 < 4) {
    piVar13 = piVar16;
    pbVar10 = lengths;
    iVar19 = iVar24;
    if (0 < iVar24) {
      if (iVar24 + nlengths < 3) {
        iVar29 = 0;
      }
      else {
        piVar13 = *(int **)(iVar30 + 0x38000);
        pbVar28 = &bStackY_560;
        iVar29 = iVar24 + nlengths + -2;
        iVar27 = 3;
        iVar25 = 0;
        iVar19 = iVar25;
        do {
          do {
            if (iVar25 < iVar24) {
              bVar14 = *(byte *)(iVar30 + iVar25 + 0x38ff2);
            }
            else {
              bVar14 = lengths[iVar25 - iVar24];
            }
            pbVar10 = pbVar28 + iVar25;
            iVar25 = iVar25 + 1;
            *pbVar10 = bVar14;
          } while (iVar25 != iVar27);
          psVar8 = (short *)(iVar30 + (int)piVar13 * 6);
          uVar17 = ((uint)bStackY_55e * 0x10d +
                   (uint)bStackY_55f * 0x107 + (uint)bStackY_560 * 0x101) % 0x7f7;
          if (psVar8[1] == -1) {
            if (psVar8[2] != -1) {
              *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;
            }
          }
          else {
            *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;
          }
          psVar8[2] = (short)uVar17;
          psVar8[1] = -1;
          iVar25 = iVar30 + uVar17 * 2;
          sVar2 = *(short *)(iVar25 + 0x38004);
          pbVar10 = (byte *)(int)sVar2;
          *psVar8 = sVar2;
          *(short *)(iVar25 + 0x38004) = (short)piVar13;
          if (pbVar10 != (byte *)0xffffffff) {
            *(short *)(iVar30 + (int)pbVar10 * 6 + 2) = (short)piVar13;
          }
          pbVar9 = (byte *)((int)piVar13 + iVar30 + 0x30000);
          iVar25 = iVar19 + 1;
          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);
          *pbVar9 = bStackY_560;
          *(int **)(iVar30 + 0x38000) = piVar13;
          if (iVar24 == iVar25) {
            iVar19 = 0;
            goto LAB_00073c5c;
          }
          pbVar28 = pbVar28 + -1;
          iVar27 = iVar27 + 1;
          iVar19 = iVar25;
        } while (iVar25 != iVar29);
        iVar19 = iVar24 - iVar29;
      }
      pbVar28 = (byte *)(iVar30 + 0x38ff2);
      iVar25 = iVar29;
      do {
        iVar25 = iVar25 + 1;
        bVar14 = pbVar28[iVar29];
        *pbVar28 = bVar14;
        pbVar28 = pbVar28 + 1;
        piVar13 = (int *)(uint)(iVar25 < iVar24);
        pbVar10 = (byte *)(uint)bVar14;
      } while ((int *)(uint)(iVar25 < iVar24) != (int *)0x0);
    }
LAB_00073c5c:
    uVar15 = SUB41(pbVar10,0);
    *(int *)(&LAB_00038ff8 + iVar30) = iVar19;
    if (0 < nlengths) {
      iStackY_674 = 0;
      uStackY_670 = 0;
      bVar3 = nlengths < 3;
      iVar24 = 0;
      do {
        do {
          if ((piVar21 != (int *)0x0) && (!bVar3)) {
            uVar17 = (uint)*lengths;
            iVar19 = (int)*(short *)(iVar30 + (((uint)lengths[2] * 0x10d +
                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7 +
                                              0x1c000) * 2 + 4);
            if (iVar19 == -1) goto LAB_00073ca0;
            iVar27 = *(int *)(iVar30 + 0x38000);
            iVar25 = iVar19 + 0x8000;
            iVar29 = 0;
LAB_00073f34:
            do {
              uVar23 = iVar25 - iVar27 & 0x80007fff;
              if ((int)uVar23 < 0) {
                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;
              }
              iVar22 = 0x8000 - uVar23;
              iVar25 = uVar23 - 0x8000;
              uVar23 = uVar17;
              if (iVar25 < 0) goto LAB_00073f88;
              while (lengths[iVar25] == uVar23) {
                while( true ) {
                  iVar25 = iVar25 + 1;
                  if (3 - iVar22 == iVar25) {
                    iVar18 = iVar29 + 1;
                    aiStackY_660[iVar29 * 2] = iVar22;
                    aiStackY_660[iVar29 * 2 + 1] = 3;
                    if (0x1f < iVar18) goto LAB_00073fc8;
                    iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);
                    iVar25 = iVar19 + 0x8000;
                    iVar29 = iVar18;
                    if (iVar19 == -1) goto LAB_00073fc0;
                    goto LAB_00073f34;
                  }
                  uVar23 = (uint)lengths[iVar22 + iVar25];
                  if (-1 < iVar25) break;
LAB_00073f88:
                  if (*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000) != uVar23)
                  goto LAB_00073fa4;
                }
              }
LAB_00073fa4:
              iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);
              iVar25 = iVar19 + 0x8000;
              iVar18 = iVar29;
            } while (iVar19 != -1);
LAB_00073fc0:
            if (iVar18 == 0) goto LAB_00073ca0;
LAB_00073fc8:
            iVar19 = 3;
            if (nlengths != 3) {
              pbVar10 = lengths + 3;
              do {
                bVar14 = *pbVar10;
                iVar29 = iVar18 * 2;
                piVar13 = aiStackY_660;
                iVar25 = 0;
                do {
                  iVar27 = iVar19 - *piVar13;
                  if (iVar27 < 0) {
                    bVar1 = *(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &
                                               0x7fffU) + 0x30000);
                  }
                  else {
                    bVar1 = lengths[iVar27];
                  }
                  iVar18 = iVar25;
                  if (bVar1 == bVar14) {
                    iVar27 = piVar13[1];
                    iVar18 = iVar25 + 1;
                    aiStackY_660[iVar25 * 2] = *piVar13;
                    aiStackY_660[iVar25 * 2 + 1] = iVar27;
                  }
                  piVar13 = piVar13 + 2;
                  iVar25 = iVar18;
                } while (aiStackY_660 + iVar29 != piVar13);
                if (iVar18 == 0) break;
                iVar19 = iVar19 + 1;
                pbVar10 = lengths + iVar19;
              } while (iVar19 != nlengths);
            }
            piVar13 = piVar21;
            aiStackY_660[1] = iVar19;
            if (iVar24 != 0) {
              if (iVar24 + 1 < iVar19) {
                (*(code *)piVar16[2])(piVar16,uStackY_670);
                iStackY_674 = aiStackY_660[0];
                uStackY_670 = (uint)*lengths;
                break;
              }
              goto LAB_00073ca8;
            }
            iStackY_674 = aiStackY_660[0];
            uStackY_670 = uVar17;
            break;
          }
LAB_00073ca0:
          if (iVar24 == 0) {
            (*(code *)piVar16[2])(piVar16,*lengths);
            piVar13 = (int *)0x1;
            iVar19 = iVar24;
            break;
          }
LAB_00073ca8:
          (*(code *)piVar16[3])(piVar16,iStackY_674,iVar24);
          piVar13 = (int *)(iVar24 - 1);
          iVar19 = 0;
          iVar24 = 0;
        } while (piVar13 == (int *)0x0);
        uVar15 = 0xff;
        pbVar10 = lengths + (int)piVar13;
        while( true ) {
          if (bVar3) {
            iVar24 = *(int *)(&LAB_00038ff8 + iVar30);
            piVar13 = *(int **)(puVar31 + 0x39878);
            if (2 < iVar24) {
              iVar19 = 0x157;
              pbVar10 = (byte *)(*(int *)(puVar31 + 0x39878) + 0x72e0);
              piVar13 = piVar13 + 0x1cc2;
              (**(code **)(puVar31 + 0x3a0b0))();
              piVar16 = piVar21;
              goto LAB_00073c5c;
            }
            *(int *)(&LAB_00038ff8 + iVar30) = iVar24 + 1;
            *(uchar *)(iVar30 + iVar24 + 0x38ff2) = *lengths;
          }
          else {
            bVar14 = *lengths;
            piVar13 = (int *)(uint)bVar14;
            iVar24 = *(int *)(iVar30 + 0x38000);
            psVar8 = (short *)(iVar30 + iVar24 * 6);
            uVar17 = ((uint)lengths[2] * 0x10d + (uint)lengths[1] * 0x107 + (int)piVar13 * 0x101) %
                     0x7f7;
            if (psVar8[1] == -1) {
              if (psVar8[2] != -1) {
                *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;
              }
            }
            else {
              *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;
            }
            psVar8[2] = (short)uVar17;
            psVar8[1] = -1;
            iVar29 = iVar30 + uVar17 * 2;
            sVar2 = *(short *)(iVar29 + 0x38004);
            *psVar8 = sVar2;
            *(short *)(iVar29 + 0x38004) = (short)iVar24;
            if (sVar2 != -1) {
              *(short *)(iVar30 + sVar2 * 6 + 2) = (short)iVar24;
            }
            *(byte *)(iVar30 + iVar24 + 0x30000) = bVar14;
            *(uint *)(iVar30 + 0x38000) = iVar24 + 1U & 0x7fff;
          }
          if (lengths + 1 == pbVar10) break;
          nlengths = nlengths + -1;
          lengths = lengths + 1;
          bVar3 = nlengths < 3;
        }
        nlengths = nlengths + -1;
        lengths = lengths + 1;
        bVar3 = nlengths < 3;
        iVar24 = iVar19;
      } while (0 < nlengths);
    }
    pzVar6 = (zlib_table *)*puVar7;
    if (pzStackY_55c == pzVar6) {
      return pzVar6;
    }
  }
  else {
    iVar24 = *(int *)(puVar31 + 0x39878) + 0x72e0;
    piVar13 = (int *)(*(int *)(puVar31 + 0x39878) + 0x72ec);
    (**(code **)(puVar31 + 0x3a0b0))(piVar13,iVar24,0xd0,*(int *)(puVar31 + 0x39878) + 0x740c);
    uVar15 = (undefined1)iVar24;
  }
  pcVar32 = *(code **)(puVar31 + 0x3a254);
  (*pcVar32)();
  iVar24 = piVar13[0x2067];
  *(undefined1 *)((int)piVar13 + iVar24 + 0x19c) = uVar15;
  piVar13[0x2067] = iVar24 + 1U & 0x7fff;
  iVar24 = piVar13[0x2069];
  if (iVar24 < piVar13[0x206a]) {
    pzVar6 = (zlib_table *)(piVar13[0x2068] + iVar24);
    piVar13[0x2069] = iVar24 + 1;
    *(undefined1 *)&pzVar6->mask = uVar15;
    return pzVar6;
  }
  pcVar32 = *(code **)(pcVar32 + 0x391d8);
  piVar13[0x206a] = iVar24 + 0x200;
  iVar24 = (*pcVar32)(piVar13[0x2068],iVar24 + 0x200,1);
  piVar13[0x2068] = iVar24;
  pzVar6 = (zlib_table *)(iVar24 + piVar13[0x2069]);
  piVar13[0x2069] = piVar13[0x2069] + 1;
  *(undefined1 *)&pzVar6->mask = uVar15;
  return pzVar6;
}



void FUN_000738dc(byte *param_1,int param_2)

{
  byte bVar1;
  short sVar2;
  bool bVar3;
  undefined *puVar4;
  uint *puVar5;
  uint uVar6;
  int *piVar7;
  short *psVar8;
  byte *pbVar9;
  byte *pbVar10;
  uint *puVar11;
  int *piVar12;
  int *piVar13;
  byte bVar14;
  undefined1 uVar15;
  uint uVar16;
  int iVar17;
  int iVar18;
  uint *puVar19;
  uint uVar20;
  int *piVar21;
  int iVar22;
  uint uVar23;
  int iVar24;
  int iVar25;
  byte *pbVar26;
  int iVar27;
  int iVar28;
  undefined *puVar29;
  code *pcVar30;
  int iStack_674;
  uint uStack_670;
  int aiStack_660 [64];
  byte bStack_560;
  byte bStack_55f;
  byte bStack_55e;
  int iStack_55c;
  undefined *puStack_558;
  int aiStack_50c [16];
  uint auStack_4cc [16];
  uint local_48c [288];
  int *local_c;
  
  puVar4 = PTR___stack_chk_guard_000adcd4;
  puVar19 = (uint *)(aiStack_50c + 1);
  local_c = *(int **)PTR___stack_chk_guard_000adcd4;
  puVar5 = puVar19;
  do {
    *puVar5 = 0;
    puVar5 = puVar5 + 1;
  } while (puVar5 != auStack_4cc);
  uVar16 = 0;
  if (0 < param_2) {
    pbVar10 = param_1;
    do {
      uVar23 = (uint)*pbVar10;
      pbVar10 = pbVar10 + 1;
      if (uVar16 < uVar23) {
        uVar16 = uVar23;
      }
      aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1;
    } while (param_1 + param_2 != pbVar10);
  }
  uVar16 = 0;
  puVar5 = auStack_4cc + 1;
  do {
    uVar23 = *puVar19;
    puVar11 = puVar5 + 1;
    *puVar5 = uVar16;
    puVar19 = puVar19 + 1;
    uVar16 = (uVar16 + uVar23) * 2;
    puVar5 = puVar11;
  } while (puVar11 != local_48c);
  pbVar10 = param_1;
  puVar5 = local_48c;
  if (0 < param_2) {
    do {
      uVar23 = (uint)*pbVar10;
      *puVar5 = 0;
      uVar16 = auStack_4cc[uVar23];
      auStack_4cc[uVar23] = uVar16 + 1;
      if (uVar23 != 0) {
        uVar6 = 0;
        uVar20 = 0;
        do {
          uVar20 = uVar20 + 1;
          uVar6 = uVar6 << 1 | uVar16 & 1;
          uVar16 = (int)uVar16 >> 1;
        } while (uVar23 != uVar20);
        *puVar5 = uVar6;
      }
      pbVar10 = pbVar10 + 1;
      puVar5 = puVar5 + 1;
    } while (param_1 + param_2 != pbVar10);
  }
  piVar21 = (int *)0x0;
  FUN_00073648(local_48c);
  if (local_c == *(int **)puVar4) {
    return;
  }
  piVar12 = local_c;
  puVar29 = PTR___stack_chk_fail_000adca4;
  (*(code *)PTR___stack_chk_fail_000adca4)();
  piVar7 = *(int **)(puVar29 + 0x3a284);
  iVar28 = *piVar12;
  puStack_558 = puVar4;
  iStack_55c = *piVar7;
  iVar17 = *(int *)(iVar28 + 0x38ff8);
  if (iVar17 < 4) {
    piVar13 = piVar12;
    pbVar10 = param_1;
    iVar18 = iVar17;
    if (0 < iVar17) {
      if (iVar17 + param_2 < 3) {
        iVar27 = 0;
      }
      else {
        piVar13 = *(int **)(iVar28 + 0x38000);
        pbVar26 = &bStack_560;
        iVar27 = iVar17 + param_2 + -2;
        iVar25 = 3;
        iVar24 = 0;
        iVar18 = iVar24;
        do {
          do {
            if (iVar24 < iVar17) {
              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);
            }
            else {
              bVar14 = param_1[iVar24 - iVar17];
            }
            pbVar10 = pbVar26 + iVar24;
            iVar24 = iVar24 + 1;
            *pbVar10 = bVar14;
          } while (iVar24 != iVar25);
          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);
          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)
                   % 0x7f7;
          if (psVar8[1] == -1) {
            if (psVar8[2] != -1) {
              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;
            }
          }
          else {
            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;
          }
          psVar8[2] = (short)uVar16;
          psVar8[1] = -1;
          iVar24 = iVar28 + uVar16 * 2;
          sVar2 = *(short *)(iVar24 + 0x38004);
          pbVar10 = (byte *)(int)sVar2;
          *psVar8 = sVar2;
          *(short *)(iVar24 + 0x38004) = (short)piVar13;
          if (pbVar10 != (byte *)0xffffffff) {
            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;
          }
          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);
          iVar24 = iVar18 + 1;
          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);
          *pbVar9 = bStack_560;
          *(int **)(iVar28 + 0x38000) = piVar13;
          if (iVar17 == iVar24) {
            iVar18 = 0;
            goto LAB_00073c5c;
          }
          pbVar26 = pbVar26 + -1;
          iVar25 = iVar25 + 1;
          iVar18 = iVar24;
        } while (iVar24 != iVar27);
        iVar18 = iVar17 - iVar27;
      }
      pbVar26 = (byte *)(iVar28 + 0x38ff2);
      iVar24 = iVar27;
      do {
        iVar24 = iVar24 + 1;
        bVar14 = pbVar26[iVar27];
        *pbVar26 = bVar14;
        pbVar26 = pbVar26 + 1;
        piVar13 = (int *)(uint)(iVar24 < iVar17);
        pbVar10 = (byte *)(uint)bVar14;
      } while ((int *)(uint)(iVar24 < iVar17) != (int *)0x0);
    }
LAB_00073c5c:
    uVar15 = SUB41(pbVar10,0);
    *(int *)(iVar28 + 0x38ff8) = iVar18;
    if (0 < param_2) {
      iStack_674 = 0;
      uStack_670 = 0;
      bVar3 = param_2 < 3;
      iVar17 = 0;
      do {
        do {
          if ((piVar21 != (int *)0x0) && (!bVar3)) {
            uVar16 = (uint)*param_1;
            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +
                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +
                                              0x1c000) * 2 + 4);
            if (iVar18 == -1) goto LAB_00073ca0;
            iVar24 = *(int *)(iVar28 + 0x38000);
            iVar27 = 0;
            do {
              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;
              if ((int)uVar23 < 0) {
                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;
              }
              iVar22 = 0x8000 - uVar23;
              iVar25 = uVar23 - 0x8000;
              uVar23 = uVar16;
              if (iVar25 < 0) goto LAB_00073f88;
              while (param_1[iVar25] == uVar23) {
                while( true ) {
                  iVar25 = iVar25 + 1;
                  if (3 - iVar22 == iVar25) {
                    iVar25 = iVar27 + 1;
                    aiStack_660[iVar27 * 2] = iVar22;
                    aiStack_660[iVar27 * 2 + 1] = 3;
                    if (0x1f < iVar25) goto LAB_00073fc8;
                    sVar2 = *(short *)(iVar28 + iVar18 * 6);
                    goto joined_r0x00074094;
                  }
                  uVar23 = (uint)param_1[iVar22 + iVar25];
                  if (-1 < iVar25) break;
LAB_00073f88:
                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)
                  goto LAB_00073fa4;
                }
              }
LAB_00073fa4:
              sVar2 = *(short *)(iVar28 + iVar18 * 6);
              iVar25 = iVar27;
joined_r0x00074094:
              iVar18 = (int)sVar2;
              iVar27 = iVar25;
            } while (iVar18 != -1);
            if (iVar25 == 0) goto LAB_00073ca0;
LAB_00073fc8:
            iVar18 = 3;
            if (param_2 != 3) {
              pbVar10 = param_1 + 3;
              do {
                bVar14 = *pbVar10;
                iVar27 = iVar25 * 2;
                piVar13 = aiStack_660;
                iVar24 = 0;
                do {
                  iVar25 = iVar18 - *piVar13;
                  if (iVar25 < 0) {
                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &
                                               0x7fffU) + 0x30000);
                  }
                  else {
                    bVar1 = param_1[iVar25];
                  }
                  iVar25 = iVar24;
                  if (bVar1 == bVar14) {
                    iVar22 = piVar13[1];
                    iVar25 = iVar24 + 1;
                    aiStack_660[iVar24 * 2] = *piVar13;
                    aiStack_660[iVar24 * 2 + 1] = iVar22;
                  }
                  piVar13 = piVar13 + 2;
                  iVar24 = iVar25;
                } while (aiStack_660 + iVar27 != piVar13);
                if (iVar25 == 0) break;
                iVar18 = iVar18 + 1;
                pbVar10 = param_1 + iVar18;
              } while (iVar18 != param_2);
            }
            piVar13 = piVar21;
            aiStack_660[1] = iVar18;
            if (iVar17 != 0) {
              if (iVar17 + 1 < iVar18) {
                (*(code *)piVar12[2])(piVar12,uStack_670);
                iStack_674 = aiStack_660[0];
                uStack_670 = (uint)*param_1;
                break;
              }
              goto LAB_00073ca8;
            }
            iStack_674 = aiStack_660[0];
            uStack_670 = uVar16;
            break;
          }
LAB_00073ca0:
          if (iVar17 == 0) {
            (*(code *)piVar12[2])(piVar12,*param_1);
            piVar13 = (int *)0x1;
            iVar18 = iVar17;
            break;
          }
LAB_00073ca8:
          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);
          piVar13 = (int *)(iVar17 - 1);
          iVar18 = 0;
          iVar17 = 0;
        } while (piVar13 == (int *)0x0);
        uVar15 = 0xff;
        pbVar10 = param_1 + (int)piVar13;
        while( true ) {
          if (bVar3) {
            iVar17 = *(int *)(iVar28 + 0x38ff8);
            piVar13 = *(int **)(puVar29 + 0x39878);
            if (2 < iVar17) {
              iVar18 = 0x157;
              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);
              piVar13 = piVar13 + 0x1cc2;
              (**(code **)(puVar29 + 0x3a0b0))();
              piVar12 = piVar21;
              goto LAB_00073c5c;
            }
            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;
            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;
          }
          else {
            bVar14 = *param_1;
            piVar13 = (int *)(uint)bVar14;
            iVar17 = *(int *)(iVar28 + 0x38000);
            psVar8 = (short *)(iVar28 + iVar17 * 6);
            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %
                     0x7f7;
            if (psVar8[1] == -1) {
              if (psVar8[2] != -1) {
                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;
              }
            }
            else {
              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;
            }
            psVar8[2] = (short)uVar16;
            psVar8[1] = -1;
            iVar27 = iVar28 + uVar16 * 2;
            sVar2 = *(short *)(iVar27 + 0x38004);
            *psVar8 = sVar2;
            *(short *)(iVar27 + 0x38004) = (short)iVar17;
            if (sVar2 != -1) {
              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;
            }
            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;
            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;
          }
          if (param_1 + 1 == pbVar10) break;
          param_2 = param_2 + -1;
          param_1 = param_1 + 1;
          bVar3 = param_2 < 3;
        }
        param_2 = param_2 + -1;
        param_1 = param_1 + 1;
        bVar3 = param_2 < 3;
        iVar17 = iVar18;
      } while (0 < param_2);
    }
    if (iStack_55c == *piVar7) {
      return;
    }
  }
  else {
    iVar17 = *(int *)(puVar29 + 0x39878) + 0x72e0;
    piVar13 = (int *)(*(int *)(puVar29 + 0x39878) + 0x72ec);
    (**(code **)(puVar29 + 0x3a0b0))(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c);
    uVar15 = (undefined1)iVar17;
  }
  pcVar30 = *(code **)(puVar29 + 0x3a254);
  (*pcVar30)();
  iVar17 = piVar13[0x2067];
  *(undefined1 *)((int)piVar13 + iVar17 + 0x19c) = uVar15;
  piVar13[0x2067] = iVar17 + 1U & 0x7fff;
  iVar17 = piVar13[0x2069];
  if (iVar17 < piVar13[0x206a]) {
    piVar13[0x2069] = iVar17 + 1;
    *(undefined1 *)(piVar13[0x2068] + iVar17) = uVar15;
    return;
  }
  pcVar30 = *(code **)(pcVar30 + 0x391d8);
  piVar13[0x206a] = iVar17 + 0x200;
  iVar17 = (*pcVar30)(piVar13[0x2068],iVar17 + 0x200,1);
  iVar28 = piVar13[0x2069];
  piVar13[0x2068] = iVar17;
  piVar13[0x2069] = iVar28 + 1;
  *(undefined1 *)(iVar17 + iVar28) = uVar15;
  return;
}


lui gp,0x4
addiu gp,gp,0x19b4
addu gp,gp,t9
addiu sp,sp,-0x530
addiu a3,sp,0x28
sw s0,0x528(sp)
addiu v1,sp,0x64
lw s0,-0x75bc(gp)
or v0,a3,zero
sw gp,0x18(sp)
sw ra,0x52c(sp)
lw a2,0x0(s0)
sw a2,0x524(sp)
sw zero,0x0(v0)
addiu v0,v0,0x4
bne v0,v1,0x00073910
_nop
blez a1,0x00073a3c
_or a2,zero,zero
addu t2,a1,a0
or v1,a0,zero
lbu t0,0x0(v1)
addiu t3,sp,0x528
addiu v1,v1,0x1
sll v0,t0,0x2
slt t1,a2,t0
addu v0,t3,v0
movn a2,t0,t1
lw t0,-0x504(v0)
addiu t0,t0,0x1
bne t2,v1,0x00073930
_sw t0,-0x504(v0)
li v0,0x9
slti t6,a2,0xa
movn v0,a2,t6
or t6,v0,zero
addiu v1,sp,0x68
addiu t4,sp,0xa4
or v0,zero,zero
lw t0,0x0(a3)
addiu v1,v1,0x4
sw v0,-0x4(v1)
addiu a3,a3,0x4
addu v0,v0,t0
bne v1,t4,0x00073978
_sll v0,v0,0x1
blez a1,0x000739f8
_addu t5,a1,a0
or t2,a0,zero
or t3,t4,zero
lbu t1,0x0(t2)
addiu v1,sp,0x528
sw zero,0x0(t3)
sll v0,t1,0x2
addu v0,v1,v0
lw v1,-0x4c4(v0)
addiu a2,v1,0x1
beq t1,zero,0x000739ec
_sw a2,-0x4c4(v0)
or v0,zero,zero
or a3,zero,zero
sll v0,v0,0x1
addiu a3,a3,0x1
andi t0,v1,0x1
or v0,v0,t0
bne t1,a3,0x000739d0
_sra v1,v1,0x1
sw v0,0x0(t3)
addiu t2,t2,0x1
bne t5,t2,0x000739a4
_addiu t3,t3,0x4
lw t9,-0x78f8(gp)
or a3,zero,zero
or a2,a1,zero
sw t6,0x14(sp)
or a1,a0,zero
sw zero,0x10(sp)
addiu t9,t9,0x3648
bal 0x00073648
_or a0,t4,zero
lw a0,0x524(sp)
lw v1,0x0(s0)
bne a0,v1,0x00073a44
_lw gp,0x18(sp)
lw ra,0x52c(sp)
lw s0,0x528(sp)
jr ra
_addiu sp,sp,0x530
b 0x0007396c
_or t6,zero,zero
lw t9,-0x75ec(gp)
jalr t9
_nop
(translation_unit "void FUN_000738dc(byte *param_1,int param_2)\n\n{\n  byte bVar1;\n  short sVar2;\n  bool bVar3;\n  undefined *puVar4;\n  uint *puVar5;\n  uint uVar6;\n  int *piVar7;\n  short *psVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  uint *puVar11;\n  int *piVar12;\n  int *piVar13;\n  byte bVar14;\n  undefined1 uVar15;\n  uint uVar16;\n  int iVar17;\n  int iVar18;\n  uint *puVar19;\n  uint uVar20;\n  int *piVar21;\n  int iVar22;\n  uint uVar23;\n  int iVar24;\n  int iVar25;\n  byte *pbVar26;\n  int iVar27;\n  int iVar28;\n  undefined *puVar29;\n  code *pcVar30;\n  int iStack_674;\n  uint uStack_670;\n  int aiStack_660 [64];\n  byte bStack_560;\n  byte bStack_55f;\n  byte bStack_55e;\n  int iStack_55c;\n  undefined *puStack_558;\n  int aiStack_50c [16];\n  uint auStack_4cc [16];\n  uint local_48c [288];\n  int *local_c;\n  \n  puVar4 = PTR___stack_chk_guard_000adcd4;\n  puVar19 = (uint *)(aiStack_50c + 1);\n  local_c = *(int **)PTR___stack_chk_guard_000adcd4;\n  puVar5 = puVar19;\n  do {\n    *puVar5 = 0;\n    puVar5 = puVar5 + 1;\n  } while (puVar5 != auStack_4cc);\n  uVar16 = 0;\n  if (0 < param_2) {\n    pbVar10 = param_1;\n    do {\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar16 < uVar23) {\n        uVar16 = uVar23;\n      }\n      aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }\n  uVar16 = 0;\n  puVar5 = auStack_4cc + 1;\n  do {\n    uVar23 = *puVar19;\n    puVar11 = puVar5 + 1;\n    *puVar5 = uVar16;\n    puVar19 = puVar19 + 1;\n    uVar16 = (uVar16 + uVar23) * 2;\n    puVar5 = puVar11;\n  } while (puVar11 != local_48c);\n  pbVar10 = param_1;\n  puVar5 = local_48c;\n  if (0 < param_2) {\n    do {\n      uVar23 = (uint)*pbVar10;\n      *puVar5 = 0;\n      uVar16 = auStack_4cc[uVar23];\n      auStack_4cc[uVar23] = uVar16 + 1;\n      if (uVar23 != 0) {\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar5 = puVar5 + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }\n  piVar21 = (int *)0x0;\n  FUN_00073648(local_48c);\n  if (local_c == *(int **)puVar4) {\n    return;\n  }\n  piVar12 = local_c;\n  puVar29 = PTR___stack_chk_fail_000adca4;\n  (*(code *)PTR___stack_chk_fail_000adca4)();\n  piVar7 = *(int **)(puVar29 + 0x3a284);\n  iVar28 = *piVar12;\n  puStack_558 = puVar4;\n  iStack_55c = *piVar7;\n  iVar17 = *(int *)(iVar28 + 0x38ff8);\n  if (iVar17 < 4) {\n    piVar13 = piVar12;\n    pbVar10 = param_1;\n    iVar18 = iVar17;\n    if (0 < iVar17) {\n      if (iVar17 + param_2 < 3) {\n        iVar27 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }\n      pbVar26 = (byte *)(iVar28 + 0x38ff2);\n      iVar24 = iVar27;\n      do {\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar24 < iVar17) != (int *)0x0);\n    }\nLAB_00073c5c:\n    uVar15 = SUB41(pbVar10,0);\n    *(int *)(iVar28 + 0x38ff8) = iVar18;\n    if (0 < param_2) {\n      iStack_674 = 0;\n      uStack_670 = 0;\n      bVar3 = param_2 < 3;\n      iVar17 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      } while (0 < param_2);\n    }\n    if (iStack_55c == *piVar7) {\n      return;\n    }\n  }\n  else {\n    iVar17 = *(int *)(puVar29 + 0x39878) + 0x72e0;\n    piVar13 = (int *)(*(int *)(puVar29 + 0x39878) + 0x72ec);\n    (**(code **)(puVar29 + 0x3a0b0))(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c);\n    uVar15 = (undefined1)iVar17;\n  }\n  pcVar30 = *(code **)(puVar29 + 0x3a254);\n  (*pcVar30)();\n  iVar17 = piVar13[0x2067];\n  *(undefined1 *)((int)piVar13 + iVar17 + 0x19c) = uVar15;\n  piVar13[0x2067] = iVar17 + 1U & 0x7fff;\n  iVar17 = piVar13[0x2069];\n  if (iVar17 < piVar13[0x206a]) {\n    piVar13[0x2069] = iVar17 + 1;\n    *(undefined1 *)(piVar13[0x2068] + iVar17) = uVar15;\n    return;\n  }\n  pcVar30 = *(code **)(pcVar30 + 0x391d8);\n  piVar13[0x206a] = iVar17 + 0x200;\n  iVar17 = (*pcVar30)(piVar13[0x2068],iVar17 + 0x200,1);\n  iVar28 = piVar13[0x2069];\n  piVar13[0x2068] = iVar17;\n  piVar13[0x2069] = iVar28 + 1;\n  *(undefined1 *)(iVar17 + iVar28) = uVar15;\n  return;\n}\n\n" (function_definition "void FUN_000738dc(byte *param_1,int param_2)\n\n{\n  byte bVar1;\n  short sVar2;\n  bool bVar3;\n  undefined *puVar4;\n  uint *puVar5;\n  uint uVar6;\n  int *piVar7;\n  short *psVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  uint *puVar11;\n  int *piVar12;\n  int *piVar13;\n  byte bVar14;\n  undefined1 uVar15;\n  uint uVar16;\n  int iVar17;\n  int iVar18;\n  uint *puVar19;\n  uint uVar20;\n  int *piVar21;\n  int iVar22;\n  uint uVar23;\n  int iVar24;\n  int iVar25;\n  byte *pbVar26;\n  int iVar27;\n  int iVar28;\n  undefined *puVar29;\n  code *pcVar30;\n  int iStack_674;\n  uint uStack_670;\n  int aiStack_660 [64];\n  byte bStack_560;\n  byte bStack_55f;\n  byte bStack_55e;\n  int iStack_55c;\n  undefined *puStack_558;\n  int aiStack_50c [16];\n  uint auStack_4cc [16];\n  uint local_48c [288];\n  int *local_c;\n  \n  puVar4 = PTR___stack_chk_guard_000adcd4;\n  puVar19 = (uint *)(aiStack_50c + 1);\n  local_c = *(int **)PTR___stack_chk_guard_000adcd4;\n  puVar5 = puVar19;\n  do {\n    *puVar5 = 0;\n    puVar5 = puVar5 + 1;\n  } while (puVar5 != auStack_4cc);\n  uVar16 = 0;\n  if (0 < param_2) {\n    pbVar10 = param_1;\n    do {\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar16 < uVar23) {\n        uVar16 = uVar23;\n      }\n      aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }\n  uVar16 = 0;\n  puVar5 = auStack_4cc + 1;\n  do {\n    uVar23 = *puVar19;\n    puVar11 = puVar5 + 1;\n    *puVar5 = uVar16;\n    puVar19 = puVar19 + 1;\n    uVar16 = (uVar16 + uVar23) * 2;\n    puVar5 = puVar11;\n  } while (puVar11 != local_48c);\n  pbVar10 = param_1;\n  puVar5 = local_48c;\n  if (0 < param_2) {\n    do {\n      uVar23 = (uint)*pbVar10;\n      *puVar5 = 0;\n      uVar16 = auStack_4cc[uVar23];\n      auStack_4cc[uVar23] = uVar16 + 1;\n      if (uVar23 != 0) {\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar5 = puVar5 + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }\n  piVar21 = (int *)0x0;\n  FUN_00073648(local_48c);\n  if (local_c == *(int **)puVar4) {\n    return;\n  }\n  piVar12 = local_c;\n  puVar29 = PTR___stack_chk_fail_000adca4;\n  (*(code *)PTR___stack_chk_fail_000adca4)();\n  piVar7 = *(int **)(puVar29 + 0x3a284);\n  iVar28 = *piVar12;\n  puStack_558 = puVar4;\n  iStack_55c = *piVar7;\n  iVar17 = *(int *)(iVar28 + 0x38ff8);\n  if (iVar17 < 4) {\n    piVar13 = piVar12;\n    pbVar10 = param_1;\n    iVar18 = iVar17;\n    if (0 < iVar17) {\n      if (iVar17 + param_2 < 3) {\n        iVar27 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }\n      pbVar26 = (byte *)(iVar28 + 0x38ff2);\n      iVar24 = iVar27;\n      do {\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar24 < iVar17) != (int *)0x0);\n    }\nLAB_00073c5c:\n    uVar15 = SUB41(pbVar10,0);\n    *(int *)(iVar28 + 0x38ff8) = iVar18;\n    if (0 < param_2) {\n      iStack_674 = 0;\n      uStack_670 = 0;\n      bVar3 = param_2 < 3;\n      iVar17 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      } while (0 < param_2);\n    }\n    if (iStack_55c == *piVar7) {\n      return;\n    }\n  }\n  else {\n    iVar17 = *(int *)(puVar29 + 0x39878) + 0x72e0;\n    piVar13 = (int *)(*(int *)(puVar29 + 0x39878) + 0x72ec);\n    (**(code **)(puVar29 + 0x3a0b0))(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c);\n    uVar15 = (undefined1)iVar17;\n  }\n  pcVar30 = *(code **)(puVar29 + 0x3a254);\n  (*pcVar30)();\n  iVar17 = piVar13[0x2067];\n  *(undefined1 *)((int)piVar13 + iVar17 + 0x19c) = uVar15;\n  piVar13[0x2067] = iVar17 + 1U & 0x7fff;\n  iVar17 = piVar13[0x2069];\n  if (iVar17 < piVar13[0x206a]) {\n    piVar13[0x2069] = iVar17 + 1;\n    *(undefined1 *)(piVar13[0x2068] + iVar17) = uVar15;\n    return;\n  }\n  pcVar30 = *(code **)(pcVar30 + 0x391d8);\n  piVar13[0x206a] = iVar17 + 0x200;\n  iVar17 = (*pcVar30)(piVar13[0x2068],iVar17 + 0x200,1);\n  iVar28 = piVar13[0x2069];\n  piVar13[0x2068] = iVar17;\n  piVar13[0x2069] = iVar28 + 1;\n  *(undefined1 *)(iVar17 + iVar28) = uVar15;\n  return;\n}" primitive_type (function_declarator "FUN_000738dc(byte *param_1,int param_2)" identifier (parameter_list "(byte *param_1,int param_2)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  short sVar2;\n  bool bVar3;\n  undefined *puVar4;\n  uint *puVar5;\n  uint uVar6;\n  int *piVar7;\n  short *psVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  uint *puVar11;\n  int *piVar12;\n  int *piVar13;\n  byte bVar14;\n  undefined1 uVar15;\n  uint uVar16;\n  int iVar17;\n  int iVar18;\n  uint *puVar19;\n  uint uVar20;\n  int *piVar21;\n  int iVar22;\n  uint uVar23;\n  int iVar24;\n  int iVar25;\n  byte *pbVar26;\n  int iVar27;\n  int iVar28;\n  undefined *puVar29;\n  code *pcVar30;\n  int iStack_674;\n  uint uStack_670;\n  int aiStack_660 [64];\n  byte bStack_560;\n  byte bStack_55f;\n  byte bStack_55e;\n  int iStack_55c;\n  undefined *puStack_558;\n  int aiStack_50c [16];\n  uint auStack_4cc [16];\n  uint local_48c [288];\n  int *local_c;\n  \n  puVar4 = PTR___stack_chk_guard_000adcd4;\n  puVar19 = (uint *)(aiStack_50c + 1);\n  local_c = *(int **)PTR___stack_chk_guard_000adcd4;\n  puVar5 = puVar19;\n  do {\n    *puVar5 = 0;\n    puVar5 = puVar5 + 1;\n  } while (puVar5 != auStack_4cc);\n  uVar16 = 0;\n  if (0 < param_2) {\n    pbVar10 = param_1;\n    do {\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar16 < uVar23) {\n        uVar16 = uVar23;\n      }\n      aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }\n  uVar16 = 0;\n  puVar5 = auStack_4cc + 1;\n  do {\n    uVar23 = *puVar19;\n    puVar11 = puVar5 + 1;\n    *puVar5 = uVar16;\n    puVar19 = puVar19 + 1;\n    uVar16 = (uVar16 + uVar23) * 2;\n    puVar5 = puVar11;\n  } while (puVar11 != local_48c);\n  pbVar10 = param_1;\n  puVar5 = local_48c;\n  if (0 < param_2) {\n    do {\n      uVar23 = (uint)*pbVar10;\n      *puVar5 = 0;\n      uVar16 = auStack_4cc[uVar23];\n      auStack_4cc[uVar23] = uVar16 + 1;\n      if (uVar23 != 0) {\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar5 = puVar5 + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }\n  piVar21 = (int *)0x0;\n  FUN_00073648(local_48c);\n  if (local_c == *(int **)puVar4) {\n    return;\n  }\n  piVar12 = local_c;\n  puVar29 = PTR___stack_chk_fail_000adca4;\n  (*(code *)PTR___stack_chk_fail_000adca4)();\n  piVar7 = *(int **)(puVar29 + 0x3a284);\n  iVar28 = *piVar12;\n  puStack_558 = puVar4;\n  iStack_55c = *piVar7;\n  iVar17 = *(int *)(iVar28 + 0x38ff8);\n  if (iVar17 < 4) {\n    piVar13 = piVar12;\n    pbVar10 = param_1;\n    iVar18 = iVar17;\n    if (0 < iVar17) {\n      if (iVar17 + param_2 < 3) {\n        iVar27 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }\n      pbVar26 = (byte *)(iVar28 + 0x38ff2);\n      iVar24 = iVar27;\n      do {\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar24 < iVar17) != (int *)0x0);\n    }\nLAB_00073c5c:\n    uVar15 = SUB41(pbVar10,0);\n    *(int *)(iVar28 + 0x38ff8) = iVar18;\n    if (0 < param_2) {\n      iStack_674 = 0;\n      uStack_670 = 0;\n      bVar3 = param_2 < 3;\n      iVar17 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      } while (0 < param_2);\n    }\n    if (iStack_55c == *piVar7) {\n      return;\n    }\n  }\n  else {\n    iVar17 = *(int *)(puVar29 + 0x39878) + 0x72e0;\n    piVar13 = (int *)(*(int *)(puVar29 + 0x39878) + 0x72ec);\n    (**(code **)(puVar29 + 0x3a0b0))(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c);\n    uVar15 = (undefined1)iVar17;\n  }\n  pcVar30 = *(code **)(puVar29 + 0x3a254);\n  (*pcVar30)();\n  iVar17 = piVar13[0x2067];\n  *(undefined1 *)((int)piVar13 + iVar17 + 0x19c) = uVar15;\n  piVar13[0x2067] = iVar17 + 1U & 0x7fff;\n  iVar17 = piVar13[0x2069];\n  if (iVar17 < piVar13[0x206a]) {\n    piVar13[0x2069] = iVar17 + 1;\n    *(undefined1 *)(piVar13[0x2068] + iVar17) = uVar15;\n    return;\n  }\n  pcVar30 = *(code **)(pcVar30 + 0x391d8);\n  piVar13[0x206a] = iVar17 + 0x200;\n  iVar17 = (*pcVar30)(piVar13[0x2068],iVar17 + 0x200,1);\n  iVar28 = piVar13[0x2069];\n  piVar13[0x2068] = iVar17;\n  piVar13[0x2069] = iVar28 + 1;\n  *(undefined1 *)(iVar17 + iVar28) = uVar15;\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "short sVar2;" (sized_type_specifier "short" short) identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "short *psVar8;" (sized_type_specifier "short" short) (pointer_declarator "*psVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "byte bVar14;" type_identifier identifier ;) (declaration "undefined1 uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "uint *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "int *piVar21;" primitive_type (pointer_declarator "*piVar21" * identifier) ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "int iVar25;" primitive_type identifier ;) (declaration "byte *pbVar26;" type_identifier (pointer_declarator "*pbVar26" * identifier) ;) (declaration "int iVar27;" primitive_type identifier ;) (declaration "int iVar28;" primitive_type identifier ;) (declaration "undefined *puVar29;" type_identifier (pointer_declarator "*puVar29" * identifier) ;) (declaration "code *pcVar30;" type_identifier (pointer_declarator "*pcVar30" * identifier) ;) (declaration "int iStack_674;" primitive_type identifier ;) (declaration "uint uStack_670;" type_identifier identifier ;) (declaration "int aiStack_660 [64];" primitive_type (array_declarator "aiStack_660 [64]" identifier [ number_literal ]) ;) (declaration "byte bStack_560;" type_identifier identifier ;) (declaration "byte bStack_55f;" type_identifier identifier ;) (declaration "byte bStack_55e;" type_identifier identifier ;) (declaration "int iStack_55c;" primitive_type identifier ;) (declaration "undefined *puStack_558;" type_identifier (pointer_declarator "*puStack_558" * identifier) ;) (declaration "int aiStack_50c [16];" primitive_type (array_declarator "aiStack_50c [16]" identifier [ number_literal ]) ;) (declaration "uint auStack_4cc [16];" type_identifier (array_declarator "auStack_4cc [16]" identifier [ number_literal ]) ;) (declaration "uint local_48c [288];" type_identifier (array_declarator "local_48c [288]" identifier [ number_literal ]) ;) (declaration "int *local_c;" primitive_type (pointer_declarator "*local_c" * identifier) ;) (expression_statement "puVar4 = PTR___stack_chk_guard_000adcd4;" (assignment_expression "puVar4 = PTR___stack_chk_guard_000adcd4" identifier = identifier) ;) (expression_statement "puVar19 = (uint *)(aiStack_50c + 1);" (assignment_expression "puVar19 = (uint *)(aiStack_50c + 1)" identifier = (cast_expression "(uint *)(aiStack_50c + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(aiStack_50c + 1)" ( (binary_expression "aiStack_50c + 1" identifier + number_literal) )))) ;) (expression_statement "local_c = *(int **)PTR___stack_chk_guard_000adcd4;" (assignment_expression "local_c = *(int **)PTR___stack_chk_guard_000adcd4" identifier = (pointer_expression "*(int **)PTR___stack_chk_guard_000adcd4" * (cast_expression "(int **)PTR___stack_chk_guard_000adcd4" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "puVar5 = puVar19;" (assignment_expression "puVar5 = puVar19" identifier = identifier) ;) (do_statement "do {\n    *puVar5 = 0;\n    puVar5 = puVar5 + 1;\n  } while (puVar5 != auStack_4cc);" do (compound_statement "{\n    *puVar5 = 0;\n    puVar5 = puVar5 + 1;\n  }" { (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar5 != auStack_4cc)" ( (binary_expression "puVar5 != auStack_4cc" identifier != identifier) )) ;) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (if_statement "if (0 < param_2) {\n    pbVar10 = param_1;\n    do {\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar16 < uVar23) {\n        uVar16 = uVar23;\n      }\n      aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }" if (parenthesized_expression "(0 < param_2)" ( (binary_expression "0 < param_2" number_literal < identifier) )) (compound_statement "{\n    pbVar10 = param_1;\n    do {\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar16 < uVar23) {\n        uVar16 = uVar23;\n      }\n      aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }" { (expression_statement "pbVar10 = param_1;" (assignment_expression "pbVar10 = param_1" identifier = identifier) ;) (do_statement "do {\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar16 < uVar23) {\n        uVar16 = uVar23;\n      }\n      aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1;\n    } while (param_1 + param_2 != pbVar10);" do (compound_statement "{\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar16 < uVar23) {\n        uVar16 = uVar23;\n      }\n      aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1;\n    }" { (expression_statement "uVar23 = (uint)*pbVar10;" (assignment_expression "uVar23 = (uint)*pbVar10" identifier = (binary_expression "(uint)*pbVar10" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (if_statement "if (uVar16 < uVar23) {\n        uVar16 = uVar23;\n      }" if (parenthesized_expression "(uVar16 < uVar23)" ( (binary_expression "uVar16 < uVar23" identifier < identifier) )) (compound_statement "{\n        uVar16 = uVar23;\n      }" { (expression_statement "uVar16 = uVar23;" (assignment_expression "uVar16 = uVar23" identifier = identifier) ;) })) (expression_statement "aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1;" (assignment_expression "aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1" (subscript_expression "aiStack_50c[uVar23]" identifier [ identifier ]) = (binary_expression "aiStack_50c[uVar23] + 1" (subscript_expression "aiStack_50c[uVar23]" identifier [ identifier ]) + number_literal)) ;) }) while (parenthesized_expression "(param_1 + param_2 != pbVar10)" ( (binary_expression "param_1 + param_2 != pbVar10" (binary_expression "param_1 + param_2" identifier + identifier) != identifier) )) ;) })) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (expression_statement "puVar5 = auStack_4cc + 1;" (assignment_expression "puVar5 = auStack_4cc + 1" identifier = (binary_expression "auStack_4cc + 1" identifier + number_literal)) ;) (do_statement "do {\n    uVar23 = *puVar19;\n    puVar11 = puVar5 + 1;\n    *puVar5 = uVar16;\n    puVar19 = puVar19 + 1;\n    uVar16 = (uVar16 + uVar23) * 2;\n    puVar5 = puVar11;\n  } while (puVar11 != local_48c);" do (compound_statement "{\n    uVar23 = *puVar19;\n    puVar11 = puVar5 + 1;\n    *puVar5 = uVar16;\n    puVar19 = puVar19 + 1;\n    uVar16 = (uVar16 + uVar23) * 2;\n    puVar5 = puVar11;\n  }" { (expression_statement "uVar23 = *puVar19;" (assignment_expression "uVar23 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) (expression_statement "puVar11 = puVar5 + 1;" (assignment_expression "puVar11 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "*puVar5 = uVar16;" (assignment_expression "*puVar5 = uVar16" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) (expression_statement "uVar16 = (uVar16 + uVar23) * 2;" (assignment_expression "uVar16 = (uVar16 + uVar23) * 2" identifier = (binary_expression "(uVar16 + uVar23) * 2" (parenthesized_expression "(uVar16 + uVar23)" ( (binary_expression "uVar16 + uVar23" identifier + identifier) )) * number_literal)) ;) (expression_statement "puVar5 = puVar11;" (assignment_expression "puVar5 = puVar11" identifier = identifier) ;) }) while (parenthesized_expression "(puVar11 != local_48c)" ( (binary_expression "puVar11 != local_48c" identifier != identifier) )) ;) (expression_statement "pbVar10 = param_1;" (assignment_expression "pbVar10 = param_1" identifier = identifier) ;) (expression_statement "puVar5 = local_48c;" (assignment_expression "puVar5 = local_48c" identifier = identifier) ;) (if_statement "if (0 < param_2) {\n    do {\n      uVar23 = (uint)*pbVar10;\n      *puVar5 = 0;\n      uVar16 = auStack_4cc[uVar23];\n      auStack_4cc[uVar23] = uVar16 + 1;\n      if (uVar23 != 0) {\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar5 = puVar5 + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }" if (parenthesized_expression "(0 < param_2)" ( (binary_expression "0 < param_2" number_literal < identifier) )) (compound_statement "{\n    do {\n      uVar23 = (uint)*pbVar10;\n      *puVar5 = 0;\n      uVar16 = auStack_4cc[uVar23];\n      auStack_4cc[uVar23] = uVar16 + 1;\n      if (uVar23 != 0) {\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar5 = puVar5 + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }" { (do_statement "do {\n      uVar23 = (uint)*pbVar10;\n      *puVar5 = 0;\n      uVar16 = auStack_4cc[uVar23];\n      auStack_4cc[uVar23] = uVar16 + 1;\n      if (uVar23 != 0) {\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar5 = puVar5 + 1;\n    } while (param_1 + param_2 != pbVar10);" do (compound_statement "{\n      uVar23 = (uint)*pbVar10;\n      *puVar5 = 0;\n      uVar16 = auStack_4cc[uVar23];\n      auStack_4cc[uVar23] = uVar16 + 1;\n      if (uVar23 != 0) {\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar5 = puVar5 + 1;\n    }" { (expression_statement "uVar23 = (uint)*pbVar10;" (assignment_expression "uVar23 = (uint)*pbVar10" identifier = (binary_expression "(uint)*pbVar10" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "uVar16 = auStack_4cc[uVar23];" (assignment_expression "uVar16 = auStack_4cc[uVar23]" identifier = (subscript_expression "auStack_4cc[uVar23]" identifier [ identifier ])) ;) (expression_statement "auStack_4cc[uVar23] = uVar16 + 1;" (assignment_expression "auStack_4cc[uVar23] = uVar16 + 1" (subscript_expression "auStack_4cc[uVar23]" identifier [ identifier ]) = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (if_statement "if (uVar23 != 0) {\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }" if (parenthesized_expression "(uVar23 != 0)" ( (binary_expression "uVar23 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);" do (compound_statement "{\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        }" { (expression_statement "uVar20 = uVar20 + 1;" (assignment_expression "uVar20 = uVar20 + 1" identifier = (binary_expression "uVar20 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar6 << 1 | uVar16 & 1;" (assignment_expression "uVar6 = uVar6 << 1 | uVar16 & 1" identifier = (binary_expression "uVar6 << 1 | uVar16 & 1" (binary_expression "uVar6 << 1" identifier << number_literal) | (binary_expression "uVar16 & 1" identifier & number_literal))) ;) (expression_statement "uVar16 = (int)uVar16 >> 1;" (assignment_expression "uVar16 = (int)uVar16 >> 1" identifier = (binary_expression "(int)uVar16 >> 1" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) }) while (parenthesized_expression "(uVar23 != uVar20)" ( (binary_expression "uVar23 != uVar20" identifier != identifier) )) ;) (expression_statement "*puVar5 = uVar6;" (assignment_expression "*puVar5 = uVar6" (pointer_expression "*puVar5" * identifier) = identifier) ;) })) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_1 + param_2 != pbVar10)" ( (binary_expression "param_1 + param_2 != pbVar10" (binary_expression "param_1 + param_2" identifier + identifier) != identifier) )) ;) })) (expression_statement "piVar21 = (int *)0x0;" (assignment_expression "piVar21 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "FUN_00073648(local_48c);" (call_expression "FUN_00073648(local_48c)" identifier (argument_list "(local_48c)" ( identifier ))) ;) (if_statement "if (local_c == *(int **)puVar4) {\n    return;\n  }" if (parenthesized_expression "(local_c == *(int **)puVar4)" ( (binary_expression "local_c == *(int **)puVar4" identifier == (pointer_expression "*(int **)puVar4" * (cast_expression "(int **)puVar4" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "piVar12 = local_c;" (assignment_expression "piVar12 = local_c" identifier = identifier) ;) (expression_statement "puVar29 = PTR___stack_chk_fail_000adca4;" (assignment_expression "puVar29 = PTR___stack_chk_fail_000adca4" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000adca4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000adca4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000adca4)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000adca4" * (cast_expression "(code *)PTR___stack_chk_fail_000adca4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar7 = *(int **)(puVar29 + 0x3a284);" (assignment_expression "piVar7 = *(int **)(puVar29 + 0x3a284)" identifier = (pointer_expression "*(int **)(puVar29 + 0x3a284)" * (cast_expression "(int **)(puVar29 + 0x3a284)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x3a284)" ( (binary_expression "puVar29 + 0x3a284" identifier + number_literal) ))))) ;) (expression_statement "iVar28 = *piVar12;" (assignment_expression "iVar28 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (expression_statement "puStack_558 = puVar4;" (assignment_expression "puStack_558 = puVar4" identifier = identifier) ;) (expression_statement "iStack_55c = *piVar7;" (assignment_expression "iStack_55c = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "iVar17 = *(int *)(iVar28 + 0x38ff8);" (assignment_expression "iVar17 = *(int *)(iVar28 + 0x38ff8)" identifier = (pointer_expression "*(int *)(iVar28 + 0x38ff8)" * (cast_expression "(int *)(iVar28 + 0x38ff8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x38ff8)" ( (binary_expression "iVar28 + 0x38ff8" identifier + number_literal) ))))) ;) (if_statement "if (iVar17 < 4) {\n    piVar13 = piVar12;\n    pbVar10 = param_1;\n    iVar18 = iVar17;\n    if (0 < iVar17) {\n      if (iVar17 + param_2 < 3) {\n        iVar27 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }\n      pbVar26 = (byte *)(iVar28 + 0x38ff2);\n      iVar24 = iVar27;\n      do {\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar24 < iVar17) != (int *)0x0);\n    }\nLAB_00073c5c:\n    uVar15 = SUB41(pbVar10,0);\n    *(int *)(iVar28 + 0x38ff8) = iVar18;\n    if (0 < param_2) {\n      iStack_674 = 0;\n      uStack_670 = 0;\n      bVar3 = param_2 < 3;\n      iVar17 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      } while (0 < param_2);\n    }\n    if (iStack_55c == *piVar7) {\n      return;\n    }\n  }\n  else {\n    iVar17 = *(int *)(puVar29 + 0x39878) + 0x72e0;\n    piVar13 = (int *)(*(int *)(puVar29 + 0x39878) + 0x72ec);\n    (**(code **)(puVar29 + 0x3a0b0))(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c);\n    uVar15 = (undefined1)iVar17;\n  }" if (parenthesized_expression "(iVar17 < 4)" ( (binary_expression "iVar17 < 4" identifier < number_literal) )) (compound_statement "{\n    piVar13 = piVar12;\n    pbVar10 = param_1;\n    iVar18 = iVar17;\n    if (0 < iVar17) {\n      if (iVar17 + param_2 < 3) {\n        iVar27 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }\n      pbVar26 = (byte *)(iVar28 + 0x38ff2);\n      iVar24 = iVar27;\n      do {\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar24 < iVar17) != (int *)0x0);\n    }\nLAB_00073c5c:\n    uVar15 = SUB41(pbVar10,0);\n    *(int *)(iVar28 + 0x38ff8) = iVar18;\n    if (0 < param_2) {\n      iStack_674 = 0;\n      uStack_670 = 0;\n      bVar3 = param_2 < 3;\n      iVar17 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      } while (0 < param_2);\n    }\n    if (iStack_55c == *piVar7) {\n      return;\n    }\n  }" { (expression_statement "piVar13 = piVar12;" (assignment_expression "piVar13 = piVar12" identifier = identifier) ;) (expression_statement "pbVar10 = param_1;" (assignment_expression "pbVar10 = param_1" identifier = identifier) ;) (expression_statement "iVar18 = iVar17;" (assignment_expression "iVar18 = iVar17" identifier = identifier) ;) (if_statement "if (0 < iVar17) {\n      if (iVar17 + param_2 < 3) {\n        iVar27 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }\n      pbVar26 = (byte *)(iVar28 + 0x38ff2);\n      iVar24 = iVar27;\n      do {\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar24 < iVar17) != (int *)0x0);\n    }" if (parenthesized_expression "(0 < iVar17)" ( (binary_expression "0 < iVar17" number_literal < identifier) )) (compound_statement "{\n      if (iVar17 + param_2 < 3) {\n        iVar27 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }\n      pbVar26 = (byte *)(iVar28 + 0x38ff2);\n      iVar24 = iVar27;\n      do {\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar24 < iVar17) != (int *)0x0);\n    }" { (if_statement "if (iVar17 + param_2 < 3) {\n        iVar27 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }" if (parenthesized_expression "(iVar17 + param_2 < 3)" ( (binary_expression "iVar17 + param_2 < 3" (binary_expression "iVar17 + param_2" identifier + identifier) < number_literal) )) (compound_statement "{\n        iVar27 = 0;\n      }" { (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }" else (compound_statement "{\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }" { (expression_statement "piVar13 = *(int **)(iVar28 + 0x38000);" (assignment_expression "piVar13 = *(int **)(iVar28 + 0x38000)" identifier = (pointer_expression "*(int **)(iVar28 + 0x38000)" * (cast_expression "(int **)(iVar28 + 0x38000)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar28 + 0x38000)" ( (binary_expression "iVar28 + 0x38000" identifier + number_literal) ))))) ;) (expression_statement "pbVar26 = &bStack_560;" (assignment_expression "pbVar26 = &bStack_560" identifier = (pointer_expression "&bStack_560" & identifier)) ;) (expression_statement "iVar27 = iVar17 + param_2 + -2;" (assignment_expression "iVar27 = iVar17 + param_2 + -2" identifier = (binary_expression "iVar17 + param_2 + -2" (binary_expression "iVar17 + param_2" identifier + identifier) + number_literal)) ;) (expression_statement "iVar25 = 3;" (assignment_expression "iVar25 = 3" identifier = number_literal) ;) (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) (expression_statement "iVar18 = iVar24;" (assignment_expression "iVar18 = iVar24" identifier = identifier) ;) (do_statement "do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);" do (compound_statement "{\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        }" { (do_statement "do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);" do (compound_statement "{\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          }" { (if_statement "if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }" if (parenthesized_expression "(iVar24 < iVar17)" ( (binary_expression "iVar24 < iVar17" identifier < identifier) )) (compound_statement "{\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }" { (expression_statement "bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);" (assignment_expression "bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2)" identifier = (pointer_expression "*(byte *)(iVar28 + iVar24 + 0x38ff2)" * (cast_expression "(byte *)(iVar28 + iVar24 + 0x38ff2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + iVar24 + 0x38ff2)" ( (binary_expression "iVar28 + iVar24 + 0x38ff2" (binary_expression "iVar28 + iVar24" identifier + identifier) + number_literal) ))))) ;) }) (else_clause "else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }" else (compound_statement "{\n              bVar14 = param_1[iVar24 - iVar17];\n            }" { (expression_statement "bVar14 = param_1[iVar24 - iVar17];" (assignment_expression "bVar14 = param_1[iVar24 - iVar17]" identifier = (subscript_expression "param_1[iVar24 - iVar17]" identifier [ (binary_expression "iVar24 - iVar17" identifier - identifier) ])) ;) }))) (expression_statement "pbVar10 = pbVar26 + iVar24;" (assignment_expression "pbVar10 = pbVar26 + iVar24" identifier = (binary_expression "pbVar26 + iVar24" identifier + identifier)) ;) (expression_statement "iVar24 = iVar24 + 1;" (assignment_expression "iVar24 = iVar24 + 1" identifier = (binary_expression "iVar24 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar10 = bVar14;" (assignment_expression "*pbVar10 = bVar14" (pointer_expression "*pbVar10" * identifier) = identifier) ;) }) while (parenthesized_expression "(iVar24 != iVar25)" ( (binary_expression "iVar24 != iVar25" identifier != identifier) )) ;) (expression_statement "psVar8 = (short *)(iVar28 + (int)piVar13 * 6);" (assignment_expression "psVar8 = (short *)(iVar28 + (int)piVar13 * 6)" identifier = (cast_expression "(short *)(iVar28 + (int)piVar13 * 6)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + (int)piVar13 * 6)" ( (binary_expression "iVar28 + (int)piVar13 * 6" identifier + (binary_expression "(int)piVar13 * 6" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (expression_statement "uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;" (assignment_expression "uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7" identifier = (binary_expression "((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7" (parenthesized_expression "((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)" ( (binary_expression "(uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101" (binary_expression "(uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107" (binary_expression "(uint)bStack_55e * 0x10d" (cast_expression "(uint)bStack_55e" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + (binary_expression "(uint)bStack_55f * 0x107" (cast_expression "(uint)bStack_55f" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + (binary_expression "(uint)bStack_560 * 0x101" (cast_expression "(uint)bStack_560" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )) % number_literal)) ;) (if_statement "if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }" if (parenthesized_expression "(psVar8[1] == -1)" ( (binary_expression "psVar8[1] == -1" (subscript_expression "psVar8[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }" { (if_statement "if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }" if (parenthesized_expression "(psVar8[2] != -1)" ( (binary_expression "psVar8[2] != -1" (subscript_expression "psVar8[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }" { (expression_statement "*(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;" (assignment_expression "*(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff" (pointer_expression "*(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4)" * (cast_expression "(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4)" ( (binary_expression "iVar28 + (psVar8[2] + 0x1c000) * 2 + 4" (binary_expression "iVar28 + (psVar8[2] + 0x1c000) * 2" identifier + (binary_expression "(psVar8[2] + 0x1c000) * 2" (parenthesized_expression "(psVar8[2] + 0x1c000)" ( (binary_expression "psVar8[2] + 0x1c000" (subscript_expression "psVar8[2]" identifier [ number_literal ]) + number_literal) )) * number_literal)) + number_literal) )))) = number_literal) ;) })) }) (else_clause "else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }" else (compound_statement "{\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }" { (expression_statement "*(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;" (assignment_expression "*(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff" (pointer_expression "*(undefined2 *)(iVar28 + psVar8[1] * 6)" * (cast_expression "(undefined2 *)(iVar28 + psVar8[1] * 6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + psVar8[1] * 6)" ( (binary_expression "iVar28 + psVar8[1] * 6" identifier + (binary_expression "psVar8[1] * 6" (subscript_expression "psVar8[1]" identifier [ number_literal ]) * number_literal)) )))) = number_literal) ;) }))) (expression_statement "psVar8[2] = (short)uVar16;" (assignment_expression "psVar8[2] = (short)uVar16" (subscript_expression "psVar8[2]" identifier [ number_literal ]) = (cast_expression "(short)uVar16" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "psVar8[1] = -1;" (assignment_expression "psVar8[1] = -1" (subscript_expression "psVar8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar24 = iVar28 + uVar16 * 2;" (assignment_expression "iVar24 = iVar28 + uVar16 * 2" identifier = (binary_expression "iVar28 + uVar16 * 2" identifier + (binary_expression "uVar16 * 2" identifier * number_literal))) ;) (expression_statement "sVar2 = *(short *)(iVar24 + 0x38004);" (assignment_expression "sVar2 = *(short *)(iVar24 + 0x38004)" identifier = (pointer_expression "*(short *)(iVar24 + 0x38004)" * (cast_expression "(short *)(iVar24 + 0x38004)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 0x38004)" ( (binary_expression "iVar24 + 0x38004" identifier + number_literal) ))))) ;) (expression_statement "pbVar10 = (byte *)(int)sVar2;" (assignment_expression "pbVar10 = (byte *)(int)sVar2" identifier = (cast_expression "(byte *)(int)sVar2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)sVar2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*psVar8 = sVar2;" (assignment_expression "*psVar8 = sVar2" (pointer_expression "*psVar8" * identifier) = identifier) ;) (expression_statement "*(short *)(iVar24 + 0x38004) = (short)piVar13;" (assignment_expression "*(short *)(iVar24 + 0x38004) = (short)piVar13" (pointer_expression "*(short *)(iVar24 + 0x38004)" * (cast_expression "(short *)(iVar24 + 0x38004)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 0x38004)" ( (binary_expression "iVar24 + 0x38004" identifier + number_literal) )))) = (cast_expression "(short)piVar13" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (if_statement "if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }" if (parenthesized_expression "(pbVar10 != (byte *)0xffffffff)" ( (binary_expression "pbVar10 != (byte *)0xffffffff" identifier != (cast_expression "(byte *)0xffffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }" { (expression_statement "*(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;" (assignment_expression "*(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13" (pointer_expression "*(short *)(iVar28 + (int)pbVar10 * 6 + 2)" * (cast_expression "(short *)(iVar28 + (int)pbVar10 * 6 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + (int)pbVar10 * 6 + 2)" ( (binary_expression "iVar28 + (int)pbVar10 * 6 + 2" (binary_expression "iVar28 + (int)pbVar10 * 6" identifier + (binary_expression "(int)pbVar10 * 6" (cast_expression "(int)pbVar10" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) )))) = (cast_expression "(short)piVar13" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) })) (expression_statement "pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);" (assignment_expression "pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000)" identifier = (cast_expression "(byte *)((int)piVar13 + iVar28 + 0x30000)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar13 + iVar28 + 0x30000)" ( (binary_expression "(int)piVar13 + iVar28 + 0x30000" (binary_expression "(int)piVar13 + iVar28" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "iVar24 = iVar18 + 1;" (assignment_expression "iVar24 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);" (assignment_expression "piVar13 = (int *)((int)piVar13 + 1U & 0x7fff)" identifier = (cast_expression "(int *)((int)piVar13 + 1U & 0x7fff)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar13 + 1U & 0x7fff)" ( (binary_expression "(int)piVar13 + 1U & 0x7fff" (binary_expression "(int)piVar13 + 1U" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) & number_literal) )))) ;) (expression_statement "*pbVar9 = bStack_560;" (assignment_expression "*pbVar9 = bStack_560" (pointer_expression "*pbVar9" * identifier) = identifier) ;) (expression_statement "*(int **)(iVar28 + 0x38000) = piVar13;" (assignment_expression "*(int **)(iVar28 + 0x38000) = piVar13" (pointer_expression "*(int **)(iVar28 + 0x38000)" * (cast_expression "(int **)(iVar28 + 0x38000)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar28 + 0x38000)" ( (binary_expression "iVar28 + 0x38000" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }" if (parenthesized_expression "(iVar17 == iVar24)" ( (binary_expression "iVar17 == iVar24" identifier == identifier) )) (compound_statement "{\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }" { (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00073c5c;" goto statement_identifier ;) })) (expression_statement "pbVar26 = pbVar26 + -1;" (assignment_expression "pbVar26 = pbVar26 + -1" identifier = (binary_expression "pbVar26 + -1" identifier + number_literal)) ;) (expression_statement "iVar25 = iVar25 + 1;" (assignment_expression "iVar25 = iVar25 + 1" identifier = (binary_expression "iVar25 + 1" identifier + number_literal)) ;) (expression_statement "iVar18 = iVar24;" (assignment_expression "iVar18 = iVar24" identifier = identifier) ;) }) while (parenthesized_expression "(iVar24 != iVar27)" ( (binary_expression "iVar24 != iVar27" identifier != identifier) )) ;) (expression_statement "iVar18 = iVar17 - iVar27;" (assignment_expression "iVar18 = iVar17 - iVar27" identifier = (binary_expression "iVar17 - iVar27" identifier - identifier)) ;) }))) (expression_statement "pbVar26 = (byte *)(iVar28 + 0x38ff2);" (assignment_expression "pbVar26 = (byte *)(iVar28 + 0x38ff2)" identifier = (cast_expression "(byte *)(iVar28 + 0x38ff2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x38ff2)" ( (binary_expression "iVar28 + 0x38ff2" identifier + number_literal) )))) ;) (expression_statement "iVar24 = iVar27;" (assignment_expression "iVar24 = iVar27" identifier = identifier) ;) (do_statement "do {\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar24 < iVar17) != (int *)0x0);" do (compound_statement "{\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      }" { (expression_statement "iVar24 = iVar24 + 1;" (assignment_expression "iVar24 = iVar24 + 1" identifier = (binary_expression "iVar24 + 1" identifier + number_literal)) ;) (expression_statement "bVar14 = pbVar26[iVar27];" (assignment_expression "bVar14 = pbVar26[iVar27]" identifier = (subscript_expression "pbVar26[iVar27]" identifier [ identifier ])) ;) (expression_statement "*pbVar26 = bVar14;" (assignment_expression "*pbVar26 = bVar14" (pointer_expression "*pbVar26" * identifier) = identifier) ;) (expression_statement "pbVar26 = pbVar26 + 1;" (assignment_expression "pbVar26 = pbVar26 + 1" identifier = (binary_expression "pbVar26 + 1" identifier + number_literal)) ;) (expression_statement "piVar13 = (int *)(uint)(iVar24 < iVar17);" (assignment_expression "piVar13 = (int *)(uint)(iVar24 < iVar17)" identifier = (cast_expression "(int *)(uint)(iVar24 < iVar17)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar24 < iVar17)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar24 < iVar17)" ( (binary_expression "iVar24 < iVar17" identifier < identifier) ))))) ;) (expression_statement "pbVar10 = (byte *)(uint)bVar14;" (assignment_expression "pbVar10 = (byte *)(uint)bVar14" identifier = (cast_expression "(byte *)(uint)bVar14" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((int *)(uint)(iVar24 < iVar17) != (int *)0x0)" ( (binary_expression "(int *)(uint)(iVar24 < iVar17) != (int *)0x0" (cast_expression "(int *)(uint)(iVar24 < iVar17)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar24 < iVar17)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar24 < iVar17)" ( (binary_expression "iVar24 < iVar17" identifier < identifier) )))) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (labeled_statement "LAB_00073c5c:\n    uVar15 = SUB41(pbVar10,0);" statement_identifier : (expression_statement "uVar15 = SUB41(pbVar10,0);" (assignment_expression "uVar15 = SUB41(pbVar10,0)" identifier = (call_expression "SUB41(pbVar10,0)" identifier (argument_list "(pbVar10,0)" ( identifier , number_literal )))) ;)) (expression_statement "*(int *)(iVar28 + 0x38ff8) = iVar18;" (assignment_expression "*(int *)(iVar28 + 0x38ff8) = iVar18" (pointer_expression "*(int *)(iVar28 + 0x38ff8)" * (cast_expression "(int *)(iVar28 + 0x38ff8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x38ff8)" ( (binary_expression "iVar28 + 0x38ff8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (0 < param_2) {\n      iStack_674 = 0;\n      uStack_670 = 0;\n      bVar3 = param_2 < 3;\n      iVar17 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      } while (0 < param_2);\n    }" if (parenthesized_expression "(0 < param_2)" ( (binary_expression "0 < param_2" number_literal < identifier) )) (compound_statement "{\n      iStack_674 = 0;\n      uStack_670 = 0;\n      bVar3 = param_2 < 3;\n      iVar17 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      } while (0 < param_2);\n    }" { (expression_statement "iStack_674 = 0;" (assignment_expression "iStack_674 = 0" identifier = number_literal) ;) (expression_statement "uStack_670 = 0;" (assignment_expression "uStack_670 = 0" identifier = number_literal) ;) (expression_statement "bVar3 = param_2 < 3;" (assignment_expression "bVar3 = param_2 < 3" identifier = (binary_expression "param_2 < 3" identifier < number_literal)) ;) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      } while (0 < param_2);" do (compound_statement "{\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      }" { (do_statement "do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);" do (compound_statement "{\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        }" { (if_statement "if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }" if (parenthesized_expression "((piVar21 != (int *)0x0) && (!bVar3))" ( (binary_expression "(piVar21 != (int *)0x0) && (!bVar3)" (parenthesized_expression "(piVar21 != (int *)0x0)" ( (binary_expression "piVar21 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) ))) )) (compound_statement "{\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }" { (expression_statement "uVar16 = (uint)*param_1;" (assignment_expression "uVar16 = (uint)*param_1" identifier = (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);" (assignment_expression "iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4)" identifier = (cast_expression "(int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4)" * (cast_expression "(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4)" ( (binary_expression "iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4" (binary_expression "iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2" identifier + (binary_expression "(((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2" (parenthesized_expression "(((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000)" ( (binary_expression "((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000" (binary_expression "((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7" (parenthesized_expression "((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101)" ( (binary_expression "(uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101" (binary_expression "(uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107" (binary_expression "(uint)param_1[2] * 0x10d" (cast_expression "(uint)param_1[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[2]" identifier [ number_literal ])) * number_literal) + (binary_expression "(uint)param_1[1] * 0x107" (cast_expression "(uint)param_1[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) * number_literal)) + (binary_expression "uVar16 * 0x101" identifier * number_literal)) )) % number_literal) + number_literal) )) * number_literal)) + number_literal) )))))) ;) (if_statement "if (iVar18 == -1) goto LAB_00073ca0;" if (parenthesized_expression "(iVar18 == -1)" ( (binary_expression "iVar18 == -1" identifier == number_literal) )) (goto_statement "goto LAB_00073ca0;" goto statement_identifier ;)) (expression_statement "iVar24 = *(int *)(iVar28 + 0x38000);" (assignment_expression "iVar24 = *(int *)(iVar28 + 0x38000)" identifier = (pointer_expression "*(int *)(iVar28 + 0x38000)" * (cast_expression "(int *)(iVar28 + 0x38000)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x38000)" ( (binary_expression "iVar28 + 0x38000" identifier + number_literal) ))))) ;) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (do_statement "do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);" do (compound_statement "{\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            }" { (expression_statement "uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;" (assignment_expression "uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff" identifier = (binary_expression "(iVar18 + 0x8000) - iVar24 & 0x80007fff" (binary_expression "(iVar18 + 0x8000) - iVar24" (parenthesized_expression "(iVar18 + 0x8000)" ( (binary_expression "iVar18 + 0x8000" identifier + number_literal) )) - identifier) & number_literal)) ;) (if_statement "if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }" if (parenthesized_expression "((int)uVar23 < 0)" ( (binary_expression "(int)uVar23 < 0" (cast_expression "(int)uVar23" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }" { (expression_statement "uVar23 = (uVar23 - 1 | 0xffff8000) + 1;" (assignment_expression "uVar23 = (uVar23 - 1 | 0xffff8000) + 1" identifier = (binary_expression "(uVar23 - 1 | 0xffff8000) + 1" (parenthesized_expression "(uVar23 - 1 | 0xffff8000)" ( (binary_expression "uVar23 - 1 | 0xffff8000" (binary_expression "uVar23 - 1" identifier - number_literal) | number_literal) )) + number_literal)) ;) })) (expression_statement "iVar22 = 0x8000 - uVar23;" (assignment_expression "iVar22 = 0x8000 - uVar23" identifier = (binary_expression "0x8000 - uVar23" number_literal - identifier)) ;) (expression_statement "iVar25 = uVar23 - 0x8000;" (assignment_expression "iVar25 = uVar23 - 0x8000" identifier = (binary_expression "uVar23 - 0x8000" identifier - number_literal)) ;) (expression_statement "uVar23 = uVar16;" (assignment_expression "uVar23 = uVar16" identifier = identifier) ;) (if_statement "if (iVar25 < 0) goto LAB_00073f88;" if (parenthesized_expression "(iVar25 < 0)" ( (binary_expression "iVar25 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00073f88;" goto statement_identifier ;)) (while_statement "while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }" while (parenthesized_expression "(param_1[iVar25] == uVar23)" ( (binary_expression "param_1[iVar25] == uVar23" (subscript_expression "param_1[iVar25]" identifier [ identifier ]) == identifier) )) (compound_statement "{\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }" { (while_statement "while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }" { (expression_statement "iVar25 = iVar25 + 1;" (assignment_expression "iVar25 = iVar25 + 1" identifier = (binary_expression "iVar25 + 1" identifier + number_literal)) ;) (if_statement "if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }" if (parenthesized_expression "(3 - iVar22 == iVar25)" ( (binary_expression "3 - iVar22 == iVar25" (binary_expression "3 - iVar22" number_literal - identifier) == identifier) )) (compound_statement "{\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }" { (expression_statement "iVar25 = iVar27 + 1;" (assignment_expression "iVar25 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (expression_statement "aiStack_660[iVar27 * 2] = iVar22;" (assignment_expression "aiStack_660[iVar27 * 2] = iVar22" (subscript_expression "aiStack_660[iVar27 * 2]" identifier [ (binary_expression "iVar27 * 2" identifier * number_literal) ]) = identifier) ;) (expression_statement "aiStack_660[iVar27 * 2 + 1] = 3;" (assignment_expression "aiStack_660[iVar27 * 2 + 1] = 3" (subscript_expression "aiStack_660[iVar27 * 2 + 1]" identifier [ (binary_expression "iVar27 * 2 + 1" (binary_expression "iVar27 * 2" identifier * number_literal) + number_literal) ]) = number_literal) ;) (if_statement "if (0x1f < iVar25) goto LAB_00073fc8;" if (parenthesized_expression "(0x1f < iVar25)" ( (binary_expression "0x1f < iVar25" number_literal < identifier) )) (goto_statement "goto LAB_00073fc8;" goto statement_identifier ;)) (expression_statement "sVar2 = *(short *)(iVar28 + iVar18 * 6);" (assignment_expression "sVar2 = *(short *)(iVar28 + iVar18 * 6)" identifier = (pointer_expression "*(short *)(iVar28 + iVar18 * 6)" * (cast_expression "(short *)(iVar28 + iVar18 * 6)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + iVar18 * 6)" ( (binary_expression "iVar28 + iVar18 * 6" identifier + (binary_expression "iVar18 * 6" identifier * number_literal)) ))))) ;) (goto_statement "goto joined_r0x00074094;" goto statement_identifier ;) })) (expression_statement "uVar23 = (uint)param_1[iVar22 + iVar25];" (assignment_expression "uVar23 = (uint)param_1[iVar22 + iVar25]" identifier = (cast_expression "(uint)param_1[iVar22 + iVar25]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[iVar22 + iVar25]" identifier [ (binary_expression "iVar22 + iVar25" identifier + identifier) ]))) ;) (if_statement "if (-1 < iVar25) break;" if (parenthesized_expression "(-1 < iVar25)" ( (binary_expression "-1 < iVar25" number_literal < identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;" statement_identifier : (if_statement "if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;" if (parenthesized_expression "(*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)" ( (binary_expression "*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23" (pointer_expression "*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000)" * (cast_expression "(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000)" ( (binary_expression "iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000" (binary_expression "iVar28 + (iVar24 + iVar25 & 0x7fffU)" identifier + (parenthesized_expression "(iVar24 + iVar25 & 0x7fffU)" ( (binary_expression "iVar24 + iVar25 & 0x7fffU" (binary_expression "iVar24 + iVar25" identifier + identifier) & number_literal) ))) + number_literal) )))) != identifier) )) (goto_statement "goto LAB_00073fa4;" goto statement_identifier ;))) })) })) (labeled_statement "LAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);" statement_identifier : (expression_statement "sVar2 = *(short *)(iVar28 + iVar18 * 6);" (assignment_expression "sVar2 = *(short *)(iVar28 + iVar18 * 6)" identifier = (pointer_expression "*(short *)(iVar28 + iVar18 * 6)" * (cast_expression "(short *)(iVar28 + iVar18 * 6)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + iVar18 * 6)" ( (binary_expression "iVar28 + iVar18 * 6" identifier + (binary_expression "iVar18 * 6" identifier * number_literal)) ))))) ;)) (expression_statement "iVar25 = iVar27;" (assignment_expression "iVar25 = iVar27" identifier = identifier) ;) (labeled_statement "joined_r0x00074094:\n              iVar18 = (int)sVar2;" statement_identifier : (expression_statement "iVar18 = (int)sVar2;" (assignment_expression "iVar18 = (int)sVar2" identifier = (cast_expression "(int)sVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (expression_statement "iVar27 = iVar25;" (assignment_expression "iVar27 = iVar25" identifier = identifier) ;) }) while (parenthesized_expression "(iVar18 != -1)" ( (binary_expression "iVar18 != -1" identifier != number_literal) )) ;) (if_statement "if (iVar25 == 0) goto LAB_00073ca0;" if (parenthesized_expression "(iVar25 == 0)" ( (binary_expression "iVar25 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00073ca0;" goto statement_identifier ;)) (labeled_statement "LAB_00073fc8:\n            iVar18 = 3;" statement_identifier : (expression_statement "iVar18 = 3;" (assignment_expression "iVar18 = 3" identifier = number_literal) ;)) (if_statement "if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }" if (parenthesized_expression "(param_2 != 3)" ( (binary_expression "param_2 != 3" identifier != number_literal) )) (compound_statement "{\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }" { (expression_statement "pbVar10 = param_1 + 3;" (assignment_expression "pbVar10 = param_1 + 3" identifier = (binary_expression "param_1 + 3" identifier + number_literal)) ;) (do_statement "do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);" do (compound_statement "{\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              }" { (expression_statement "bVar14 = *pbVar10;" (assignment_expression "bVar14 = *pbVar10" identifier = (pointer_expression "*pbVar10" * identifier)) ;) (expression_statement "iVar27 = iVar25 * 2;" (assignment_expression "iVar27 = iVar25 * 2" identifier = (binary_expression "iVar25 * 2" identifier * number_literal)) ;) (expression_statement "piVar13 = aiStack_660;" (assignment_expression "piVar13 = aiStack_660" identifier = identifier) ;) (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) (do_statement "do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);" do (compound_statement "{\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                }" { (expression_statement "iVar25 = iVar18 - *piVar13;" (assignment_expression "iVar25 = iVar18 - *piVar13" identifier = (binary_expression "iVar18 - *piVar13" identifier - (pointer_expression "*piVar13" * identifier))) ;) (if_statement "if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }" if (parenthesized_expression "(iVar25 < 0)" ( (binary_expression "iVar25 < 0" identifier < number_literal) )) (compound_statement "{\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }" { (expression_statement "bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);" (assignment_expression "bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000)" identifier = (pointer_expression "*(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000)" * (cast_expression "(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000)" ( (binary_expression "iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000" (binary_expression "iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU)" identifier + (parenthesized_expression "((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU)" ( (binary_expression "(iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU" (binary_expression "(iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13" (parenthesized_expression "(iVar18 + *(int *)(iVar28 + 0x38000))" ( (binary_expression "iVar18 + *(int *)(iVar28 + 0x38000)" identifier + (pointer_expression "*(int *)(iVar28 + 0x38000)" * (cast_expression "(int *)(iVar28 + 0x38000)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x38000)" ( (binary_expression "iVar28 + 0x38000" identifier + number_literal) ))))) )) - (pointer_expression "*piVar13" * identifier)) & number_literal) ))) + number_literal) ))))) ;) }) (else_clause "else {\n                    bVar1 = param_1[iVar25];\n                  }" else (compound_statement "{\n                    bVar1 = param_1[iVar25];\n                  }" { (expression_statement "bVar1 = param_1[iVar25];" (assignment_expression "bVar1 = param_1[iVar25]" identifier = (subscript_expression "param_1[iVar25]" identifier [ identifier ])) ;) }))) (expression_statement "iVar25 = iVar24;" (assignment_expression "iVar25 = iVar24" identifier = identifier) ;) (if_statement "if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }" if (parenthesized_expression "(bVar1 == bVar14)" ( (binary_expression "bVar1 == bVar14" identifier == identifier) )) (compound_statement "{\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }" { (expression_statement "iVar22 = piVar13[1];" (assignment_expression "iVar22 = piVar13[1]" identifier = (subscript_expression "piVar13[1]" identifier [ number_literal ])) ;) (expression_statement "iVar25 = iVar24 + 1;" (assignment_expression "iVar25 = iVar24 + 1" identifier = (binary_expression "iVar24 + 1" identifier + number_literal)) ;) (expression_statement "aiStack_660[iVar24 * 2] = *piVar13;" (assignment_expression "aiStack_660[iVar24 * 2] = *piVar13" (subscript_expression "aiStack_660[iVar24 * 2]" identifier [ (binary_expression "iVar24 * 2" identifier * number_literal) ]) = (pointer_expression "*piVar13" * identifier)) ;) (expression_statement "aiStack_660[iVar24 * 2 + 1] = iVar22;" (assignment_expression "aiStack_660[iVar24 * 2 + 1] = iVar22" (subscript_expression "aiStack_660[iVar24 * 2 + 1]" identifier [ (binary_expression "iVar24 * 2 + 1" (binary_expression "iVar24 * 2" identifier * number_literal) + number_literal) ]) = identifier) ;) })) (expression_statement "piVar13 = piVar13 + 2;" (assignment_expression "piVar13 = piVar13 + 2" identifier = (binary_expression "piVar13 + 2" identifier + number_literal)) ;) (expression_statement "iVar24 = iVar25;" (assignment_expression "iVar24 = iVar25" identifier = identifier) ;) }) while (parenthesized_expression "(aiStack_660 + iVar27 != piVar13)" ( (binary_expression "aiStack_660 + iVar27 != piVar13" (binary_expression "aiStack_660 + iVar27" identifier + identifier) != identifier) )) ;) (if_statement "if (iVar25 == 0) break;" if (parenthesized_expression "(iVar25 == 0)" ( (binary_expression "iVar25 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "pbVar10 = param_1 + iVar18;" (assignment_expression "pbVar10 = param_1 + iVar18" identifier = (binary_expression "param_1 + iVar18" identifier + identifier)) ;) }) while (parenthesized_expression "(iVar18 != param_2)" ( (binary_expression "iVar18 != param_2" identifier != identifier) )) ;) })) (expression_statement "piVar13 = piVar21;" (assignment_expression "piVar13 = piVar21" identifier = identifier) ;) (expression_statement "aiStack_660[1] = iVar18;" (assignment_expression "aiStack_660[1] = iVar18" (subscript_expression "aiStack_660[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (compound_statement "{\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }" { (if_statement "if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }" if (parenthesized_expression "(iVar17 + 1 < iVar18)" ( (binary_expression "iVar17 + 1 < iVar18" (binary_expression "iVar17 + 1" identifier + number_literal) < identifier) )) (compound_statement "{\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }" { (expression_statement "(*(code *)piVar12[2])(piVar12,uStack_670);" (call_expression "(*(code *)piVar12[2])(piVar12,uStack_670)" (parenthesized_expression "(*(code *)piVar12[2])" ( (pointer_expression "*(code *)piVar12[2]" * (cast_expression "(code *)piVar12[2]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar12[2]" identifier [ number_literal ]))) )) (argument_list "(piVar12,uStack_670)" ( identifier , identifier ))) ;) (expression_statement "iStack_674 = aiStack_660[0];" (assignment_expression "iStack_674 = aiStack_660[0]" identifier = (subscript_expression "aiStack_660[0]" identifier [ number_literal ])) ;) (expression_statement "uStack_670 = (uint)*param_1;" (assignment_expression "uStack_670 = (uint)*param_1" identifier = (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (break_statement "break;" break ;) })) (goto_statement "goto LAB_00073ca8;" goto statement_identifier ;) })) (expression_statement "iStack_674 = aiStack_660[0];" (assignment_expression "iStack_674 = aiStack_660[0]" identifier = (subscript_expression "aiStack_660[0]" identifier [ number_literal ])) ;) (expression_statement "uStack_670 = uVar16;" (assignment_expression "uStack_670 = uVar16" identifier = identifier) ;) (break_statement "break;" break ;) })) (labeled_statement "LAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }" statement_identifier : (if_statement "if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }" { (expression_statement "(*(code *)piVar12[2])(piVar12,*param_1);" (call_expression "(*(code *)piVar12[2])(piVar12,*param_1)" (parenthesized_expression "(*(code *)piVar12[2])" ( (pointer_expression "*(code *)piVar12[2]" * (cast_expression "(code *)piVar12[2]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar12[2]" identifier [ number_literal ]))) )) (argument_list "(piVar12,*param_1)" ( identifier , (pointer_expression "*param_1" * identifier) ))) ;) (expression_statement "piVar13 = (int *)0x1;" (assignment_expression "piVar13 = (int *)0x1" identifier = (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar18 = iVar17;" (assignment_expression "iVar18 = iVar17" identifier = identifier) ;) (break_statement "break;" break ;) }))) (labeled_statement "LAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);" statement_identifier : (expression_statement "(*(code *)piVar12[3])(piVar12,iStack_674,iVar17);" (call_expression "(*(code *)piVar12[3])(piVar12,iStack_674,iVar17)" (parenthesized_expression "(*(code *)piVar12[3])" ( (pointer_expression "*(code *)piVar12[3]" * (cast_expression "(code *)piVar12[3]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar12[3]" identifier [ number_literal ]))) )) (argument_list "(piVar12,iStack_674,iVar17)" ( identifier , identifier , identifier ))) ;)) (expression_statement "piVar13 = (int *)(iVar17 - 1);" (assignment_expression "piVar13 = (int *)(iVar17 - 1)" identifier = (cast_expression "(int *)(iVar17 - 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 - 1)" ( (binary_expression "iVar17 - 1" identifier - number_literal) )))) ;) (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) }) while (parenthesized_expression "(piVar13 == (int *)0x0)" ( (binary_expression "piVar13 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "uVar15 = 0xff;" (assignment_expression "uVar15 = 0xff" identifier = number_literal) ;) (expression_statement "pbVar10 = param_1 + (int)piVar13;" (assignment_expression "pbVar10 = param_1 + (int)piVar13" identifier = (binary_expression "param_1 + (int)piVar13" identifier + (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (while_statement "while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }" { (if_statement "if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }" { (expression_statement "iVar17 = *(int *)(iVar28 + 0x38ff8);" (assignment_expression "iVar17 = *(int *)(iVar28 + 0x38ff8)" identifier = (pointer_expression "*(int *)(iVar28 + 0x38ff8)" * (cast_expression "(int *)(iVar28 + 0x38ff8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x38ff8)" ( (binary_expression "iVar28 + 0x38ff8" identifier + number_literal) ))))) ;) (expression_statement "piVar13 = *(int **)(puVar29 + 0x39878);" (assignment_expression "piVar13 = *(int **)(puVar29 + 0x39878)" identifier = (pointer_expression "*(int **)(puVar29 + 0x39878)" * (cast_expression "(int **)(puVar29 + 0x39878)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x39878)" ( (binary_expression "puVar29 + 0x39878" identifier + number_literal) ))))) ;) (if_statement "if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }" if (parenthesized_expression "(2 < iVar17)" ( (binary_expression "2 < iVar17" number_literal < identifier) )) (compound_statement "{\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }" { (expression_statement "iVar18 = 0x157;" (assignment_expression "iVar18 = 0x157" identifier = number_literal) ;) (expression_statement "pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);" (assignment_expression "pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0)" identifier = (cast_expression "(byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar29 + 0x39878) + 0x72e0)" ( (binary_expression "*(int *)(puVar29 + 0x39878) + 0x72e0" (pointer_expression "*(int *)(puVar29 + 0x39878)" * (cast_expression "(int *)(puVar29 + 0x39878)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x39878)" ( (binary_expression "puVar29 + 0x39878" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "piVar13 = piVar13 + 0x1cc2;" (assignment_expression "piVar13 = piVar13 + 0x1cc2" identifier = (binary_expression "piVar13 + 0x1cc2" identifier + number_literal)) ;) (expression_statement "(**(code **)(puVar29 + 0x3a0b0))();" (call_expression "(**(code **)(puVar29 + 0x3a0b0))()" (parenthesized_expression "(**(code **)(puVar29 + 0x3a0b0))" ( (pointer_expression "**(code **)(puVar29 + 0x3a0b0)" * (pointer_expression "*(code **)(puVar29 + 0x3a0b0)" * (cast_expression "(code **)(puVar29 + 0x3a0b0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x3a0b0)" ( (binary_expression "puVar29 + 0x3a0b0" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "piVar12 = piVar21;" (assignment_expression "piVar12 = piVar21" identifier = identifier) ;) (goto_statement "goto LAB_00073c5c;" goto statement_identifier ;) })) (expression_statement "*(int *)(iVar28 + 0x38ff8) = iVar17 + 1;" (assignment_expression "*(int *)(iVar28 + 0x38ff8) = iVar17 + 1" (pointer_expression "*(int *)(iVar28 + 0x38ff8)" * (cast_expression "(int *)(iVar28 + 0x38ff8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x38ff8)" ( (binary_expression "iVar28 + 0x38ff8" identifier + number_literal) )))) = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) (expression_statement "*(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;" (assignment_expression "*(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1" (pointer_expression "*(byte *)(iVar28 + iVar17 + 0x38ff2)" * (cast_expression "(byte *)(iVar28 + iVar17 + 0x38ff2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + iVar17 + 0x38ff2)" ( (binary_expression "iVar28 + iVar17 + 0x38ff2" (binary_expression "iVar28 + iVar17" identifier + identifier) + number_literal) )))) = (pointer_expression "*param_1" * identifier)) ;) }) (else_clause "else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }" else (compound_statement "{\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }" { (expression_statement "bVar14 = *param_1;" (assignment_expression "bVar14 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "piVar13 = (int *)(uint)bVar14;" (assignment_expression "piVar13 = (int *)(uint)bVar14" identifier = (cast_expression "(int *)(uint)bVar14" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "iVar17 = *(int *)(iVar28 + 0x38000);" (assignment_expression "iVar17 = *(int *)(iVar28 + 0x38000)" identifier = (pointer_expression "*(int *)(iVar28 + 0x38000)" * (cast_expression "(int *)(iVar28 + 0x38000)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x38000)" ( (binary_expression "iVar28 + 0x38000" identifier + number_literal) ))))) ;) (expression_statement "psVar8 = (short *)(iVar28 + iVar17 * 6);" (assignment_expression "psVar8 = (short *)(iVar28 + iVar17 * 6)" identifier = (cast_expression "(short *)(iVar28 + iVar17 * 6)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + iVar17 * 6)" ( (binary_expression "iVar28 + iVar17 * 6" identifier + (binary_expression "iVar17 * 6" identifier * number_literal)) )))) ;) (expression_statement "uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;" (assignment_expression "uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7" identifier = (binary_expression "((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7" (parenthesized_expression "((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101)" ( (binary_expression "(uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101" (binary_expression "(uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107" (binary_expression "(uint)param_1[2] * 0x10d" (cast_expression "(uint)param_1[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[2]" identifier [ number_literal ])) * number_literal) + (binary_expression "(uint)param_1[1] * 0x107" (cast_expression "(uint)param_1[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) * number_literal)) + (binary_expression "(int)piVar13 * 0x101" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )) % number_literal)) ;) (if_statement "if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }" if (parenthesized_expression "(psVar8[1] == -1)" ( (binary_expression "psVar8[1] == -1" (subscript_expression "psVar8[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }" { (if_statement "if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }" if (parenthesized_expression "(psVar8[2] != -1)" ( (binary_expression "psVar8[2] != -1" (subscript_expression "psVar8[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }" { (expression_statement "*(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;" (assignment_expression "*(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff" (pointer_expression "*(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4)" * (cast_expression "(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4)" ( (binary_expression "iVar28 + (psVar8[2] + 0x1c000) * 2 + 4" (binary_expression "iVar28 + (psVar8[2] + 0x1c000) * 2" identifier + (binary_expression "(psVar8[2] + 0x1c000) * 2" (parenthesized_expression "(psVar8[2] + 0x1c000)" ( (binary_expression "psVar8[2] + 0x1c000" (subscript_expression "psVar8[2]" identifier [ number_literal ]) + number_literal) )) * number_literal)) + number_literal) )))) = number_literal) ;) })) }) (else_clause "else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }" else (compound_statement "{\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }" { (expression_statement "*(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;" (assignment_expression "*(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff" (pointer_expression "*(undefined2 *)(iVar28 + psVar8[1] * 6)" * (cast_expression "(undefined2 *)(iVar28 + psVar8[1] * 6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + psVar8[1] * 6)" ( (binary_expression "iVar28 + psVar8[1] * 6" identifier + (binary_expression "psVar8[1] * 6" (subscript_expression "psVar8[1]" identifier [ number_literal ]) * number_literal)) )))) = number_literal) ;) }))) (expression_statement "psVar8[2] = (short)uVar16;" (assignment_expression "psVar8[2] = (short)uVar16" (subscript_expression "psVar8[2]" identifier [ number_literal ]) = (cast_expression "(short)uVar16" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "psVar8[1] = -1;" (assignment_expression "psVar8[1] = -1" (subscript_expression "psVar8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar27 = iVar28 + uVar16 * 2;" (assignment_expression "iVar27 = iVar28 + uVar16 * 2" identifier = (binary_expression "iVar28 + uVar16 * 2" identifier + (binary_expression "uVar16 * 2" identifier * number_literal))) ;) (expression_statement "sVar2 = *(short *)(iVar27 + 0x38004);" (assignment_expression "sVar2 = *(short *)(iVar27 + 0x38004)" identifier = (pointer_expression "*(short *)(iVar27 + 0x38004)" * (cast_expression "(short *)(iVar27 + 0x38004)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x38004)" ( (binary_expression "iVar27 + 0x38004" identifier + number_literal) ))))) ;) (expression_statement "*psVar8 = sVar2;" (assignment_expression "*psVar8 = sVar2" (pointer_expression "*psVar8" * identifier) = identifier) ;) (expression_statement "*(short *)(iVar27 + 0x38004) = (short)iVar17;" (assignment_expression "*(short *)(iVar27 + 0x38004) = (short)iVar17" (pointer_expression "*(short *)(iVar27 + 0x38004)" * (cast_expression "(short *)(iVar27 + 0x38004)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x38004)" ( (binary_expression "iVar27 + 0x38004" identifier + number_literal) )))) = (cast_expression "(short)iVar17" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (if_statement "if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }" if (parenthesized_expression "(sVar2 != -1)" ( (binary_expression "sVar2 != -1" identifier != number_literal) )) (compound_statement "{\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }" { (expression_statement "*(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;" (assignment_expression "*(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17" (pointer_expression "*(short *)(iVar28 + sVar2 * 6 + 2)" * (cast_expression "(short *)(iVar28 + sVar2 * 6 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + sVar2 * 6 + 2)" ( (binary_expression "iVar28 + sVar2 * 6 + 2" (binary_expression "iVar28 + sVar2 * 6" identifier + (binary_expression "sVar2 * 6" identifier * number_literal)) + number_literal) )))) = (cast_expression "(short)iVar17" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) })) (expression_statement "*(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;" (assignment_expression "*(byte *)(iVar28 + iVar17 + 0x30000) = bVar14" (pointer_expression "*(byte *)(iVar28 + iVar17 + 0x30000)" * (cast_expression "(byte *)(iVar28 + iVar17 + 0x30000)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + iVar17 + 0x30000)" ( (binary_expression "iVar28 + iVar17 + 0x30000" (binary_expression "iVar28 + iVar17" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;" (assignment_expression "*(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff" (pointer_expression "*(uint *)(iVar28 + 0x38000)" * (cast_expression "(uint *)(iVar28 + 0x38000)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x38000)" ( (binary_expression "iVar28 + 0x38000" identifier + number_literal) )))) = (binary_expression "iVar17 + 1U & 0x7fff" (binary_expression "iVar17 + 1U" identifier + number_literal) & number_literal)) ;) }))) (if_statement "if (param_1 + 1 == pbVar10) break;" if (parenthesized_expression "(param_1 + 1 == pbVar10)" ( (binary_expression "param_1 + 1 == pbVar10" (binary_expression "param_1 + 1" identifier + number_literal) == identifier) )) (break_statement "break;" break ;)) (expression_statement "param_2 = param_2 + -1;" (assignment_expression "param_2 = param_2 + -1" identifier = (binary_expression "param_2 + -1" identifier + number_literal)) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "bVar3 = param_2 < 3;" (assignment_expression "bVar3 = param_2 < 3" identifier = (binary_expression "param_2 < 3" identifier < number_literal)) ;) })) (expression_statement "param_2 = param_2 + -1;" (assignment_expression "param_2 = param_2 + -1" identifier = (binary_expression "param_2 + -1" identifier + number_literal)) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "bVar3 = param_2 < 3;" (assignment_expression "bVar3 = param_2 < 3" identifier = (binary_expression "param_2 < 3" identifier < number_literal)) ;) (expression_statement "iVar17 = iVar18;" (assignment_expression "iVar17 = iVar18" identifier = identifier) ;) }) while (parenthesized_expression "(0 < param_2)" ( (binary_expression "0 < param_2" number_literal < identifier) )) ;) })) (if_statement "if (iStack_55c == *piVar7) {\n      return;\n    }" if (parenthesized_expression "(iStack_55c == *piVar7)" ( (binary_expression "iStack_55c == *piVar7" identifier == (pointer_expression "*piVar7" * identifier)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) (else_clause "else {\n    iVar17 = *(int *)(puVar29 + 0x39878) + 0x72e0;\n    piVar13 = (int *)(*(int *)(puVar29 + 0x39878) + 0x72ec);\n    (**(code **)(puVar29 + 0x3a0b0))(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c);\n    uVar15 = (undefined1)iVar17;\n  }" else (compound_statement "{\n    iVar17 = *(int *)(puVar29 + 0x39878) + 0x72e0;\n    piVar13 = (int *)(*(int *)(puVar29 + 0x39878) + 0x72ec);\n    (**(code **)(puVar29 + 0x3a0b0))(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c);\n    uVar15 = (undefined1)iVar17;\n  }" { (expression_statement "iVar17 = *(int *)(puVar29 + 0x39878) + 0x72e0;" (assignment_expression "iVar17 = *(int *)(puVar29 + 0x39878) + 0x72e0" identifier = (binary_expression "*(int *)(puVar29 + 0x39878) + 0x72e0" (pointer_expression "*(int *)(puVar29 + 0x39878)" * (cast_expression "(int *)(puVar29 + 0x39878)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x39878)" ( (binary_expression "puVar29 + 0x39878" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "piVar13 = (int *)(*(int *)(puVar29 + 0x39878) + 0x72ec);" (assignment_expression "piVar13 = (int *)(*(int *)(puVar29 + 0x39878) + 0x72ec)" identifier = (cast_expression "(int *)(*(int *)(puVar29 + 0x39878) + 0x72ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar29 + 0x39878) + 0x72ec)" ( (binary_expression "*(int *)(puVar29 + 0x39878) + 0x72ec" (pointer_expression "*(int *)(puVar29 + 0x39878)" * (cast_expression "(int *)(puVar29 + 0x39878)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x39878)" ( (binary_expression "puVar29 + 0x39878" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(puVar29 + 0x3a0b0))(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c);" (call_expression "(**(code **)(puVar29 + 0x3a0b0))(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c)" (parenthesized_expression "(**(code **)(puVar29 + 0x3a0b0))" ( (pointer_expression "**(code **)(puVar29 + 0x3a0b0)" * (pointer_expression "*(code **)(puVar29 + 0x3a0b0)" * (cast_expression "(code **)(puVar29 + 0x3a0b0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x3a0b0)" ( (binary_expression "puVar29 + 0x3a0b0" identifier + number_literal) ))))) )) (argument_list "(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c)" ( identifier , identifier , number_literal , (binary_expression "*(int *)(puVar29 + 0x39878) + 0x740c" (pointer_expression "*(int *)(puVar29 + 0x39878)" * (cast_expression "(int *)(puVar29 + 0x39878)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x39878)" ( (binary_expression "puVar29 + 0x39878" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "uVar15 = (undefined1)iVar17;" (assignment_expression "uVar15 = (undefined1)iVar17" identifier = (cast_expression "(undefined1)iVar17" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) }))) (expression_statement "pcVar30 = *(code **)(puVar29 + 0x3a254);" (assignment_expression "pcVar30 = *(code **)(puVar29 + 0x3a254)" identifier = (pointer_expression "*(code **)(puVar29 + 0x3a254)" * (cast_expression "(code **)(puVar29 + 0x3a254)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x3a254)" ( (binary_expression "puVar29 + 0x3a254" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar30)();" (call_expression "(*pcVar30)()" (parenthesized_expression "(*pcVar30)" ( (pointer_expression "*pcVar30" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar17 = piVar13[0x2067];" (assignment_expression "iVar17 = piVar13[0x2067]" identifier = (subscript_expression "piVar13[0x2067]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)((int)piVar13 + iVar17 + 0x19c) = uVar15;" (assignment_expression "*(undefined1 *)((int)piVar13 + iVar17 + 0x19c) = uVar15" (pointer_expression "*(undefined1 *)((int)piVar13 + iVar17 + 0x19c)" * (cast_expression "(undefined1 *)((int)piVar13 + iVar17 + 0x19c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar13 + iVar17 + 0x19c)" ( (binary_expression "(int)piVar13 + iVar17 + 0x19c" (binary_expression "(int)piVar13 + iVar17" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = identifier) ;) (expression_statement "piVar13[0x2067] = iVar17 + 1U & 0x7fff;" (assignment_expression "piVar13[0x2067] = iVar17 + 1U & 0x7fff" (subscript_expression "piVar13[0x2067]" identifier [ number_literal ]) = (binary_expression "iVar17 + 1U & 0x7fff" (binary_expression "iVar17 + 1U" identifier + number_literal) & number_literal)) ;) (expression_statement "iVar17 = piVar13[0x2069];" (assignment_expression "iVar17 = piVar13[0x2069]" identifier = (subscript_expression "piVar13[0x2069]" identifier [ number_literal ])) ;) (if_statement "if (iVar17 < piVar13[0x206a]) {\n    piVar13[0x2069] = iVar17 + 1;\n    *(undefined1 *)(piVar13[0x2068] + iVar17) = uVar15;\n    return;\n  }" if (parenthesized_expression "(iVar17 < piVar13[0x206a])" ( (binary_expression "iVar17 < piVar13[0x206a]" identifier < (subscript_expression "piVar13[0x206a]" identifier [ number_literal ])) )) (compound_statement "{\n    piVar13[0x2069] = iVar17 + 1;\n    *(undefined1 *)(piVar13[0x2068] + iVar17) = uVar15;\n    return;\n  }" { (expression_statement "piVar13[0x2069] = iVar17 + 1;" (assignment_expression "piVar13[0x2069] = iVar17 + 1" (subscript_expression "piVar13[0x2069]" identifier [ number_literal ]) = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(piVar13[0x2068] + iVar17) = uVar15;" (assignment_expression "*(undefined1 *)(piVar13[0x2068] + iVar17) = uVar15" (pointer_expression "*(undefined1 *)(piVar13[0x2068] + iVar17)" * (cast_expression "(undefined1 *)(piVar13[0x2068] + iVar17)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar13[0x2068] + iVar17)" ( (binary_expression "piVar13[0x2068] + iVar17" (subscript_expression "piVar13[0x2068]" identifier [ number_literal ]) + identifier) )))) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "pcVar30 = *(code **)(pcVar30 + 0x391d8);" (assignment_expression "pcVar30 = *(code **)(pcVar30 + 0x391d8)" identifier = (pointer_expression "*(code **)(pcVar30 + 0x391d8)" * (cast_expression "(code **)(pcVar30 + 0x391d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar30 + 0x391d8)" ( (binary_expression "pcVar30 + 0x391d8" identifier + number_literal) ))))) ;) (expression_statement "piVar13[0x206a] = iVar17 + 0x200;" (assignment_expression "piVar13[0x206a] = iVar17 + 0x200" (subscript_expression "piVar13[0x206a]" identifier [ number_literal ]) = (binary_expression "iVar17 + 0x200" identifier + number_literal)) ;) (expression_statement "iVar17 = (*pcVar30)(piVar13[0x2068],iVar17 + 0x200,1);" (assignment_expression "iVar17 = (*pcVar30)(piVar13[0x2068],iVar17 + 0x200,1)" identifier = (call_expression "(*pcVar30)(piVar13[0x2068],iVar17 + 0x200,1)" (parenthesized_expression "(*pcVar30)" ( (pointer_expression "*pcVar30" * identifier) )) (argument_list "(piVar13[0x2068],iVar17 + 0x200,1)" ( (subscript_expression "piVar13[0x2068]" identifier [ number_literal ]) , (binary_expression "iVar17 + 0x200" identifier + number_literal) , number_literal )))) ;) (expression_statement "iVar28 = piVar13[0x2069];" (assignment_expression "iVar28 = piVar13[0x2069]" identifier = (subscript_expression "piVar13[0x2069]" identifier [ number_literal ])) ;) (expression_statement "piVar13[0x2068] = iVar17;" (assignment_expression "piVar13[0x2068] = iVar17" (subscript_expression "piVar13[0x2068]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar13[0x2069] = iVar28 + 1;" (assignment_expression "piVar13[0x2069] = iVar28 + 1" (subscript_expression "piVar13[0x2069]" identifier [ number_literal ]) = (binary_expression "iVar28 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(iVar17 + iVar28) = uVar15;" (assignment_expression "*(undefined1 *)(iVar17 + iVar28) = uVar15" (pointer_expression "*(undefined1 *)(iVar17 + iVar28)" * (cast_expression "(undefined1 *)(iVar17 + iVar28)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + iVar28)" ( (binary_expression "iVar17 + iVar28" identifier + identifier) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "zlib_table * zlib_mktable(uchar *lengths,int nlengths)\n\n{\n  byte bVar1;\n  short sVar2;\n  bool bVar3;\n  undefined *puVar4;\n  uint uVar5;\n  zlib_table *pzVar6;\n  undefined4 *puVar7;\n  short *psVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  uint *puVar11;\n  uint *puVar12;\n  int *piVar13;\n  byte bVar14;\n  undefined1 uVar15;\n  int *piVar16;\n  uint uVar17;\n  int iVar18;\n  int iVar19;\n  uint uVar20;\n  int *piVar21;\n  int iVar22;\n  uint uVar23;\n  int iVar24;\n  int iVar25;\n  uint uVar26;\n  int iVar27;\n  byte *pbVar28;\n  int iVar29;\n  int iVar30;\n  undefined *puVar31;\n  code *pcVar32;\n  int iStackY_674;\n  uint uStackY_670;\n  int aiStackY_660 [64];\n  byte bStackY_560;\n  byte bStackY_55f;\n  byte bStackY_55e;\n  zlib_table *pzStackY_55c;\n  undefined *puStackY_558;\n  int count [16];\n  int startcode [16];\n  int codes [288];\n  \n  puVar4 = PTR___stack_chk_guard_000adcd4;\n  piVar13 = count + 1;\n  piVar16 = *(int **)PTR___stack_chk_guard_000adcd4;\n  piVar21 = piVar13;\n  do {\n    *piVar21 = 0;\n    piVar21 = piVar21 + 1;\n  } while (piVar21 != startcode);\n  uVar17 = 0;\n  if (nlengths < 1) {\n    uVar23 = 0;\n  }\n  else {\n    pbVar10 = lengths;\n    do {\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar17 < uVar23) {\n        uVar17 = uVar23;\n      }\n      count[uVar23] = count[uVar23] + 1;\n    } while (lengths + nlengths != pbVar10);\n    uVar23 = 9;\n    if (uVar17 < 10) {\n      uVar23 = uVar17;\n    }\n  }\n  uVar17 = 0;\n  puVar11 = (uint *)(startcode + 1);\n  do {\n    iVar24 = *piVar13;\n    puVar12 = puVar11 + 1;\n    *puVar11 = uVar17;\n    piVar13 = piVar13 + 1;\n    uVar17 = (uVar17 + iVar24) * 2;\n    puVar11 = puVar12;\n  } while (puVar12 != (uint *)codes);\n  pbVar10 = lengths;\n  puVar11 = (uint *)codes;\n  if (0 < nlengths) {\n    do {\n      uVar26 = (uint)*pbVar10;\n      *puVar11 = 0;\n      uVar17 = startcode[uVar26];\n      startcode[uVar26] = uVar17 + 1;\n      if (uVar26 != 0) {\n        uVar5 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar5 = uVar5 << 1 | uVar17 & 1;\n          uVar17 = (int)uVar17 >> 1;\n        } while (uVar26 != uVar20);\n        *puVar11 = uVar5;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar11 = puVar11 + 1;\n    } while (lengths + nlengths != pbVar10);\n  }\n  piVar21 = (int *)0x0;\n  pzVar6 = zlib_mkonetab(codes,lengths,nlengths,0,0,uVar23);\n  if (piVar16 == *(int **)puVar4) {\n    return pzVar6;\n  }\n  puVar31 = PTR___stack_chk_fail_000adca4;\n  (*(code *)PTR___stack_chk_fail_000adca4)();\n  puVar7 = *(undefined4 **)(puVar31 + 0x3a284);\n  iVar30 = *piVar16;\n  puStackY_558 = puVar4;\n  pzStackY_55c = (zlib_table *)*puVar7;\n  iVar24 = *(int *)(&LAB_00038ff8 + iVar30);\n  if (iVar24 < 4) {\n    piVar13 = piVar16;\n    pbVar10 = lengths;\n    iVar19 = iVar24;\n    if (0 < iVar24) {\n      if (iVar24 + nlengths < 3) {\n        iVar29 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar30 + 0x38000);\n        pbVar28 = &bStackY_560;\n        iVar29 = iVar24 + nlengths + -2;\n        iVar27 = 3;\n        iVar25 = 0;\n        iVar19 = iVar25;\n        do {\n          do {\n            if (iVar25 < iVar24) {\n              bVar14 = *(byte *)(iVar30 + iVar25 + 0x38ff2);\n            }\n            else {\n              bVar14 = lengths[iVar25 - iVar24];\n            }\n            pbVar10 = pbVar28 + iVar25;\n            iVar25 = iVar25 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar25 != iVar27);\n          psVar8 = (short *)(iVar30 + (int)piVar13 * 6);\n          uVar17 = ((uint)bStackY_55e * 0x10d +\n                   (uint)bStackY_55f * 0x107 + (uint)bStackY_560 * 0x101) % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar17;\n          psVar8[1] = -1;\n          iVar25 = iVar30 + uVar17 * 2;\n          sVar2 = *(short *)(iVar25 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar25 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar30 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar30 + 0x30000);\n          iVar25 = iVar19 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStackY_560;\n          *(int **)(iVar30 + 0x38000) = piVar13;\n          if (iVar24 == iVar25) {\n            iVar19 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar28 = pbVar28 + -1;\n          iVar27 = iVar27 + 1;\n          iVar19 = iVar25;\n        } while (iVar25 != iVar29);\n        iVar19 = iVar24 - iVar29;\n      }\n      pbVar28 = (byte *)(iVar30 + 0x38ff2);\n      iVar25 = iVar29;\n      do {\n        iVar25 = iVar25 + 1;\n        bVar14 = pbVar28[iVar29];\n        *pbVar28 = bVar14;\n        pbVar28 = pbVar28 + 1;\n        piVar13 = (int *)(uint)(iVar25 < iVar24);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar25 < iVar24) != (int *)0x0);\n    }\nLAB_00073c5c:\n    uVar15 = SUB41(pbVar10,0);\n    *(int *)(&LAB_00038ff8 + iVar30) = iVar19;\n    if (0 < nlengths) {\n      iStackY_674 = 0;\n      uStackY_670 = 0;\n      bVar3 = nlengths < 3;\n      iVar24 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar17 = (uint)*lengths;\n            iVar19 = (int)*(short *)(iVar30 + (((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar19 == -1) goto LAB_00073ca0;\n            iVar27 = *(int *)(iVar30 + 0x38000);\n            iVar25 = iVar19 + 0x8000;\n            iVar29 = 0;\nLAB_00073f34:\n            do {\n              uVar23 = iVar25 - iVar27 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar17;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (lengths[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar18 = iVar29 + 1;\n                    aiStackY_660[iVar29 * 2] = iVar22;\n                    aiStackY_660[iVar29 * 2 + 1] = 3;\n                    if (0x1f < iVar18) goto LAB_00073fc8;\n                    iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n                    iVar25 = iVar19 + 0x8000;\n                    iVar29 = iVar18;\n                    if (iVar19 == -1) goto LAB_00073fc0;\n                    goto LAB_00073f34;\n                  }\n                  uVar23 = (uint)lengths[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n              iVar25 = iVar19 + 0x8000;\n              iVar18 = iVar29;\n            } while (iVar19 != -1);\nLAB_00073fc0:\n            if (iVar18 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar19 = 3;\n            if (nlengths != 3) {\n              pbVar10 = lengths + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar29 = iVar18 * 2;\n                piVar13 = aiStackY_660;\n                iVar25 = 0;\n                do {\n                  iVar27 = iVar19 - *piVar13;\n                  if (iVar27 < 0) {\n                    bVar1 = *(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = lengths[iVar27];\n                  }\n                  iVar18 = iVar25;\n                  if (bVar1 == bVar14) {\n                    iVar27 = piVar13[1];\n                    iVar18 = iVar25 + 1;\n                    aiStackY_660[iVar25 * 2] = *piVar13;\n                    aiStackY_660[iVar25 * 2 + 1] = iVar27;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar25 = iVar18;\n                } while (aiStackY_660 + iVar29 != piVar13);\n                if (iVar18 == 0) break;\n                iVar19 = iVar19 + 1;\n                pbVar10 = lengths + iVar19;\n              } while (iVar19 != nlengths);\n            }\n            piVar13 = piVar21;\n            aiStackY_660[1] = iVar19;\n            if (iVar24 != 0) {\n              if (iVar24 + 1 < iVar19) {\n                (*(code *)piVar16[2])(piVar16,uStackY_670);\n                iStackY_674 = aiStackY_660[0];\n                uStackY_670 = (uint)*lengths;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStackY_674 = aiStackY_660[0];\n            uStackY_670 = uVar17;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar24 == 0) {\n            (*(code *)piVar16[2])(piVar16,*lengths);\n            piVar13 = (int *)0x1;\n            iVar19 = iVar24;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar16[3])(piVar16,iStackY_674,iVar24);\n          piVar13 = (int *)(iVar24 - 1);\n          iVar19 = 0;\n          iVar24 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = lengths + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar24 = *(int *)(&LAB_00038ff8 + iVar30);\n            piVar13 = *(int **)(puVar31 + 0x39878);\n            if (2 < iVar24) {\n              iVar19 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar31 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar31 + 0x3a0b0))();\n              piVar16 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(&LAB_00038ff8 + iVar30) = iVar24 + 1;\n            *(uchar *)(iVar30 + iVar24 + 0x38ff2) = *lengths;\n          }\n          else {\n            bVar14 = *lengths;\n            piVar13 = (int *)(uint)bVar14;\n            iVar24 = *(int *)(iVar30 + 0x38000);\n            psVar8 = (short *)(iVar30 + iVar24 * 6);\n            uVar17 = ((uint)lengths[2] * 0x10d + (uint)lengths[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar17;\n            psVar8[1] = -1;\n            iVar29 = iVar30 + uVar17 * 2;\n            sVar2 = *(short *)(iVar29 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar29 + 0x38004) = (short)iVar24;\n            if (sVar2 != -1) {\n              *(short *)(iVar30 + sVar2 * 6 + 2) = (short)iVar24;\n            }\n            *(byte *)(iVar30 + iVar24 + 0x30000) = bVar14;\n            *(uint *)(iVar30 + 0x38000) = iVar24 + 1U & 0x7fff;\n          }\n          if (lengths + 1 == pbVar10) break;\n          nlengths = nlengths + -1;\n          lengths = lengths + 1;\n          bVar3 = nlengths < 3;\n        }\n        nlengths = nlengths + -1;\n        lengths = lengths + 1;\n        bVar3 = nlengths < 3;\n        iVar24 = iVar19;\n      } while (0 < nlengths);\n    }\n    pzVar6 = (zlib_table *)*puVar7;\n    if (pzStackY_55c == pzVar6) {\n      return pzVar6;\n    }\n  }\n  else {\n    iVar24 = *(int *)(puVar31 + 0x39878) + 0x72e0;\n    piVar13 = (int *)(*(int *)(puVar31 + 0x39878) + 0x72ec);\n    (**(code **)(puVar31 + 0x3a0b0))(piVar13,iVar24,0xd0,*(int *)(puVar31 + 0x39878) + 0x740c);\n    uVar15 = (undefined1)iVar24;\n  }\n  pcVar32 = *(code **)(puVar31 + 0x3a254);\n  (*pcVar32)();\n  iVar24 = piVar13[0x2067];\n  *(undefined1 *)((int)piVar13 + iVar24 + 0x19c) = uVar15;\n  piVar13[0x2067] = iVar24 + 1U & 0x7fff;\n  iVar24 = piVar13[0x2069];\n  if (iVar24 < piVar13[0x206a]) {\n    pzVar6 = (zlib_table *)(piVar13[0x2068] + iVar24);\n    piVar13[0x2069] = iVar24 + 1;\n    *(undefined1 *)&pzVar6->mask = uVar15;\n    return pzVar6;\n  }\n  pcVar32 = *(code **)(pcVar32 + 0x391d8);\n  piVar13[0x206a] = iVar24 + 0x200;\n  iVar24 = (*pcVar32)(piVar13[0x2068],iVar24 + 0x200,1);\n  piVar13[0x2068] = iVar24;\n  pzVar6 = (zlib_table *)(iVar24 + piVar13[0x2069]);\n  piVar13[0x2069] = piVar13[0x2069] + 1;\n  *(undefined1 *)&pzVar6->mask = uVar15;\n  return pzVar6;\n}\n\n" (function_definition "zlib_table * zlib_mktable(uchar *lengths,int nlengths)\n\n{\n  byte bVar1;\n  short sVar2;\n  bool bVar3;\n  undefined *puVar4;\n  uint uVar5;\n  zlib_table *pzVar6;\n  undefined4 *puVar7;\n  short *psVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  uint *puVar11;\n  uint *puVar12;\n  int *piVar13;\n  byte bVar14;\n  undefined1 uVar15;\n  int *piVar16;\n  uint uVar17;\n  int iVar18;\n  int iVar19;\n  uint uVar20;\n  int *piVar21;\n  int iVar22;\n  uint uVar23;\n  int iVar24;\n  int iVar25;\n  uint uVar26;\n  int iVar27;\n  byte *pbVar28;\n  int iVar29;\n  int iVar30;\n  undefined *puVar31;\n  code *pcVar32;\n  int iStackY_674;\n  uint uStackY_670;\n  int aiStackY_660 [64];\n  byte bStackY_560;\n  byte bStackY_55f;\n  byte bStackY_55e;\n  zlib_table *pzStackY_55c;\n  undefined *puStackY_558;\n  int count [16];\n  int startcode [16];\n  int codes [288];\n  \n  puVar4 = PTR___stack_chk_guard_000adcd4;\n  piVar13 = count + 1;\n  piVar16 = *(int **)PTR___stack_chk_guard_000adcd4;\n  piVar21 = piVar13;\n  do {\n    *piVar21 = 0;\n    piVar21 = piVar21 + 1;\n  } while (piVar21 != startcode);\n  uVar17 = 0;\n  if (nlengths < 1) {\n    uVar23 = 0;\n  }\n  else {\n    pbVar10 = lengths;\n    do {\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar17 < uVar23) {\n        uVar17 = uVar23;\n      }\n      count[uVar23] = count[uVar23] + 1;\n    } while (lengths + nlengths != pbVar10);\n    uVar23 = 9;\n    if (uVar17 < 10) {\n      uVar23 = uVar17;\n    }\n  }\n  uVar17 = 0;\n  puVar11 = (uint *)(startcode + 1);\n  do {\n    iVar24 = *piVar13;\n    puVar12 = puVar11 + 1;\n    *puVar11 = uVar17;\n    piVar13 = piVar13 + 1;\n    uVar17 = (uVar17 + iVar24) * 2;\n    puVar11 = puVar12;\n  } while (puVar12 != (uint *)codes);\n  pbVar10 = lengths;\n  puVar11 = (uint *)codes;\n  if (0 < nlengths) {\n    do {\n      uVar26 = (uint)*pbVar10;\n      *puVar11 = 0;\n      uVar17 = startcode[uVar26];\n      startcode[uVar26] = uVar17 + 1;\n      if (uVar26 != 0) {\n        uVar5 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar5 = uVar5 << 1 | uVar17 & 1;\n          uVar17 = (int)uVar17 >> 1;\n        } while (uVar26 != uVar20);\n        *puVar11 = uVar5;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar11 = puVar11 + 1;\n    } while (lengths + nlengths != pbVar10);\n  }\n  piVar21 = (int *)0x0;\n  pzVar6 = zlib_mkonetab(codes,lengths,nlengths,0,0,uVar23);\n  if (piVar16 == *(int **)puVar4) {\n    return pzVar6;\n  }\n  puVar31 = PTR___stack_chk_fail_000adca4;\n  (*(code *)PTR___stack_chk_fail_000adca4)();\n  puVar7 = *(undefined4 **)(puVar31 + 0x3a284);\n  iVar30 = *piVar16;\n  puStackY_558 = puVar4;\n  pzStackY_55c = (zlib_table *)*puVar7;\n  iVar24 = *(int *)(&LAB_00038ff8 + iVar30);\n  if (iVar24 < 4) {\n    piVar13 = piVar16;\n    pbVar10 = lengths;\n    iVar19 = iVar24;\n    if (0 < iVar24) {\n      if (iVar24 + nlengths < 3) {\n        iVar29 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar30 + 0x38000);\n        pbVar28 = &bStackY_560;\n        iVar29 = iVar24 + nlengths + -2;\n        iVar27 = 3;\n        iVar25 = 0;\n        iVar19 = iVar25;\n        do {\n          do {\n            if (iVar25 < iVar24) {\n              bVar14 = *(byte *)(iVar30 + iVar25 + 0x38ff2);\n            }\n            else {\n              bVar14 = lengths[iVar25 - iVar24];\n            }\n            pbVar10 = pbVar28 + iVar25;\n            iVar25 = iVar25 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar25 != iVar27);\n          psVar8 = (short *)(iVar30 + (int)piVar13 * 6);\n          uVar17 = ((uint)bStackY_55e * 0x10d +\n                   (uint)bStackY_55f * 0x107 + (uint)bStackY_560 * 0x101) % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar17;\n          psVar8[1] = -1;\n          iVar25 = iVar30 + uVar17 * 2;\n          sVar2 = *(short *)(iVar25 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar25 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar30 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar30 + 0x30000);\n          iVar25 = iVar19 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStackY_560;\n          *(int **)(iVar30 + 0x38000) = piVar13;\n          if (iVar24 == iVar25) {\n            iVar19 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar28 = pbVar28 + -1;\n          iVar27 = iVar27 + 1;\n          iVar19 = iVar25;\n        } while (iVar25 != iVar29);\n        iVar19 = iVar24 - iVar29;\n      }\n      pbVar28 = (byte *)(iVar30 + 0x38ff2);\n      iVar25 = iVar29;\n      do {\n        iVar25 = iVar25 + 1;\n        bVar14 = pbVar28[iVar29];\n        *pbVar28 = bVar14;\n        pbVar28 = pbVar28 + 1;\n        piVar13 = (int *)(uint)(iVar25 < iVar24);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar25 < iVar24) != (int *)0x0);\n    }\nLAB_00073c5c:\n    uVar15 = SUB41(pbVar10,0);\n    *(int *)(&LAB_00038ff8 + iVar30) = iVar19;\n    if (0 < nlengths) {\n      iStackY_674 = 0;\n      uStackY_670 = 0;\n      bVar3 = nlengths < 3;\n      iVar24 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar17 = (uint)*lengths;\n            iVar19 = (int)*(short *)(iVar30 + (((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar19 == -1) goto LAB_00073ca0;\n            iVar27 = *(int *)(iVar30 + 0x38000);\n            iVar25 = iVar19 + 0x8000;\n            iVar29 = 0;\nLAB_00073f34:\n            do {\n              uVar23 = iVar25 - iVar27 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar17;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (lengths[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar18 = iVar29 + 1;\n                    aiStackY_660[iVar29 * 2] = iVar22;\n                    aiStackY_660[iVar29 * 2 + 1] = 3;\n                    if (0x1f < iVar18) goto LAB_00073fc8;\n                    iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n                    iVar25 = iVar19 + 0x8000;\n                    iVar29 = iVar18;\n                    if (iVar19 == -1) goto LAB_00073fc0;\n                    goto LAB_00073f34;\n                  }\n                  uVar23 = (uint)lengths[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n              iVar25 = iVar19 + 0x8000;\n              iVar18 = iVar29;\n            } while (iVar19 != -1);\nLAB_00073fc0:\n            if (iVar18 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar19 = 3;\n            if (nlengths != 3) {\n              pbVar10 = lengths + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar29 = iVar18 * 2;\n                piVar13 = aiStackY_660;\n                iVar25 = 0;\n                do {\n                  iVar27 = iVar19 - *piVar13;\n                  if (iVar27 < 0) {\n                    bVar1 = *(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = lengths[iVar27];\n                  }\n                  iVar18 = iVar25;\n                  if (bVar1 == bVar14) {\n                    iVar27 = piVar13[1];\n                    iVar18 = iVar25 + 1;\n                    aiStackY_660[iVar25 * 2] = *piVar13;\n                    aiStackY_660[iVar25 * 2 + 1] = iVar27;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar25 = iVar18;\n                } while (aiStackY_660 + iVar29 != piVar13);\n                if (iVar18 == 0) break;\n                iVar19 = iVar19 + 1;\n                pbVar10 = lengths + iVar19;\n              } while (iVar19 != nlengths);\n            }\n            piVar13 = piVar21;\n            aiStackY_660[1] = iVar19;\n            if (iVar24 != 0) {\n              if (iVar24 + 1 < iVar19) {\n                (*(code *)piVar16[2])(piVar16,uStackY_670);\n                iStackY_674 = aiStackY_660[0];\n                uStackY_670 = (uint)*lengths;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStackY_674 = aiStackY_660[0];\n            uStackY_670 = uVar17;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar24 == 0) {\n            (*(code *)piVar16[2])(piVar16,*lengths);\n            piVar13 = (int *)0x1;\n            iVar19 = iVar24;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar16[3])(piVar16,iStackY_674,iVar24);\n          piVar13 = (int *)(iVar24 - 1);\n          iVar19 = 0;\n          iVar24 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = lengths + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar24 = *(int *)(&LAB_00038ff8 + iVar30);\n            piVar13 = *(int **)(puVar31 + 0x39878);\n            if (2 < iVar24) {\n              iVar19 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar31 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar31 + 0x3a0b0))();\n              piVar16 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(&LAB_00038ff8 + iVar30) = iVar24 + 1;\n            *(uchar *)(iVar30 + iVar24 + 0x38ff2) = *lengths;\n          }\n          else {\n            bVar14 = *lengths;\n            piVar13 = (int *)(uint)bVar14;\n            iVar24 = *(int *)(iVar30 + 0x38000);\n            psVar8 = (short *)(iVar30 + iVar24 * 6);\n            uVar17 = ((uint)lengths[2] * 0x10d + (uint)lengths[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar17;\n            psVar8[1] = -1;\n            iVar29 = iVar30 + uVar17 * 2;\n            sVar2 = *(short *)(iVar29 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar29 + 0x38004) = (short)iVar24;\n            if (sVar2 != -1) {\n              *(short *)(iVar30 + sVar2 * 6 + 2) = (short)iVar24;\n            }\n            *(byte *)(iVar30 + iVar24 + 0x30000) = bVar14;\n            *(uint *)(iVar30 + 0x38000) = iVar24 + 1U & 0x7fff;\n          }\n          if (lengths + 1 == pbVar10) break;\n          nlengths = nlengths + -1;\n          lengths = lengths + 1;\n          bVar3 = nlengths < 3;\n        }\n        nlengths = nlengths + -1;\n        lengths = lengths + 1;\n        bVar3 = nlengths < 3;\n        iVar24 = iVar19;\n      } while (0 < nlengths);\n    }\n    pzVar6 = (zlib_table *)*puVar7;\n    if (pzStackY_55c == pzVar6) {\n      return pzVar6;\n    }\n  }\n  else {\n    iVar24 = *(int *)(puVar31 + 0x39878) + 0x72e0;\n    piVar13 = (int *)(*(int *)(puVar31 + 0x39878) + 0x72ec);\n    (**(code **)(puVar31 + 0x3a0b0))(piVar13,iVar24,0xd0,*(int *)(puVar31 + 0x39878) + 0x740c);\n    uVar15 = (undefined1)iVar24;\n  }\n  pcVar32 = *(code **)(puVar31 + 0x3a254);\n  (*pcVar32)();\n  iVar24 = piVar13[0x2067];\n  *(undefined1 *)((int)piVar13 + iVar24 + 0x19c) = uVar15;\n  piVar13[0x2067] = iVar24 + 1U & 0x7fff;\n  iVar24 = piVar13[0x2069];\n  if (iVar24 < piVar13[0x206a]) {\n    pzVar6 = (zlib_table *)(piVar13[0x2068] + iVar24);\n    piVar13[0x2069] = iVar24 + 1;\n    *(undefined1 *)&pzVar6->mask = uVar15;\n    return pzVar6;\n  }\n  pcVar32 = *(code **)(pcVar32 + 0x391d8);\n  piVar13[0x206a] = iVar24 + 0x200;\n  iVar24 = (*pcVar32)(piVar13[0x2068],iVar24 + 0x200,1);\n  piVar13[0x2068] = iVar24;\n  pzVar6 = (zlib_table *)(iVar24 + piVar13[0x2069]);\n  piVar13[0x2069] = piVar13[0x2069] + 1;\n  *(undefined1 *)&pzVar6->mask = uVar15;\n  return pzVar6;\n}" type_identifier (pointer_declarator "* zlib_mktable(uchar *lengths,int nlengths)" * (function_declarator "zlib_mktable(uchar *lengths,int nlengths)" identifier (parameter_list "(uchar *lengths,int nlengths)" ( (parameter_declaration "uchar *lengths" type_identifier (pointer_declarator "*lengths" * identifier)) , (parameter_declaration "int nlengths" primitive_type identifier) )))) (compound_statement "{\n  byte bVar1;\n  short sVar2;\n  bool bVar3;\n  undefined *puVar4;\n  uint uVar5;\n  zlib_table *pzVar6;\n  undefined4 *puVar7;\n  short *psVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  uint *puVar11;\n  uint *puVar12;\n  int *piVar13;\n  byte bVar14;\n  undefined1 uVar15;\n  int *piVar16;\n  uint uVar17;\n  int iVar18;\n  int iVar19;\n  uint uVar20;\n  int *piVar21;\n  int iVar22;\n  uint uVar23;\n  int iVar24;\n  int iVar25;\n  uint uVar26;\n  int iVar27;\n  byte *pbVar28;\n  int iVar29;\n  int iVar30;\n  undefined *puVar31;\n  code *pcVar32;\n  int iStackY_674;\n  uint uStackY_670;\n  int aiStackY_660 [64];\n  byte bStackY_560;\n  byte bStackY_55f;\n  byte bStackY_55e;\n  zlib_table *pzStackY_55c;\n  undefined *puStackY_558;\n  int count [16];\n  int startcode [16];\n  int codes [288];\n  \n  puVar4 = PTR___stack_chk_guard_000adcd4;\n  piVar13 = count + 1;\n  piVar16 = *(int **)PTR___stack_chk_guard_000adcd4;\n  piVar21 = piVar13;\n  do {\n    *piVar21 = 0;\n    piVar21 = piVar21 + 1;\n  } while (piVar21 != startcode);\n  uVar17 = 0;\n  if (nlengths < 1) {\n    uVar23 = 0;\n  }\n  else {\n    pbVar10 = lengths;\n    do {\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar17 < uVar23) {\n        uVar17 = uVar23;\n      }\n      count[uVar23] = count[uVar23] + 1;\n    } while (lengths + nlengths != pbVar10);\n    uVar23 = 9;\n    if (uVar17 < 10) {\n      uVar23 = uVar17;\n    }\n  }\n  uVar17 = 0;\n  puVar11 = (uint *)(startcode + 1);\n  do {\n    iVar24 = *piVar13;\n    puVar12 = puVar11 + 1;\n    *puVar11 = uVar17;\n    piVar13 = piVar13 + 1;\n    uVar17 = (uVar17 + iVar24) * 2;\n    puVar11 = puVar12;\n  } while (puVar12 != (uint *)codes);\n  pbVar10 = lengths;\n  puVar11 = (uint *)codes;\n  if (0 < nlengths) {\n    do {\n      uVar26 = (uint)*pbVar10;\n      *puVar11 = 0;\n      uVar17 = startcode[uVar26];\n      startcode[uVar26] = uVar17 + 1;\n      if (uVar26 != 0) {\n        uVar5 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar5 = uVar5 << 1 | uVar17 & 1;\n          uVar17 = (int)uVar17 >> 1;\n        } while (uVar26 != uVar20);\n        *puVar11 = uVar5;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar11 = puVar11 + 1;\n    } while (lengths + nlengths != pbVar10);\n  }\n  piVar21 = (int *)0x0;\n  pzVar6 = zlib_mkonetab(codes,lengths,nlengths,0,0,uVar23);\n  if (piVar16 == *(int **)puVar4) {\n    return pzVar6;\n  }\n  puVar31 = PTR___stack_chk_fail_000adca4;\n  (*(code *)PTR___stack_chk_fail_000adca4)();\n  puVar7 = *(undefined4 **)(puVar31 + 0x3a284);\n  iVar30 = *piVar16;\n  puStackY_558 = puVar4;\n  pzStackY_55c = (zlib_table *)*puVar7;\n  iVar24 = *(int *)(&LAB_00038ff8 + iVar30);\n  if (iVar24 < 4) {\n    piVar13 = piVar16;\n    pbVar10 = lengths;\n    iVar19 = iVar24;\n    if (0 < iVar24) {\n      if (iVar24 + nlengths < 3) {\n        iVar29 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar30 + 0x38000);\n        pbVar28 = &bStackY_560;\n        iVar29 = iVar24 + nlengths + -2;\n        iVar27 = 3;\n        iVar25 = 0;\n        iVar19 = iVar25;\n        do {\n          do {\n            if (iVar25 < iVar24) {\n              bVar14 = *(byte *)(iVar30 + iVar25 + 0x38ff2);\n            }\n            else {\n              bVar14 = lengths[iVar25 - iVar24];\n            }\n            pbVar10 = pbVar28 + iVar25;\n            iVar25 = iVar25 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar25 != iVar27);\n          psVar8 = (short *)(iVar30 + (int)piVar13 * 6);\n          uVar17 = ((uint)bStackY_55e * 0x10d +\n                   (uint)bStackY_55f * 0x107 + (uint)bStackY_560 * 0x101) % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar17;\n          psVar8[1] = -1;\n          iVar25 = iVar30 + uVar17 * 2;\n          sVar2 = *(short *)(iVar25 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar25 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar30 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar30 + 0x30000);\n          iVar25 = iVar19 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStackY_560;\n          *(int **)(iVar30 + 0x38000) = piVar13;\n          if (iVar24 == iVar25) {\n            iVar19 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar28 = pbVar28 + -1;\n          iVar27 = iVar27 + 1;\n          iVar19 = iVar25;\n        } while (iVar25 != iVar29);\n        iVar19 = iVar24 - iVar29;\n      }\n      pbVar28 = (byte *)(iVar30 + 0x38ff2);\n      iVar25 = iVar29;\n      do {\n        iVar25 = iVar25 + 1;\n        bVar14 = pbVar28[iVar29];\n        *pbVar28 = bVar14;\n        pbVar28 = pbVar28 + 1;\n        piVar13 = (int *)(uint)(iVar25 < iVar24);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar25 < iVar24) != (int *)0x0);\n    }\nLAB_00073c5c:\n    uVar15 = SUB41(pbVar10,0);\n    *(int *)(&LAB_00038ff8 + iVar30) = iVar19;\n    if (0 < nlengths) {\n      iStackY_674 = 0;\n      uStackY_670 = 0;\n      bVar3 = nlengths < 3;\n      iVar24 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar17 = (uint)*lengths;\n            iVar19 = (int)*(short *)(iVar30 + (((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar19 == -1) goto LAB_00073ca0;\n            iVar27 = *(int *)(iVar30 + 0x38000);\n            iVar25 = iVar19 + 0x8000;\n            iVar29 = 0;\nLAB_00073f34:\n            do {\n              uVar23 = iVar25 - iVar27 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar17;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (lengths[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar18 = iVar29 + 1;\n                    aiStackY_660[iVar29 * 2] = iVar22;\n                    aiStackY_660[iVar29 * 2 + 1] = 3;\n                    if (0x1f < iVar18) goto LAB_00073fc8;\n                    iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n                    iVar25 = iVar19 + 0x8000;\n                    iVar29 = iVar18;\n                    if (iVar19 == -1) goto LAB_00073fc0;\n                    goto LAB_00073f34;\n                  }\n                  uVar23 = (uint)lengths[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n              iVar25 = iVar19 + 0x8000;\n              iVar18 = iVar29;\n            } while (iVar19 != -1);\nLAB_00073fc0:\n            if (iVar18 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar19 = 3;\n            if (nlengths != 3) {\n              pbVar10 = lengths + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar29 = iVar18 * 2;\n                piVar13 = aiStackY_660;\n                iVar25 = 0;\n                do {\n                  iVar27 = iVar19 - *piVar13;\n                  if (iVar27 < 0) {\n                    bVar1 = *(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = lengths[iVar27];\n                  }\n                  iVar18 = iVar25;\n                  if (bVar1 == bVar14) {\n                    iVar27 = piVar13[1];\n                    iVar18 = iVar25 + 1;\n                    aiStackY_660[iVar25 * 2] = *piVar13;\n                    aiStackY_660[iVar25 * 2 + 1] = iVar27;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar25 = iVar18;\n                } while (aiStackY_660 + iVar29 != piVar13);\n                if (iVar18 == 0) break;\n                iVar19 = iVar19 + 1;\n                pbVar10 = lengths + iVar19;\n              } while (iVar19 != nlengths);\n            }\n            piVar13 = piVar21;\n            aiStackY_660[1] = iVar19;\n            if (iVar24 != 0) {\n              if (iVar24 + 1 < iVar19) {\n                (*(code *)piVar16[2])(piVar16,uStackY_670);\n                iStackY_674 = aiStackY_660[0];\n                uStackY_670 = (uint)*lengths;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStackY_674 = aiStackY_660[0];\n            uStackY_670 = uVar17;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar24 == 0) {\n            (*(code *)piVar16[2])(piVar16,*lengths);\n            piVar13 = (int *)0x1;\n            iVar19 = iVar24;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar16[3])(piVar16,iStackY_674,iVar24);\n          piVar13 = (int *)(iVar24 - 1);\n          iVar19 = 0;\n          iVar24 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = lengths + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar24 = *(int *)(&LAB_00038ff8 + iVar30);\n            piVar13 = *(int **)(puVar31 + 0x39878);\n            if (2 < iVar24) {\n              iVar19 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar31 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar31 + 0x3a0b0))();\n              piVar16 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(&LAB_00038ff8 + iVar30) = iVar24 + 1;\n            *(uchar *)(iVar30 + iVar24 + 0x38ff2) = *lengths;\n          }\n          else {\n            bVar14 = *lengths;\n            piVar13 = (int *)(uint)bVar14;\n            iVar24 = *(int *)(iVar30 + 0x38000);\n            psVar8 = (short *)(iVar30 + iVar24 * 6);\n            uVar17 = ((uint)lengths[2] * 0x10d + (uint)lengths[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar17;\n            psVar8[1] = -1;\n            iVar29 = iVar30 + uVar17 * 2;\n            sVar2 = *(short *)(iVar29 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar29 + 0x38004) = (short)iVar24;\n            if (sVar2 != -1) {\n              *(short *)(iVar30 + sVar2 * 6 + 2) = (short)iVar24;\n            }\n            *(byte *)(iVar30 + iVar24 + 0x30000) = bVar14;\n            *(uint *)(iVar30 + 0x38000) = iVar24 + 1U & 0x7fff;\n          }\n          if (lengths + 1 == pbVar10) break;\n          nlengths = nlengths + -1;\n          lengths = lengths + 1;\n          bVar3 = nlengths < 3;\n        }\n        nlengths = nlengths + -1;\n        lengths = lengths + 1;\n        bVar3 = nlengths < 3;\n        iVar24 = iVar19;\n      } while (0 < nlengths);\n    }\n    pzVar6 = (zlib_table *)*puVar7;\n    if (pzStackY_55c == pzVar6) {\n      return pzVar6;\n    }\n  }\n  else {\n    iVar24 = *(int *)(puVar31 + 0x39878) + 0x72e0;\n    piVar13 = (int *)(*(int *)(puVar31 + 0x39878) + 0x72ec);\n    (**(code **)(puVar31 + 0x3a0b0))(piVar13,iVar24,0xd0,*(int *)(puVar31 + 0x39878) + 0x740c);\n    uVar15 = (undefined1)iVar24;\n  }\n  pcVar32 = *(code **)(puVar31 + 0x3a254);\n  (*pcVar32)();\n  iVar24 = piVar13[0x2067];\n  *(undefined1 *)((int)piVar13 + iVar24 + 0x19c) = uVar15;\n  piVar13[0x2067] = iVar24 + 1U & 0x7fff;\n  iVar24 = piVar13[0x2069];\n  if (iVar24 < piVar13[0x206a]) {\n    pzVar6 = (zlib_table *)(piVar13[0x2068] + iVar24);\n    piVar13[0x2069] = iVar24 + 1;\n    *(undefined1 *)&pzVar6->mask = uVar15;\n    return pzVar6;\n  }\n  pcVar32 = *(code **)(pcVar32 + 0x391d8);\n  piVar13[0x206a] = iVar24 + 0x200;\n  iVar24 = (*pcVar32)(piVar13[0x2068],iVar24 + 0x200,1);\n  piVar13[0x2068] = iVar24;\n  pzVar6 = (zlib_table *)(iVar24 + piVar13[0x2069]);\n  piVar13[0x2069] = piVar13[0x2069] + 1;\n  *(undefined1 *)&pzVar6->mask = uVar15;\n  return pzVar6;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "short sVar2;" (sized_type_specifier "short" short) identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "zlib_table *pzVar6;" type_identifier (pointer_declarator "*pzVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "short *psVar8;" (sized_type_specifier "short" short) (pointer_declarator "*psVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "byte bVar14;" type_identifier identifier ;) (declaration "undefined1 uVar15;" type_identifier identifier ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "int *piVar21;" primitive_type (pointer_declarator "*piVar21" * identifier) ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "int iVar25;" primitive_type identifier ;) (declaration "uint uVar26;" type_identifier identifier ;) (declaration "int iVar27;" primitive_type identifier ;) (declaration "byte *pbVar28;" type_identifier (pointer_declarator "*pbVar28" * identifier) ;) (declaration "int iVar29;" primitive_type identifier ;) (declaration "int iVar30;" primitive_type identifier ;) (declaration "undefined *puVar31;" type_identifier (pointer_declarator "*puVar31" * identifier) ;) (declaration "code *pcVar32;" type_identifier (pointer_declarator "*pcVar32" * identifier) ;) (declaration "int iStackY_674;" primitive_type identifier ;) (declaration "uint uStackY_670;" type_identifier identifier ;) (declaration "int aiStackY_660 [64];" primitive_type (array_declarator "aiStackY_660 [64]" identifier [ number_literal ]) ;) (declaration "byte bStackY_560;" type_identifier identifier ;) (declaration "byte bStackY_55f;" type_identifier identifier ;) (declaration "byte bStackY_55e;" type_identifier identifier ;) (declaration "zlib_table *pzStackY_55c;" type_identifier (pointer_declarator "*pzStackY_55c" * identifier) ;) (declaration "undefined *puStackY_558;" type_identifier (pointer_declarator "*puStackY_558" * identifier) ;) (declaration "int count [16];" primitive_type (array_declarator "count [16]" identifier [ number_literal ]) ;) (declaration "int startcode [16];" primitive_type (array_declarator "startcode [16]" identifier [ number_literal ]) ;) (declaration "int codes [288];" primitive_type (array_declarator "codes [288]" identifier [ number_literal ]) ;) (expression_statement "puVar4 = PTR___stack_chk_guard_000adcd4;" (assignment_expression "puVar4 = PTR___stack_chk_guard_000adcd4" identifier = identifier) ;) (expression_statement "piVar13 = count + 1;" (assignment_expression "piVar13 = count + 1" identifier = (binary_expression "count + 1" identifier + number_literal)) ;) (expression_statement "piVar16 = *(int **)PTR___stack_chk_guard_000adcd4;" (assignment_expression "piVar16 = *(int **)PTR___stack_chk_guard_000adcd4" identifier = (pointer_expression "*(int **)PTR___stack_chk_guard_000adcd4" * (cast_expression "(int **)PTR___stack_chk_guard_000adcd4" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "piVar21 = piVar13;" (assignment_expression "piVar21 = piVar13" identifier = identifier) ;) (do_statement "do {\n    *piVar21 = 0;\n    piVar21 = piVar21 + 1;\n  } while (piVar21 != startcode);" do (compound_statement "{\n    *piVar21 = 0;\n    piVar21 = piVar21 + 1;\n  }" { (expression_statement "*piVar21 = 0;" (assignment_expression "*piVar21 = 0" (pointer_expression "*piVar21" * identifier) = number_literal) ;) (expression_statement "piVar21 = piVar21 + 1;" (assignment_expression "piVar21 = piVar21 + 1" identifier = (binary_expression "piVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar21 != startcode)" ( (binary_expression "piVar21 != startcode" identifier != identifier) )) ;) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (if_statement "if (nlengths < 1) {\n    uVar23 = 0;\n  }\n  else {\n    pbVar10 = lengths;\n    do {\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar17 < uVar23) {\n        uVar17 = uVar23;\n      }\n      count[uVar23] = count[uVar23] + 1;\n    } while (lengths + nlengths != pbVar10);\n    uVar23 = 9;\n    if (uVar17 < 10) {\n      uVar23 = uVar17;\n    }\n  }" if (parenthesized_expression "(nlengths < 1)" ( (binary_expression "nlengths < 1" identifier < number_literal) )) (compound_statement "{\n    uVar23 = 0;\n  }" { (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    pbVar10 = lengths;\n    do {\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar17 < uVar23) {\n        uVar17 = uVar23;\n      }\n      count[uVar23] = count[uVar23] + 1;\n    } while (lengths + nlengths != pbVar10);\n    uVar23 = 9;\n    if (uVar17 < 10) {\n      uVar23 = uVar17;\n    }\n  }" else (compound_statement "{\n    pbVar10 = lengths;\n    do {\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar17 < uVar23) {\n        uVar17 = uVar23;\n      }\n      count[uVar23] = count[uVar23] + 1;\n    } while (lengths + nlengths != pbVar10);\n    uVar23 = 9;\n    if (uVar17 < 10) {\n      uVar23 = uVar17;\n    }\n  }" { (expression_statement "pbVar10 = lengths;" (assignment_expression "pbVar10 = lengths" identifier = identifier) ;) (do_statement "do {\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar17 < uVar23) {\n        uVar17 = uVar23;\n      }\n      count[uVar23] = count[uVar23] + 1;\n    } while (lengths + nlengths != pbVar10);" do (compound_statement "{\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar17 < uVar23) {\n        uVar17 = uVar23;\n      }\n      count[uVar23] = count[uVar23] + 1;\n    }" { (expression_statement "uVar23 = (uint)*pbVar10;" (assignment_expression "uVar23 = (uint)*pbVar10" identifier = (binary_expression "(uint)*pbVar10" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (if_statement "if (uVar17 < uVar23) {\n        uVar17 = uVar23;\n      }" if (parenthesized_expression "(uVar17 < uVar23)" ( (binary_expression "uVar17 < uVar23" identifier < identifier) )) (compound_statement "{\n        uVar17 = uVar23;\n      }" { (expression_statement "uVar17 = uVar23;" (assignment_expression "uVar17 = uVar23" identifier = identifier) ;) })) (expression_statement "count[uVar23] = count[uVar23] + 1;" (assignment_expression "count[uVar23] = count[uVar23] + 1" (subscript_expression "count[uVar23]" identifier [ identifier ]) = (binary_expression "count[uVar23] + 1" (subscript_expression "count[uVar23]" identifier [ identifier ]) + number_literal)) ;) }) while (parenthesized_expression "(lengths + nlengths != pbVar10)" ( (binary_expression "lengths + nlengths != pbVar10" (binary_expression "lengths + nlengths" identifier + identifier) != identifier) )) ;) (expression_statement "uVar23 = 9;" (assignment_expression "uVar23 = 9" identifier = number_literal) ;) (if_statement "if (uVar17 < 10) {\n      uVar23 = uVar17;\n    }" if (parenthesized_expression "(uVar17 < 10)" ( (binary_expression "uVar17 < 10" identifier < number_literal) )) (compound_statement "{\n      uVar23 = uVar17;\n    }" { (expression_statement "uVar23 = uVar17;" (assignment_expression "uVar23 = uVar17" identifier = identifier) ;) })) }))) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "puVar11 = (uint *)(startcode + 1);" (assignment_expression "puVar11 = (uint *)(startcode + 1)" identifier = (cast_expression "(uint *)(startcode + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(startcode + 1)" ( (binary_expression "startcode + 1" identifier + number_literal) )))) ;) (do_statement "do {\n    iVar24 = *piVar13;\n    puVar12 = puVar11 + 1;\n    *puVar11 = uVar17;\n    piVar13 = piVar13 + 1;\n    uVar17 = (uVar17 + iVar24) * 2;\n    puVar11 = puVar12;\n  } while (puVar12 != (uint *)codes);" do (compound_statement "{\n    iVar24 = *piVar13;\n    puVar12 = puVar11 + 1;\n    *puVar11 = uVar17;\n    piVar13 = piVar13 + 1;\n    uVar17 = (uVar17 + iVar24) * 2;\n    puVar11 = puVar12;\n  }" { (expression_statement "iVar24 = *piVar13;" (assignment_expression "iVar24 = *piVar13" identifier = (pointer_expression "*piVar13" * identifier)) ;) (expression_statement "puVar12 = puVar11 + 1;" (assignment_expression "puVar12 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (expression_statement "*puVar11 = uVar17;" (assignment_expression "*puVar11 = uVar17" (pointer_expression "*puVar11" * identifier) = identifier) ;) (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" identifier = (binary_expression "piVar13 + 1" identifier + number_literal)) ;) (expression_statement "uVar17 = (uVar17 + iVar24) * 2;" (assignment_expression "uVar17 = (uVar17 + iVar24) * 2" identifier = (binary_expression "(uVar17 + iVar24) * 2" (parenthesized_expression "(uVar17 + iVar24)" ( (binary_expression "uVar17 + iVar24" identifier + identifier) )) * number_literal)) ;) (expression_statement "puVar11 = puVar12;" (assignment_expression "puVar11 = puVar12" identifier = identifier) ;) }) while (parenthesized_expression "(puVar12 != (uint *)codes)" ( (binary_expression "puVar12 != (uint *)codes" identifier != (cast_expression "(uint *)codes" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) ;) (expression_statement "pbVar10 = lengths;" (assignment_expression "pbVar10 = lengths" identifier = identifier) ;) (expression_statement "puVar11 = (uint *)codes;" (assignment_expression "puVar11 = (uint *)codes" identifier = (cast_expression "(uint *)codes" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (0 < nlengths) {\n    do {\n      uVar26 = (uint)*pbVar10;\n      *puVar11 = 0;\n      uVar17 = startcode[uVar26];\n      startcode[uVar26] = uVar17 + 1;\n      if (uVar26 != 0) {\n        uVar5 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar5 = uVar5 << 1 | uVar17 & 1;\n          uVar17 = (int)uVar17 >> 1;\n        } while (uVar26 != uVar20);\n        *puVar11 = uVar5;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar11 = puVar11 + 1;\n    } while (lengths + nlengths != pbVar10);\n  }" if (parenthesized_expression "(0 < nlengths)" ( (binary_expression "0 < nlengths" number_literal < identifier) )) (compound_statement "{\n    do {\n      uVar26 = (uint)*pbVar10;\n      *puVar11 = 0;\n      uVar17 = startcode[uVar26];\n      startcode[uVar26] = uVar17 + 1;\n      if (uVar26 != 0) {\n        uVar5 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar5 = uVar5 << 1 | uVar17 & 1;\n          uVar17 = (int)uVar17 >> 1;\n        } while (uVar26 != uVar20);\n        *puVar11 = uVar5;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar11 = puVar11 + 1;\n    } while (lengths + nlengths != pbVar10);\n  }" { (do_statement "do {\n      uVar26 = (uint)*pbVar10;\n      *puVar11 = 0;\n      uVar17 = startcode[uVar26];\n      startcode[uVar26] = uVar17 + 1;\n      if (uVar26 != 0) {\n        uVar5 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar5 = uVar5 << 1 | uVar17 & 1;\n          uVar17 = (int)uVar17 >> 1;\n        } while (uVar26 != uVar20);\n        *puVar11 = uVar5;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar11 = puVar11 + 1;\n    } while (lengths + nlengths != pbVar10);" do (compound_statement "{\n      uVar26 = (uint)*pbVar10;\n      *puVar11 = 0;\n      uVar17 = startcode[uVar26];\n      startcode[uVar26] = uVar17 + 1;\n      if (uVar26 != 0) {\n        uVar5 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar5 = uVar5 << 1 | uVar17 & 1;\n          uVar17 = (int)uVar17 >> 1;\n        } while (uVar26 != uVar20);\n        *puVar11 = uVar5;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar11 = puVar11 + 1;\n    }" { (expression_statement "uVar26 = (uint)*pbVar10;" (assignment_expression "uVar26 = (uint)*pbVar10" identifier = (binary_expression "(uint)*pbVar10" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "*puVar11 = 0;" (assignment_expression "*puVar11 = 0" (pointer_expression "*puVar11" * identifier) = number_literal) ;) (expression_statement "uVar17 = startcode[uVar26];" (assignment_expression "uVar17 = startcode[uVar26]" identifier = (subscript_expression "startcode[uVar26]" identifier [ identifier ])) ;) (expression_statement "startcode[uVar26] = uVar17 + 1;" (assignment_expression "startcode[uVar26] = uVar17 + 1" (subscript_expression "startcode[uVar26]" identifier [ identifier ]) = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (if_statement "if (uVar26 != 0) {\n        uVar5 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar5 = uVar5 << 1 | uVar17 & 1;\n          uVar17 = (int)uVar17 >> 1;\n        } while (uVar26 != uVar20);\n        *puVar11 = uVar5;\n      }" if (parenthesized_expression "(uVar26 != 0)" ( (binary_expression "uVar26 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar5 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar5 = uVar5 << 1 | uVar17 & 1;\n          uVar17 = (int)uVar17 >> 1;\n        } while (uVar26 != uVar20);\n        *puVar11 = uVar5;\n      }" { (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar20 = uVar20 + 1;\n          uVar5 = uVar5 << 1 | uVar17 & 1;\n          uVar17 = (int)uVar17 >> 1;\n        } while (uVar26 != uVar20);" do (compound_statement "{\n          uVar20 = uVar20 + 1;\n          uVar5 = uVar5 << 1 | uVar17 & 1;\n          uVar17 = (int)uVar17 >> 1;\n        }" { (expression_statement "uVar20 = uVar20 + 1;" (assignment_expression "uVar20 = uVar20 + 1" identifier = (binary_expression "uVar20 + 1" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar5 << 1 | uVar17 & 1;" (assignment_expression "uVar5 = uVar5 << 1 | uVar17 & 1" identifier = (binary_expression "uVar5 << 1 | uVar17 & 1" (binary_expression "uVar5 << 1" identifier << number_literal) | (binary_expression "uVar17 & 1" identifier & number_literal))) ;) (expression_statement "uVar17 = (int)uVar17 >> 1;" (assignment_expression "uVar17 = (int)uVar17 >> 1" identifier = (binary_expression "(int)uVar17 >> 1" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) }) while (parenthesized_expression "(uVar26 != uVar20)" ( (binary_expression "uVar26 != uVar20" identifier != identifier) )) ;) (expression_statement "*puVar11 = uVar5;" (assignment_expression "*puVar11 = uVar5" (pointer_expression "*puVar11" * identifier) = identifier) ;) })) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lengths + nlengths != pbVar10)" ( (binary_expression "lengths + nlengths != pbVar10" (binary_expression "lengths + nlengths" identifier + identifier) != identifier) )) ;) })) (expression_statement "piVar21 = (int *)0x0;" (assignment_expression "piVar21 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pzVar6 = zlib_mkonetab(codes,lengths,nlengths,0,0,uVar23);" (assignment_expression "pzVar6 = zlib_mkonetab(codes,lengths,nlengths,0,0,uVar23)" identifier = (call_expression "zlib_mkonetab(codes,lengths,nlengths,0,0,uVar23)" identifier (argument_list "(codes,lengths,nlengths,0,0,uVar23)" ( identifier , identifier , identifier , number_literal , number_literal , identifier )))) ;) (if_statement "if (piVar16 == *(int **)puVar4) {\n    return pzVar6;\n  }" if (parenthesized_expression "(piVar16 == *(int **)puVar4)" ( (binary_expression "piVar16 == *(int **)puVar4" identifier == (pointer_expression "*(int **)puVar4" * (cast_expression "(int **)puVar4" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return pzVar6;\n  }" { (return_statement "return pzVar6;" return identifier ;) })) (expression_statement "puVar31 = PTR___stack_chk_fail_000adca4;" (assignment_expression "puVar31 = PTR___stack_chk_fail_000adca4" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000adca4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000adca4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000adca4)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000adca4" * (cast_expression "(code *)PTR___stack_chk_fail_000adca4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar7 = *(undefined4 **)(puVar31 + 0x3a284);" (assignment_expression "puVar7 = *(undefined4 **)(puVar31 + 0x3a284)" identifier = (pointer_expression "*(undefined4 **)(puVar31 + 0x3a284)" * (cast_expression "(undefined4 **)(puVar31 + 0x3a284)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + 0x3a284)" ( (binary_expression "puVar31 + 0x3a284" identifier + number_literal) ))))) ;) (expression_statement "iVar30 = *piVar16;" (assignment_expression "iVar30 = *piVar16" identifier = (pointer_expression "*piVar16" * identifier)) ;) (expression_statement "puStackY_558 = puVar4;" (assignment_expression "puStackY_558 = puVar4" identifier = identifier) ;) (expression_statement "pzStackY_55c = (zlib_table *)*puVar7;" (assignment_expression "pzStackY_55c = (zlib_table *)*puVar7" identifier = (cast_expression "(zlib_table *)*puVar7" ( (type_descriptor "zlib_table *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar7" * identifier))) ;) (expression_statement "iVar24 = *(int *)(&LAB_00038ff8 + iVar30);" (assignment_expression "iVar24 = *(int *)(&LAB_00038ff8 + iVar30)" identifier = (pointer_expression "*(int *)(&LAB_00038ff8 + iVar30)" * (cast_expression "(int *)(&LAB_00038ff8 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&LAB_00038ff8 + iVar30)" ( (binary_expression "&LAB_00038ff8 + iVar30" (pointer_expression "&LAB_00038ff8" & identifier) + identifier) ))))) ;) (if_statement "if (iVar24 < 4) {\n    piVar13 = piVar16;\n    pbVar10 = lengths;\n    iVar19 = iVar24;\n    if (0 < iVar24) {\n      if (iVar24 + nlengths < 3) {\n        iVar29 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar30 + 0x38000);\n        pbVar28 = &bStackY_560;\n        iVar29 = iVar24 + nlengths + -2;\n        iVar27 = 3;\n        iVar25 = 0;\n        iVar19 = iVar25;\n        do {\n          do {\n            if (iVar25 < iVar24) {\n              bVar14 = *(byte *)(iVar30 + iVar25 + 0x38ff2);\n            }\n            else {\n              bVar14 = lengths[iVar25 - iVar24];\n            }\n            pbVar10 = pbVar28 + iVar25;\n            iVar25 = iVar25 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar25 != iVar27);\n          psVar8 = (short *)(iVar30 + (int)piVar13 * 6);\n          uVar17 = ((uint)bStackY_55e * 0x10d +\n                   (uint)bStackY_55f * 0x107 + (uint)bStackY_560 * 0x101) % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar17;\n          psVar8[1] = -1;\n          iVar25 = iVar30 + uVar17 * 2;\n          sVar2 = *(short *)(iVar25 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar25 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar30 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar30 + 0x30000);\n          iVar25 = iVar19 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStackY_560;\n          *(int **)(iVar30 + 0x38000) = piVar13;\n          if (iVar24 == iVar25) {\n            iVar19 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar28 = pbVar28 + -1;\n          iVar27 = iVar27 + 1;\n          iVar19 = iVar25;\n        } while (iVar25 != iVar29);\n        iVar19 = iVar24 - iVar29;\n      }\n      pbVar28 = (byte *)(iVar30 + 0x38ff2);\n      iVar25 = iVar29;\n      do {\n        iVar25 = iVar25 + 1;\n        bVar14 = pbVar28[iVar29];\n        *pbVar28 = bVar14;\n        pbVar28 = pbVar28 + 1;\n        piVar13 = (int *)(uint)(iVar25 < iVar24);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar25 < iVar24) != (int *)0x0);\n    }\nLAB_00073c5c:\n    uVar15 = SUB41(pbVar10,0);\n    *(int *)(&LAB_00038ff8 + iVar30) = iVar19;\n    if (0 < nlengths) {\n      iStackY_674 = 0;\n      uStackY_670 = 0;\n      bVar3 = nlengths < 3;\n      iVar24 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar17 = (uint)*lengths;\n            iVar19 = (int)*(short *)(iVar30 + (((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar19 == -1) goto LAB_00073ca0;\n            iVar27 = *(int *)(iVar30 + 0x38000);\n            iVar25 = iVar19 + 0x8000;\n            iVar29 = 0;\nLAB_00073f34:\n            do {\n              uVar23 = iVar25 - iVar27 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar17;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (lengths[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar18 = iVar29 + 1;\n                    aiStackY_660[iVar29 * 2] = iVar22;\n                    aiStackY_660[iVar29 * 2 + 1] = 3;\n                    if (0x1f < iVar18) goto LAB_00073fc8;\n                    iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n                    iVar25 = iVar19 + 0x8000;\n                    iVar29 = iVar18;\n                    if (iVar19 == -1) goto LAB_00073fc0;\n                    goto LAB_00073f34;\n                  }\n                  uVar23 = (uint)lengths[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n              iVar25 = iVar19 + 0x8000;\n              iVar18 = iVar29;\n            } while (iVar19 != -1);\nLAB_00073fc0:\n            if (iVar18 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar19 = 3;\n            if (nlengths != 3) {\n              pbVar10 = lengths + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar29 = iVar18 * 2;\n                piVar13 = aiStackY_660;\n                iVar25 = 0;\n                do {\n                  iVar27 = iVar19 - *piVar13;\n                  if (iVar27 < 0) {\n                    bVar1 = *(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = lengths[iVar27];\n                  }\n                  iVar18 = iVar25;\n                  if (bVar1 == bVar14) {\n                    iVar27 = piVar13[1];\n                    iVar18 = iVar25 + 1;\n                    aiStackY_660[iVar25 * 2] = *piVar13;\n                    aiStackY_660[iVar25 * 2 + 1] = iVar27;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar25 = iVar18;\n                } while (aiStackY_660 + iVar29 != piVar13);\n                if (iVar18 == 0) break;\n                iVar19 = iVar19 + 1;\n                pbVar10 = lengths + iVar19;\n              } while (iVar19 != nlengths);\n            }\n            piVar13 = piVar21;\n            aiStackY_660[1] = iVar19;\n            if (iVar24 != 0) {\n              if (iVar24 + 1 < iVar19) {\n                (*(code *)piVar16[2])(piVar16,uStackY_670);\n                iStackY_674 = aiStackY_660[0];\n                uStackY_670 = (uint)*lengths;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStackY_674 = aiStackY_660[0];\n            uStackY_670 = uVar17;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar24 == 0) {\n            (*(code *)piVar16[2])(piVar16,*lengths);\n            piVar13 = (int *)0x1;\n            iVar19 = iVar24;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar16[3])(piVar16,iStackY_674,iVar24);\n          piVar13 = (int *)(iVar24 - 1);\n          iVar19 = 0;\n          iVar24 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = lengths + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar24 = *(int *)(&LAB_00038ff8 + iVar30);\n            piVar13 = *(int **)(puVar31 + 0x39878);\n            if (2 < iVar24) {\n              iVar19 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar31 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar31 + 0x3a0b0))();\n              piVar16 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(&LAB_00038ff8 + iVar30) = iVar24 + 1;\n            *(uchar *)(iVar30 + iVar24 + 0x38ff2) = *lengths;\n          }\n          else {\n            bVar14 = *lengths;\n            piVar13 = (int *)(uint)bVar14;\n            iVar24 = *(int *)(iVar30 + 0x38000);\n            psVar8 = (short *)(iVar30 + iVar24 * 6);\n            uVar17 = ((uint)lengths[2] * 0x10d + (uint)lengths[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar17;\n            psVar8[1] = -1;\n            iVar29 = iVar30 + uVar17 * 2;\n            sVar2 = *(short *)(iVar29 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar29 + 0x38004) = (short)iVar24;\n            if (sVar2 != -1) {\n              *(short *)(iVar30 + sVar2 * 6 + 2) = (short)iVar24;\n            }\n            *(byte *)(iVar30 + iVar24 + 0x30000) = bVar14;\n            *(uint *)(iVar30 + 0x38000) = iVar24 + 1U & 0x7fff;\n          }\n          if (lengths + 1 == pbVar10) break;\n          nlengths = nlengths + -1;\n          lengths = lengths + 1;\n          bVar3 = nlengths < 3;\n        }\n        nlengths = nlengths + -1;\n        lengths = lengths + 1;\n        bVar3 = nlengths < 3;\n        iVar24 = iVar19;\n      } while (0 < nlengths);\n    }\n    pzVar6 = (zlib_table *)*puVar7;\n    if (pzStackY_55c == pzVar6) {\n      return pzVar6;\n    }\n  }\n  else {\n    iVar24 = *(int *)(puVar31 + 0x39878) + 0x72e0;\n    piVar13 = (int *)(*(int *)(puVar31 + 0x39878) + 0x72ec);\n    (**(code **)(puVar31 + 0x3a0b0))(piVar13,iVar24,0xd0,*(int *)(puVar31 + 0x39878) + 0x740c);\n    uVar15 = (undefined1)iVar24;\n  }" if (parenthesized_expression "(iVar24 < 4)" ( (binary_expression "iVar24 < 4" identifier < number_literal) )) (compound_statement "{\n    piVar13 = piVar16;\n    pbVar10 = lengths;\n    iVar19 = iVar24;\n    if (0 < iVar24) {\n      if (iVar24 + nlengths < 3) {\n        iVar29 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar30 + 0x38000);\n        pbVar28 = &bStackY_560;\n        iVar29 = iVar24 + nlengths + -2;\n        iVar27 = 3;\n        iVar25 = 0;\n        iVar19 = iVar25;\n        do {\n          do {\n            if (iVar25 < iVar24) {\n              bVar14 = *(byte *)(iVar30 + iVar25 + 0x38ff2);\n            }\n            else {\n              bVar14 = lengths[iVar25 - iVar24];\n            }\n            pbVar10 = pbVar28 + iVar25;\n            iVar25 = iVar25 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar25 != iVar27);\n          psVar8 = (short *)(iVar30 + (int)piVar13 * 6);\n          uVar17 = ((uint)bStackY_55e * 0x10d +\n                   (uint)bStackY_55f * 0x107 + (uint)bStackY_560 * 0x101) % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar17;\n          psVar8[1] = -1;\n          iVar25 = iVar30 + uVar17 * 2;\n          sVar2 = *(short *)(iVar25 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar25 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar30 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar30 + 0x30000);\n          iVar25 = iVar19 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStackY_560;\n          *(int **)(iVar30 + 0x38000) = piVar13;\n          if (iVar24 == iVar25) {\n            iVar19 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar28 = pbVar28 + -1;\n          iVar27 = iVar27 + 1;\n          iVar19 = iVar25;\n        } while (iVar25 != iVar29);\n        iVar19 = iVar24 - iVar29;\n      }\n      pbVar28 = (byte *)(iVar30 + 0x38ff2);\n      iVar25 = iVar29;\n      do {\n        iVar25 = iVar25 + 1;\n        bVar14 = pbVar28[iVar29];\n        *pbVar28 = bVar14;\n        pbVar28 = pbVar28 + 1;\n        piVar13 = (int *)(uint)(iVar25 < iVar24);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar25 < iVar24) != (int *)0x0);\n    }\nLAB_00073c5c:\n    uVar15 = SUB41(pbVar10,0);\n    *(int *)(&LAB_00038ff8 + iVar30) = iVar19;\n    if (0 < nlengths) {\n      iStackY_674 = 0;\n      uStackY_670 = 0;\n      bVar3 = nlengths < 3;\n      iVar24 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar17 = (uint)*lengths;\n            iVar19 = (int)*(short *)(iVar30 + (((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar19 == -1) goto LAB_00073ca0;\n            iVar27 = *(int *)(iVar30 + 0x38000);\n            iVar25 = iVar19 + 0x8000;\n            iVar29 = 0;\nLAB_00073f34:\n            do {\n              uVar23 = iVar25 - iVar27 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar17;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (lengths[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar18 = iVar29 + 1;\n                    aiStackY_660[iVar29 * 2] = iVar22;\n                    aiStackY_660[iVar29 * 2 + 1] = 3;\n                    if (0x1f < iVar18) goto LAB_00073fc8;\n                    iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n                    iVar25 = iVar19 + 0x8000;\n                    iVar29 = iVar18;\n                    if (iVar19 == -1) goto LAB_00073fc0;\n                    goto LAB_00073f34;\n                  }\n                  uVar23 = (uint)lengths[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n              iVar25 = iVar19 + 0x8000;\n              iVar18 = iVar29;\n            } while (iVar19 != -1);\nLAB_00073fc0:\n            if (iVar18 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar19 = 3;\n            if (nlengths != 3) {\n              pbVar10 = lengths + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar29 = iVar18 * 2;\n                piVar13 = aiStackY_660;\n                iVar25 = 0;\n                do {\n                  iVar27 = iVar19 - *piVar13;\n                  if (iVar27 < 0) {\n                    bVar1 = *(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = lengths[iVar27];\n                  }\n                  iVar18 = iVar25;\n                  if (bVar1 == bVar14) {\n                    iVar27 = piVar13[1];\n                    iVar18 = iVar25 + 1;\n                    aiStackY_660[iVar25 * 2] = *piVar13;\n                    aiStackY_660[iVar25 * 2 + 1] = iVar27;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar25 = iVar18;\n                } while (aiStackY_660 + iVar29 != piVar13);\n                if (iVar18 == 0) break;\n                iVar19 = iVar19 + 1;\n                pbVar10 = lengths + iVar19;\n              } while (iVar19 != nlengths);\n            }\n            piVar13 = piVar21;\n            aiStackY_660[1] = iVar19;\n            if (iVar24 != 0) {\n              if (iVar24 + 1 < iVar19) {\n                (*(code *)piVar16[2])(piVar16,uStackY_670);\n                iStackY_674 = aiStackY_660[0];\n                uStackY_670 = (uint)*lengths;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStackY_674 = aiStackY_660[0];\n            uStackY_670 = uVar17;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar24 == 0) {\n            (*(code *)piVar16[2])(piVar16,*lengths);\n            piVar13 = (int *)0x1;\n            iVar19 = iVar24;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar16[3])(piVar16,iStackY_674,iVar24);\n          piVar13 = (int *)(iVar24 - 1);\n          iVar19 = 0;\n          iVar24 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = lengths + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar24 = *(int *)(&LAB_00038ff8 + iVar30);\n            piVar13 = *(int **)(puVar31 + 0x39878);\n            if (2 < iVar24) {\n              iVar19 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar31 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar31 + 0x3a0b0))();\n              piVar16 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(&LAB_00038ff8 + iVar30) = iVar24 + 1;\n            *(uchar *)(iVar30 + iVar24 + 0x38ff2) = *lengths;\n          }\n          else {\n            bVar14 = *lengths;\n            piVar13 = (int *)(uint)bVar14;\n            iVar24 = *(int *)(iVar30 + 0x38000);\n            psVar8 = (short *)(iVar30 + iVar24 * 6);\n            uVar17 = ((uint)lengths[2] * 0x10d + (uint)lengths[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar17;\n            psVar8[1] = -1;\n            iVar29 = iVar30 + uVar17 * 2;\n            sVar2 = *(short *)(iVar29 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar29 + 0x38004) = (short)iVar24;\n            if (sVar2 != -1) {\n              *(short *)(iVar30 + sVar2 * 6 + 2) = (short)iVar24;\n            }\n            *(byte *)(iVar30 + iVar24 + 0x30000) = bVar14;\n            *(uint *)(iVar30 + 0x38000) = iVar24 + 1U & 0x7fff;\n          }\n          if (lengths + 1 == pbVar10) break;\n          nlengths = nlengths + -1;\n          lengths = lengths + 1;\n          bVar3 = nlengths < 3;\n        }\n        nlengths = nlengths + -1;\n        lengths = lengths + 1;\n        bVar3 = nlengths < 3;\n        iVar24 = iVar19;\n      } while (0 < nlengths);\n    }\n    pzVar6 = (zlib_table *)*puVar7;\n    if (pzStackY_55c == pzVar6) {\n      return pzVar6;\n    }\n  }" { (expression_statement "piVar13 = piVar16;" (assignment_expression "piVar13 = piVar16" identifier = identifier) ;) (expression_statement "pbVar10 = lengths;" (assignment_expression "pbVar10 = lengths" identifier = identifier) ;) (expression_statement "iVar19 = iVar24;" (assignment_expression "iVar19 = iVar24" identifier = identifier) ;) (if_statement "if (0 < iVar24) {\n      if (iVar24 + nlengths < 3) {\n        iVar29 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar30 + 0x38000);\n        pbVar28 = &bStackY_560;\n        iVar29 = iVar24 + nlengths + -2;\n        iVar27 = 3;\n        iVar25 = 0;\n        iVar19 = iVar25;\n        do {\n          do {\n            if (iVar25 < iVar24) {\n              bVar14 = *(byte *)(iVar30 + iVar25 + 0x38ff2);\n            }\n            else {\n              bVar14 = lengths[iVar25 - iVar24];\n            }\n            pbVar10 = pbVar28 + iVar25;\n            iVar25 = iVar25 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar25 != iVar27);\n          psVar8 = (short *)(iVar30 + (int)piVar13 * 6);\n          uVar17 = ((uint)bStackY_55e * 0x10d +\n                   (uint)bStackY_55f * 0x107 + (uint)bStackY_560 * 0x101) % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar17;\n          psVar8[1] = -1;\n          iVar25 = iVar30 + uVar17 * 2;\n          sVar2 = *(short *)(iVar25 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar25 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar30 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar30 + 0x30000);\n          iVar25 = iVar19 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStackY_560;\n          *(int **)(iVar30 + 0x38000) = piVar13;\n          if (iVar24 == iVar25) {\n            iVar19 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar28 = pbVar28 + -1;\n          iVar27 = iVar27 + 1;\n          iVar19 = iVar25;\n        } while (iVar25 != iVar29);\n        iVar19 = iVar24 - iVar29;\n      }\n      pbVar28 = (byte *)(iVar30 + 0x38ff2);\n      iVar25 = iVar29;\n      do {\n        iVar25 = iVar25 + 1;\n        bVar14 = pbVar28[iVar29];\n        *pbVar28 = bVar14;\n        pbVar28 = pbVar28 + 1;\n        piVar13 = (int *)(uint)(iVar25 < iVar24);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar25 < iVar24) != (int *)0x0);\n    }" if (parenthesized_expression "(0 < iVar24)" ( (binary_expression "0 < iVar24" number_literal < identifier) )) (compound_statement "{\n      if (iVar24 + nlengths < 3) {\n        iVar29 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar30 + 0x38000);\n        pbVar28 = &bStackY_560;\n        iVar29 = iVar24 + nlengths + -2;\n        iVar27 = 3;\n        iVar25 = 0;\n        iVar19 = iVar25;\n        do {\n          do {\n            if (iVar25 < iVar24) {\n              bVar14 = *(byte *)(iVar30 + iVar25 + 0x38ff2);\n            }\n            else {\n              bVar14 = lengths[iVar25 - iVar24];\n            }\n            pbVar10 = pbVar28 + iVar25;\n            iVar25 = iVar25 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar25 != iVar27);\n          psVar8 = (short *)(iVar30 + (int)piVar13 * 6);\n          uVar17 = ((uint)bStackY_55e * 0x10d +\n                   (uint)bStackY_55f * 0x107 + (uint)bStackY_560 * 0x101) % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar17;\n          psVar8[1] = -1;\n          iVar25 = iVar30 + uVar17 * 2;\n          sVar2 = *(short *)(iVar25 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar25 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar30 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar30 + 0x30000);\n          iVar25 = iVar19 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStackY_560;\n          *(int **)(iVar30 + 0x38000) = piVar13;\n          if (iVar24 == iVar25) {\n            iVar19 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar28 = pbVar28 + -1;\n          iVar27 = iVar27 + 1;\n          iVar19 = iVar25;\n        } while (iVar25 != iVar29);\n        iVar19 = iVar24 - iVar29;\n      }\n      pbVar28 = (byte *)(iVar30 + 0x38ff2);\n      iVar25 = iVar29;\n      do {\n        iVar25 = iVar25 + 1;\n        bVar14 = pbVar28[iVar29];\n        *pbVar28 = bVar14;\n        pbVar28 = pbVar28 + 1;\n        piVar13 = (int *)(uint)(iVar25 < iVar24);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar25 < iVar24) != (int *)0x0);\n    }" { (if_statement "if (iVar24 + nlengths < 3) {\n        iVar29 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar30 + 0x38000);\n        pbVar28 = &bStackY_560;\n        iVar29 = iVar24 + nlengths + -2;\n        iVar27 = 3;\n        iVar25 = 0;\n        iVar19 = iVar25;\n        do {\n          do {\n            if (iVar25 < iVar24) {\n              bVar14 = *(byte *)(iVar30 + iVar25 + 0x38ff2);\n            }\n            else {\n              bVar14 = lengths[iVar25 - iVar24];\n            }\n            pbVar10 = pbVar28 + iVar25;\n            iVar25 = iVar25 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar25 != iVar27);\n          psVar8 = (short *)(iVar30 + (int)piVar13 * 6);\n          uVar17 = ((uint)bStackY_55e * 0x10d +\n                   (uint)bStackY_55f * 0x107 + (uint)bStackY_560 * 0x101) % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar17;\n          psVar8[1] = -1;\n          iVar25 = iVar30 + uVar17 * 2;\n          sVar2 = *(short *)(iVar25 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar25 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar30 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar30 + 0x30000);\n          iVar25 = iVar19 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStackY_560;\n          *(int **)(iVar30 + 0x38000) = piVar13;\n          if (iVar24 == iVar25) {\n            iVar19 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar28 = pbVar28 + -1;\n          iVar27 = iVar27 + 1;\n          iVar19 = iVar25;\n        } while (iVar25 != iVar29);\n        iVar19 = iVar24 - iVar29;\n      }" if (parenthesized_expression "(iVar24 + nlengths < 3)" ( (binary_expression "iVar24 + nlengths < 3" (binary_expression "iVar24 + nlengths" identifier + identifier) < number_literal) )) (compound_statement "{\n        iVar29 = 0;\n      }" { (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        piVar13 = *(int **)(iVar30 + 0x38000);\n        pbVar28 = &bStackY_560;\n        iVar29 = iVar24 + nlengths + -2;\n        iVar27 = 3;\n        iVar25 = 0;\n        iVar19 = iVar25;\n        do {\n          do {\n            if (iVar25 < iVar24) {\n              bVar14 = *(byte *)(iVar30 + iVar25 + 0x38ff2);\n            }\n            else {\n              bVar14 = lengths[iVar25 - iVar24];\n            }\n            pbVar10 = pbVar28 + iVar25;\n            iVar25 = iVar25 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar25 != iVar27);\n          psVar8 = (short *)(iVar30 + (int)piVar13 * 6);\n          uVar17 = ((uint)bStackY_55e * 0x10d +\n                   (uint)bStackY_55f * 0x107 + (uint)bStackY_560 * 0x101) % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar17;\n          psVar8[1] = -1;\n          iVar25 = iVar30 + uVar17 * 2;\n          sVar2 = *(short *)(iVar25 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar25 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar30 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar30 + 0x30000);\n          iVar25 = iVar19 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStackY_560;\n          *(int **)(iVar30 + 0x38000) = piVar13;\n          if (iVar24 == iVar25) {\n            iVar19 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar28 = pbVar28 + -1;\n          iVar27 = iVar27 + 1;\n          iVar19 = iVar25;\n        } while (iVar25 != iVar29);\n        iVar19 = iVar24 - iVar29;\n      }" else (compound_statement "{\n        piVar13 = *(int **)(iVar30 + 0x38000);\n        pbVar28 = &bStackY_560;\n        iVar29 = iVar24 + nlengths + -2;\n        iVar27 = 3;\n        iVar25 = 0;\n        iVar19 = iVar25;\n        do {\n          do {\n            if (iVar25 < iVar24) {\n              bVar14 = *(byte *)(iVar30 + iVar25 + 0x38ff2);\n            }\n            else {\n              bVar14 = lengths[iVar25 - iVar24];\n            }\n            pbVar10 = pbVar28 + iVar25;\n            iVar25 = iVar25 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar25 != iVar27);\n          psVar8 = (short *)(iVar30 + (int)piVar13 * 6);\n          uVar17 = ((uint)bStackY_55e * 0x10d +\n                   (uint)bStackY_55f * 0x107 + (uint)bStackY_560 * 0x101) % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar17;\n          psVar8[1] = -1;\n          iVar25 = iVar30 + uVar17 * 2;\n          sVar2 = *(short *)(iVar25 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar25 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar30 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar30 + 0x30000);\n          iVar25 = iVar19 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStackY_560;\n          *(int **)(iVar30 + 0x38000) = piVar13;\n          if (iVar24 == iVar25) {\n            iVar19 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar28 = pbVar28 + -1;\n          iVar27 = iVar27 + 1;\n          iVar19 = iVar25;\n        } while (iVar25 != iVar29);\n        iVar19 = iVar24 - iVar29;\n      }" { (expression_statement "piVar13 = *(int **)(iVar30 + 0x38000);" (assignment_expression "piVar13 = *(int **)(iVar30 + 0x38000)" identifier = (pointer_expression "*(int **)(iVar30 + 0x38000)" * (cast_expression "(int **)(iVar30 + 0x38000)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar30 + 0x38000)" ( (binary_expression "iVar30 + 0x38000" identifier + number_literal) ))))) ;) (expression_statement "pbVar28 = &bStackY_560;" (assignment_expression "pbVar28 = &bStackY_560" identifier = (pointer_expression "&bStackY_560" & identifier)) ;) (expression_statement "iVar29 = iVar24 + nlengths + -2;" (assignment_expression "iVar29 = iVar24 + nlengths + -2" identifier = (binary_expression "iVar24 + nlengths + -2" (binary_expression "iVar24 + nlengths" identifier + identifier) + number_literal)) ;) (expression_statement "iVar27 = 3;" (assignment_expression "iVar27 = 3" identifier = number_literal) ;) (expression_statement "iVar25 = 0;" (assignment_expression "iVar25 = 0" identifier = number_literal) ;) (expression_statement "iVar19 = iVar25;" (assignment_expression "iVar19 = iVar25" identifier = identifier) ;) (do_statement "do {\n          do {\n            if (iVar25 < iVar24) {\n              bVar14 = *(byte *)(iVar30 + iVar25 + 0x38ff2);\n            }\n            else {\n              bVar14 = lengths[iVar25 - iVar24];\n            }\n            pbVar10 = pbVar28 + iVar25;\n            iVar25 = iVar25 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar25 != iVar27);\n          psVar8 = (short *)(iVar30 + (int)piVar13 * 6);\n          uVar17 = ((uint)bStackY_55e * 0x10d +\n                   (uint)bStackY_55f * 0x107 + (uint)bStackY_560 * 0x101) % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar17;\n          psVar8[1] = -1;\n          iVar25 = iVar30 + uVar17 * 2;\n          sVar2 = *(short *)(iVar25 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar25 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar30 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar30 + 0x30000);\n          iVar25 = iVar19 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStackY_560;\n          *(int **)(iVar30 + 0x38000) = piVar13;\n          if (iVar24 == iVar25) {\n            iVar19 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar28 = pbVar28 + -1;\n          iVar27 = iVar27 + 1;\n          iVar19 = iVar25;\n        } while (iVar25 != iVar29);" do (compound_statement "{\n          do {\n            if (iVar25 < iVar24) {\n              bVar14 = *(byte *)(iVar30 + iVar25 + 0x38ff2);\n            }\n            else {\n              bVar14 = lengths[iVar25 - iVar24];\n            }\n            pbVar10 = pbVar28 + iVar25;\n            iVar25 = iVar25 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar25 != iVar27);\n          psVar8 = (short *)(iVar30 + (int)piVar13 * 6);\n          uVar17 = ((uint)bStackY_55e * 0x10d +\n                   (uint)bStackY_55f * 0x107 + (uint)bStackY_560 * 0x101) % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar17;\n          psVar8[1] = -1;\n          iVar25 = iVar30 + uVar17 * 2;\n          sVar2 = *(short *)(iVar25 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar25 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar30 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar30 + 0x30000);\n          iVar25 = iVar19 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStackY_560;\n          *(int **)(iVar30 + 0x38000) = piVar13;\n          if (iVar24 == iVar25) {\n            iVar19 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar28 = pbVar28 + -1;\n          iVar27 = iVar27 + 1;\n          iVar19 = iVar25;\n        }" { (do_statement "do {\n            if (iVar25 < iVar24) {\n              bVar14 = *(byte *)(iVar30 + iVar25 + 0x38ff2);\n            }\n            else {\n              bVar14 = lengths[iVar25 - iVar24];\n            }\n            pbVar10 = pbVar28 + iVar25;\n            iVar25 = iVar25 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar25 != iVar27);" do (compound_statement "{\n            if (iVar25 < iVar24) {\n              bVar14 = *(byte *)(iVar30 + iVar25 + 0x38ff2);\n            }\n            else {\n              bVar14 = lengths[iVar25 - iVar24];\n            }\n            pbVar10 = pbVar28 + iVar25;\n            iVar25 = iVar25 + 1;\n            *pbVar10 = bVar14;\n          }" { (if_statement "if (iVar25 < iVar24) {\n              bVar14 = *(byte *)(iVar30 + iVar25 + 0x38ff2);\n            }\n            else {\n              bVar14 = lengths[iVar25 - iVar24];\n            }" if (parenthesized_expression "(iVar25 < iVar24)" ( (binary_expression "iVar25 < iVar24" identifier < identifier) )) (compound_statement "{\n              bVar14 = *(byte *)(iVar30 + iVar25 + 0x38ff2);\n            }" { (expression_statement "bVar14 = *(byte *)(iVar30 + iVar25 + 0x38ff2);" (assignment_expression "bVar14 = *(byte *)(iVar30 + iVar25 + 0x38ff2)" identifier = (pointer_expression "*(byte *)(iVar30 + iVar25 + 0x38ff2)" * (cast_expression "(byte *)(iVar30 + iVar25 + 0x38ff2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + iVar25 + 0x38ff2)" ( (binary_expression "iVar30 + iVar25 + 0x38ff2" (binary_expression "iVar30 + iVar25" identifier + identifier) + number_literal) ))))) ;) }) (else_clause "else {\n              bVar14 = lengths[iVar25 - iVar24];\n            }" else (compound_statement "{\n              bVar14 = lengths[iVar25 - iVar24];\n            }" { (expression_statement "bVar14 = lengths[iVar25 - iVar24];" (assignment_expression "bVar14 = lengths[iVar25 - iVar24]" identifier = (subscript_expression "lengths[iVar25 - iVar24]" identifier [ (binary_expression "iVar25 - iVar24" identifier - identifier) ])) ;) }))) (expression_statement "pbVar10 = pbVar28 + iVar25;" (assignment_expression "pbVar10 = pbVar28 + iVar25" identifier = (binary_expression "pbVar28 + iVar25" identifier + identifier)) ;) (expression_statement "iVar25 = iVar25 + 1;" (assignment_expression "iVar25 = iVar25 + 1" identifier = (binary_expression "iVar25 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar10 = bVar14;" (assignment_expression "*pbVar10 = bVar14" (pointer_expression "*pbVar10" * identifier) = identifier) ;) }) while (parenthesized_expression "(iVar25 != iVar27)" ( (binary_expression "iVar25 != iVar27" identifier != identifier) )) ;) (expression_statement "psVar8 = (short *)(iVar30 + (int)piVar13 * 6);" (assignment_expression "psVar8 = (short *)(iVar30 + (int)piVar13 * 6)" identifier = (cast_expression "(short *)(iVar30 + (int)piVar13 * 6)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + (int)piVar13 * 6)" ( (binary_expression "iVar30 + (int)piVar13 * 6" identifier + (binary_expression "(int)piVar13 * 6" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (expression_statement "uVar17 = ((uint)bStackY_55e * 0x10d +\n                   (uint)bStackY_55f * 0x107 + (uint)bStackY_560 * 0x101) % 0x7f7;" (assignment_expression "uVar17 = ((uint)bStackY_55e * 0x10d +\n                   (uint)bStackY_55f * 0x107 + (uint)bStackY_560 * 0x101) % 0x7f7" identifier = (binary_expression "((uint)bStackY_55e * 0x10d +\n                   (uint)bStackY_55f * 0x107 + (uint)bStackY_560 * 0x101) % 0x7f7" (parenthesized_expression "((uint)bStackY_55e * 0x10d +\n                   (uint)bStackY_55f * 0x107 + (uint)bStackY_560 * 0x101)" ( (binary_expression "(uint)bStackY_55e * 0x10d +\n                   (uint)bStackY_55f * 0x107 + (uint)bStackY_560 * 0x101" (binary_expression "(uint)bStackY_55e * 0x10d +\n                   (uint)bStackY_55f * 0x107" (binary_expression "(uint)bStackY_55e * 0x10d" (cast_expression "(uint)bStackY_55e" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + (binary_expression "(uint)bStackY_55f * 0x107" (cast_expression "(uint)bStackY_55f" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + (binary_expression "(uint)bStackY_560 * 0x101" (cast_expression "(uint)bStackY_560" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )) % number_literal)) ;) (if_statement "if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n          }" if (parenthesized_expression "(psVar8[1] == -1)" ( (binary_expression "psVar8[1] == -1" (subscript_expression "psVar8[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }" { (if_statement "if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }" if (parenthesized_expression "(psVar8[2] != -1)" ( (binary_expression "psVar8[2] != -1" (subscript_expression "psVar8[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n              *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }" { (expression_statement "*(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;" (assignment_expression "*(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff" (pointer_expression "*(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4)" * (cast_expression "(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4)" ( (binary_expression "iVar30 + (psVar8[2] + 0x1c000) * 2 + 4" (binary_expression "iVar30 + (psVar8[2] + 0x1c000) * 2" identifier + (binary_expression "(psVar8[2] + 0x1c000) * 2" (parenthesized_expression "(psVar8[2] + 0x1c000)" ( (binary_expression "psVar8[2] + 0x1c000" (subscript_expression "psVar8[2]" identifier [ number_literal ]) + number_literal) )) * number_literal)) + number_literal) )))) = number_literal) ;) })) }) (else_clause "else {\n            *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n          }" else (compound_statement "{\n            *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n          }" { (expression_statement "*(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;" (assignment_expression "*(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff" (pointer_expression "*(undefined2 *)(iVar30 + psVar8[1] * 6)" * (cast_expression "(undefined2 *)(iVar30 + psVar8[1] * 6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + psVar8[1] * 6)" ( (binary_expression "iVar30 + psVar8[1] * 6" identifier + (binary_expression "psVar8[1] * 6" (subscript_expression "psVar8[1]" identifier [ number_literal ]) * number_literal)) )))) = number_literal) ;) }))) (expression_statement "psVar8[2] = (short)uVar17;" (assignment_expression "psVar8[2] = (short)uVar17" (subscript_expression "psVar8[2]" identifier [ number_literal ]) = (cast_expression "(short)uVar17" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "psVar8[1] = -1;" (assignment_expression "psVar8[1] = -1" (subscript_expression "psVar8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar25 = iVar30 + uVar17 * 2;" (assignment_expression "iVar25 = iVar30 + uVar17 * 2" identifier = (binary_expression "iVar30 + uVar17 * 2" identifier + (binary_expression "uVar17 * 2" identifier * number_literal))) ;) (expression_statement "sVar2 = *(short *)(iVar25 + 0x38004);" (assignment_expression "sVar2 = *(short *)(iVar25 + 0x38004)" identifier = (pointer_expression "*(short *)(iVar25 + 0x38004)" * (cast_expression "(short *)(iVar25 + 0x38004)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar25 + 0x38004)" ( (binary_expression "iVar25 + 0x38004" identifier + number_literal) ))))) ;) (expression_statement "pbVar10 = (byte *)(int)sVar2;" (assignment_expression "pbVar10 = (byte *)(int)sVar2" identifier = (cast_expression "(byte *)(int)sVar2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)sVar2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*psVar8 = sVar2;" (assignment_expression "*psVar8 = sVar2" (pointer_expression "*psVar8" * identifier) = identifier) ;) (expression_statement "*(short *)(iVar25 + 0x38004) = (short)piVar13;" (assignment_expression "*(short *)(iVar25 + 0x38004) = (short)piVar13" (pointer_expression "*(short *)(iVar25 + 0x38004)" * (cast_expression "(short *)(iVar25 + 0x38004)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar25 + 0x38004)" ( (binary_expression "iVar25 + 0x38004" identifier + number_literal) )))) = (cast_expression "(short)piVar13" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (if_statement "if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar30 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }" if (parenthesized_expression "(pbVar10 != (byte *)0xffffffff)" ( (binary_expression "pbVar10 != (byte *)0xffffffff" identifier != (cast_expression "(byte *)0xffffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            *(short *)(iVar30 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }" { (expression_statement "*(short *)(iVar30 + (int)pbVar10 * 6 + 2) = (short)piVar13;" (assignment_expression "*(short *)(iVar30 + (int)pbVar10 * 6 + 2) = (short)piVar13" (pointer_expression "*(short *)(iVar30 + (int)pbVar10 * 6 + 2)" * (cast_expression "(short *)(iVar30 + (int)pbVar10 * 6 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + (int)pbVar10 * 6 + 2)" ( (binary_expression "iVar30 + (int)pbVar10 * 6 + 2" (binary_expression "iVar30 + (int)pbVar10 * 6" identifier + (binary_expression "(int)pbVar10 * 6" (cast_expression "(int)pbVar10" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) )))) = (cast_expression "(short)piVar13" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) })) (expression_statement "pbVar9 = (byte *)((int)piVar13 + iVar30 + 0x30000);" (assignment_expression "pbVar9 = (byte *)((int)piVar13 + iVar30 + 0x30000)" identifier = (cast_expression "(byte *)((int)piVar13 + iVar30 + 0x30000)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar13 + iVar30 + 0x30000)" ( (binary_expression "(int)piVar13 + iVar30 + 0x30000" (binary_expression "(int)piVar13 + iVar30" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "iVar25 = iVar19 + 1;" (assignment_expression "iVar25 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) (expression_statement "piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);" (assignment_expression "piVar13 = (int *)((int)piVar13 + 1U & 0x7fff)" identifier = (cast_expression "(int *)((int)piVar13 + 1U & 0x7fff)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar13 + 1U & 0x7fff)" ( (binary_expression "(int)piVar13 + 1U & 0x7fff" (binary_expression "(int)piVar13 + 1U" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) & number_literal) )))) ;) (expression_statement "*pbVar9 = bStackY_560;" (assignment_expression "*pbVar9 = bStackY_560" (pointer_expression "*pbVar9" * identifier) = identifier) ;) (expression_statement "*(int **)(iVar30 + 0x38000) = piVar13;" (assignment_expression "*(int **)(iVar30 + 0x38000) = piVar13" (pointer_expression "*(int **)(iVar30 + 0x38000)" * (cast_expression "(int **)(iVar30 + 0x38000)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar30 + 0x38000)" ( (binary_expression "iVar30 + 0x38000" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar24 == iVar25) {\n            iVar19 = 0;\n            goto LAB_00073c5c;\n          }" if (parenthesized_expression "(iVar24 == iVar25)" ( (binary_expression "iVar24 == iVar25" identifier == identifier) )) (compound_statement "{\n            iVar19 = 0;\n            goto LAB_00073c5c;\n          }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00073c5c;" goto statement_identifier ;) })) (expression_statement "pbVar28 = pbVar28 + -1;" (assignment_expression "pbVar28 = pbVar28 + -1" identifier = (binary_expression "pbVar28 + -1" identifier + number_literal)) ;) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (expression_statement "iVar19 = iVar25;" (assignment_expression "iVar19 = iVar25" identifier = identifier) ;) }) while (parenthesized_expression "(iVar25 != iVar29)" ( (binary_expression "iVar25 != iVar29" identifier != identifier) )) ;) (expression_statement "iVar19 = iVar24 - iVar29;" (assignment_expression "iVar19 = iVar24 - iVar29" identifier = (binary_expression "iVar24 - iVar29" identifier - identifier)) ;) }))) (expression_statement "pbVar28 = (byte *)(iVar30 + 0x38ff2);" (assignment_expression "pbVar28 = (byte *)(iVar30 + 0x38ff2)" identifier = (cast_expression "(byte *)(iVar30 + 0x38ff2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + 0x38ff2)" ( (binary_expression "iVar30 + 0x38ff2" identifier + number_literal) )))) ;) (expression_statement "iVar25 = iVar29;" (assignment_expression "iVar25 = iVar29" identifier = identifier) ;) (do_statement "do {\n        iVar25 = iVar25 + 1;\n        bVar14 = pbVar28[iVar29];\n        *pbVar28 = bVar14;\n        pbVar28 = pbVar28 + 1;\n        piVar13 = (int *)(uint)(iVar25 < iVar24);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar25 < iVar24) != (int *)0x0);" do (compound_statement "{\n        iVar25 = iVar25 + 1;\n        bVar14 = pbVar28[iVar29];\n        *pbVar28 = bVar14;\n        pbVar28 = pbVar28 + 1;\n        piVar13 = (int *)(uint)(iVar25 < iVar24);\n        pbVar10 = (byte *)(uint)bVar14;\n      }" { (expression_statement "iVar25 = iVar25 + 1;" (assignment_expression "iVar25 = iVar25 + 1" identifier = (binary_expression "iVar25 + 1" identifier + number_literal)) ;) (expression_statement "bVar14 = pbVar28[iVar29];" (assignment_expression "bVar14 = pbVar28[iVar29]" identifier = (subscript_expression "pbVar28[iVar29]" identifier [ identifier ])) ;) (expression_statement "*pbVar28 = bVar14;" (assignment_expression "*pbVar28 = bVar14" (pointer_expression "*pbVar28" * identifier) = identifier) ;) (expression_statement "pbVar28 = pbVar28 + 1;" (assignment_expression "pbVar28 = pbVar28 + 1" identifier = (binary_expression "pbVar28 + 1" identifier + number_literal)) ;) (expression_statement "piVar13 = (int *)(uint)(iVar25 < iVar24);" (assignment_expression "piVar13 = (int *)(uint)(iVar25 < iVar24)" identifier = (cast_expression "(int *)(uint)(iVar25 < iVar24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar25 < iVar24)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar25 < iVar24)" ( (binary_expression "iVar25 < iVar24" identifier < identifier) ))))) ;) (expression_statement "pbVar10 = (byte *)(uint)bVar14;" (assignment_expression "pbVar10 = (byte *)(uint)bVar14" identifier = (cast_expression "(byte *)(uint)bVar14" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((int *)(uint)(iVar25 < iVar24) != (int *)0x0)" ( (binary_expression "(int *)(uint)(iVar25 < iVar24) != (int *)0x0" (cast_expression "(int *)(uint)(iVar25 < iVar24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar25 < iVar24)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar25 < iVar24)" ( (binary_expression "iVar25 < iVar24" identifier < identifier) )))) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (labeled_statement "LAB_00073c5c:\n    uVar15 = SUB41(pbVar10,0);" statement_identifier : (expression_statement "uVar15 = SUB41(pbVar10,0);" (assignment_expression "uVar15 = SUB41(pbVar10,0)" identifier = (call_expression "SUB41(pbVar10,0)" identifier (argument_list "(pbVar10,0)" ( identifier , number_literal )))) ;)) (expression_statement "*(int *)(&LAB_00038ff8 + iVar30) = iVar19;" (assignment_expression "*(int *)(&LAB_00038ff8 + iVar30) = iVar19" (pointer_expression "*(int *)(&LAB_00038ff8 + iVar30)" * (cast_expression "(int *)(&LAB_00038ff8 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&LAB_00038ff8 + iVar30)" ( (binary_expression "&LAB_00038ff8 + iVar30" (pointer_expression "&LAB_00038ff8" & identifier) + identifier) )))) = identifier) ;) (if_statement "if (0 < nlengths) {\n      iStackY_674 = 0;\n      uStackY_670 = 0;\n      bVar3 = nlengths < 3;\n      iVar24 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar17 = (uint)*lengths;\n            iVar19 = (int)*(short *)(iVar30 + (((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar19 == -1) goto LAB_00073ca0;\n            iVar27 = *(int *)(iVar30 + 0x38000);\n            iVar25 = iVar19 + 0x8000;\n            iVar29 = 0;\nLAB_00073f34:\n            do {\n              uVar23 = iVar25 - iVar27 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar17;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (lengths[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar18 = iVar29 + 1;\n                    aiStackY_660[iVar29 * 2] = iVar22;\n                    aiStackY_660[iVar29 * 2 + 1] = 3;\n                    if (0x1f < iVar18) goto LAB_00073fc8;\n                    iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n                    iVar25 = iVar19 + 0x8000;\n                    iVar29 = iVar18;\n                    if (iVar19 == -1) goto LAB_00073fc0;\n                    goto LAB_00073f34;\n                  }\n                  uVar23 = (uint)lengths[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n              iVar25 = iVar19 + 0x8000;\n              iVar18 = iVar29;\n            } while (iVar19 != -1);\nLAB_00073fc0:\n            if (iVar18 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar19 = 3;\n            if (nlengths != 3) {\n              pbVar10 = lengths + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar29 = iVar18 * 2;\n                piVar13 = aiStackY_660;\n                iVar25 = 0;\n                do {\n                  iVar27 = iVar19 - *piVar13;\n                  if (iVar27 < 0) {\n                    bVar1 = *(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = lengths[iVar27];\n                  }\n                  iVar18 = iVar25;\n                  if (bVar1 == bVar14) {\n                    iVar27 = piVar13[1];\n                    iVar18 = iVar25 + 1;\n                    aiStackY_660[iVar25 * 2] = *piVar13;\n                    aiStackY_660[iVar25 * 2 + 1] = iVar27;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar25 = iVar18;\n                } while (aiStackY_660 + iVar29 != piVar13);\n                if (iVar18 == 0) break;\n                iVar19 = iVar19 + 1;\n                pbVar10 = lengths + iVar19;\n              } while (iVar19 != nlengths);\n            }\n            piVar13 = piVar21;\n            aiStackY_660[1] = iVar19;\n            if (iVar24 != 0) {\n              if (iVar24 + 1 < iVar19) {\n                (*(code *)piVar16[2])(piVar16,uStackY_670);\n                iStackY_674 = aiStackY_660[0];\n                uStackY_670 = (uint)*lengths;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStackY_674 = aiStackY_660[0];\n            uStackY_670 = uVar17;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar24 == 0) {\n            (*(code *)piVar16[2])(piVar16,*lengths);\n            piVar13 = (int *)0x1;\n            iVar19 = iVar24;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar16[3])(piVar16,iStackY_674,iVar24);\n          piVar13 = (int *)(iVar24 - 1);\n          iVar19 = 0;\n          iVar24 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = lengths + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar24 = *(int *)(&LAB_00038ff8 + iVar30);\n            piVar13 = *(int **)(puVar31 + 0x39878);\n            if (2 < iVar24) {\n              iVar19 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar31 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar31 + 0x3a0b0))();\n              piVar16 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(&LAB_00038ff8 + iVar30) = iVar24 + 1;\n            *(uchar *)(iVar30 + iVar24 + 0x38ff2) = *lengths;\n          }\n          else {\n            bVar14 = *lengths;\n            piVar13 = (int *)(uint)bVar14;\n            iVar24 = *(int *)(iVar30 + 0x38000);\n            psVar8 = (short *)(iVar30 + iVar24 * 6);\n            uVar17 = ((uint)lengths[2] * 0x10d + (uint)lengths[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar17;\n            psVar8[1] = -1;\n            iVar29 = iVar30 + uVar17 * 2;\n            sVar2 = *(short *)(iVar29 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar29 + 0x38004) = (short)iVar24;\n            if (sVar2 != -1) {\n              *(short *)(iVar30 + sVar2 * 6 + 2) = (short)iVar24;\n            }\n            *(byte *)(iVar30 + iVar24 + 0x30000) = bVar14;\n            *(uint *)(iVar30 + 0x38000) = iVar24 + 1U & 0x7fff;\n          }\n          if (lengths + 1 == pbVar10) break;\n          nlengths = nlengths + -1;\n          lengths = lengths + 1;\n          bVar3 = nlengths < 3;\n        }\n        nlengths = nlengths + -1;\n        lengths = lengths + 1;\n        bVar3 = nlengths < 3;\n        iVar24 = iVar19;\n      } while (0 < nlengths);\n    }" if (parenthesized_expression "(0 < nlengths)" ( (binary_expression "0 < nlengths" number_literal < identifier) )) (compound_statement "{\n      iStackY_674 = 0;\n      uStackY_670 = 0;\n      bVar3 = nlengths < 3;\n      iVar24 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar17 = (uint)*lengths;\n            iVar19 = (int)*(short *)(iVar30 + (((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar19 == -1) goto LAB_00073ca0;\n            iVar27 = *(int *)(iVar30 + 0x38000);\n            iVar25 = iVar19 + 0x8000;\n            iVar29 = 0;\nLAB_00073f34:\n            do {\n              uVar23 = iVar25 - iVar27 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar17;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (lengths[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar18 = iVar29 + 1;\n                    aiStackY_660[iVar29 * 2] = iVar22;\n                    aiStackY_660[iVar29 * 2 + 1] = 3;\n                    if (0x1f < iVar18) goto LAB_00073fc8;\n                    iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n                    iVar25 = iVar19 + 0x8000;\n                    iVar29 = iVar18;\n                    if (iVar19 == -1) goto LAB_00073fc0;\n                    goto LAB_00073f34;\n                  }\n                  uVar23 = (uint)lengths[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n              iVar25 = iVar19 + 0x8000;\n              iVar18 = iVar29;\n            } while (iVar19 != -1);\nLAB_00073fc0:\n            if (iVar18 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar19 = 3;\n            if (nlengths != 3) {\n              pbVar10 = lengths + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar29 = iVar18 * 2;\n                piVar13 = aiStackY_660;\n                iVar25 = 0;\n                do {\n                  iVar27 = iVar19 - *piVar13;\n                  if (iVar27 < 0) {\n                    bVar1 = *(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = lengths[iVar27];\n                  }\n                  iVar18 = iVar25;\n                  if (bVar1 == bVar14) {\n                    iVar27 = piVar13[1];\n                    iVar18 = iVar25 + 1;\n                    aiStackY_660[iVar25 * 2] = *piVar13;\n                    aiStackY_660[iVar25 * 2 + 1] = iVar27;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar25 = iVar18;\n                } while (aiStackY_660 + iVar29 != piVar13);\n                if (iVar18 == 0) break;\n                iVar19 = iVar19 + 1;\n                pbVar10 = lengths + iVar19;\n              } while (iVar19 != nlengths);\n            }\n            piVar13 = piVar21;\n            aiStackY_660[1] = iVar19;\n            if (iVar24 != 0) {\n              if (iVar24 + 1 < iVar19) {\n                (*(code *)piVar16[2])(piVar16,uStackY_670);\n                iStackY_674 = aiStackY_660[0];\n                uStackY_670 = (uint)*lengths;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStackY_674 = aiStackY_660[0];\n            uStackY_670 = uVar17;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar24 == 0) {\n            (*(code *)piVar16[2])(piVar16,*lengths);\n            piVar13 = (int *)0x1;\n            iVar19 = iVar24;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar16[3])(piVar16,iStackY_674,iVar24);\n          piVar13 = (int *)(iVar24 - 1);\n          iVar19 = 0;\n          iVar24 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = lengths + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar24 = *(int *)(&LAB_00038ff8 + iVar30);\n            piVar13 = *(int **)(puVar31 + 0x39878);\n            if (2 < iVar24) {\n              iVar19 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar31 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar31 + 0x3a0b0))();\n              piVar16 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(&LAB_00038ff8 + iVar30) = iVar24 + 1;\n            *(uchar *)(iVar30 + iVar24 + 0x38ff2) = *lengths;\n          }\n          else {\n            bVar14 = *lengths;\n            piVar13 = (int *)(uint)bVar14;\n            iVar24 = *(int *)(iVar30 + 0x38000);\n            psVar8 = (short *)(iVar30 + iVar24 * 6);\n            uVar17 = ((uint)lengths[2] * 0x10d + (uint)lengths[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar17;\n            psVar8[1] = -1;\n            iVar29 = iVar30 + uVar17 * 2;\n            sVar2 = *(short *)(iVar29 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar29 + 0x38004) = (short)iVar24;\n            if (sVar2 != -1) {\n              *(short *)(iVar30 + sVar2 * 6 + 2) = (short)iVar24;\n            }\n            *(byte *)(iVar30 + iVar24 + 0x30000) = bVar14;\n            *(uint *)(iVar30 + 0x38000) = iVar24 + 1U & 0x7fff;\n          }\n          if (lengths + 1 == pbVar10) break;\n          nlengths = nlengths + -1;\n          lengths = lengths + 1;\n          bVar3 = nlengths < 3;\n        }\n        nlengths = nlengths + -1;\n        lengths = lengths + 1;\n        bVar3 = nlengths < 3;\n        iVar24 = iVar19;\n      } while (0 < nlengths);\n    }" { (expression_statement "iStackY_674 = 0;" (assignment_expression "iStackY_674 = 0" identifier = number_literal) ;) (expression_statement "uStackY_670 = 0;" (assignment_expression "uStackY_670 = 0" identifier = number_literal) ;) (expression_statement "bVar3 = nlengths < 3;" (assignment_expression "bVar3 = nlengths < 3" identifier = (binary_expression "nlengths < 3" identifier < number_literal)) ;) (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) (do_statement "do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar17 = (uint)*lengths;\n            iVar19 = (int)*(short *)(iVar30 + (((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar19 == -1) goto LAB_00073ca0;\n            iVar27 = *(int *)(iVar30 + 0x38000);\n            iVar25 = iVar19 + 0x8000;\n            iVar29 = 0;\nLAB_00073f34:\n            do {\n              uVar23 = iVar25 - iVar27 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar17;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (lengths[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar18 = iVar29 + 1;\n                    aiStackY_660[iVar29 * 2] = iVar22;\n                    aiStackY_660[iVar29 * 2 + 1] = 3;\n                    if (0x1f < iVar18) goto LAB_00073fc8;\n                    iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n                    iVar25 = iVar19 + 0x8000;\n                    iVar29 = iVar18;\n                    if (iVar19 == -1) goto LAB_00073fc0;\n                    goto LAB_00073f34;\n                  }\n                  uVar23 = (uint)lengths[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n              iVar25 = iVar19 + 0x8000;\n              iVar18 = iVar29;\n            } while (iVar19 != -1);\nLAB_00073fc0:\n            if (iVar18 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar19 = 3;\n            if (nlengths != 3) {\n              pbVar10 = lengths + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar29 = iVar18 * 2;\n                piVar13 = aiStackY_660;\n                iVar25 = 0;\n                do {\n                  iVar27 = iVar19 - *piVar13;\n                  if (iVar27 < 0) {\n                    bVar1 = *(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = lengths[iVar27];\n                  }\n                  iVar18 = iVar25;\n                  if (bVar1 == bVar14) {\n                    iVar27 = piVar13[1];\n                    iVar18 = iVar25 + 1;\n                    aiStackY_660[iVar25 * 2] = *piVar13;\n                    aiStackY_660[iVar25 * 2 + 1] = iVar27;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar25 = iVar18;\n                } while (aiStackY_660 + iVar29 != piVar13);\n                if (iVar18 == 0) break;\n                iVar19 = iVar19 + 1;\n                pbVar10 = lengths + iVar19;\n              } while (iVar19 != nlengths);\n            }\n            piVar13 = piVar21;\n            aiStackY_660[1] = iVar19;\n            if (iVar24 != 0) {\n              if (iVar24 + 1 < iVar19) {\n                (*(code *)piVar16[2])(piVar16,uStackY_670);\n                iStackY_674 = aiStackY_660[0];\n                uStackY_670 = (uint)*lengths;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStackY_674 = aiStackY_660[0];\n            uStackY_670 = uVar17;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar24 == 0) {\n            (*(code *)piVar16[2])(piVar16,*lengths);\n            piVar13 = (int *)0x1;\n            iVar19 = iVar24;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar16[3])(piVar16,iStackY_674,iVar24);\n          piVar13 = (int *)(iVar24 - 1);\n          iVar19 = 0;\n          iVar24 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = lengths + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar24 = *(int *)(&LAB_00038ff8 + iVar30);\n            piVar13 = *(int **)(puVar31 + 0x39878);\n            if (2 < iVar24) {\n              iVar19 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar31 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar31 + 0x3a0b0))();\n              piVar16 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(&LAB_00038ff8 + iVar30) = iVar24 + 1;\n            *(uchar *)(iVar30 + iVar24 + 0x38ff2) = *lengths;\n          }\n          else {\n            bVar14 = *lengths;\n            piVar13 = (int *)(uint)bVar14;\n            iVar24 = *(int *)(iVar30 + 0x38000);\n            psVar8 = (short *)(iVar30 + iVar24 * 6);\n            uVar17 = ((uint)lengths[2] * 0x10d + (uint)lengths[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar17;\n            psVar8[1] = -1;\n            iVar29 = iVar30 + uVar17 * 2;\n            sVar2 = *(short *)(iVar29 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar29 + 0x38004) = (short)iVar24;\n            if (sVar2 != -1) {\n              *(short *)(iVar30 + sVar2 * 6 + 2) = (short)iVar24;\n            }\n            *(byte *)(iVar30 + iVar24 + 0x30000) = bVar14;\n            *(uint *)(iVar30 + 0x38000) = iVar24 + 1U & 0x7fff;\n          }\n          if (lengths + 1 == pbVar10) break;\n          nlengths = nlengths + -1;\n          lengths = lengths + 1;\n          bVar3 = nlengths < 3;\n        }\n        nlengths = nlengths + -1;\n        lengths = lengths + 1;\n        bVar3 = nlengths < 3;\n        iVar24 = iVar19;\n      } while (0 < nlengths);" do (compound_statement "{\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar17 = (uint)*lengths;\n            iVar19 = (int)*(short *)(iVar30 + (((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar19 == -1) goto LAB_00073ca0;\n            iVar27 = *(int *)(iVar30 + 0x38000);\n            iVar25 = iVar19 + 0x8000;\n            iVar29 = 0;\nLAB_00073f34:\n            do {\n              uVar23 = iVar25 - iVar27 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar17;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (lengths[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar18 = iVar29 + 1;\n                    aiStackY_660[iVar29 * 2] = iVar22;\n                    aiStackY_660[iVar29 * 2 + 1] = 3;\n                    if (0x1f < iVar18) goto LAB_00073fc8;\n                    iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n                    iVar25 = iVar19 + 0x8000;\n                    iVar29 = iVar18;\n                    if (iVar19 == -1) goto LAB_00073fc0;\n                    goto LAB_00073f34;\n                  }\n                  uVar23 = (uint)lengths[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n              iVar25 = iVar19 + 0x8000;\n              iVar18 = iVar29;\n            } while (iVar19 != -1);\nLAB_00073fc0:\n            if (iVar18 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar19 = 3;\n            if (nlengths != 3) {\n              pbVar10 = lengths + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar29 = iVar18 * 2;\n                piVar13 = aiStackY_660;\n                iVar25 = 0;\n                do {\n                  iVar27 = iVar19 - *piVar13;\n                  if (iVar27 < 0) {\n                    bVar1 = *(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = lengths[iVar27];\n                  }\n                  iVar18 = iVar25;\n                  if (bVar1 == bVar14) {\n                    iVar27 = piVar13[1];\n                    iVar18 = iVar25 + 1;\n                    aiStackY_660[iVar25 * 2] = *piVar13;\n                    aiStackY_660[iVar25 * 2 + 1] = iVar27;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar25 = iVar18;\n                } while (aiStackY_660 + iVar29 != piVar13);\n                if (iVar18 == 0) break;\n                iVar19 = iVar19 + 1;\n                pbVar10 = lengths + iVar19;\n              } while (iVar19 != nlengths);\n            }\n            piVar13 = piVar21;\n            aiStackY_660[1] = iVar19;\n            if (iVar24 != 0) {\n              if (iVar24 + 1 < iVar19) {\n                (*(code *)piVar16[2])(piVar16,uStackY_670);\n                iStackY_674 = aiStackY_660[0];\n                uStackY_670 = (uint)*lengths;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStackY_674 = aiStackY_660[0];\n            uStackY_670 = uVar17;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar24 == 0) {\n            (*(code *)piVar16[2])(piVar16,*lengths);\n            piVar13 = (int *)0x1;\n            iVar19 = iVar24;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar16[3])(piVar16,iStackY_674,iVar24);\n          piVar13 = (int *)(iVar24 - 1);\n          iVar19 = 0;\n          iVar24 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = lengths + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar24 = *(int *)(&LAB_00038ff8 + iVar30);\n            piVar13 = *(int **)(puVar31 + 0x39878);\n            if (2 < iVar24) {\n              iVar19 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar31 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar31 + 0x3a0b0))();\n              piVar16 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(&LAB_00038ff8 + iVar30) = iVar24 + 1;\n            *(uchar *)(iVar30 + iVar24 + 0x38ff2) = *lengths;\n          }\n          else {\n            bVar14 = *lengths;\n            piVar13 = (int *)(uint)bVar14;\n            iVar24 = *(int *)(iVar30 + 0x38000);\n            psVar8 = (short *)(iVar30 + iVar24 * 6);\n            uVar17 = ((uint)lengths[2] * 0x10d + (uint)lengths[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar17;\n            psVar8[1] = -1;\n            iVar29 = iVar30 + uVar17 * 2;\n            sVar2 = *(short *)(iVar29 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar29 + 0x38004) = (short)iVar24;\n            if (sVar2 != -1) {\n              *(short *)(iVar30 + sVar2 * 6 + 2) = (short)iVar24;\n            }\n            *(byte *)(iVar30 + iVar24 + 0x30000) = bVar14;\n            *(uint *)(iVar30 + 0x38000) = iVar24 + 1U & 0x7fff;\n          }\n          if (lengths + 1 == pbVar10) break;\n          nlengths = nlengths + -1;\n          lengths = lengths + 1;\n          bVar3 = nlengths < 3;\n        }\n        nlengths = nlengths + -1;\n        lengths = lengths + 1;\n        bVar3 = nlengths < 3;\n        iVar24 = iVar19;\n      }" { (do_statement "do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar17 = (uint)*lengths;\n            iVar19 = (int)*(short *)(iVar30 + (((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar19 == -1) goto LAB_00073ca0;\n            iVar27 = *(int *)(iVar30 + 0x38000);\n            iVar25 = iVar19 + 0x8000;\n            iVar29 = 0;\nLAB_00073f34:\n            do {\n              uVar23 = iVar25 - iVar27 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar17;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (lengths[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar18 = iVar29 + 1;\n                    aiStackY_660[iVar29 * 2] = iVar22;\n                    aiStackY_660[iVar29 * 2 + 1] = 3;\n                    if (0x1f < iVar18) goto LAB_00073fc8;\n                    iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n                    iVar25 = iVar19 + 0x8000;\n                    iVar29 = iVar18;\n                    if (iVar19 == -1) goto LAB_00073fc0;\n                    goto LAB_00073f34;\n                  }\n                  uVar23 = (uint)lengths[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n              iVar25 = iVar19 + 0x8000;\n              iVar18 = iVar29;\n            } while (iVar19 != -1);\nLAB_00073fc0:\n            if (iVar18 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar19 = 3;\n            if (nlengths != 3) {\n              pbVar10 = lengths + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar29 = iVar18 * 2;\n                piVar13 = aiStackY_660;\n                iVar25 = 0;\n                do {\n                  iVar27 = iVar19 - *piVar13;\n                  if (iVar27 < 0) {\n                    bVar1 = *(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = lengths[iVar27];\n                  }\n                  iVar18 = iVar25;\n                  if (bVar1 == bVar14) {\n                    iVar27 = piVar13[1];\n                    iVar18 = iVar25 + 1;\n                    aiStackY_660[iVar25 * 2] = *piVar13;\n                    aiStackY_660[iVar25 * 2 + 1] = iVar27;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar25 = iVar18;\n                } while (aiStackY_660 + iVar29 != piVar13);\n                if (iVar18 == 0) break;\n                iVar19 = iVar19 + 1;\n                pbVar10 = lengths + iVar19;\n              } while (iVar19 != nlengths);\n            }\n            piVar13 = piVar21;\n            aiStackY_660[1] = iVar19;\n            if (iVar24 != 0) {\n              if (iVar24 + 1 < iVar19) {\n                (*(code *)piVar16[2])(piVar16,uStackY_670);\n                iStackY_674 = aiStackY_660[0];\n                uStackY_670 = (uint)*lengths;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStackY_674 = aiStackY_660[0];\n            uStackY_670 = uVar17;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar24 == 0) {\n            (*(code *)piVar16[2])(piVar16,*lengths);\n            piVar13 = (int *)0x1;\n            iVar19 = iVar24;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar16[3])(piVar16,iStackY_674,iVar24);\n          piVar13 = (int *)(iVar24 - 1);\n          iVar19 = 0;\n          iVar24 = 0;\n        } while (piVar13 == (int *)0x0);" do (compound_statement "{\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar17 = (uint)*lengths;\n            iVar19 = (int)*(short *)(iVar30 + (((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar19 == -1) goto LAB_00073ca0;\n            iVar27 = *(int *)(iVar30 + 0x38000);\n            iVar25 = iVar19 + 0x8000;\n            iVar29 = 0;\nLAB_00073f34:\n            do {\n              uVar23 = iVar25 - iVar27 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar17;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (lengths[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar18 = iVar29 + 1;\n                    aiStackY_660[iVar29 * 2] = iVar22;\n                    aiStackY_660[iVar29 * 2 + 1] = 3;\n                    if (0x1f < iVar18) goto LAB_00073fc8;\n                    iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n                    iVar25 = iVar19 + 0x8000;\n                    iVar29 = iVar18;\n                    if (iVar19 == -1) goto LAB_00073fc0;\n                    goto LAB_00073f34;\n                  }\n                  uVar23 = (uint)lengths[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n              iVar25 = iVar19 + 0x8000;\n              iVar18 = iVar29;\n            } while (iVar19 != -1);\nLAB_00073fc0:\n            if (iVar18 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar19 = 3;\n            if (nlengths != 3) {\n              pbVar10 = lengths + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar29 = iVar18 * 2;\n                piVar13 = aiStackY_660;\n                iVar25 = 0;\n                do {\n                  iVar27 = iVar19 - *piVar13;\n                  if (iVar27 < 0) {\n                    bVar1 = *(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = lengths[iVar27];\n                  }\n                  iVar18 = iVar25;\n                  if (bVar1 == bVar14) {\n                    iVar27 = piVar13[1];\n                    iVar18 = iVar25 + 1;\n                    aiStackY_660[iVar25 * 2] = *piVar13;\n                    aiStackY_660[iVar25 * 2 + 1] = iVar27;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar25 = iVar18;\n                } while (aiStackY_660 + iVar29 != piVar13);\n                if (iVar18 == 0) break;\n                iVar19 = iVar19 + 1;\n                pbVar10 = lengths + iVar19;\n              } while (iVar19 != nlengths);\n            }\n            piVar13 = piVar21;\n            aiStackY_660[1] = iVar19;\n            if (iVar24 != 0) {\n              if (iVar24 + 1 < iVar19) {\n                (*(code *)piVar16[2])(piVar16,uStackY_670);\n                iStackY_674 = aiStackY_660[0];\n                uStackY_670 = (uint)*lengths;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStackY_674 = aiStackY_660[0];\n            uStackY_670 = uVar17;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar24 == 0) {\n            (*(code *)piVar16[2])(piVar16,*lengths);\n            piVar13 = (int *)0x1;\n            iVar19 = iVar24;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar16[3])(piVar16,iStackY_674,iVar24);\n          piVar13 = (int *)(iVar24 - 1);\n          iVar19 = 0;\n          iVar24 = 0;\n        }" { (if_statement "if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar17 = (uint)*lengths;\n            iVar19 = (int)*(short *)(iVar30 + (((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar19 == -1) goto LAB_00073ca0;\n            iVar27 = *(int *)(iVar30 + 0x38000);\n            iVar25 = iVar19 + 0x8000;\n            iVar29 = 0;\nLAB_00073f34:\n            do {\n              uVar23 = iVar25 - iVar27 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar17;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (lengths[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar18 = iVar29 + 1;\n                    aiStackY_660[iVar29 * 2] = iVar22;\n                    aiStackY_660[iVar29 * 2 + 1] = 3;\n                    if (0x1f < iVar18) goto LAB_00073fc8;\n                    iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n                    iVar25 = iVar19 + 0x8000;\n                    iVar29 = iVar18;\n                    if (iVar19 == -1) goto LAB_00073fc0;\n                    goto LAB_00073f34;\n                  }\n                  uVar23 = (uint)lengths[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n              iVar25 = iVar19 + 0x8000;\n              iVar18 = iVar29;\n            } while (iVar19 != -1);\nLAB_00073fc0:\n            if (iVar18 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar19 = 3;\n            if (nlengths != 3) {\n              pbVar10 = lengths + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar29 = iVar18 * 2;\n                piVar13 = aiStackY_660;\n                iVar25 = 0;\n                do {\n                  iVar27 = iVar19 - *piVar13;\n                  if (iVar27 < 0) {\n                    bVar1 = *(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = lengths[iVar27];\n                  }\n                  iVar18 = iVar25;\n                  if (bVar1 == bVar14) {\n                    iVar27 = piVar13[1];\n                    iVar18 = iVar25 + 1;\n                    aiStackY_660[iVar25 * 2] = *piVar13;\n                    aiStackY_660[iVar25 * 2 + 1] = iVar27;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar25 = iVar18;\n                } while (aiStackY_660 + iVar29 != piVar13);\n                if (iVar18 == 0) break;\n                iVar19 = iVar19 + 1;\n                pbVar10 = lengths + iVar19;\n              } while (iVar19 != nlengths);\n            }\n            piVar13 = piVar21;\n            aiStackY_660[1] = iVar19;\n            if (iVar24 != 0) {\n              if (iVar24 + 1 < iVar19) {\n                (*(code *)piVar16[2])(piVar16,uStackY_670);\n                iStackY_674 = aiStackY_660[0];\n                uStackY_670 = (uint)*lengths;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStackY_674 = aiStackY_660[0];\n            uStackY_670 = uVar17;\n            break;\n          }" if (parenthesized_expression "((piVar21 != (int *)0x0) && (!bVar3))" ( (binary_expression "(piVar21 != (int *)0x0) && (!bVar3)" (parenthesized_expression "(piVar21 != (int *)0x0)" ( (binary_expression "piVar21 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) ))) )) (compound_statement "{\n            uVar17 = (uint)*lengths;\n            iVar19 = (int)*(short *)(iVar30 + (((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar19 == -1) goto LAB_00073ca0;\n            iVar27 = *(int *)(iVar30 + 0x38000);\n            iVar25 = iVar19 + 0x8000;\n            iVar29 = 0;\nLAB_00073f34:\n            do {\n              uVar23 = iVar25 - iVar27 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar17;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (lengths[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar18 = iVar29 + 1;\n                    aiStackY_660[iVar29 * 2] = iVar22;\n                    aiStackY_660[iVar29 * 2 + 1] = 3;\n                    if (0x1f < iVar18) goto LAB_00073fc8;\n                    iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n                    iVar25 = iVar19 + 0x8000;\n                    iVar29 = iVar18;\n                    if (iVar19 == -1) goto LAB_00073fc0;\n                    goto LAB_00073f34;\n                  }\n                  uVar23 = (uint)lengths[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n              iVar25 = iVar19 + 0x8000;\n              iVar18 = iVar29;\n            } while (iVar19 != -1);\nLAB_00073fc0:\n            if (iVar18 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar19 = 3;\n            if (nlengths != 3) {\n              pbVar10 = lengths + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar29 = iVar18 * 2;\n                piVar13 = aiStackY_660;\n                iVar25 = 0;\n                do {\n                  iVar27 = iVar19 - *piVar13;\n                  if (iVar27 < 0) {\n                    bVar1 = *(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = lengths[iVar27];\n                  }\n                  iVar18 = iVar25;\n                  if (bVar1 == bVar14) {\n                    iVar27 = piVar13[1];\n                    iVar18 = iVar25 + 1;\n                    aiStackY_660[iVar25 * 2] = *piVar13;\n                    aiStackY_660[iVar25 * 2 + 1] = iVar27;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar25 = iVar18;\n                } while (aiStackY_660 + iVar29 != piVar13);\n                if (iVar18 == 0) break;\n                iVar19 = iVar19 + 1;\n                pbVar10 = lengths + iVar19;\n              } while (iVar19 != nlengths);\n            }\n            piVar13 = piVar21;\n            aiStackY_660[1] = iVar19;\n            if (iVar24 != 0) {\n              if (iVar24 + 1 < iVar19) {\n                (*(code *)piVar16[2])(piVar16,uStackY_670);\n                iStackY_674 = aiStackY_660[0];\n                uStackY_670 = (uint)*lengths;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStackY_674 = aiStackY_660[0];\n            uStackY_670 = uVar17;\n            break;\n          }" { (expression_statement "uVar17 = (uint)*lengths;" (assignment_expression "uVar17 = (uint)*lengths" identifier = (binary_expression "(uint)*lengths" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "iVar19 = (int)*(short *)(iVar30 + (((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);" (assignment_expression "iVar19 = (int)*(short *)(iVar30 + (((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4)" identifier = (cast_expression "(int)*(short *)(iVar30 + (((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(iVar30 + (((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4)" * (cast_expression "(short *)(iVar30 + (((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + (((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4)" ( (binary_expression "iVar30 + (((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4" (binary_expression "iVar30 + (((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2" identifier + (binary_expression "(((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2" (parenthesized_expression "(((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7 +\n                                              0x1c000)" ( (binary_expression "((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7 +\n                                              0x1c000" (binary_expression "((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101) % 0x7f7" (parenthesized_expression "((uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101)" ( (binary_expression "(uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107 + uVar17 * 0x101" (binary_expression "(uint)lengths[2] * 0x10d +\n                                               (uint)lengths[1] * 0x107" (binary_expression "(uint)lengths[2] * 0x10d" (cast_expression "(uint)lengths[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "lengths[2]" identifier [ number_literal ])) * number_literal) + (binary_expression "(uint)lengths[1] * 0x107" (cast_expression "(uint)lengths[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "lengths[1]" identifier [ number_literal ])) * number_literal)) + (binary_expression "uVar17 * 0x101" identifier * number_literal)) )) % number_literal) + number_literal) )) * number_literal)) + number_literal) )))))) ;) (if_statement "if (iVar19 == -1) goto LAB_00073ca0;" if (parenthesized_expression "(iVar19 == -1)" ( (binary_expression "iVar19 == -1" identifier == number_literal) )) (goto_statement "goto LAB_00073ca0;" goto statement_identifier ;)) (expression_statement "iVar27 = *(int *)(iVar30 + 0x38000);" (assignment_expression "iVar27 = *(int *)(iVar30 + 0x38000)" identifier = (pointer_expression "*(int *)(iVar30 + 0x38000)" * (cast_expression "(int *)(iVar30 + 0x38000)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + 0x38000)" ( (binary_expression "iVar30 + 0x38000" identifier + number_literal) ))))) ;) (expression_statement "iVar25 = iVar19 + 0x8000;" (assignment_expression "iVar25 = iVar19 + 0x8000" identifier = (binary_expression "iVar19 + 0x8000" identifier + number_literal)) ;) (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00073f34:\n            do {\n              uVar23 = iVar25 - iVar27 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar17;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (lengths[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar18 = iVar29 + 1;\n                    aiStackY_660[iVar29 * 2] = iVar22;\n                    aiStackY_660[iVar29 * 2 + 1] = 3;\n                    if (0x1f < iVar18) goto LAB_00073fc8;\n                    iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n                    iVar25 = iVar19 + 0x8000;\n                    iVar29 = iVar18;\n                    if (iVar19 == -1) goto LAB_00073fc0;\n                    goto LAB_00073f34;\n                  }\n                  uVar23 = (uint)lengths[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n              iVar25 = iVar19 + 0x8000;\n              iVar18 = iVar29;\n            } while (iVar19 != -1);" statement_identifier : (do_statement "do {\n              uVar23 = iVar25 - iVar27 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar17;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (lengths[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar18 = iVar29 + 1;\n                    aiStackY_660[iVar29 * 2] = iVar22;\n                    aiStackY_660[iVar29 * 2 + 1] = 3;\n                    if (0x1f < iVar18) goto LAB_00073fc8;\n                    iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n                    iVar25 = iVar19 + 0x8000;\n                    iVar29 = iVar18;\n                    if (iVar19 == -1) goto LAB_00073fc0;\n                    goto LAB_00073f34;\n                  }\n                  uVar23 = (uint)lengths[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n              iVar25 = iVar19 + 0x8000;\n              iVar18 = iVar29;\n            } while (iVar19 != -1);" do (compound_statement "{\n              uVar23 = iVar25 - iVar27 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar17;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (lengths[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar18 = iVar29 + 1;\n                    aiStackY_660[iVar29 * 2] = iVar22;\n                    aiStackY_660[iVar29 * 2 + 1] = 3;\n                    if (0x1f < iVar18) goto LAB_00073fc8;\n                    iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n                    iVar25 = iVar19 + 0x8000;\n                    iVar29 = iVar18;\n                    if (iVar19 == -1) goto LAB_00073fc0;\n                    goto LAB_00073f34;\n                  }\n                  uVar23 = (uint)lengths[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n              iVar25 = iVar19 + 0x8000;\n              iVar18 = iVar29;\n            }" { (expression_statement "uVar23 = iVar25 - iVar27 & 0x80007fff;" (assignment_expression "uVar23 = iVar25 - iVar27 & 0x80007fff" identifier = (binary_expression "iVar25 - iVar27 & 0x80007fff" (binary_expression "iVar25 - iVar27" identifier - identifier) & number_literal)) ;) (if_statement "if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }" if (parenthesized_expression "((int)uVar23 < 0)" ( (binary_expression "(int)uVar23 < 0" (cast_expression "(int)uVar23" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }" { (expression_statement "uVar23 = (uVar23 - 1 | 0xffff8000) + 1;" (assignment_expression "uVar23 = (uVar23 - 1 | 0xffff8000) + 1" identifier = (binary_expression "(uVar23 - 1 | 0xffff8000) + 1" (parenthesized_expression "(uVar23 - 1 | 0xffff8000)" ( (binary_expression "uVar23 - 1 | 0xffff8000" (binary_expression "uVar23 - 1" identifier - number_literal) | number_literal) )) + number_literal)) ;) })) (expression_statement "iVar22 = 0x8000 - uVar23;" (assignment_expression "iVar22 = 0x8000 - uVar23" identifier = (binary_expression "0x8000 - uVar23" number_literal - identifier)) ;) (expression_statement "iVar25 = uVar23 - 0x8000;" (assignment_expression "iVar25 = uVar23 - 0x8000" identifier = (binary_expression "uVar23 - 0x8000" identifier - number_literal)) ;) (expression_statement "uVar23 = uVar17;" (assignment_expression "uVar23 = uVar17" identifier = identifier) ;) (if_statement "if (iVar25 < 0) goto LAB_00073f88;" if (parenthesized_expression "(iVar25 < 0)" ( (binary_expression "iVar25 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00073f88;" goto statement_identifier ;)) (while_statement "while (lengths[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar18 = iVar29 + 1;\n                    aiStackY_660[iVar29 * 2] = iVar22;\n                    aiStackY_660[iVar29 * 2 + 1] = 3;\n                    if (0x1f < iVar18) goto LAB_00073fc8;\n                    iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n                    iVar25 = iVar19 + 0x8000;\n                    iVar29 = iVar18;\n                    if (iVar19 == -1) goto LAB_00073fc0;\n                    goto LAB_00073f34;\n                  }\n                  uVar23 = (uint)lengths[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }" while (parenthesized_expression "(lengths[iVar25] == uVar23)" ( (binary_expression "lengths[iVar25] == uVar23" (subscript_expression "lengths[iVar25]" identifier [ identifier ]) == identifier) )) (compound_statement "{\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar18 = iVar29 + 1;\n                    aiStackY_660[iVar29 * 2] = iVar22;\n                    aiStackY_660[iVar29 * 2 + 1] = 3;\n                    if (0x1f < iVar18) goto LAB_00073fc8;\n                    iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n                    iVar25 = iVar19 + 0x8000;\n                    iVar29 = iVar18;\n                    if (iVar19 == -1) goto LAB_00073fc0;\n                    goto LAB_00073f34;\n                  }\n                  uVar23 = (uint)lengths[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }" { (while_statement "while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar18 = iVar29 + 1;\n                    aiStackY_660[iVar29 * 2] = iVar22;\n                    aiStackY_660[iVar29 * 2 + 1] = 3;\n                    if (0x1f < iVar18) goto LAB_00073fc8;\n                    iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n                    iVar25 = iVar19 + 0x8000;\n                    iVar29 = iVar18;\n                    if (iVar19 == -1) goto LAB_00073fc0;\n                    goto LAB_00073f34;\n                  }\n                  uVar23 = (uint)lengths[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar18 = iVar29 + 1;\n                    aiStackY_660[iVar29 * 2] = iVar22;\n                    aiStackY_660[iVar29 * 2 + 1] = 3;\n                    if (0x1f < iVar18) goto LAB_00073fc8;\n                    iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n                    iVar25 = iVar19 + 0x8000;\n                    iVar29 = iVar18;\n                    if (iVar19 == -1) goto LAB_00073fc0;\n                    goto LAB_00073f34;\n                  }\n                  uVar23 = (uint)lengths[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }" { (expression_statement "iVar25 = iVar25 + 1;" (assignment_expression "iVar25 = iVar25 + 1" identifier = (binary_expression "iVar25 + 1" identifier + number_literal)) ;) (if_statement "if (3 - iVar22 == iVar25) {\n                    iVar18 = iVar29 + 1;\n                    aiStackY_660[iVar29 * 2] = iVar22;\n                    aiStackY_660[iVar29 * 2 + 1] = 3;\n                    if (0x1f < iVar18) goto LAB_00073fc8;\n                    iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n                    iVar25 = iVar19 + 0x8000;\n                    iVar29 = iVar18;\n                    if (iVar19 == -1) goto LAB_00073fc0;\n                    goto LAB_00073f34;\n                  }" if (parenthesized_expression "(3 - iVar22 == iVar25)" ( (binary_expression "3 - iVar22 == iVar25" (binary_expression "3 - iVar22" number_literal - identifier) == identifier) )) (compound_statement "{\n                    iVar18 = iVar29 + 1;\n                    aiStackY_660[iVar29 * 2] = iVar22;\n                    aiStackY_660[iVar29 * 2 + 1] = 3;\n                    if (0x1f < iVar18) goto LAB_00073fc8;\n                    iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);\n                    iVar25 = iVar19 + 0x8000;\n                    iVar29 = iVar18;\n                    if (iVar19 == -1) goto LAB_00073fc0;\n                    goto LAB_00073f34;\n                  }" { (expression_statement "iVar18 = iVar29 + 1;" (assignment_expression "iVar18 = iVar29 + 1" identifier = (binary_expression "iVar29 + 1" identifier + number_literal)) ;) (expression_statement "aiStackY_660[iVar29 * 2] = iVar22;" (assignment_expression "aiStackY_660[iVar29 * 2] = iVar22" (subscript_expression "aiStackY_660[iVar29 * 2]" identifier [ (binary_expression "iVar29 * 2" identifier * number_literal) ]) = identifier) ;) (expression_statement "aiStackY_660[iVar29 * 2 + 1] = 3;" (assignment_expression "aiStackY_660[iVar29 * 2 + 1] = 3" (subscript_expression "aiStackY_660[iVar29 * 2 + 1]" identifier [ (binary_expression "iVar29 * 2 + 1" (binary_expression "iVar29 * 2" identifier * number_literal) + number_literal) ]) = number_literal) ;) (if_statement "if (0x1f < iVar18) goto LAB_00073fc8;" if (parenthesized_expression "(0x1f < iVar18)" ( (binary_expression "0x1f < iVar18" number_literal < identifier) )) (goto_statement "goto LAB_00073fc8;" goto statement_identifier ;)) (expression_statement "iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);" (assignment_expression "iVar19 = (int)*(short *)(iVar30 + iVar19 * 6)" identifier = (cast_expression "(int)*(short *)(iVar30 + iVar19 * 6)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(iVar30 + iVar19 * 6)" * (cast_expression "(short *)(iVar30 + iVar19 * 6)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + iVar19 * 6)" ( (binary_expression "iVar30 + iVar19 * 6" identifier + (binary_expression "iVar19 * 6" identifier * number_literal)) )))))) ;) (expression_statement "iVar25 = iVar19 + 0x8000;" (assignment_expression "iVar25 = iVar19 + 0x8000" identifier = (binary_expression "iVar19 + 0x8000" identifier + number_literal)) ;) (expression_statement "iVar29 = iVar18;" (assignment_expression "iVar29 = iVar18" identifier = identifier) ;) (if_statement "if (iVar19 == -1) goto LAB_00073fc0;" if (parenthesized_expression "(iVar19 == -1)" ( (binary_expression "iVar19 == -1" identifier == number_literal) )) (goto_statement "goto LAB_00073fc0;" goto statement_identifier ;)) (goto_statement "goto LAB_00073f34;" goto statement_identifier ;) })) (expression_statement "uVar23 = (uint)lengths[iVar22 + iVar25];" (assignment_expression "uVar23 = (uint)lengths[iVar22 + iVar25]" identifier = (cast_expression "(uint)lengths[iVar22 + iVar25]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "lengths[iVar22 + iVar25]" identifier [ (binary_expression "iVar22 + iVar25" identifier + identifier) ]))) ;) (if_statement "if (-1 < iVar25) break;" if (parenthesized_expression "(-1 < iVar25)" ( (binary_expression "-1 < iVar25" number_literal < identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00073f88:\n                  if (*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;" statement_identifier : (if_statement "if (*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;" if (parenthesized_expression "(*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000) != uVar23)" ( (binary_expression "*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000) != uVar23" (pointer_expression "*(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000)" * (cast_expression "(byte *)(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000)" ( (binary_expression "iVar30 + (iVar27 + iVar25 & 0x7fffU) + 0x30000" (binary_expression "iVar30 + (iVar27 + iVar25 & 0x7fffU)" identifier + (parenthesized_expression "(iVar27 + iVar25 & 0x7fffU)" ( (binary_expression "iVar27 + iVar25 & 0x7fffU" (binary_expression "iVar27 + iVar25" identifier + identifier) & number_literal) ))) + number_literal) )))) != identifier) )) (goto_statement "goto LAB_00073fa4;" goto statement_identifier ;))) })) })) (labeled_statement "LAB_00073fa4:\n              iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);" statement_identifier : (expression_statement "iVar19 = (int)*(short *)(iVar30 + iVar19 * 6);" (assignment_expression "iVar19 = (int)*(short *)(iVar30 + iVar19 * 6)" identifier = (cast_expression "(int)*(short *)(iVar30 + iVar19 * 6)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(iVar30 + iVar19 * 6)" * (cast_expression "(short *)(iVar30 + iVar19 * 6)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + iVar19 * 6)" ( (binary_expression "iVar30 + iVar19 * 6" identifier + (binary_expression "iVar19 * 6" identifier * number_literal)) )))))) ;)) (expression_statement "iVar25 = iVar19 + 0x8000;" (assignment_expression "iVar25 = iVar19 + 0x8000" identifier = (binary_expression "iVar19 + 0x8000" identifier + number_literal)) ;) (expression_statement "iVar18 = iVar29;" (assignment_expression "iVar18 = iVar29" identifier = identifier) ;) }) while (parenthesized_expression "(iVar19 != -1)" ( (binary_expression "iVar19 != -1" identifier != number_literal) )) ;)) (labeled_statement "LAB_00073fc0:\n            if (iVar18 == 0) goto LAB_00073ca0;" statement_identifier : (if_statement "if (iVar18 == 0) goto LAB_00073ca0;" if (parenthesized_expression "(iVar18 == 0)" ( (binary_expression "iVar18 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00073ca0;" goto statement_identifier ;))) (labeled_statement "LAB_00073fc8:\n            iVar19 = 3;" statement_identifier : (expression_statement "iVar19 = 3;" (assignment_expression "iVar19 = 3" identifier = number_literal) ;)) (if_statement "if (nlengths != 3) {\n              pbVar10 = lengths + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar29 = iVar18 * 2;\n                piVar13 = aiStackY_660;\n                iVar25 = 0;\n                do {\n                  iVar27 = iVar19 - *piVar13;\n                  if (iVar27 < 0) {\n                    bVar1 = *(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = lengths[iVar27];\n                  }\n                  iVar18 = iVar25;\n                  if (bVar1 == bVar14) {\n                    iVar27 = piVar13[1];\n                    iVar18 = iVar25 + 1;\n                    aiStackY_660[iVar25 * 2] = *piVar13;\n                    aiStackY_660[iVar25 * 2 + 1] = iVar27;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar25 = iVar18;\n                } while (aiStackY_660 + iVar29 != piVar13);\n                if (iVar18 == 0) break;\n                iVar19 = iVar19 + 1;\n                pbVar10 = lengths + iVar19;\n              } while (iVar19 != nlengths);\n            }" if (parenthesized_expression "(nlengths != 3)" ( (binary_expression "nlengths != 3" identifier != number_literal) )) (compound_statement "{\n              pbVar10 = lengths + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar29 = iVar18 * 2;\n                piVar13 = aiStackY_660;\n                iVar25 = 0;\n                do {\n                  iVar27 = iVar19 - *piVar13;\n                  if (iVar27 < 0) {\n                    bVar1 = *(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = lengths[iVar27];\n                  }\n                  iVar18 = iVar25;\n                  if (bVar1 == bVar14) {\n                    iVar27 = piVar13[1];\n                    iVar18 = iVar25 + 1;\n                    aiStackY_660[iVar25 * 2] = *piVar13;\n                    aiStackY_660[iVar25 * 2 + 1] = iVar27;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar25 = iVar18;\n                } while (aiStackY_660 + iVar29 != piVar13);\n                if (iVar18 == 0) break;\n                iVar19 = iVar19 + 1;\n                pbVar10 = lengths + iVar19;\n              } while (iVar19 != nlengths);\n            }" { (expression_statement "pbVar10 = lengths + 3;" (assignment_expression "pbVar10 = lengths + 3" identifier = (binary_expression "lengths + 3" identifier + number_literal)) ;) (do_statement "do {\n                bVar14 = *pbVar10;\n                iVar29 = iVar18 * 2;\n                piVar13 = aiStackY_660;\n                iVar25 = 0;\n                do {\n                  iVar27 = iVar19 - *piVar13;\n                  if (iVar27 < 0) {\n                    bVar1 = *(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = lengths[iVar27];\n                  }\n                  iVar18 = iVar25;\n                  if (bVar1 == bVar14) {\n                    iVar27 = piVar13[1];\n                    iVar18 = iVar25 + 1;\n                    aiStackY_660[iVar25 * 2] = *piVar13;\n                    aiStackY_660[iVar25 * 2 + 1] = iVar27;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar25 = iVar18;\n                } while (aiStackY_660 + iVar29 != piVar13);\n                if (iVar18 == 0) break;\n                iVar19 = iVar19 + 1;\n                pbVar10 = lengths + iVar19;\n              } while (iVar19 != nlengths);" do (compound_statement "{\n                bVar14 = *pbVar10;\n                iVar29 = iVar18 * 2;\n                piVar13 = aiStackY_660;\n                iVar25 = 0;\n                do {\n                  iVar27 = iVar19 - *piVar13;\n                  if (iVar27 < 0) {\n                    bVar1 = *(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = lengths[iVar27];\n                  }\n                  iVar18 = iVar25;\n                  if (bVar1 == bVar14) {\n                    iVar27 = piVar13[1];\n                    iVar18 = iVar25 + 1;\n                    aiStackY_660[iVar25 * 2] = *piVar13;\n                    aiStackY_660[iVar25 * 2 + 1] = iVar27;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar25 = iVar18;\n                } while (aiStackY_660 + iVar29 != piVar13);\n                if (iVar18 == 0) break;\n                iVar19 = iVar19 + 1;\n                pbVar10 = lengths + iVar19;\n              }" { (expression_statement "bVar14 = *pbVar10;" (assignment_expression "bVar14 = *pbVar10" identifier = (pointer_expression "*pbVar10" * identifier)) ;) (expression_statement "iVar29 = iVar18 * 2;" (assignment_expression "iVar29 = iVar18 * 2" identifier = (binary_expression "iVar18 * 2" identifier * number_literal)) ;) (expression_statement "piVar13 = aiStackY_660;" (assignment_expression "piVar13 = aiStackY_660" identifier = identifier) ;) (expression_statement "iVar25 = 0;" (assignment_expression "iVar25 = 0" identifier = number_literal) ;) (do_statement "do {\n                  iVar27 = iVar19 - *piVar13;\n                  if (iVar27 < 0) {\n                    bVar1 = *(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = lengths[iVar27];\n                  }\n                  iVar18 = iVar25;\n                  if (bVar1 == bVar14) {\n                    iVar27 = piVar13[1];\n                    iVar18 = iVar25 + 1;\n                    aiStackY_660[iVar25 * 2] = *piVar13;\n                    aiStackY_660[iVar25 * 2 + 1] = iVar27;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar25 = iVar18;\n                } while (aiStackY_660 + iVar29 != piVar13);" do (compound_statement "{\n                  iVar27 = iVar19 - *piVar13;\n                  if (iVar27 < 0) {\n                    bVar1 = *(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = lengths[iVar27];\n                  }\n                  iVar18 = iVar25;\n                  if (bVar1 == bVar14) {\n                    iVar27 = piVar13[1];\n                    iVar18 = iVar25 + 1;\n                    aiStackY_660[iVar25 * 2] = *piVar13;\n                    aiStackY_660[iVar25 * 2 + 1] = iVar27;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar25 = iVar18;\n                }" { (expression_statement "iVar27 = iVar19 - *piVar13;" (assignment_expression "iVar27 = iVar19 - *piVar13" identifier = (binary_expression "iVar19 - *piVar13" identifier - (pointer_expression "*piVar13" * identifier))) ;) (if_statement "if (iVar27 < 0) {\n                    bVar1 = *(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = lengths[iVar27];\n                  }" if (parenthesized_expression "(iVar27 < 0)" ( (binary_expression "iVar27 < 0" identifier < number_literal) )) (compound_statement "{\n                    bVar1 = *(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }" { (expression_statement "bVar1 = *(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);" (assignment_expression "bVar1 = *(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000)" identifier = (pointer_expression "*(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000)" * (cast_expression "(byte *)(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000)" ( (binary_expression "iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000" (binary_expression "iVar30 + ((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU)" identifier + (parenthesized_expression "((iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU)" ( (binary_expression "(iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13 &\n                                               0x7fffU" (binary_expression "(iVar19 + *(int *)(iVar30 + 0x38000)) - *piVar13" (parenthesized_expression "(iVar19 + *(int *)(iVar30 + 0x38000))" ( (binary_expression "iVar19 + *(int *)(iVar30 + 0x38000)" identifier + (pointer_expression "*(int *)(iVar30 + 0x38000)" * (cast_expression "(int *)(iVar30 + 0x38000)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + 0x38000)" ( (binary_expression "iVar30 + 0x38000" identifier + number_literal) ))))) )) - (pointer_expression "*piVar13" * identifier)) & number_literal) ))) + number_literal) ))))) ;) }) (else_clause "else {\n                    bVar1 = lengths[iVar27];\n                  }" else (compound_statement "{\n                    bVar1 = lengths[iVar27];\n                  }" { (expression_statement "bVar1 = lengths[iVar27];" (assignment_expression "bVar1 = lengths[iVar27]" identifier = (subscript_expression "lengths[iVar27]" identifier [ identifier ])) ;) }))) (expression_statement "iVar18 = iVar25;" (assignment_expression "iVar18 = iVar25" identifier = identifier) ;) (if_statement "if (bVar1 == bVar14) {\n                    iVar27 = piVar13[1];\n                    iVar18 = iVar25 + 1;\n                    aiStackY_660[iVar25 * 2] = *piVar13;\n                    aiStackY_660[iVar25 * 2 + 1] = iVar27;\n                  }" if (parenthesized_expression "(bVar1 == bVar14)" ( (binary_expression "bVar1 == bVar14" identifier == identifier) )) (compound_statement "{\n                    iVar27 = piVar13[1];\n                    iVar18 = iVar25 + 1;\n                    aiStackY_660[iVar25 * 2] = *piVar13;\n                    aiStackY_660[iVar25 * 2 + 1] = iVar27;\n                  }" { (expression_statement "iVar27 = piVar13[1];" (assignment_expression "iVar27 = piVar13[1]" identifier = (subscript_expression "piVar13[1]" identifier [ number_literal ])) ;) (expression_statement "iVar18 = iVar25 + 1;" (assignment_expression "iVar18 = iVar25 + 1" identifier = (binary_expression "iVar25 + 1" identifier + number_literal)) ;) (expression_statement "aiStackY_660[iVar25 * 2] = *piVar13;" (assignment_expression "aiStackY_660[iVar25 * 2] = *piVar13" (subscript_expression "aiStackY_660[iVar25 * 2]" identifier [ (binary_expression "iVar25 * 2" identifier * number_literal) ]) = (pointer_expression "*piVar13" * identifier)) ;) (expression_statement "aiStackY_660[iVar25 * 2 + 1] = iVar27;" (assignment_expression "aiStackY_660[iVar25 * 2 + 1] = iVar27" (subscript_expression "aiStackY_660[iVar25 * 2 + 1]" identifier [ (binary_expression "iVar25 * 2 + 1" (binary_expression "iVar25 * 2" identifier * number_literal) + number_literal) ]) = identifier) ;) })) (expression_statement "piVar13 = piVar13 + 2;" (assignment_expression "piVar13 = piVar13 + 2" identifier = (binary_expression "piVar13 + 2" identifier + number_literal)) ;) (expression_statement "iVar25 = iVar18;" (assignment_expression "iVar25 = iVar18" identifier = identifier) ;) }) while (parenthesized_expression "(aiStackY_660 + iVar29 != piVar13)" ( (binary_expression "aiStackY_660 + iVar29 != piVar13" (binary_expression "aiStackY_660 + iVar29" identifier + identifier) != identifier) )) ;) (if_statement "if (iVar18 == 0) break;" if (parenthesized_expression "(iVar18 == 0)" ( (binary_expression "iVar18 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) (expression_statement "pbVar10 = lengths + iVar19;" (assignment_expression "pbVar10 = lengths + iVar19" identifier = (binary_expression "lengths + iVar19" identifier + identifier)) ;) }) while (parenthesized_expression "(iVar19 != nlengths)" ( (binary_expression "iVar19 != nlengths" identifier != identifier) )) ;) })) (expression_statement "piVar13 = piVar21;" (assignment_expression "piVar13 = piVar21" identifier = identifier) ;) (expression_statement "aiStackY_660[1] = iVar19;" (assignment_expression "aiStackY_660[1] = iVar19" (subscript_expression "aiStackY_660[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar24 != 0) {\n              if (iVar24 + 1 < iVar19) {\n                (*(code *)piVar16[2])(piVar16,uStackY_670);\n                iStackY_674 = aiStackY_660[0];\n                uStackY_670 = (uint)*lengths;\n                break;\n              }\n              goto LAB_00073ca8;\n            }" if (parenthesized_expression "(iVar24 != 0)" ( (binary_expression "iVar24 != 0" identifier != number_literal) )) (compound_statement "{\n              if (iVar24 + 1 < iVar19) {\n                (*(code *)piVar16[2])(piVar16,uStackY_670);\n                iStackY_674 = aiStackY_660[0];\n                uStackY_670 = (uint)*lengths;\n                break;\n              }\n              goto LAB_00073ca8;\n            }" { (if_statement "if (iVar24 + 1 < iVar19) {\n                (*(code *)piVar16[2])(piVar16,uStackY_670);\n                iStackY_674 = aiStackY_660[0];\n                uStackY_670 = (uint)*lengths;\n                break;\n              }" if (parenthesized_expression "(iVar24 + 1 < iVar19)" ( (binary_expression "iVar24 + 1 < iVar19" (binary_expression "iVar24 + 1" identifier + number_literal) < identifier) )) (compound_statement "{\n                (*(code *)piVar16[2])(piVar16,uStackY_670);\n                iStackY_674 = aiStackY_660[0];\n                uStackY_670 = (uint)*lengths;\n                break;\n              }" { (expression_statement "(*(code *)piVar16[2])(piVar16,uStackY_670);" (call_expression "(*(code *)piVar16[2])(piVar16,uStackY_670)" (parenthesized_expression "(*(code *)piVar16[2])" ( (pointer_expression "*(code *)piVar16[2]" * (cast_expression "(code *)piVar16[2]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar16[2]" identifier [ number_literal ]))) )) (argument_list "(piVar16,uStackY_670)" ( identifier , identifier ))) ;) (expression_statement "iStackY_674 = aiStackY_660[0];" (assignment_expression "iStackY_674 = aiStackY_660[0]" identifier = (subscript_expression "aiStackY_660[0]" identifier [ number_literal ])) ;) (expression_statement "uStackY_670 = (uint)*lengths;" (assignment_expression "uStackY_670 = (uint)*lengths" identifier = (binary_expression "(uint)*lengths" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (break_statement "break;" break ;) })) (goto_statement "goto LAB_00073ca8;" goto statement_identifier ;) })) (expression_statement "iStackY_674 = aiStackY_660[0];" (assignment_expression "iStackY_674 = aiStackY_660[0]" identifier = (subscript_expression "aiStackY_660[0]" identifier [ number_literal ])) ;) (expression_statement "uStackY_670 = uVar17;" (assignment_expression "uStackY_670 = uVar17" identifier = identifier) ;) (break_statement "break;" break ;) })) (labeled_statement "LAB_00073ca0:\n          if (iVar24 == 0) {\n            (*(code *)piVar16[2])(piVar16,*lengths);\n            piVar13 = (int *)0x1;\n            iVar19 = iVar24;\n            break;\n          }" statement_identifier : (if_statement "if (iVar24 == 0) {\n            (*(code *)piVar16[2])(piVar16,*lengths);\n            piVar13 = (int *)0x1;\n            iVar19 = iVar24;\n            break;\n          }" if (parenthesized_expression "(iVar24 == 0)" ( (binary_expression "iVar24 == 0" identifier == number_literal) )) (compound_statement "{\n            (*(code *)piVar16[2])(piVar16,*lengths);\n            piVar13 = (int *)0x1;\n            iVar19 = iVar24;\n            break;\n          }" { (expression_statement "(*(code *)piVar16[2])(piVar16,*lengths);" (call_expression "(*(code *)piVar16[2])(piVar16,*lengths)" (parenthesized_expression "(*(code *)piVar16[2])" ( (pointer_expression "*(code *)piVar16[2]" * (cast_expression "(code *)piVar16[2]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar16[2]" identifier [ number_literal ]))) )) (argument_list "(piVar16,*lengths)" ( identifier , (pointer_expression "*lengths" * identifier) ))) ;) (expression_statement "piVar13 = (int *)0x1;" (assignment_expression "piVar13 = (int *)0x1" identifier = (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar19 = iVar24;" (assignment_expression "iVar19 = iVar24" identifier = identifier) ;) (break_statement "break;" break ;) }))) (labeled_statement "LAB_00073ca8:\n          (*(code *)piVar16[3])(piVar16,iStackY_674,iVar24);" statement_identifier : (expression_statement "(*(code *)piVar16[3])(piVar16,iStackY_674,iVar24);" (call_expression "(*(code *)piVar16[3])(piVar16,iStackY_674,iVar24)" (parenthesized_expression "(*(code *)piVar16[3])" ( (pointer_expression "*(code *)piVar16[3]" * (cast_expression "(code *)piVar16[3]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar16[3]" identifier [ number_literal ]))) )) (argument_list "(piVar16,iStackY_674,iVar24)" ( identifier , identifier , identifier ))) ;)) (expression_statement "piVar13 = (int *)(iVar24 - 1);" (assignment_expression "piVar13 = (int *)(iVar24 - 1)" identifier = (cast_expression "(int *)(iVar24 - 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 - 1)" ( (binary_expression "iVar24 - 1" identifier - number_literal) )))) ;) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) }) while (parenthesized_expression "(piVar13 == (int *)0x0)" ( (binary_expression "piVar13 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "uVar15 = 0xff;" (assignment_expression "uVar15 = 0xff" identifier = number_literal) ;) (expression_statement "pbVar10 = lengths + (int)piVar13;" (assignment_expression "pbVar10 = lengths + (int)piVar13" identifier = (binary_expression "lengths + (int)piVar13" identifier + (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (while_statement "while( true ) {\n          if (bVar3) {\n            iVar24 = *(int *)(&LAB_00038ff8 + iVar30);\n            piVar13 = *(int **)(puVar31 + 0x39878);\n            if (2 < iVar24) {\n              iVar19 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar31 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar31 + 0x3a0b0))();\n              piVar16 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(&LAB_00038ff8 + iVar30) = iVar24 + 1;\n            *(uchar *)(iVar30 + iVar24 + 0x38ff2) = *lengths;\n          }\n          else {\n            bVar14 = *lengths;\n            piVar13 = (int *)(uint)bVar14;\n            iVar24 = *(int *)(iVar30 + 0x38000);\n            psVar8 = (short *)(iVar30 + iVar24 * 6);\n            uVar17 = ((uint)lengths[2] * 0x10d + (uint)lengths[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar17;\n            psVar8[1] = -1;\n            iVar29 = iVar30 + uVar17 * 2;\n            sVar2 = *(short *)(iVar29 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar29 + 0x38004) = (short)iVar24;\n            if (sVar2 != -1) {\n              *(short *)(iVar30 + sVar2 * 6 + 2) = (short)iVar24;\n            }\n            *(byte *)(iVar30 + iVar24 + 0x30000) = bVar14;\n            *(uint *)(iVar30 + 0x38000) = iVar24 + 1U & 0x7fff;\n          }\n          if (lengths + 1 == pbVar10) break;\n          nlengths = nlengths + -1;\n          lengths = lengths + 1;\n          bVar3 = nlengths < 3;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          if (bVar3) {\n            iVar24 = *(int *)(&LAB_00038ff8 + iVar30);\n            piVar13 = *(int **)(puVar31 + 0x39878);\n            if (2 < iVar24) {\n              iVar19 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar31 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar31 + 0x3a0b0))();\n              piVar16 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(&LAB_00038ff8 + iVar30) = iVar24 + 1;\n            *(uchar *)(iVar30 + iVar24 + 0x38ff2) = *lengths;\n          }\n          else {\n            bVar14 = *lengths;\n            piVar13 = (int *)(uint)bVar14;\n            iVar24 = *(int *)(iVar30 + 0x38000);\n            psVar8 = (short *)(iVar30 + iVar24 * 6);\n            uVar17 = ((uint)lengths[2] * 0x10d + (uint)lengths[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar17;\n            psVar8[1] = -1;\n            iVar29 = iVar30 + uVar17 * 2;\n            sVar2 = *(short *)(iVar29 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar29 + 0x38004) = (short)iVar24;\n            if (sVar2 != -1) {\n              *(short *)(iVar30 + sVar2 * 6 + 2) = (short)iVar24;\n            }\n            *(byte *)(iVar30 + iVar24 + 0x30000) = bVar14;\n            *(uint *)(iVar30 + 0x38000) = iVar24 + 1U & 0x7fff;\n          }\n          if (lengths + 1 == pbVar10) break;\n          nlengths = nlengths + -1;\n          lengths = lengths + 1;\n          bVar3 = nlengths < 3;\n        }" { (if_statement "if (bVar3) {\n            iVar24 = *(int *)(&LAB_00038ff8 + iVar30);\n            piVar13 = *(int **)(puVar31 + 0x39878);\n            if (2 < iVar24) {\n              iVar19 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar31 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar31 + 0x3a0b0))();\n              piVar16 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(&LAB_00038ff8 + iVar30) = iVar24 + 1;\n            *(uchar *)(iVar30 + iVar24 + 0x38ff2) = *lengths;\n          }\n          else {\n            bVar14 = *lengths;\n            piVar13 = (int *)(uint)bVar14;\n            iVar24 = *(int *)(iVar30 + 0x38000);\n            psVar8 = (short *)(iVar30 + iVar24 * 6);\n            uVar17 = ((uint)lengths[2] * 0x10d + (uint)lengths[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar17;\n            psVar8[1] = -1;\n            iVar29 = iVar30 + uVar17 * 2;\n            sVar2 = *(short *)(iVar29 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar29 + 0x38004) = (short)iVar24;\n            if (sVar2 != -1) {\n              *(short *)(iVar30 + sVar2 * 6 + 2) = (short)iVar24;\n            }\n            *(byte *)(iVar30 + iVar24 + 0x30000) = bVar14;\n            *(uint *)(iVar30 + 0x38000) = iVar24 + 1U & 0x7fff;\n          }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n            iVar24 = *(int *)(&LAB_00038ff8 + iVar30);\n            piVar13 = *(int **)(puVar31 + 0x39878);\n            if (2 < iVar24) {\n              iVar19 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar31 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar31 + 0x3a0b0))();\n              piVar16 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(&LAB_00038ff8 + iVar30) = iVar24 + 1;\n            *(uchar *)(iVar30 + iVar24 + 0x38ff2) = *lengths;\n          }" { (expression_statement "iVar24 = *(int *)(&LAB_00038ff8 + iVar30);" (assignment_expression "iVar24 = *(int *)(&LAB_00038ff8 + iVar30)" identifier = (pointer_expression "*(int *)(&LAB_00038ff8 + iVar30)" * (cast_expression "(int *)(&LAB_00038ff8 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&LAB_00038ff8 + iVar30)" ( (binary_expression "&LAB_00038ff8 + iVar30" (pointer_expression "&LAB_00038ff8" & identifier) + identifier) ))))) ;) (expression_statement "piVar13 = *(int **)(puVar31 + 0x39878);" (assignment_expression "piVar13 = *(int **)(puVar31 + 0x39878)" identifier = (pointer_expression "*(int **)(puVar31 + 0x39878)" * (cast_expression "(int **)(puVar31 + 0x39878)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + 0x39878)" ( (binary_expression "puVar31 + 0x39878" identifier + number_literal) ))))) ;) (if_statement "if (2 < iVar24) {\n              iVar19 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar31 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar31 + 0x3a0b0))();\n              piVar16 = piVar21;\n              goto LAB_00073c5c;\n            }" if (parenthesized_expression "(2 < iVar24)" ( (binary_expression "2 < iVar24" number_literal < identifier) )) (compound_statement "{\n              iVar19 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar31 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar31 + 0x3a0b0))();\n              piVar16 = piVar21;\n              goto LAB_00073c5c;\n            }" { (expression_statement "iVar19 = 0x157;" (assignment_expression "iVar19 = 0x157" identifier = number_literal) ;) (expression_statement "pbVar10 = (byte *)(*(int *)(puVar31 + 0x39878) + 0x72e0);" (assignment_expression "pbVar10 = (byte *)(*(int *)(puVar31 + 0x39878) + 0x72e0)" identifier = (cast_expression "(byte *)(*(int *)(puVar31 + 0x39878) + 0x72e0)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar31 + 0x39878) + 0x72e0)" ( (binary_expression "*(int *)(puVar31 + 0x39878) + 0x72e0" (pointer_expression "*(int *)(puVar31 + 0x39878)" * (cast_expression "(int *)(puVar31 + 0x39878)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + 0x39878)" ( (binary_expression "puVar31 + 0x39878" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "piVar13 = piVar13 + 0x1cc2;" (assignment_expression "piVar13 = piVar13 + 0x1cc2" identifier = (binary_expression "piVar13 + 0x1cc2" identifier + number_literal)) ;) (expression_statement "(**(code **)(puVar31 + 0x3a0b0))();" (call_expression "(**(code **)(puVar31 + 0x3a0b0))()" (parenthesized_expression "(**(code **)(puVar31 + 0x3a0b0))" ( (pointer_expression "**(code **)(puVar31 + 0x3a0b0)" * (pointer_expression "*(code **)(puVar31 + 0x3a0b0)" * (cast_expression "(code **)(puVar31 + 0x3a0b0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + 0x3a0b0)" ( (binary_expression "puVar31 + 0x3a0b0" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "piVar16 = piVar21;" (assignment_expression "piVar16 = piVar21" identifier = identifier) ;) (goto_statement "goto LAB_00073c5c;" goto statement_identifier ;) })) (expression_statement "*(int *)(&LAB_00038ff8 + iVar30) = iVar24 + 1;" (assignment_expression "*(int *)(&LAB_00038ff8 + iVar30) = iVar24 + 1" (pointer_expression "*(int *)(&LAB_00038ff8 + iVar30)" * (cast_expression "(int *)(&LAB_00038ff8 + iVar30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&LAB_00038ff8 + iVar30)" ( (binary_expression "&LAB_00038ff8 + iVar30" (pointer_expression "&LAB_00038ff8" & identifier) + identifier) )))) = (binary_expression "iVar24 + 1" identifier + number_literal)) ;) (expression_statement "*(uchar *)(iVar30 + iVar24 + 0x38ff2) = *lengths;" (assignment_expression "*(uchar *)(iVar30 + iVar24 + 0x38ff2) = *lengths" (pointer_expression "*(uchar *)(iVar30 + iVar24 + 0x38ff2)" * (cast_expression "(uchar *)(iVar30 + iVar24 + 0x38ff2)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + iVar24 + 0x38ff2)" ( (binary_expression "iVar30 + iVar24 + 0x38ff2" (binary_expression "iVar30 + iVar24" identifier + identifier) + number_literal) )))) = (pointer_expression "*lengths" * identifier)) ;) }) (else_clause "else {\n            bVar14 = *lengths;\n            piVar13 = (int *)(uint)bVar14;\n            iVar24 = *(int *)(iVar30 + 0x38000);\n            psVar8 = (short *)(iVar30 + iVar24 * 6);\n            uVar17 = ((uint)lengths[2] * 0x10d + (uint)lengths[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar17;\n            psVar8[1] = -1;\n            iVar29 = iVar30 + uVar17 * 2;\n            sVar2 = *(short *)(iVar29 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar29 + 0x38004) = (short)iVar24;\n            if (sVar2 != -1) {\n              *(short *)(iVar30 + sVar2 * 6 + 2) = (short)iVar24;\n            }\n            *(byte *)(iVar30 + iVar24 + 0x30000) = bVar14;\n            *(uint *)(iVar30 + 0x38000) = iVar24 + 1U & 0x7fff;\n          }" else (compound_statement "{\n            bVar14 = *lengths;\n            piVar13 = (int *)(uint)bVar14;\n            iVar24 = *(int *)(iVar30 + 0x38000);\n            psVar8 = (short *)(iVar30 + iVar24 * 6);\n            uVar17 = ((uint)lengths[2] * 0x10d + (uint)lengths[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar17;\n            psVar8[1] = -1;\n            iVar29 = iVar30 + uVar17 * 2;\n            sVar2 = *(short *)(iVar29 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar29 + 0x38004) = (short)iVar24;\n            if (sVar2 != -1) {\n              *(short *)(iVar30 + sVar2 * 6 + 2) = (short)iVar24;\n            }\n            *(byte *)(iVar30 + iVar24 + 0x30000) = bVar14;\n            *(uint *)(iVar30 + 0x38000) = iVar24 + 1U & 0x7fff;\n          }" { (expression_statement "bVar14 = *lengths;" (assignment_expression "bVar14 = *lengths" identifier = (pointer_expression "*lengths" * identifier)) ;) (expression_statement "piVar13 = (int *)(uint)bVar14;" (assignment_expression "piVar13 = (int *)(uint)bVar14" identifier = (cast_expression "(int *)(uint)bVar14" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "iVar24 = *(int *)(iVar30 + 0x38000);" (assignment_expression "iVar24 = *(int *)(iVar30 + 0x38000)" identifier = (pointer_expression "*(int *)(iVar30 + 0x38000)" * (cast_expression "(int *)(iVar30 + 0x38000)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + 0x38000)" ( (binary_expression "iVar30 + 0x38000" identifier + number_literal) ))))) ;) (expression_statement "psVar8 = (short *)(iVar30 + iVar24 * 6);" (assignment_expression "psVar8 = (short *)(iVar30 + iVar24 * 6)" identifier = (cast_expression "(short *)(iVar30 + iVar24 * 6)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + iVar24 * 6)" ( (binary_expression "iVar30 + iVar24 * 6" identifier + (binary_expression "iVar24 * 6" identifier * number_literal)) )))) ;) (expression_statement "uVar17 = ((uint)lengths[2] * 0x10d + (uint)lengths[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;" (assignment_expression "uVar17 = ((uint)lengths[2] * 0x10d + (uint)lengths[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7" identifier = (binary_expression "((uint)lengths[2] * 0x10d + (uint)lengths[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7" (parenthesized_expression "((uint)lengths[2] * 0x10d + (uint)lengths[1] * 0x107 + (int)piVar13 * 0x101)" ( (binary_expression "(uint)lengths[2] * 0x10d + (uint)lengths[1] * 0x107 + (int)piVar13 * 0x101" (binary_expression "(uint)lengths[2] * 0x10d + (uint)lengths[1] * 0x107" (binary_expression "(uint)lengths[2] * 0x10d" (cast_expression "(uint)lengths[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "lengths[2]" identifier [ number_literal ])) * number_literal) + (binary_expression "(uint)lengths[1] * 0x107" (cast_expression "(uint)lengths[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "lengths[1]" identifier [ number_literal ])) * number_literal)) + (binary_expression "(int)piVar13 * 0x101" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )) % number_literal)) ;) (if_statement "if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n            }" if (parenthesized_expression "(psVar8[1] == -1)" ( (binary_expression "psVar8[1] == -1" (subscript_expression "psVar8[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }" { (if_statement "if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }" if (parenthesized_expression "(psVar8[2] != -1)" ( (binary_expression "psVar8[2] != -1" (subscript_expression "psVar8[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                *(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }" { (expression_statement "*(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;" (assignment_expression "*(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff" (pointer_expression "*(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4)" * (cast_expression "(undefined2 *)(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + (psVar8[2] + 0x1c000) * 2 + 4)" ( (binary_expression "iVar30 + (psVar8[2] + 0x1c000) * 2 + 4" (binary_expression "iVar30 + (psVar8[2] + 0x1c000) * 2" identifier + (binary_expression "(psVar8[2] + 0x1c000) * 2" (parenthesized_expression "(psVar8[2] + 0x1c000)" ( (binary_expression "psVar8[2] + 0x1c000" (subscript_expression "psVar8[2]" identifier [ number_literal ]) + number_literal) )) * number_literal)) + number_literal) )))) = number_literal) ;) })) }) (else_clause "else {\n              *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n            }" else (compound_statement "{\n              *(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;\n            }" { (expression_statement "*(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff;" (assignment_expression "*(undefined2 *)(iVar30 + psVar8[1] * 6) = 0xffff" (pointer_expression "*(undefined2 *)(iVar30 + psVar8[1] * 6)" * (cast_expression "(undefined2 *)(iVar30 + psVar8[1] * 6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + psVar8[1] * 6)" ( (binary_expression "iVar30 + psVar8[1] * 6" identifier + (binary_expression "psVar8[1] * 6" (subscript_expression "psVar8[1]" identifier [ number_literal ]) * number_literal)) )))) = number_literal) ;) }))) (expression_statement "psVar8[2] = (short)uVar17;" (assignment_expression "psVar8[2] = (short)uVar17" (subscript_expression "psVar8[2]" identifier [ number_literal ]) = (cast_expression "(short)uVar17" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "psVar8[1] = -1;" (assignment_expression "psVar8[1] = -1" (subscript_expression "psVar8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar29 = iVar30 + uVar17 * 2;" (assignment_expression "iVar29 = iVar30 + uVar17 * 2" identifier = (binary_expression "iVar30 + uVar17 * 2" identifier + (binary_expression "uVar17 * 2" identifier * number_literal))) ;) (expression_statement "sVar2 = *(short *)(iVar29 + 0x38004);" (assignment_expression "sVar2 = *(short *)(iVar29 + 0x38004)" identifier = (pointer_expression "*(short *)(iVar29 + 0x38004)" * (cast_expression "(short *)(iVar29 + 0x38004)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 0x38004)" ( (binary_expression "iVar29 + 0x38004" identifier + number_literal) ))))) ;) (expression_statement "*psVar8 = sVar2;" (assignment_expression "*psVar8 = sVar2" (pointer_expression "*psVar8" * identifier) = identifier) ;) (expression_statement "*(short *)(iVar29 + 0x38004) = (short)iVar24;" (assignment_expression "*(short *)(iVar29 + 0x38004) = (short)iVar24" (pointer_expression "*(short *)(iVar29 + 0x38004)" * (cast_expression "(short *)(iVar29 + 0x38004)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 0x38004)" ( (binary_expression "iVar29 + 0x38004" identifier + number_literal) )))) = (cast_expression "(short)iVar24" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (if_statement "if (sVar2 != -1) {\n              *(short *)(iVar30 + sVar2 * 6 + 2) = (short)iVar24;\n            }" if (parenthesized_expression "(sVar2 != -1)" ( (binary_expression "sVar2 != -1" identifier != number_literal) )) (compound_statement "{\n              *(short *)(iVar30 + sVar2 * 6 + 2) = (short)iVar24;\n            }" { (expression_statement "*(short *)(iVar30 + sVar2 * 6 + 2) = (short)iVar24;" (assignment_expression "*(short *)(iVar30 + sVar2 * 6 + 2) = (short)iVar24" (pointer_expression "*(short *)(iVar30 + sVar2 * 6 + 2)" * (cast_expression "(short *)(iVar30 + sVar2 * 6 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + sVar2 * 6 + 2)" ( (binary_expression "iVar30 + sVar2 * 6 + 2" (binary_expression "iVar30 + sVar2 * 6" identifier + (binary_expression "sVar2 * 6" identifier * number_literal)) + number_literal) )))) = (cast_expression "(short)iVar24" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) })) (expression_statement "*(byte *)(iVar30 + iVar24 + 0x30000) = bVar14;" (assignment_expression "*(byte *)(iVar30 + iVar24 + 0x30000) = bVar14" (pointer_expression "*(byte *)(iVar30 + iVar24 + 0x30000)" * (cast_expression "(byte *)(iVar30 + iVar24 + 0x30000)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + iVar24 + 0x30000)" ( (binary_expression "iVar30 + iVar24 + 0x30000" (binary_expression "iVar30 + iVar24" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(iVar30 + 0x38000) = iVar24 + 1U & 0x7fff;" (assignment_expression "*(uint *)(iVar30 + 0x38000) = iVar24 + 1U & 0x7fff" (pointer_expression "*(uint *)(iVar30 + 0x38000)" * (cast_expression "(uint *)(iVar30 + 0x38000)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + 0x38000)" ( (binary_expression "iVar30 + 0x38000" identifier + number_literal) )))) = (binary_expression "iVar24 + 1U & 0x7fff" (binary_expression "iVar24 + 1U" identifier + number_literal) & number_literal)) ;) }))) (if_statement "if (lengths + 1 == pbVar10) break;" if (parenthesized_expression "(lengths + 1 == pbVar10)" ( (binary_expression "lengths + 1 == pbVar10" (binary_expression "lengths + 1" identifier + number_literal) == identifier) )) (break_statement "break;" break ;)) (expression_statement "nlengths = nlengths + -1;" (assignment_expression "nlengths = nlengths + -1" identifier = (binary_expression "nlengths + -1" identifier + number_literal)) ;) (expression_statement "lengths = lengths + 1;" (assignment_expression "lengths = lengths + 1" identifier = (binary_expression "lengths + 1" identifier + number_literal)) ;) (expression_statement "bVar3 = nlengths < 3;" (assignment_expression "bVar3 = nlengths < 3" identifier = (binary_expression "nlengths < 3" identifier < number_literal)) ;) })) (expression_statement "nlengths = nlengths + -1;" (assignment_expression "nlengths = nlengths + -1" identifier = (binary_expression "nlengths + -1" identifier + number_literal)) ;) (expression_statement "lengths = lengths + 1;" (assignment_expression "lengths = lengths + 1" identifier = (binary_expression "lengths + 1" identifier + number_literal)) ;) (expression_statement "bVar3 = nlengths < 3;" (assignment_expression "bVar3 = nlengths < 3" identifier = (binary_expression "nlengths < 3" identifier < number_literal)) ;) (expression_statement "iVar24 = iVar19;" (assignment_expression "iVar24 = iVar19" identifier = identifier) ;) }) while (parenthesized_expression "(0 < nlengths)" ( (binary_expression "0 < nlengths" number_literal < identifier) )) ;) })) (expression_statement "pzVar6 = (zlib_table *)*puVar7;" (assignment_expression "pzVar6 = (zlib_table *)*puVar7" identifier = (cast_expression "(zlib_table *)*puVar7" ( (type_descriptor "zlib_table *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar7" * identifier))) ;) (if_statement "if (pzStackY_55c == pzVar6) {\n      return pzVar6;\n    }" if (parenthesized_expression "(pzStackY_55c == pzVar6)" ( (binary_expression "pzStackY_55c == pzVar6" identifier == identifier) )) (compound_statement "{\n      return pzVar6;\n    }" { (return_statement "return pzVar6;" return identifier ;) })) }) (else_clause "else {\n    iVar24 = *(int *)(puVar31 + 0x39878) + 0x72e0;\n    piVar13 = (int *)(*(int *)(puVar31 + 0x39878) + 0x72ec);\n    (**(code **)(puVar31 + 0x3a0b0))(piVar13,iVar24,0xd0,*(int *)(puVar31 + 0x39878) + 0x740c);\n    uVar15 = (undefined1)iVar24;\n  }" else (compound_statement "{\n    iVar24 = *(int *)(puVar31 + 0x39878) + 0x72e0;\n    piVar13 = (int *)(*(int *)(puVar31 + 0x39878) + 0x72ec);\n    (**(code **)(puVar31 + 0x3a0b0))(piVar13,iVar24,0xd0,*(int *)(puVar31 + 0x39878) + 0x740c);\n    uVar15 = (undefined1)iVar24;\n  }" { (expression_statement "iVar24 = *(int *)(puVar31 + 0x39878) + 0x72e0;" (assignment_expression "iVar24 = *(int *)(puVar31 + 0x39878) + 0x72e0" identifier = (binary_expression "*(int *)(puVar31 + 0x39878) + 0x72e0" (pointer_expression "*(int *)(puVar31 + 0x39878)" * (cast_expression "(int *)(puVar31 + 0x39878)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + 0x39878)" ( (binary_expression "puVar31 + 0x39878" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "piVar13 = (int *)(*(int *)(puVar31 + 0x39878) + 0x72ec);" (assignment_expression "piVar13 = (int *)(*(int *)(puVar31 + 0x39878) + 0x72ec)" identifier = (cast_expression "(int *)(*(int *)(puVar31 + 0x39878) + 0x72ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar31 + 0x39878) + 0x72ec)" ( (binary_expression "*(int *)(puVar31 + 0x39878) + 0x72ec" (pointer_expression "*(int *)(puVar31 + 0x39878)" * (cast_expression "(int *)(puVar31 + 0x39878)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + 0x39878)" ( (binary_expression "puVar31 + 0x39878" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(puVar31 + 0x3a0b0))(piVar13,iVar24,0xd0,*(int *)(puVar31 + 0x39878) + 0x740c);" (call_expression "(**(code **)(puVar31 + 0x3a0b0))(piVar13,iVar24,0xd0,*(int *)(puVar31 + 0x39878) + 0x740c)" (parenthesized_expression "(**(code **)(puVar31 + 0x3a0b0))" ( (pointer_expression "**(code **)(puVar31 + 0x3a0b0)" * (pointer_expression "*(code **)(puVar31 + 0x3a0b0)" * (cast_expression "(code **)(puVar31 + 0x3a0b0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + 0x3a0b0)" ( (binary_expression "puVar31 + 0x3a0b0" identifier + number_literal) ))))) )) (argument_list "(piVar13,iVar24,0xd0,*(int *)(puVar31 + 0x39878) + 0x740c)" ( identifier , identifier , number_literal , (binary_expression "*(int *)(puVar31 + 0x39878) + 0x740c" (pointer_expression "*(int *)(puVar31 + 0x39878)" * (cast_expression "(int *)(puVar31 + 0x39878)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + 0x39878)" ( (binary_expression "puVar31 + 0x39878" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "uVar15 = (undefined1)iVar24;" (assignment_expression "uVar15 = (undefined1)iVar24" identifier = (cast_expression "(undefined1)iVar24" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) }))) (expression_statement "pcVar32 = *(code **)(puVar31 + 0x3a254);" (assignment_expression "pcVar32 = *(code **)(puVar31 + 0x3a254)" identifier = (pointer_expression "*(code **)(puVar31 + 0x3a254)" * (cast_expression "(code **)(puVar31 + 0x3a254)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + 0x3a254)" ( (binary_expression "puVar31 + 0x3a254" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar32)();" (call_expression "(*pcVar32)()" (parenthesized_expression "(*pcVar32)" ( (pointer_expression "*pcVar32" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar24 = piVar13[0x2067];" (assignment_expression "iVar24 = piVar13[0x2067]" identifier = (subscript_expression "piVar13[0x2067]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)((int)piVar13 + iVar24 + 0x19c) = uVar15;" (assignment_expression "*(undefined1 *)((int)piVar13 + iVar24 + 0x19c) = uVar15" (pointer_expression "*(undefined1 *)((int)piVar13 + iVar24 + 0x19c)" * (cast_expression "(undefined1 *)((int)piVar13 + iVar24 + 0x19c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar13 + iVar24 + 0x19c)" ( (binary_expression "(int)piVar13 + iVar24 + 0x19c" (binary_expression "(int)piVar13 + iVar24" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = identifier) ;) (expression_statement "piVar13[0x2067] = iVar24 + 1U & 0x7fff;" (assignment_expression "piVar13[0x2067] = iVar24 + 1U & 0x7fff" (subscript_expression "piVar13[0x2067]" identifier [ number_literal ]) = (binary_expression "iVar24 + 1U & 0x7fff" (binary_expression "iVar24 + 1U" identifier + number_literal) & number_literal)) ;) (expression_statement "iVar24 = piVar13[0x2069];" (assignment_expression "iVar24 = piVar13[0x2069]" identifier = (subscript_expression "piVar13[0x2069]" identifier [ number_literal ])) ;) (if_statement "if (iVar24 < piVar13[0x206a]) {\n    pzVar6 = (zlib_table *)(piVar13[0x2068] + iVar24);\n    piVar13[0x2069] = iVar24 + 1;\n    *(undefined1 *)&pzVar6->mask = uVar15;\n    return pzVar6;\n  }" if (parenthesized_expression "(iVar24 < piVar13[0x206a])" ( (binary_expression "iVar24 < piVar13[0x206a]" identifier < (subscript_expression "piVar13[0x206a]" identifier [ number_literal ])) )) (compound_statement "{\n    pzVar6 = (zlib_table *)(piVar13[0x2068] + iVar24);\n    piVar13[0x2069] = iVar24 + 1;\n    *(undefined1 *)&pzVar6->mask = uVar15;\n    return pzVar6;\n  }" { (expression_statement "pzVar6 = (zlib_table *)(piVar13[0x2068] + iVar24);" (assignment_expression "pzVar6 = (zlib_table *)(piVar13[0x2068] + iVar24)" identifier = (cast_expression "(zlib_table *)(piVar13[0x2068] + iVar24)" ( (type_descriptor "zlib_table *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar13[0x2068] + iVar24)" ( (binary_expression "piVar13[0x2068] + iVar24" (subscript_expression "piVar13[0x2068]" identifier [ number_literal ]) + identifier) )))) ;) (expression_statement "piVar13[0x2069] = iVar24 + 1;" (assignment_expression "piVar13[0x2069] = iVar24 + 1" (subscript_expression "piVar13[0x2069]" identifier [ number_literal ]) = (binary_expression "iVar24 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)&pzVar6->mask = uVar15;" (assignment_expression "*(undefined1 *)&pzVar6->mask = uVar15" (pointer_expression "*(undefined1 *)&pzVar6->mask" * (cast_expression "(undefined1 *)&pzVar6->mask" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pzVar6->mask" & (field_expression "pzVar6->mask" identifier -> field_identifier)))) = identifier) ;) (return_statement "return pzVar6;" return identifier ;) })) (expression_statement "pcVar32 = *(code **)(pcVar32 + 0x391d8);" (assignment_expression "pcVar32 = *(code **)(pcVar32 + 0x391d8)" identifier = (pointer_expression "*(code **)(pcVar32 + 0x391d8)" * (cast_expression "(code **)(pcVar32 + 0x391d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar32 + 0x391d8)" ( (binary_expression "pcVar32 + 0x391d8" identifier + number_literal) ))))) ;) (expression_statement "piVar13[0x206a] = iVar24 + 0x200;" (assignment_expression "piVar13[0x206a] = iVar24 + 0x200" (subscript_expression "piVar13[0x206a]" identifier [ number_literal ]) = (binary_expression "iVar24 + 0x200" identifier + number_literal)) ;) (expression_statement "iVar24 = (*pcVar32)(piVar13[0x2068],iVar24 + 0x200,1);" (assignment_expression "iVar24 = (*pcVar32)(piVar13[0x2068],iVar24 + 0x200,1)" identifier = (call_expression "(*pcVar32)(piVar13[0x2068],iVar24 + 0x200,1)" (parenthesized_expression "(*pcVar32)" ( (pointer_expression "*pcVar32" * identifier) )) (argument_list "(piVar13[0x2068],iVar24 + 0x200,1)" ( (subscript_expression "piVar13[0x2068]" identifier [ number_literal ]) , (binary_expression "iVar24 + 0x200" identifier + number_literal) , number_literal )))) ;) (expression_statement "piVar13[0x2068] = iVar24;" (assignment_expression "piVar13[0x2068] = iVar24" (subscript_expression "piVar13[0x2068]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pzVar6 = (zlib_table *)(iVar24 + piVar13[0x2069]);" (assignment_expression "pzVar6 = (zlib_table *)(iVar24 + piVar13[0x2069])" identifier = (cast_expression "(zlib_table *)(iVar24 + piVar13[0x2069])" ( (type_descriptor "zlib_table *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + piVar13[0x2069])" ( (binary_expression "iVar24 + piVar13[0x2069]" identifier + (subscript_expression "piVar13[0x2069]" identifier [ number_literal ])) )))) ;) (expression_statement "piVar13[0x2069] = piVar13[0x2069] + 1;" (assignment_expression "piVar13[0x2069] = piVar13[0x2069] + 1" (subscript_expression "piVar13[0x2069]" identifier [ number_literal ]) = (binary_expression "piVar13[0x2069] + 1" (subscript_expression "piVar13[0x2069]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "*(undefined1 *)&pzVar6->mask = uVar15;" (assignment_expression "*(undefined1 *)&pzVar6->mask = uVar15" (pointer_expression "*(undefined1 *)&pzVar6->mask" * (cast_expression "(undefined1 *)&pzVar6->mask" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pzVar6->mask" & (field_expression "pzVar6->mask" identifier -> field_identifier)))) = identifier) ;) (return_statement "return pzVar6;" return identifier ;) })))
(translation_unit "void FUN_000738dc(byte *param_1,int param_2)\n\n{\n  byte bVar1;\n  short sVar2;\n  bool bVar3;\n  undefined *puVar4;\n  uint *puVar5;\n  uint uVar6;\n  int *piVar7;\n  short *psVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  uint *puVar11;\n  int *piVar12;\n  int *piVar13;\n  byte bVar14;\n  undefined1 uVar15;\n  uint uVar16;\n  int iVar17;\n  int iVar18;\n  uint *puVar19;\n  uint uVar20;\n  int *piVar21;\n  int iVar22;\n  uint uVar23;\n  int iVar24;\n  int iVar25;\n  byte *pbVar26;\n  int iVar27;\n  int iVar28;\n  undefined *puVar29;\n  code *pcVar30;\n  int iStack_674;\n  uint uStack_670;\n  int aiStack_660 [64];\n  byte bStack_560;\n  byte bStack_55f;\n  byte bStack_55e;\n  int iStack_55c;\n  undefined *puStack_558;\n  int aiStack_50c [16];\n  uint auStack_4cc [16];\n  uint local_48c [288];\n  int *local_c;\n  \n  puVar4 = PTR___stack_chk_guard_000adcd4;\n  puVar19 = (uint *)(aiStack_50c + 1);\n  local_c = *(int **)PTR___stack_chk_guard_000adcd4;\n  puVar5 = puVar19;\n  do {\n    *puVar5 = 0;\n    puVar5 = puVar5 + 1;\n  } while (puVar5 != auStack_4cc);\n  uVar16 = 0;\n  if (0 < param_2) {\n    pbVar10 = param_1;\n    do {\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar16 < uVar23) {\n        uVar16 = uVar23;\n      }\n      aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }\n  uVar16 = 0;\n  puVar5 = auStack_4cc + 1;\n  do {\n    uVar23 = *puVar19;\n    puVar11 = puVar5 + 1;\n    *puVar5 = uVar16;\n    puVar19 = puVar19 + 1;\n    uVar16 = (uVar16 + uVar23) * 2;\n    puVar5 = puVar11;\n  } while (puVar11 != local_48c);\n  pbVar10 = param_1;\n  puVar5 = local_48c;\n  if (0 < param_2) {\n    do {\n      uVar23 = (uint)*pbVar10;\n      *puVar5 = 0;\n      uVar16 = auStack_4cc[uVar23];\n      auStack_4cc[uVar23] = uVar16 + 1;\n      if (uVar23 != 0) {\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar5 = puVar5 + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }\n  piVar21 = (int *)0x0;\n  FUN_00073648(local_48c);\n  if (local_c == *(int **)puVar4) {\n    return;\n  }\n  piVar12 = local_c;\n  puVar29 = PTR___stack_chk_fail_000adca4;\n  (*(code *)PTR___stack_chk_fail_000adca4)();\n  piVar7 = *(int **)(puVar29 + 0x3a284);\n  iVar28 = *piVar12;\n  puStack_558 = puVar4;\n  iStack_55c = *piVar7;\n  iVar17 = *(int *)(iVar28 + 0x38ff8);\n  if (iVar17 < 4) {\n    piVar13 = piVar12;\n    pbVar10 = param_1;\n    iVar18 = iVar17;\n    if (0 < iVar17) {\n      if (iVar17 + param_2 < 3) {\n        iVar27 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }\n      pbVar26 = (byte *)(iVar28 + 0x38ff2);\n      iVar24 = iVar27;\n      do {\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar24 < iVar17) != (int *)0x0);\n    }\nLAB_00073c5c:\n    uVar15 = SUB41(pbVar10,0);\n    *(int *)(iVar28 + 0x38ff8) = iVar18;\n    if (0 < param_2) {\n      iStack_674 = 0;\n      uStack_670 = 0;\n      bVar3 = param_2 < 3;\n      iVar17 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      } while (0 < param_2);\n    }\n    if (iStack_55c == *piVar7) {\n      return;\n    }\n  }\n  else {\n    iVar17 = *(int *)(puVar29 + 0x39878) + 0x72e0;\n    piVar13 = (int *)(*(int *)(puVar29 + 0x39878) + 0x72ec);\n    (**(code **)(puVar29 + 0x3a0b0))(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c);\n    uVar15 = (undefined1)iVar17;\n  }\n  pcVar30 = *(code **)(puVar29 + 0x3a254);\n  (*pcVar30)();\n  iVar17 = piVar13[0x2067];\n  *(undefined1 *)((int)piVar13 + iVar17 + 0x19c) = uVar15;\n  piVar13[0x2067] = iVar17 + 1U & 0x7fff;\n  iVar17 = piVar13[0x2069];\n  if (iVar17 < piVar13[0x206a]) {\n    piVar13[0x2069] = iVar17 + 1;\n    *(undefined1 *)(piVar13[0x2068] + iVar17) = uVar15;\n    return;\n  }\n  pcVar30 = *(code **)(pcVar30 + 0x391d8);\n  piVar13[0x206a] = iVar17 + 0x200;\n  iVar17 = (*pcVar30)(piVar13[0x2068],iVar17 + 0x200,1);\n  iVar28 = piVar13[0x2069];\n  piVar13[0x2068] = iVar17;\n  piVar13[0x2069] = iVar28 + 1;\n  *(undefined1 *)(iVar17 + iVar28) = uVar15;\n  return;\n}\n\n" (function_definition "void FUN_000738dc(byte *param_1,int param_2)\n\n{\n  byte bVar1;\n  short sVar2;\n  bool bVar3;\n  undefined *puVar4;\n  uint *puVar5;\n  uint uVar6;\n  int *piVar7;\n  short *psVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  uint *puVar11;\n  int *piVar12;\n  int *piVar13;\n  byte bVar14;\n  undefined1 uVar15;\n  uint uVar16;\n  int iVar17;\n  int iVar18;\n  uint *puVar19;\n  uint uVar20;\n  int *piVar21;\n  int iVar22;\n  uint uVar23;\n  int iVar24;\n  int iVar25;\n  byte *pbVar26;\n  int iVar27;\n  int iVar28;\n  undefined *puVar29;\n  code *pcVar30;\n  int iStack_674;\n  uint uStack_670;\n  int aiStack_660 [64];\n  byte bStack_560;\n  byte bStack_55f;\n  byte bStack_55e;\n  int iStack_55c;\n  undefined *puStack_558;\n  int aiStack_50c [16];\n  uint auStack_4cc [16];\n  uint local_48c [288];\n  int *local_c;\n  \n  puVar4 = PTR___stack_chk_guard_000adcd4;\n  puVar19 = (uint *)(aiStack_50c + 1);\n  local_c = *(int **)PTR___stack_chk_guard_000adcd4;\n  puVar5 = puVar19;\n  do {\n    *puVar5 = 0;\n    puVar5 = puVar5 + 1;\n  } while (puVar5 != auStack_4cc);\n  uVar16 = 0;\n  if (0 < param_2) {\n    pbVar10 = param_1;\n    do {\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar16 < uVar23) {\n        uVar16 = uVar23;\n      }\n      aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }\n  uVar16 = 0;\n  puVar5 = auStack_4cc + 1;\n  do {\n    uVar23 = *puVar19;\n    puVar11 = puVar5 + 1;\n    *puVar5 = uVar16;\n    puVar19 = puVar19 + 1;\n    uVar16 = (uVar16 + uVar23) * 2;\n    puVar5 = puVar11;\n  } while (puVar11 != local_48c);\n  pbVar10 = param_1;\n  puVar5 = local_48c;\n  if (0 < param_2) {\n    do {\n      uVar23 = (uint)*pbVar10;\n      *puVar5 = 0;\n      uVar16 = auStack_4cc[uVar23];\n      auStack_4cc[uVar23] = uVar16 + 1;\n      if (uVar23 != 0) {\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar5 = puVar5 + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }\n  piVar21 = (int *)0x0;\n  FUN_00073648(local_48c);\n  if (local_c == *(int **)puVar4) {\n    return;\n  }\n  piVar12 = local_c;\n  puVar29 = PTR___stack_chk_fail_000adca4;\n  (*(code *)PTR___stack_chk_fail_000adca4)();\n  piVar7 = *(int **)(puVar29 + 0x3a284);\n  iVar28 = *piVar12;\n  puStack_558 = puVar4;\n  iStack_55c = *piVar7;\n  iVar17 = *(int *)(iVar28 + 0x38ff8);\n  if (iVar17 < 4) {\n    piVar13 = piVar12;\n    pbVar10 = param_1;\n    iVar18 = iVar17;\n    if (0 < iVar17) {\n      if (iVar17 + param_2 < 3) {\n        iVar27 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }\n      pbVar26 = (byte *)(iVar28 + 0x38ff2);\n      iVar24 = iVar27;\n      do {\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar24 < iVar17) != (int *)0x0);\n    }\nLAB_00073c5c:\n    uVar15 = SUB41(pbVar10,0);\n    *(int *)(iVar28 + 0x38ff8) = iVar18;\n    if (0 < param_2) {\n      iStack_674 = 0;\n      uStack_670 = 0;\n      bVar3 = param_2 < 3;\n      iVar17 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      } while (0 < param_2);\n    }\n    if (iStack_55c == *piVar7) {\n      return;\n    }\n  }\n  else {\n    iVar17 = *(int *)(puVar29 + 0x39878) + 0x72e0;\n    piVar13 = (int *)(*(int *)(puVar29 + 0x39878) + 0x72ec);\n    (**(code **)(puVar29 + 0x3a0b0))(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c);\n    uVar15 = (undefined1)iVar17;\n  }\n  pcVar30 = *(code **)(puVar29 + 0x3a254);\n  (*pcVar30)();\n  iVar17 = piVar13[0x2067];\n  *(undefined1 *)((int)piVar13 + iVar17 + 0x19c) = uVar15;\n  piVar13[0x2067] = iVar17 + 1U & 0x7fff;\n  iVar17 = piVar13[0x2069];\n  if (iVar17 < piVar13[0x206a]) {\n    piVar13[0x2069] = iVar17 + 1;\n    *(undefined1 *)(piVar13[0x2068] + iVar17) = uVar15;\n    return;\n  }\n  pcVar30 = *(code **)(pcVar30 + 0x391d8);\n  piVar13[0x206a] = iVar17 + 0x200;\n  iVar17 = (*pcVar30)(piVar13[0x2068],iVar17 + 0x200,1);\n  iVar28 = piVar13[0x2069];\n  piVar13[0x2068] = iVar17;\n  piVar13[0x2069] = iVar28 + 1;\n  *(undefined1 *)(iVar17 + iVar28) = uVar15;\n  return;\n}" primitive_type (function_declarator "FUN_000738dc(byte *param_1,int param_2)" identifier (parameter_list "(byte *param_1,int param_2)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  short sVar2;\n  bool bVar3;\n  undefined *puVar4;\n  uint *puVar5;\n  uint uVar6;\n  int *piVar7;\n  short *psVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  uint *puVar11;\n  int *piVar12;\n  int *piVar13;\n  byte bVar14;\n  undefined1 uVar15;\n  uint uVar16;\n  int iVar17;\n  int iVar18;\n  uint *puVar19;\n  uint uVar20;\n  int *piVar21;\n  int iVar22;\n  uint uVar23;\n  int iVar24;\n  int iVar25;\n  byte *pbVar26;\n  int iVar27;\n  int iVar28;\n  undefined *puVar29;\n  code *pcVar30;\n  int iStack_674;\n  uint uStack_670;\n  int aiStack_660 [64];\n  byte bStack_560;\n  byte bStack_55f;\n  byte bStack_55e;\n  int iStack_55c;\n  undefined *puStack_558;\n  int aiStack_50c [16];\n  uint auStack_4cc [16];\n  uint local_48c [288];\n  int *local_c;\n  \n  puVar4 = PTR___stack_chk_guard_000adcd4;\n  puVar19 = (uint *)(aiStack_50c + 1);\n  local_c = *(int **)PTR___stack_chk_guard_000adcd4;\n  puVar5 = puVar19;\n  do {\n    *puVar5 = 0;\n    puVar5 = puVar5 + 1;\n  } while (puVar5 != auStack_4cc);\n  uVar16 = 0;\n  if (0 < param_2) {\n    pbVar10 = param_1;\n    do {\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar16 < uVar23) {\n        uVar16 = uVar23;\n      }\n      aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }\n  uVar16 = 0;\n  puVar5 = auStack_4cc + 1;\n  do {\n    uVar23 = *puVar19;\n    puVar11 = puVar5 + 1;\n    *puVar5 = uVar16;\n    puVar19 = puVar19 + 1;\n    uVar16 = (uVar16 + uVar23) * 2;\n    puVar5 = puVar11;\n  } while (puVar11 != local_48c);\n  pbVar10 = param_1;\n  puVar5 = local_48c;\n  if (0 < param_2) {\n    do {\n      uVar23 = (uint)*pbVar10;\n      *puVar5 = 0;\n      uVar16 = auStack_4cc[uVar23];\n      auStack_4cc[uVar23] = uVar16 + 1;\n      if (uVar23 != 0) {\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar5 = puVar5 + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }\n  piVar21 = (int *)0x0;\n  FUN_00073648(local_48c);\n  if (local_c == *(int **)puVar4) {\n    return;\n  }\n  piVar12 = local_c;\n  puVar29 = PTR___stack_chk_fail_000adca4;\n  (*(code *)PTR___stack_chk_fail_000adca4)();\n  piVar7 = *(int **)(puVar29 + 0x3a284);\n  iVar28 = *piVar12;\n  puStack_558 = puVar4;\n  iStack_55c = *piVar7;\n  iVar17 = *(int *)(iVar28 + 0x38ff8);\n  if (iVar17 < 4) {\n    piVar13 = piVar12;\n    pbVar10 = param_1;\n    iVar18 = iVar17;\n    if (0 < iVar17) {\n      if (iVar17 + param_2 < 3) {\n        iVar27 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }\n      pbVar26 = (byte *)(iVar28 + 0x38ff2);\n      iVar24 = iVar27;\n      do {\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar24 < iVar17) != (int *)0x0);\n    }\nLAB_00073c5c:\n    uVar15 = SUB41(pbVar10,0);\n    *(int *)(iVar28 + 0x38ff8) = iVar18;\n    if (0 < param_2) {\n      iStack_674 = 0;\n      uStack_670 = 0;\n      bVar3 = param_2 < 3;\n      iVar17 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      } while (0 < param_2);\n    }\n    if (iStack_55c == *piVar7) {\n      return;\n    }\n  }\n  else {\n    iVar17 = *(int *)(puVar29 + 0x39878) + 0x72e0;\n    piVar13 = (int *)(*(int *)(puVar29 + 0x39878) + 0x72ec);\n    (**(code **)(puVar29 + 0x3a0b0))(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c);\n    uVar15 = (undefined1)iVar17;\n  }\n  pcVar30 = *(code **)(puVar29 + 0x3a254);\n  (*pcVar30)();\n  iVar17 = piVar13[0x2067];\n  *(undefined1 *)((int)piVar13 + iVar17 + 0x19c) = uVar15;\n  piVar13[0x2067] = iVar17 + 1U & 0x7fff;\n  iVar17 = piVar13[0x2069];\n  if (iVar17 < piVar13[0x206a]) {\n    piVar13[0x2069] = iVar17 + 1;\n    *(undefined1 *)(piVar13[0x2068] + iVar17) = uVar15;\n    return;\n  }\n  pcVar30 = *(code **)(pcVar30 + 0x391d8);\n  piVar13[0x206a] = iVar17 + 0x200;\n  iVar17 = (*pcVar30)(piVar13[0x2068],iVar17 + 0x200,1);\n  iVar28 = piVar13[0x2069];\n  piVar13[0x2068] = iVar17;\n  piVar13[0x2069] = iVar28 + 1;\n  *(undefined1 *)(iVar17 + iVar28) = uVar15;\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "short sVar2;" (sized_type_specifier "short" short) identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "short *psVar8;" (sized_type_specifier "short" short) (pointer_declarator "*psVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "byte bVar14;" type_identifier identifier ;) (declaration "undefined1 uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "uint *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "int *piVar21;" primitive_type (pointer_declarator "*piVar21" * identifier) ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "int iVar25;" primitive_type identifier ;) (declaration "byte *pbVar26;" type_identifier (pointer_declarator "*pbVar26" * identifier) ;) (declaration "int iVar27;" primitive_type identifier ;) (declaration "int iVar28;" primitive_type identifier ;) (declaration "undefined *puVar29;" type_identifier (pointer_declarator "*puVar29" * identifier) ;) (declaration "code *pcVar30;" type_identifier (pointer_declarator "*pcVar30" * identifier) ;) (declaration "int iStack_674;" primitive_type identifier ;) (declaration "uint uStack_670;" type_identifier identifier ;) (declaration "int aiStack_660 [64];" primitive_type (array_declarator "aiStack_660 [64]" identifier [ number_literal ]) ;) (declaration "byte bStack_560;" type_identifier identifier ;) (declaration "byte bStack_55f;" type_identifier identifier ;) (declaration "byte bStack_55e;" type_identifier identifier ;) (declaration "int iStack_55c;" primitive_type identifier ;) (declaration "undefined *puStack_558;" type_identifier (pointer_declarator "*puStack_558" * identifier) ;) (declaration "int aiStack_50c [16];" primitive_type (array_declarator "aiStack_50c [16]" identifier [ number_literal ]) ;) (declaration "uint auStack_4cc [16];" type_identifier (array_declarator "auStack_4cc [16]" identifier [ number_literal ]) ;) (declaration "uint local_48c [288];" type_identifier (array_declarator "local_48c [288]" identifier [ number_literal ]) ;) (declaration "int *local_c;" primitive_type (pointer_declarator "*local_c" * identifier) ;) (expression_statement "puVar4 = PTR___stack_chk_guard_000adcd4;" (assignment_expression "puVar4 = PTR___stack_chk_guard_000adcd4" identifier = identifier) ;) (expression_statement "puVar19 = (uint *)(aiStack_50c + 1);" (assignment_expression "puVar19 = (uint *)(aiStack_50c + 1)" identifier = (cast_expression "(uint *)(aiStack_50c + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(aiStack_50c + 1)" ( (binary_expression "aiStack_50c + 1" identifier + number_literal) )))) ;) (expression_statement "local_c = *(int **)PTR___stack_chk_guard_000adcd4;" (assignment_expression "local_c = *(int **)PTR___stack_chk_guard_000adcd4" identifier = (pointer_expression "*(int **)PTR___stack_chk_guard_000adcd4" * (cast_expression "(int **)PTR___stack_chk_guard_000adcd4" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "puVar5 = puVar19;" (assignment_expression "puVar5 = puVar19" identifier = identifier) ;) (do_statement "do {\n    *puVar5 = 0;\n    puVar5 = puVar5 + 1;\n  } while (puVar5 != auStack_4cc);" do (compound_statement "{\n    *puVar5 = 0;\n    puVar5 = puVar5 + 1;\n  }" { (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar5 != auStack_4cc)" ( (binary_expression "puVar5 != auStack_4cc" identifier != identifier) )) ;) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (if_statement "if (0 < param_2) {\n    pbVar10 = param_1;\n    do {\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar16 < uVar23) {\n        uVar16 = uVar23;\n      }\n      aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }" if (parenthesized_expression "(0 < param_2)" ( (binary_expression "0 < param_2" number_literal < identifier) )) (compound_statement "{\n    pbVar10 = param_1;\n    do {\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar16 < uVar23) {\n        uVar16 = uVar23;\n      }\n      aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }" { (expression_statement "pbVar10 = param_1;" (assignment_expression "pbVar10 = param_1" identifier = identifier) ;) (do_statement "do {\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar16 < uVar23) {\n        uVar16 = uVar23;\n      }\n      aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1;\n    } while (param_1 + param_2 != pbVar10);" do (compound_statement "{\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar16 < uVar23) {\n        uVar16 = uVar23;\n      }\n      aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1;\n    }" { (expression_statement "uVar23 = (uint)*pbVar10;" (assignment_expression "uVar23 = (uint)*pbVar10" identifier = (binary_expression "(uint)*pbVar10" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (if_statement "if (uVar16 < uVar23) {\n        uVar16 = uVar23;\n      }" if (parenthesized_expression "(uVar16 < uVar23)" ( (binary_expression "uVar16 < uVar23" identifier < identifier) )) (compound_statement "{\n        uVar16 = uVar23;\n      }" { (expression_statement "uVar16 = uVar23;" (assignment_expression "uVar16 = uVar23" identifier = identifier) ;) })) (expression_statement "aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1;" (assignment_expression "aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1" (subscript_expression "aiStack_50c[uVar23]" identifier [ identifier ]) = (binary_expression "aiStack_50c[uVar23] + 1" (subscript_expression "aiStack_50c[uVar23]" identifier [ identifier ]) + number_literal)) ;) }) while (parenthesized_expression "(param_1 + param_2 != pbVar10)" ( (binary_expression "param_1 + param_2 != pbVar10" (binary_expression "param_1 + param_2" identifier + identifier) != identifier) )) ;) })) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (expression_statement "puVar5 = auStack_4cc + 1;" (assignment_expression "puVar5 = auStack_4cc + 1" identifier = (binary_expression "auStack_4cc + 1" identifier + number_literal)) ;) (do_statement "do {\n    uVar23 = *puVar19;\n    puVar11 = puVar5 + 1;\n    *puVar5 = uVar16;\n    puVar19 = puVar19 + 1;\n    uVar16 = (uVar16 + uVar23) * 2;\n    puVar5 = puVar11;\n  } while (puVar11 != local_48c);" do (compound_statement "{\n    uVar23 = *puVar19;\n    puVar11 = puVar5 + 1;\n    *puVar5 = uVar16;\n    puVar19 = puVar19 + 1;\n    uVar16 = (uVar16 + uVar23) * 2;\n    puVar5 = puVar11;\n  }" { (expression_statement "uVar23 = *puVar19;" (assignment_expression "uVar23 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) (expression_statement "puVar11 = puVar5 + 1;" (assignment_expression "puVar11 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "*puVar5 = uVar16;" (assignment_expression "*puVar5 = uVar16" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) (expression_statement "uVar16 = (uVar16 + uVar23) * 2;" (assignment_expression "uVar16 = (uVar16 + uVar23) * 2" identifier = (binary_expression "(uVar16 + uVar23) * 2" (parenthesized_expression "(uVar16 + uVar23)" ( (binary_expression "uVar16 + uVar23" identifier + identifier) )) * number_literal)) ;) (expression_statement "puVar5 = puVar11;" (assignment_expression "puVar5 = puVar11" identifier = identifier) ;) }) while (parenthesized_expression "(puVar11 != local_48c)" ( (binary_expression "puVar11 != local_48c" identifier != identifier) )) ;) (expression_statement "pbVar10 = param_1;" (assignment_expression "pbVar10 = param_1" identifier = identifier) ;) (expression_statement "puVar5 = local_48c;" (assignment_expression "puVar5 = local_48c" identifier = identifier) ;) (if_statement "if (0 < param_2) {\n    do {\n      uVar23 = (uint)*pbVar10;\n      *puVar5 = 0;\n      uVar16 = auStack_4cc[uVar23];\n      auStack_4cc[uVar23] = uVar16 + 1;\n      if (uVar23 != 0) {\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar5 = puVar5 + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }" if (parenthesized_expression "(0 < param_2)" ( (binary_expression "0 < param_2" number_literal < identifier) )) (compound_statement "{\n    do {\n      uVar23 = (uint)*pbVar10;\n      *puVar5 = 0;\n      uVar16 = auStack_4cc[uVar23];\n      auStack_4cc[uVar23] = uVar16 + 1;\n      if (uVar23 != 0) {\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar5 = puVar5 + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }" { (do_statement "do {\n      uVar23 = (uint)*pbVar10;\n      *puVar5 = 0;\n      uVar16 = auStack_4cc[uVar23];\n      auStack_4cc[uVar23] = uVar16 + 1;\n      if (uVar23 != 0) {\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar5 = puVar5 + 1;\n    } while (param_1 + param_2 != pbVar10);" do (compound_statement "{\n      uVar23 = (uint)*pbVar10;\n      *puVar5 = 0;\n      uVar16 = auStack_4cc[uVar23];\n      auStack_4cc[uVar23] = uVar16 + 1;\n      if (uVar23 != 0) {\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar5 = puVar5 + 1;\n    }" { (expression_statement "uVar23 = (uint)*pbVar10;" (assignment_expression "uVar23 = (uint)*pbVar10" identifier = (binary_expression "(uint)*pbVar10" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "uVar16 = auStack_4cc[uVar23];" (assignment_expression "uVar16 = auStack_4cc[uVar23]" identifier = (subscript_expression "auStack_4cc[uVar23]" identifier [ identifier ])) ;) (expression_statement "auStack_4cc[uVar23] = uVar16 + 1;" (assignment_expression "auStack_4cc[uVar23] = uVar16 + 1" (subscript_expression "auStack_4cc[uVar23]" identifier [ identifier ]) = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (if_statement "if (uVar23 != 0) {\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }" if (parenthesized_expression "(uVar23 != 0)" ( (binary_expression "uVar23 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);" do (compound_statement "{\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        }" { (expression_statement "uVar20 = uVar20 + 1;" (assignment_expression "uVar20 = uVar20 + 1" identifier = (binary_expression "uVar20 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar6 << 1 | uVar16 & 1;" (assignment_expression "uVar6 = uVar6 << 1 | uVar16 & 1" identifier = (binary_expression "uVar6 << 1 | uVar16 & 1" (binary_expression "uVar6 << 1" identifier << number_literal) | (binary_expression "uVar16 & 1" identifier & number_literal))) ;) (expression_statement "uVar16 = (int)uVar16 >> 1;" (assignment_expression "uVar16 = (int)uVar16 >> 1" identifier = (binary_expression "(int)uVar16 >> 1" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) }) while (parenthesized_expression "(uVar23 != uVar20)" ( (binary_expression "uVar23 != uVar20" identifier != identifier) )) ;) (expression_statement "*puVar5 = uVar6;" (assignment_expression "*puVar5 = uVar6" (pointer_expression "*puVar5" * identifier) = identifier) ;) })) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_1 + param_2 != pbVar10)" ( (binary_expression "param_1 + param_2 != pbVar10" (binary_expression "param_1 + param_2" identifier + identifier) != identifier) )) ;) })) (expression_statement "piVar21 = (int *)0x0;" (assignment_expression "piVar21 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "FUN_00073648(local_48c);" (call_expression "FUN_00073648(local_48c)" identifier (argument_list "(local_48c)" ( identifier ))) ;) (if_statement "if (local_c == *(int **)puVar4) {\n    return;\n  }" if (parenthesized_expression "(local_c == *(int **)puVar4)" ( (binary_expression "local_c == *(int **)puVar4" identifier == (pointer_expression "*(int **)puVar4" * (cast_expression "(int **)puVar4" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "piVar12 = local_c;" (assignment_expression "piVar12 = local_c" identifier = identifier) ;) (expression_statement "puVar29 = PTR___stack_chk_fail_000adca4;" (assignment_expression "puVar29 = PTR___stack_chk_fail_000adca4" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000adca4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000adca4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000adca4)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000adca4" * (cast_expression "(code *)PTR___stack_chk_fail_000adca4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar7 = *(int **)(puVar29 + 0x3a284);" (assignment_expression "piVar7 = *(int **)(puVar29 + 0x3a284)" identifier = (pointer_expression "*(int **)(puVar29 + 0x3a284)" * (cast_expression "(int **)(puVar29 + 0x3a284)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x3a284)" ( (binary_expression "puVar29 + 0x3a284" identifier + number_literal) ))))) ;) (expression_statement "iVar28 = *piVar12;" (assignment_expression "iVar28 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (expression_statement "puStack_558 = puVar4;" (assignment_expression "puStack_558 = puVar4" identifier = identifier) ;) (expression_statement "iStack_55c = *piVar7;" (assignment_expression "iStack_55c = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "iVar17 = *(int *)(iVar28 + 0x38ff8);" (assignment_expression "iVar17 = *(int *)(iVar28 + 0x38ff8)" identifier = (pointer_expression "*(int *)(iVar28 + 0x38ff8)" * (cast_expression "(int *)(iVar28 + 0x38ff8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x38ff8)" ( (binary_expression "iVar28 + 0x38ff8" identifier + number_literal) ))))) ;) (if_statement "if (iVar17 < 4) {\n    piVar13 = piVar12;\n    pbVar10 = param_1;\n    iVar18 = iVar17;\n    if (0 < iVar17) {\n      if (iVar17 + param_2 < 3) {\n        iVar27 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }\n      pbVar26 = (byte *)(iVar28 + 0x38ff2);\n      iVar24 = iVar27;\n      do {\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar24 < iVar17) != (int *)0x0);\n    }\nLAB_00073c5c:\n    uVar15 = SUB41(pbVar10,0);\n    *(int *)(iVar28 + 0x38ff8) = iVar18;\n    if (0 < param_2) {\n      iStack_674 = 0;\n      uStack_670 = 0;\n      bVar3 = param_2 < 3;\n      iVar17 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      } while (0 < param_2);\n    }\n    if (iStack_55c == *piVar7) {\n      return;\n    }\n  }\n  else {\n    iVar17 = *(int *)(puVar29 + 0x39878) + 0x72e0;\n    piVar13 = (int *)(*(int *)(puVar29 + 0x39878) + 0x72ec);\n    (**(code **)(puVar29 + 0x3a0b0))(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c);\n    uVar15 = (undefined1)iVar17;\n  }" if (parenthesized_expression "(iVar17 < 4)" ( (binary_expression "iVar17 < 4" identifier < number_literal) )) (compound_statement "{\n    piVar13 = piVar12;\n    pbVar10 = param_1;\n    iVar18 = iVar17;\n    if (0 < iVar17) {\n      if (iVar17 + param_2 < 3) {\n        iVar27 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }\n      pbVar26 = (byte *)(iVar28 + 0x38ff2);\n      iVar24 = iVar27;\n      do {\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar24 < iVar17) != (int *)0x0);\n    }\nLAB_00073c5c:\n    uVar15 = SUB41(pbVar10,0);\n    *(int *)(iVar28 + 0x38ff8) = iVar18;\n    if (0 < param_2) {\n      iStack_674 = 0;\n      uStack_670 = 0;\n      bVar3 = param_2 < 3;\n      iVar17 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      } while (0 < param_2);\n    }\n    if (iStack_55c == *piVar7) {\n      return;\n    }\n  }" { (expression_statement "piVar13 = piVar12;" (assignment_expression "piVar13 = piVar12" identifier = identifier) ;) (expression_statement "pbVar10 = param_1;" (assignment_expression "pbVar10 = param_1" identifier = identifier) ;) (expression_statement "iVar18 = iVar17;" (assignment_expression "iVar18 = iVar17" identifier = identifier) ;) (if_statement "if (0 < iVar17) {\n      if (iVar17 + param_2 < 3) {\n        iVar27 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }\n      pbVar26 = (byte *)(iVar28 + 0x38ff2);\n      iVar24 = iVar27;\n      do {\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar24 < iVar17) != (int *)0x0);\n    }" if (parenthesized_expression "(0 < iVar17)" ( (binary_expression "0 < iVar17" number_literal < identifier) )) (compound_statement "{\n      if (iVar17 + param_2 < 3) {\n        iVar27 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }\n      pbVar26 = (byte *)(iVar28 + 0x38ff2);\n      iVar24 = iVar27;\n      do {\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar24 < iVar17) != (int *)0x0);\n    }" { (if_statement "if (iVar17 + param_2 < 3) {\n        iVar27 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }" if (parenthesized_expression "(iVar17 + param_2 < 3)" ( (binary_expression "iVar17 + param_2 < 3" (binary_expression "iVar17 + param_2" identifier + identifier) < number_literal) )) (compound_statement "{\n        iVar27 = 0;\n      }" { (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }" else (compound_statement "{\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }" { (expression_statement "piVar13 = *(int **)(iVar28 + 0x38000);" (assignment_expression "piVar13 = *(int **)(iVar28 + 0x38000)" identifier = (pointer_expression "*(int **)(iVar28 + 0x38000)" * (cast_expression "(int **)(iVar28 + 0x38000)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar28 + 0x38000)" ( (binary_expression "iVar28 + 0x38000" identifier + number_literal) ))))) ;) (expression_statement "pbVar26 = &bStack_560;" (assignment_expression "pbVar26 = &bStack_560" identifier = (pointer_expression "&bStack_560" & identifier)) ;) (expression_statement "iVar27 = iVar17 + param_2 + -2;" (assignment_expression "iVar27 = iVar17 + param_2 + -2" identifier = (binary_expression "iVar17 + param_2 + -2" (binary_expression "iVar17 + param_2" identifier + identifier) + number_literal)) ;) (expression_statement "iVar25 = 3;" (assignment_expression "iVar25 = 3" identifier = number_literal) ;) (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) (expression_statement "iVar18 = iVar24;" (assignment_expression "iVar18 = iVar24" identifier = identifier) ;) (do_statement "do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);" do (compound_statement "{\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        }" { (do_statement "do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);" do (compound_statement "{\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          }" { (if_statement "if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }" if (parenthesized_expression "(iVar24 < iVar17)" ( (binary_expression "iVar24 < iVar17" identifier < identifier) )) (compound_statement "{\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }" { (expression_statement "bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);" (assignment_expression "bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2)" identifier = (pointer_expression "*(byte *)(iVar28 + iVar24 + 0x38ff2)" * (cast_expression "(byte *)(iVar28 + iVar24 + 0x38ff2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + iVar24 + 0x38ff2)" ( (binary_expression "iVar28 + iVar24 + 0x38ff2" (binary_expression "iVar28 + iVar24" identifier + identifier) + number_literal) ))))) ;) }) (else_clause "else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }" else (compound_statement "{\n              bVar14 = param_1[iVar24 - iVar17];\n            }" { (expression_statement "bVar14 = param_1[iVar24 - iVar17];" (assignment_expression "bVar14 = param_1[iVar24 - iVar17]" identifier = (subscript_expression "param_1[iVar24 - iVar17]" identifier [ (binary_expression "iVar24 - iVar17" identifier - identifier) ])) ;) }))) (expression_statement "pbVar10 = pbVar26 + iVar24;" (assignment_expression "pbVar10 = pbVar26 + iVar24" identifier = (binary_expression "pbVar26 + iVar24" identifier + identifier)) ;) (expression_statement "iVar24 = iVar24 + 1;" (assignment_expression "iVar24 = iVar24 + 1" identifier = (binary_expression "iVar24 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar10 = bVar14;" (assignment_expression "*pbVar10 = bVar14" (pointer_expression "*pbVar10" * identifier) = identifier) ;) }) while (parenthesized_expression "(iVar24 != iVar25)" ( (binary_expression "iVar24 != iVar25" identifier != identifier) )) ;) (expression_statement "psVar8 = (short *)(iVar28 + (int)piVar13 * 6);" (assignment_expression "psVar8 = (short *)(iVar28 + (int)piVar13 * 6)" identifier = (cast_expression "(short *)(iVar28 + (int)piVar13 * 6)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + (int)piVar13 * 6)" ( (binary_expression "iVar28 + (int)piVar13 * 6" identifier + (binary_expression "(int)piVar13 * 6" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (expression_statement "uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;" (assignment_expression "uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7" identifier = (binary_expression "((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7" (parenthesized_expression "((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)" ( (binary_expression "(uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101" (binary_expression "(uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107" (binary_expression "(uint)bStack_55e * 0x10d" (cast_expression "(uint)bStack_55e" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) + (binary_expression "(uint)bStack_55f * 0x107" (cast_expression "(uint)bStack_55f" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + (binary_expression "(uint)bStack_560 * 0x101" (cast_expression "(uint)bStack_560" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )) % number_literal)) ;) (if_statement "if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }" if (parenthesized_expression "(psVar8[1] == -1)" ( (binary_expression "psVar8[1] == -1" (subscript_expression "psVar8[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }" { (if_statement "if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }" if (parenthesized_expression "(psVar8[2] != -1)" ( (binary_expression "psVar8[2] != -1" (subscript_expression "psVar8[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }" { (expression_statement "*(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;" (assignment_expression "*(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff" (pointer_expression "*(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4)" * (cast_expression "(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4)" ( (binary_expression "iVar28 + (psVar8[2] + 0x1c000) * 2 + 4" (binary_expression "iVar28 + (psVar8[2] + 0x1c000) * 2" identifier + (binary_expression "(psVar8[2] + 0x1c000) * 2" (parenthesized_expression "(psVar8[2] + 0x1c000)" ( (binary_expression "psVar8[2] + 0x1c000" (subscript_expression "psVar8[2]" identifier [ number_literal ]) + number_literal) )) * number_literal)) + number_literal) )))) = number_literal) ;) })) }) (else_clause "else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }" else (compound_statement "{\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }" { (expression_statement "*(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;" (assignment_expression "*(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff" (pointer_expression "*(undefined2 *)(iVar28 + psVar8[1] * 6)" * (cast_expression "(undefined2 *)(iVar28 + psVar8[1] * 6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + psVar8[1] * 6)" ( (binary_expression "iVar28 + psVar8[1] * 6" identifier + (binary_expression "psVar8[1] * 6" (subscript_expression "psVar8[1]" identifier [ number_literal ]) * number_literal)) )))) = number_literal) ;) }))) (expression_statement "psVar8[2] = (short)uVar16;" (assignment_expression "psVar8[2] = (short)uVar16" (subscript_expression "psVar8[2]" identifier [ number_literal ]) = (cast_expression "(short)uVar16" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "psVar8[1] = -1;" (assignment_expression "psVar8[1] = -1" (subscript_expression "psVar8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar24 = iVar28 + uVar16 * 2;" (assignment_expression "iVar24 = iVar28 + uVar16 * 2" identifier = (binary_expression "iVar28 + uVar16 * 2" identifier + (binary_expression "uVar16 * 2" identifier * number_literal))) ;) (expression_statement "sVar2 = *(short *)(iVar24 + 0x38004);" (assignment_expression "sVar2 = *(short *)(iVar24 + 0x38004)" identifier = (pointer_expression "*(short *)(iVar24 + 0x38004)" * (cast_expression "(short *)(iVar24 + 0x38004)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 0x38004)" ( (binary_expression "iVar24 + 0x38004" identifier + number_literal) ))))) ;) (expression_statement "pbVar10 = (byte *)(int)sVar2;" (assignment_expression "pbVar10 = (byte *)(int)sVar2" identifier = (cast_expression "(byte *)(int)sVar2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)sVar2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*psVar8 = sVar2;" (assignment_expression "*psVar8 = sVar2" (pointer_expression "*psVar8" * identifier) = identifier) ;) (expression_statement "*(short *)(iVar24 + 0x38004) = (short)piVar13;" (assignment_expression "*(short *)(iVar24 + 0x38004) = (short)piVar13" (pointer_expression "*(short *)(iVar24 + 0x38004)" * (cast_expression "(short *)(iVar24 + 0x38004)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 0x38004)" ( (binary_expression "iVar24 + 0x38004" identifier + number_literal) )))) = (cast_expression "(short)piVar13" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (if_statement "if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }" if (parenthesized_expression "(pbVar10 != (byte *)0xffffffff)" ( (binary_expression "pbVar10 != (byte *)0xffffffff" identifier != (cast_expression "(byte *)0xffffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }" { (expression_statement "*(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;" (assignment_expression "*(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13" (pointer_expression "*(short *)(iVar28 + (int)pbVar10 * 6 + 2)" * (cast_expression "(short *)(iVar28 + (int)pbVar10 * 6 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + (int)pbVar10 * 6 + 2)" ( (binary_expression "iVar28 + (int)pbVar10 * 6 + 2" (binary_expression "iVar28 + (int)pbVar10 * 6" identifier + (binary_expression "(int)pbVar10 * 6" (cast_expression "(int)pbVar10" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) )))) = (cast_expression "(short)piVar13" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) })) (expression_statement "pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);" (assignment_expression "pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000)" identifier = (cast_expression "(byte *)((int)piVar13 + iVar28 + 0x30000)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar13 + iVar28 + 0x30000)" ( (binary_expression "(int)piVar13 + iVar28 + 0x30000" (binary_expression "(int)piVar13 + iVar28" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "iVar24 = iVar18 + 1;" (assignment_expression "iVar24 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);" (assignment_expression "piVar13 = (int *)((int)piVar13 + 1U & 0x7fff)" identifier = (cast_expression "(int *)((int)piVar13 + 1U & 0x7fff)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar13 + 1U & 0x7fff)" ( (binary_expression "(int)piVar13 + 1U & 0x7fff" (binary_expression "(int)piVar13 + 1U" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) & number_literal) )))) ;) (expression_statement "*pbVar9 = bStack_560;" (assignment_expression "*pbVar9 = bStack_560" (pointer_expression "*pbVar9" * identifier) = identifier) ;) (expression_statement "*(int **)(iVar28 + 0x38000) = piVar13;" (assignment_expression "*(int **)(iVar28 + 0x38000) = piVar13" (pointer_expression "*(int **)(iVar28 + 0x38000)" * (cast_expression "(int **)(iVar28 + 0x38000)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar28 + 0x38000)" ( (binary_expression "iVar28 + 0x38000" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }" if (parenthesized_expression "(iVar17 == iVar24)" ( (binary_expression "iVar17 == iVar24" identifier == identifier) )) (compound_statement "{\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }" { (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00073c5c;" goto statement_identifier ;) })) (expression_statement "pbVar26 = pbVar26 + -1;" (assignment_expression "pbVar26 = pbVar26 + -1" identifier = (binary_expression "pbVar26 + -1" identifier + number_literal)) ;) (expression_statement "iVar25 = iVar25 + 1;" (assignment_expression "iVar25 = iVar25 + 1" identifier = (binary_expression "iVar25 + 1" identifier + number_literal)) ;) (expression_statement "iVar18 = iVar24;" (assignment_expression "iVar18 = iVar24" identifier = identifier) ;) }) while (parenthesized_expression "(iVar24 != iVar27)" ( (binary_expression "iVar24 != iVar27" identifier != identifier) )) ;) (expression_statement "iVar18 = iVar17 - iVar27;" (assignment_expression "iVar18 = iVar17 - iVar27" identifier = (binary_expression "iVar17 - iVar27" identifier - identifier)) ;) }))) (expression_statement "pbVar26 = (byte *)(iVar28 + 0x38ff2);" (assignment_expression "pbVar26 = (byte *)(iVar28 + 0x38ff2)" identifier = (cast_expression "(byte *)(iVar28 + 0x38ff2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x38ff2)" ( (binary_expression "iVar28 + 0x38ff2" identifier + number_literal) )))) ;) (expression_statement "iVar24 = iVar27;" (assignment_expression "iVar24 = iVar27" identifier = identifier) ;) (do_statement "do {\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar24 < iVar17) != (int *)0x0);" do (compound_statement "{\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      }" { (expression_statement "iVar24 = iVar24 + 1;" (assignment_expression "iVar24 = iVar24 + 1" identifier = (binary_expression "iVar24 + 1" identifier + number_literal)) ;) (expression_statement "bVar14 = pbVar26[iVar27];" (assignment_expression "bVar14 = pbVar26[iVar27]" identifier = (subscript_expression "pbVar26[iVar27]" identifier [ identifier ])) ;) (expression_statement "*pbVar26 = bVar14;" (assignment_expression "*pbVar26 = bVar14" (pointer_expression "*pbVar26" * identifier) = identifier) ;) (expression_statement "pbVar26 = pbVar26 + 1;" (assignment_expression "pbVar26 = pbVar26 + 1" identifier = (binary_expression "pbVar26 + 1" identifier + number_literal)) ;) (expression_statement "piVar13 = (int *)(uint)(iVar24 < iVar17);" (assignment_expression "piVar13 = (int *)(uint)(iVar24 < iVar17)" identifier = (cast_expression "(int *)(uint)(iVar24 < iVar17)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar24 < iVar17)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar24 < iVar17)" ( (binary_expression "iVar24 < iVar17" identifier < identifier) ))))) ;) (expression_statement "pbVar10 = (byte *)(uint)bVar14;" (assignment_expression "pbVar10 = (byte *)(uint)bVar14" identifier = (cast_expression "(byte *)(uint)bVar14" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((int *)(uint)(iVar24 < iVar17) != (int *)0x0)" ( (binary_expression "(int *)(uint)(iVar24 < iVar17) != (int *)0x0" (cast_expression "(int *)(uint)(iVar24 < iVar17)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar24 < iVar17)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar24 < iVar17)" ( (binary_expression "iVar24 < iVar17" identifier < identifier) )))) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (labeled_statement "LAB_00073c5c:\n    uVar15 = SUB41(pbVar10,0);" statement_identifier : (expression_statement "uVar15 = SUB41(pbVar10,0);" (assignment_expression "uVar15 = SUB41(pbVar10,0)" identifier = (call_expression "SUB41(pbVar10,0)" identifier (argument_list "(pbVar10,0)" ( identifier , number_literal )))) ;)) (expression_statement "*(int *)(iVar28 + 0x38ff8) = iVar18;" (assignment_expression "*(int *)(iVar28 + 0x38ff8) = iVar18" (pointer_expression "*(int *)(iVar28 + 0x38ff8)" * (cast_expression "(int *)(iVar28 + 0x38ff8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x38ff8)" ( (binary_expression "iVar28 + 0x38ff8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (0 < param_2) {\n      iStack_674 = 0;\n      uStack_670 = 0;\n      bVar3 = param_2 < 3;\n      iVar17 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      } while (0 < param_2);\n    }" if (parenthesized_expression "(0 < param_2)" ( (binary_expression "0 < param_2" number_literal < identifier) )) (compound_statement "{\n      iStack_674 = 0;\n      uStack_670 = 0;\n      bVar3 = param_2 < 3;\n      iVar17 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      } while (0 < param_2);\n    }" { (expression_statement "iStack_674 = 0;" (assignment_expression "iStack_674 = 0" identifier = number_literal) ;) (expression_statement "uStack_670 = 0;" (assignment_expression "uStack_670 = 0" identifier = number_literal) ;) (expression_statement "bVar3 = param_2 < 3;" (assignment_expression "bVar3 = param_2 < 3" identifier = (binary_expression "param_2 < 3" identifier < number_literal)) ;) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      } while (0 < param_2);" do (compound_statement "{\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      }" { (do_statement "do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);" do (compound_statement "{\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        }" { (if_statement "if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }" if (parenthesized_expression "((piVar21 != (int *)0x0) && (!bVar3))" ( (binary_expression "(piVar21 != (int *)0x0) && (!bVar3)" (parenthesized_expression "(piVar21 != (int *)0x0)" ( (binary_expression "piVar21 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) ))) )) (compound_statement "{\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }" { (expression_statement "uVar16 = (uint)*param_1;" (assignment_expression "uVar16 = (uint)*param_1" identifier = (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);" (assignment_expression "iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4)" identifier = (cast_expression "(int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4)" * (cast_expression "(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4)" ( (binary_expression "iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4" (binary_expression "iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2" identifier + (binary_expression "(((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2" (parenthesized_expression "(((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000)" ( (binary_expression "((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000" (binary_expression "((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7" (parenthesized_expression "((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101)" ( (binary_expression "(uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101" (binary_expression "(uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107" (binary_expression "(uint)param_1[2] * 0x10d" (cast_expression "(uint)param_1[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[2]" identifier [ number_literal ])) * number_literal) + (binary_expression "(uint)param_1[1] * 0x107" (cast_expression "(uint)param_1[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) * number_literal)) + (binary_expression "uVar16 * 0x101" identifier * number_literal)) )) % number_literal) + number_literal) )) * number_literal)) + number_literal) )))))) ;) (if_statement "if (iVar18 == -1) goto LAB_00073ca0;" if (parenthesized_expression "(iVar18 == -1)" ( (binary_expression "iVar18 == -1" identifier == number_literal) )) (goto_statement "goto LAB_00073ca0;" goto statement_identifier ;)) (expression_statement "iVar24 = *(int *)(iVar28 + 0x38000);" (assignment_expression "iVar24 = *(int *)(iVar28 + 0x38000)" identifier = (pointer_expression "*(int *)(iVar28 + 0x38000)" * (cast_expression "(int *)(iVar28 + 0x38000)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x38000)" ( (binary_expression "iVar28 + 0x38000" identifier + number_literal) ))))) ;) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (do_statement "do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);" do (compound_statement "{\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            }" { (expression_statement "uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;" (assignment_expression "uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff" identifier = (binary_expression "(iVar18 + 0x8000) - iVar24 & 0x80007fff" (binary_expression "(iVar18 + 0x8000) - iVar24" (parenthesized_expression "(iVar18 + 0x8000)" ( (binary_expression "iVar18 + 0x8000" identifier + number_literal) )) - identifier) & number_literal)) ;) (if_statement "if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }" if (parenthesized_expression "((int)uVar23 < 0)" ( (binary_expression "(int)uVar23 < 0" (cast_expression "(int)uVar23" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }" { (expression_statement "uVar23 = (uVar23 - 1 | 0xffff8000) + 1;" (assignment_expression "uVar23 = (uVar23 - 1 | 0xffff8000) + 1" identifier = (binary_expression "(uVar23 - 1 | 0xffff8000) + 1" (parenthesized_expression "(uVar23 - 1 | 0xffff8000)" ( (binary_expression "uVar23 - 1 | 0xffff8000" (binary_expression "uVar23 - 1" identifier - number_literal) | number_literal) )) + number_literal)) ;) })) (expression_statement "iVar22 = 0x8000 - uVar23;" (assignment_expression "iVar22 = 0x8000 - uVar23" identifier = (binary_expression "0x8000 - uVar23" number_literal - identifier)) ;) (expression_statement "iVar25 = uVar23 - 0x8000;" (assignment_expression "iVar25 = uVar23 - 0x8000" identifier = (binary_expression "uVar23 - 0x8000" identifier - number_literal)) ;) (expression_statement "uVar23 = uVar16;" (assignment_expression "uVar23 = uVar16" identifier = identifier) ;) (if_statement "if (iVar25 < 0) goto LAB_00073f88;" if (parenthesized_expression "(iVar25 < 0)" ( (binary_expression "iVar25 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00073f88;" goto statement_identifier ;)) (while_statement "while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }" while (parenthesized_expression "(param_1[iVar25] == uVar23)" ( (binary_expression "param_1[iVar25] == uVar23" (subscript_expression "param_1[iVar25]" identifier [ identifier ]) == identifier) )) (compound_statement "{\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }" { (while_statement "while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }" { (expression_statement "iVar25 = iVar25 + 1;" (assignment_expression "iVar25 = iVar25 + 1" identifier = (binary_expression "iVar25 + 1" identifier + number_literal)) ;) (if_statement "if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }" if (parenthesized_expression "(3 - iVar22 == iVar25)" ( (binary_expression "3 - iVar22 == iVar25" (binary_expression "3 - iVar22" number_literal - identifier) == identifier) )) (compound_statement "{\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }" { (expression_statement "iVar25 = iVar27 + 1;" (assignment_expression "iVar25 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (expression_statement "aiStack_660[iVar27 * 2] = iVar22;" (assignment_expression "aiStack_660[iVar27 * 2] = iVar22" (subscript_expression "aiStack_660[iVar27 * 2]" identifier [ (binary_expression "iVar27 * 2" identifier * number_literal) ]) = identifier) ;) (expression_statement "aiStack_660[iVar27 * 2 + 1] = 3;" (assignment_expression "aiStack_660[iVar27 * 2 + 1] = 3" (subscript_expression "aiStack_660[iVar27 * 2 + 1]" identifier [ (binary_expression "iVar27 * 2 + 1" (binary_expression "iVar27 * 2" identifier * number_literal) + number_literal) ]) = number_literal) ;) (if_statement "if (0x1f < iVar25) goto LAB_00073fc8;" if (parenthesized_expression "(0x1f < iVar25)" ( (binary_expression "0x1f < iVar25" number_literal < identifier) )) (goto_statement "goto LAB_00073fc8;" goto statement_identifier ;)) (expression_statement "sVar2 = *(short *)(iVar28 + iVar18 * 6);" (assignment_expression "sVar2 = *(short *)(iVar28 + iVar18 * 6)" identifier = (pointer_expression "*(short *)(iVar28 + iVar18 * 6)" * (cast_expression "(short *)(iVar28 + iVar18 * 6)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + iVar18 * 6)" ( (binary_expression "iVar28 + iVar18 * 6" identifier + (binary_expression "iVar18 * 6" identifier * number_literal)) ))))) ;) (goto_statement "goto joined_r0x00074094;" goto statement_identifier ;) })) (expression_statement "uVar23 = (uint)param_1[iVar22 + iVar25];" (assignment_expression "uVar23 = (uint)param_1[iVar22 + iVar25]" identifier = (cast_expression "(uint)param_1[iVar22 + iVar25]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[iVar22 + iVar25]" identifier [ (binary_expression "iVar22 + iVar25" identifier + identifier) ]))) ;) (if_statement "if (-1 < iVar25) break;" if (parenthesized_expression "(-1 < iVar25)" ( (binary_expression "-1 < iVar25" number_literal < identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;" statement_identifier : (if_statement "if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;" if (parenthesized_expression "(*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)" ( (binary_expression "*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23" (pointer_expression "*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000)" * (cast_expression "(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000)" ( (binary_expression "iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000" (binary_expression "iVar28 + (iVar24 + iVar25 & 0x7fffU)" identifier + (parenthesized_expression "(iVar24 + iVar25 & 0x7fffU)" ( (binary_expression "iVar24 + iVar25 & 0x7fffU" (binary_expression "iVar24 + iVar25" identifier + identifier) & number_literal) ))) + number_literal) )))) != identifier) )) (goto_statement "goto LAB_00073fa4;" goto statement_identifier ;))) })) })) (labeled_statement "LAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);" statement_identifier : (expression_statement "sVar2 = *(short *)(iVar28 + iVar18 * 6);" (assignment_expression "sVar2 = *(short *)(iVar28 + iVar18 * 6)" identifier = (pointer_expression "*(short *)(iVar28 + iVar18 * 6)" * (cast_expression "(short *)(iVar28 + iVar18 * 6)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + iVar18 * 6)" ( (binary_expression "iVar28 + iVar18 * 6" identifier + (binary_expression "iVar18 * 6" identifier * number_literal)) ))))) ;)) (expression_statement "iVar25 = iVar27;" (assignment_expression "iVar25 = iVar27" identifier = identifier) ;) (labeled_statement "joined_r0x00074094:\n              iVar18 = (int)sVar2;" statement_identifier : (expression_statement "iVar18 = (int)sVar2;" (assignment_expression "iVar18 = (int)sVar2" identifier = (cast_expression "(int)sVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (expression_statement "iVar27 = iVar25;" (assignment_expression "iVar27 = iVar25" identifier = identifier) ;) }) while (parenthesized_expression "(iVar18 != -1)" ( (binary_expression "iVar18 != -1" identifier != number_literal) )) ;) (if_statement "if (iVar25 == 0) goto LAB_00073ca0;" if (parenthesized_expression "(iVar25 == 0)" ( (binary_expression "iVar25 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00073ca0;" goto statement_identifier ;)) (labeled_statement "LAB_00073fc8:\n            iVar18 = 3;" statement_identifier : (expression_statement "iVar18 = 3;" (assignment_expression "iVar18 = 3" identifier = number_literal) ;)) (if_statement "if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }" if (parenthesized_expression "(param_2 != 3)" ( (binary_expression "param_2 != 3" identifier != number_literal) )) (compound_statement "{\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }" { (expression_statement "pbVar10 = param_1 + 3;" (assignment_expression "pbVar10 = param_1 + 3" identifier = (binary_expression "param_1 + 3" identifier + number_literal)) ;) (do_statement "do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);" do (compound_statement "{\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              }" { (expression_statement "bVar14 = *pbVar10;" (assignment_expression "bVar14 = *pbVar10" identifier = (pointer_expression "*pbVar10" * identifier)) ;) (expression_statement "iVar27 = iVar25 * 2;" (assignment_expression "iVar27 = iVar25 * 2" identifier = (binary_expression "iVar25 * 2" identifier * number_literal)) ;) (expression_statement "piVar13 = aiStack_660;" (assignment_expression "piVar13 = aiStack_660" identifier = identifier) ;) (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) (do_statement "do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);" do (compound_statement "{\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                }" { (expression_statement "iVar25 = iVar18 - *piVar13;" (assignment_expression "iVar25 = iVar18 - *piVar13" identifier = (binary_expression "iVar18 - *piVar13" identifier - (pointer_expression "*piVar13" * identifier))) ;) (if_statement "if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }" if (parenthesized_expression "(iVar25 < 0)" ( (binary_expression "iVar25 < 0" identifier < number_literal) )) (compound_statement "{\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }" { (expression_statement "bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);" (assignment_expression "bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000)" identifier = (pointer_expression "*(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000)" * (cast_expression "(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000)" ( (binary_expression "iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000" (binary_expression "iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU)" identifier + (parenthesized_expression "((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU)" ( (binary_expression "(iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU" (binary_expression "(iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13" (parenthesized_expression "(iVar18 + *(int *)(iVar28 + 0x38000))" ( (binary_expression "iVar18 + *(int *)(iVar28 + 0x38000)" identifier + (pointer_expression "*(int *)(iVar28 + 0x38000)" * (cast_expression "(int *)(iVar28 + 0x38000)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x38000)" ( (binary_expression "iVar28 + 0x38000" identifier + number_literal) ))))) )) - (pointer_expression "*piVar13" * identifier)) & number_literal) ))) + number_literal) ))))) ;) }) (else_clause "else {\n                    bVar1 = param_1[iVar25];\n                  }" else (compound_statement "{\n                    bVar1 = param_1[iVar25];\n                  }" { (expression_statement "bVar1 = param_1[iVar25];" (assignment_expression "bVar1 = param_1[iVar25]" identifier = (subscript_expression "param_1[iVar25]" identifier [ identifier ])) ;) }))) (expression_statement "iVar25 = iVar24;" (assignment_expression "iVar25 = iVar24" identifier = identifier) ;) (if_statement "if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }" if (parenthesized_expression "(bVar1 == bVar14)" ( (binary_expression "bVar1 == bVar14" identifier == identifier) )) (compound_statement "{\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }" { (expression_statement "iVar22 = piVar13[1];" (assignment_expression "iVar22 = piVar13[1]" identifier = (subscript_expression "piVar13[1]" identifier [ number_literal ])) ;) (expression_statement "iVar25 = iVar24 + 1;" (assignment_expression "iVar25 = iVar24 + 1" identifier = (binary_expression "iVar24 + 1" identifier + number_literal)) ;) (expression_statement "aiStack_660[iVar24 * 2] = *piVar13;" (assignment_expression "aiStack_660[iVar24 * 2] = *piVar13" (subscript_expression "aiStack_660[iVar24 * 2]" identifier [ (binary_expression "iVar24 * 2" identifier * number_literal) ]) = (pointer_expression "*piVar13" * identifier)) ;) (expression_statement "aiStack_660[iVar24 * 2 + 1] = iVar22;" (assignment_expression "aiStack_660[iVar24 * 2 + 1] = iVar22" (subscript_expression "aiStack_660[iVar24 * 2 + 1]" identifier [ (binary_expression "iVar24 * 2 + 1" (binary_expression "iVar24 * 2" identifier * number_literal) + number_literal) ]) = identifier) ;) })) (expression_statement "piVar13 = piVar13 + 2;" (assignment_expression "piVar13 = piVar13 + 2" identifier = (binary_expression "piVar13 + 2" identifier + number_literal)) ;) (expression_statement "iVar24 = iVar25;" (assignment_expression "iVar24 = iVar25" identifier = identifier) ;) }) while (parenthesized_expression "(aiStack_660 + iVar27 != piVar13)" ( (binary_expression "aiStack_660 + iVar27 != piVar13" (binary_expression "aiStack_660 + iVar27" identifier + identifier) != identifier) )) ;) (if_statement "if (iVar25 == 0) break;" if (parenthesized_expression "(iVar25 == 0)" ( (binary_expression "iVar25 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "pbVar10 = param_1 + iVar18;" (assignment_expression "pbVar10 = param_1 + iVar18" identifier = (binary_expression "param_1 + iVar18" identifier + identifier)) ;) }) while (parenthesized_expression "(iVar18 != param_2)" ( (binary_expression "iVar18 != param_2" identifier != identifier) )) ;) })) (expression_statement "piVar13 = piVar21;" (assignment_expression "piVar13 = piVar21" identifier = identifier) ;) (expression_statement "aiStack_660[1] = iVar18;" (assignment_expression "aiStack_660[1] = iVar18" (subscript_expression "aiStack_660[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (compound_statement "{\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }" { (if_statement "if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }" if (parenthesized_expression "(iVar17 + 1 < iVar18)" ( (binary_expression "iVar17 + 1 < iVar18" (binary_expression "iVar17 + 1" identifier + number_literal) < identifier) )) (compound_statement "{\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }" { (expression_statement "(*(code *)piVar12[2])(piVar12,uStack_670);" (call_expression "(*(code *)piVar12[2])(piVar12,uStack_670)" (parenthesized_expression "(*(code *)piVar12[2])" ( (pointer_expression "*(code *)piVar12[2]" * (cast_expression "(code *)piVar12[2]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar12[2]" identifier [ number_literal ]))) )) (argument_list "(piVar12,uStack_670)" ( identifier , identifier ))) ;) (expression_statement "iStack_674 = aiStack_660[0];" (assignment_expression "iStack_674 = aiStack_660[0]" identifier = (subscript_expression "aiStack_660[0]" identifier [ number_literal ])) ;) (expression_statement "uStack_670 = (uint)*param_1;" (assignment_expression "uStack_670 = (uint)*param_1" identifier = (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (break_statement "break;" break ;) })) (goto_statement "goto LAB_00073ca8;" goto statement_identifier ;) })) (expression_statement "iStack_674 = aiStack_660[0];" (assignment_expression "iStack_674 = aiStack_660[0]" identifier = (subscript_expression "aiStack_660[0]" identifier [ number_literal ])) ;) (expression_statement "uStack_670 = uVar16;" (assignment_expression "uStack_670 = uVar16" identifier = identifier) ;) (break_statement "break;" break ;) })) (labeled_statement "LAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }" statement_identifier : (if_statement "if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }" { (expression_statement "(*(code *)piVar12[2])(piVar12,*param_1);" (call_expression "(*(code *)piVar12[2])(piVar12,*param_1)" (parenthesized_expression "(*(code *)piVar12[2])" ( (pointer_expression "*(code *)piVar12[2]" * (cast_expression "(code *)piVar12[2]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar12[2]" identifier [ number_literal ]))) )) (argument_list "(piVar12,*param_1)" ( identifier , (pointer_expression "*param_1" * identifier) ))) ;) (expression_statement "piVar13 = (int *)0x1;" (assignment_expression "piVar13 = (int *)0x1" identifier = (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar18 = iVar17;" (assignment_expression "iVar18 = iVar17" identifier = identifier) ;) (break_statement "break;" break ;) }))) (labeled_statement "LAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);" statement_identifier : (expression_statement "(*(code *)piVar12[3])(piVar12,iStack_674,iVar17);" (call_expression "(*(code *)piVar12[3])(piVar12,iStack_674,iVar17)" (parenthesized_expression "(*(code *)piVar12[3])" ( (pointer_expression "*(code *)piVar12[3]" * (cast_expression "(code *)piVar12[3]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar12[3]" identifier [ number_literal ]))) )) (argument_list "(piVar12,iStack_674,iVar17)" ( identifier , identifier , identifier ))) ;)) (expression_statement "piVar13 = (int *)(iVar17 - 1);" (assignment_expression "piVar13 = (int *)(iVar17 - 1)" identifier = (cast_expression "(int *)(iVar17 - 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 - 1)" ( (binary_expression "iVar17 - 1" identifier - number_literal) )))) ;) (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) }) while (parenthesized_expression "(piVar13 == (int *)0x0)" ( (binary_expression "piVar13 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "uVar15 = 0xff;" (assignment_expression "uVar15 = 0xff" identifier = number_literal) ;) (expression_statement "pbVar10 = param_1 + (int)piVar13;" (assignment_expression "pbVar10 = param_1 + (int)piVar13" identifier = (binary_expression "param_1 + (int)piVar13" identifier + (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (while_statement "while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }" { (if_statement "if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }" { (expression_statement "iVar17 = *(int *)(iVar28 + 0x38ff8);" (assignment_expression "iVar17 = *(int *)(iVar28 + 0x38ff8)" identifier = (pointer_expression "*(int *)(iVar28 + 0x38ff8)" * (cast_expression "(int *)(iVar28 + 0x38ff8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x38ff8)" ( (binary_expression "iVar28 + 0x38ff8" identifier + number_literal) ))))) ;) (expression_statement "piVar13 = *(int **)(puVar29 + 0x39878);" (assignment_expression "piVar13 = *(int **)(puVar29 + 0x39878)" identifier = (pointer_expression "*(int **)(puVar29 + 0x39878)" * (cast_expression "(int **)(puVar29 + 0x39878)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x39878)" ( (binary_expression "puVar29 + 0x39878" identifier + number_literal) ))))) ;) (if_statement "if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }" if (parenthesized_expression "(2 < iVar17)" ( (binary_expression "2 < iVar17" number_literal < identifier) )) (compound_statement "{\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }" { (expression_statement "iVar18 = 0x157;" (assignment_expression "iVar18 = 0x157" identifier = number_literal) ;) (expression_statement "pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);" (assignment_expression "pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0)" identifier = (cast_expression "(byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar29 + 0x39878) + 0x72e0)" ( (binary_expression "*(int *)(puVar29 + 0x39878) + 0x72e0" (pointer_expression "*(int *)(puVar29 + 0x39878)" * (cast_expression "(int *)(puVar29 + 0x39878)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x39878)" ( (binary_expression "puVar29 + 0x39878" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "piVar13 = piVar13 + 0x1cc2;" (assignment_expression "piVar13 = piVar13 + 0x1cc2" identifier = (binary_expression "piVar13 + 0x1cc2" identifier + number_literal)) ;) (expression_statement "(**(code **)(puVar29 + 0x3a0b0))();" (call_expression "(**(code **)(puVar29 + 0x3a0b0))()" (parenthesized_expression "(**(code **)(puVar29 + 0x3a0b0))" ( (pointer_expression "**(code **)(puVar29 + 0x3a0b0)" * (pointer_expression "*(code **)(puVar29 + 0x3a0b0)" * (cast_expression "(code **)(puVar29 + 0x3a0b0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x3a0b0)" ( (binary_expression "puVar29 + 0x3a0b0" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "piVar12 = piVar21;" (assignment_expression "piVar12 = piVar21" identifier = identifier) ;) (goto_statement "goto LAB_00073c5c;" goto statement_identifier ;) })) (expression_statement "*(int *)(iVar28 + 0x38ff8) = iVar17 + 1;" (assignment_expression "*(int *)(iVar28 + 0x38ff8) = iVar17 + 1" (pointer_expression "*(int *)(iVar28 + 0x38ff8)" * (cast_expression "(int *)(iVar28 + 0x38ff8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x38ff8)" ( (binary_expression "iVar28 + 0x38ff8" identifier + number_literal) )))) = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) (expression_statement "*(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;" (assignment_expression "*(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1" (pointer_expression "*(byte *)(iVar28 + iVar17 + 0x38ff2)" * (cast_expression "(byte *)(iVar28 + iVar17 + 0x38ff2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + iVar17 + 0x38ff2)" ( (binary_expression "iVar28 + iVar17 + 0x38ff2" (binary_expression "iVar28 + iVar17" identifier + identifier) + number_literal) )))) = (pointer_expression "*param_1" * identifier)) ;) }) (else_clause "else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }" else (compound_statement "{\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }" { (expression_statement "bVar14 = *param_1;" (assignment_expression "bVar14 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "piVar13 = (int *)(uint)bVar14;" (assignment_expression "piVar13 = (int *)(uint)bVar14" identifier = (cast_expression "(int *)(uint)bVar14" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "iVar17 = *(int *)(iVar28 + 0x38000);" (assignment_expression "iVar17 = *(int *)(iVar28 + 0x38000)" identifier = (pointer_expression "*(int *)(iVar28 + 0x38000)" * (cast_expression "(int *)(iVar28 + 0x38000)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x38000)" ( (binary_expression "iVar28 + 0x38000" identifier + number_literal) ))))) ;) (expression_statement "psVar8 = (short *)(iVar28 + iVar17 * 6);" (assignment_expression "psVar8 = (short *)(iVar28 + iVar17 * 6)" identifier = (cast_expression "(short *)(iVar28 + iVar17 * 6)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + iVar17 * 6)" ( (binary_expression "iVar28 + iVar17 * 6" identifier + (binary_expression "iVar17 * 6" identifier * number_literal)) )))) ;) (expression_statement "uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;" (assignment_expression "uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7" identifier = (binary_expression "((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7" (parenthesized_expression "((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101)" ( (binary_expression "(uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101" (binary_expression "(uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107" (binary_expression "(uint)param_1[2] * 0x10d" (cast_expression "(uint)param_1[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[2]" identifier [ number_literal ])) * number_literal) + (binary_expression "(uint)param_1[1] * 0x107" (cast_expression "(uint)param_1[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) * number_literal)) + (binary_expression "(int)piVar13 * 0x101" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )) % number_literal)) ;) (if_statement "if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }" if (parenthesized_expression "(psVar8[1] == -1)" ( (binary_expression "psVar8[1] == -1" (subscript_expression "psVar8[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }" { (if_statement "if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }" if (parenthesized_expression "(psVar8[2] != -1)" ( (binary_expression "psVar8[2] != -1" (subscript_expression "psVar8[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }" { (expression_statement "*(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;" (assignment_expression "*(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff" (pointer_expression "*(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4)" * (cast_expression "(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4)" ( (binary_expression "iVar28 + (psVar8[2] + 0x1c000) * 2 + 4" (binary_expression "iVar28 + (psVar8[2] + 0x1c000) * 2" identifier + (binary_expression "(psVar8[2] + 0x1c000) * 2" (parenthesized_expression "(psVar8[2] + 0x1c000)" ( (binary_expression "psVar8[2] + 0x1c000" (subscript_expression "psVar8[2]" identifier [ number_literal ]) + number_literal) )) * number_literal)) + number_literal) )))) = number_literal) ;) })) }) (else_clause "else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }" else (compound_statement "{\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }" { (expression_statement "*(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;" (assignment_expression "*(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff" (pointer_expression "*(undefined2 *)(iVar28 + psVar8[1] * 6)" * (cast_expression "(undefined2 *)(iVar28 + psVar8[1] * 6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + psVar8[1] * 6)" ( (binary_expression "iVar28 + psVar8[1] * 6" identifier + (binary_expression "psVar8[1] * 6" (subscript_expression "psVar8[1]" identifier [ number_literal ]) * number_literal)) )))) = number_literal) ;) }))) (expression_statement "psVar8[2] = (short)uVar16;" (assignment_expression "psVar8[2] = (short)uVar16" (subscript_expression "psVar8[2]" identifier [ number_literal ]) = (cast_expression "(short)uVar16" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "psVar8[1] = -1;" (assignment_expression "psVar8[1] = -1" (subscript_expression "psVar8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar27 = iVar28 + uVar16 * 2;" (assignment_expression "iVar27 = iVar28 + uVar16 * 2" identifier = (binary_expression "iVar28 + uVar16 * 2" identifier + (binary_expression "uVar16 * 2" identifier * number_literal))) ;) (expression_statement "sVar2 = *(short *)(iVar27 + 0x38004);" (assignment_expression "sVar2 = *(short *)(iVar27 + 0x38004)" identifier = (pointer_expression "*(short *)(iVar27 + 0x38004)" * (cast_expression "(short *)(iVar27 + 0x38004)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x38004)" ( (binary_expression "iVar27 + 0x38004" identifier + number_literal) ))))) ;) (expression_statement "*psVar8 = sVar2;" (assignment_expression "*psVar8 = sVar2" (pointer_expression "*psVar8" * identifier) = identifier) ;) (expression_statement "*(short *)(iVar27 + 0x38004) = (short)iVar17;" (assignment_expression "*(short *)(iVar27 + 0x38004) = (short)iVar17" (pointer_expression "*(short *)(iVar27 + 0x38004)" * (cast_expression "(short *)(iVar27 + 0x38004)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x38004)" ( (binary_expression "iVar27 + 0x38004" identifier + number_literal) )))) = (cast_expression "(short)iVar17" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (if_statement "if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }" if (parenthesized_expression "(sVar2 != -1)" ( (binary_expression "sVar2 != -1" identifier != number_literal) )) (compound_statement "{\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }" { (expression_statement "*(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;" (assignment_expression "*(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17" (pointer_expression "*(short *)(iVar28 + sVar2 * 6 + 2)" * (cast_expression "(short *)(iVar28 + sVar2 * 6 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + sVar2 * 6 + 2)" ( (binary_expression "iVar28 + sVar2 * 6 + 2" (binary_expression "iVar28 + sVar2 * 6" identifier + (binary_expression "sVar2 * 6" identifier * number_literal)) + number_literal) )))) = (cast_expression "(short)iVar17" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) })) (expression_statement "*(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;" (assignment_expression "*(byte *)(iVar28 + iVar17 + 0x30000) = bVar14" (pointer_expression "*(byte *)(iVar28 + iVar17 + 0x30000)" * (cast_expression "(byte *)(iVar28 + iVar17 + 0x30000)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + iVar17 + 0x30000)" ( (binary_expression "iVar28 + iVar17 + 0x30000" (binary_expression "iVar28 + iVar17" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;" (assignment_expression "*(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff" (pointer_expression "*(uint *)(iVar28 + 0x38000)" * (cast_expression "(uint *)(iVar28 + 0x38000)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x38000)" ( (binary_expression "iVar28 + 0x38000" identifier + number_literal) )))) = (binary_expression "iVar17 + 1U & 0x7fff" (binary_expression "iVar17 + 1U" identifier + number_literal) & number_literal)) ;) }))) (if_statement "if (param_1 + 1 == pbVar10) break;" if (parenthesized_expression "(param_1 + 1 == pbVar10)" ( (binary_expression "param_1 + 1 == pbVar10" (binary_expression "param_1 + 1" identifier + number_literal) == identifier) )) (break_statement "break;" break ;)) (expression_statement "param_2 = param_2 + -1;" (assignment_expression "param_2 = param_2 + -1" identifier = (binary_expression "param_2 + -1" identifier + number_literal)) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "bVar3 = param_2 < 3;" (assignment_expression "bVar3 = param_2 < 3" identifier = (binary_expression "param_2 < 3" identifier < number_literal)) ;) })) (expression_statement "param_2 = param_2 + -1;" (assignment_expression "param_2 = param_2 + -1" identifier = (binary_expression "param_2 + -1" identifier + number_literal)) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "bVar3 = param_2 < 3;" (assignment_expression "bVar3 = param_2 < 3" identifier = (binary_expression "param_2 < 3" identifier < number_literal)) ;) (expression_statement "iVar17 = iVar18;" (assignment_expression "iVar17 = iVar18" identifier = identifier) ;) }) while (parenthesized_expression "(0 < param_2)" ( (binary_expression "0 < param_2" number_literal < identifier) )) ;) })) (if_statement "if (iStack_55c == *piVar7) {\n      return;\n    }" if (parenthesized_expression "(iStack_55c == *piVar7)" ( (binary_expression "iStack_55c == *piVar7" identifier == (pointer_expression "*piVar7" * identifier)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) (else_clause "else {\n    iVar17 = *(int *)(puVar29 + 0x39878) + 0x72e0;\n    piVar13 = (int *)(*(int *)(puVar29 + 0x39878) + 0x72ec);\n    (**(code **)(puVar29 + 0x3a0b0))(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c);\n    uVar15 = (undefined1)iVar17;\n  }" else (compound_statement "{\n    iVar17 = *(int *)(puVar29 + 0x39878) + 0x72e0;\n    piVar13 = (int *)(*(int *)(puVar29 + 0x39878) + 0x72ec);\n    (**(code **)(puVar29 + 0x3a0b0))(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c);\n    uVar15 = (undefined1)iVar17;\n  }" { (expression_statement "iVar17 = *(int *)(puVar29 + 0x39878) + 0x72e0;" (assignment_expression "iVar17 = *(int *)(puVar29 + 0x39878) + 0x72e0" identifier = (binary_expression "*(int *)(puVar29 + 0x39878) + 0x72e0" (pointer_expression "*(int *)(puVar29 + 0x39878)" * (cast_expression "(int *)(puVar29 + 0x39878)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x39878)" ( (binary_expression "puVar29 + 0x39878" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "piVar13 = (int *)(*(int *)(puVar29 + 0x39878) + 0x72ec);" (assignment_expression "piVar13 = (int *)(*(int *)(puVar29 + 0x39878) + 0x72ec)" identifier = (cast_expression "(int *)(*(int *)(puVar29 + 0x39878) + 0x72ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar29 + 0x39878) + 0x72ec)" ( (binary_expression "*(int *)(puVar29 + 0x39878) + 0x72ec" (pointer_expression "*(int *)(puVar29 + 0x39878)" * (cast_expression "(int *)(puVar29 + 0x39878)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x39878)" ( (binary_expression "puVar29 + 0x39878" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(puVar29 + 0x3a0b0))(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c);" (call_expression "(**(code **)(puVar29 + 0x3a0b0))(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c)" (parenthesized_expression "(**(code **)(puVar29 + 0x3a0b0))" ( (pointer_expression "**(code **)(puVar29 + 0x3a0b0)" * (pointer_expression "*(code **)(puVar29 + 0x3a0b0)" * (cast_expression "(code **)(puVar29 + 0x3a0b0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x3a0b0)" ( (binary_expression "puVar29 + 0x3a0b0" identifier + number_literal) ))))) )) (argument_list "(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c)" ( identifier , identifier , number_literal , (binary_expression "*(int *)(puVar29 + 0x39878) + 0x740c" (pointer_expression "*(int *)(puVar29 + 0x39878)" * (cast_expression "(int *)(puVar29 + 0x39878)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x39878)" ( (binary_expression "puVar29 + 0x39878" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "uVar15 = (undefined1)iVar17;" (assignment_expression "uVar15 = (undefined1)iVar17" identifier = (cast_expression "(undefined1)iVar17" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) }))) (expression_statement "pcVar30 = *(code **)(puVar29 + 0x3a254);" (assignment_expression "pcVar30 = *(code **)(puVar29 + 0x3a254)" identifier = (pointer_expression "*(code **)(puVar29 + 0x3a254)" * (cast_expression "(code **)(puVar29 + 0x3a254)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x3a254)" ( (binary_expression "puVar29 + 0x3a254" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar30)();" (call_expression "(*pcVar30)()" (parenthesized_expression "(*pcVar30)" ( (pointer_expression "*pcVar30" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar17 = piVar13[0x2067];" (assignment_expression "iVar17 = piVar13[0x2067]" identifier = (subscript_expression "piVar13[0x2067]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)((int)piVar13 + iVar17 + 0x19c) = uVar15;" (assignment_expression "*(undefined1 *)((int)piVar13 + iVar17 + 0x19c) = uVar15" (pointer_expression "*(undefined1 *)((int)piVar13 + iVar17 + 0x19c)" * (cast_expression "(undefined1 *)((int)piVar13 + iVar17 + 0x19c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar13 + iVar17 + 0x19c)" ( (binary_expression "(int)piVar13 + iVar17 + 0x19c" (binary_expression "(int)piVar13 + iVar17" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = identifier) ;) (expression_statement "piVar13[0x2067] = iVar17 + 1U & 0x7fff;" (assignment_expression "piVar13[0x2067] = iVar17 + 1U & 0x7fff" (subscript_expression "piVar13[0x2067]" identifier [ number_literal ]) = (binary_expression "iVar17 + 1U & 0x7fff" (binary_expression "iVar17 + 1U" identifier + number_literal) & number_literal)) ;) (expression_statement "iVar17 = piVar13[0x2069];" (assignment_expression "iVar17 = piVar13[0x2069]" identifier = (subscript_expression "piVar13[0x2069]" identifier [ number_literal ])) ;) (if_statement "if (iVar17 < piVar13[0x206a]) {\n    piVar13[0x2069] = iVar17 + 1;\n    *(undefined1 *)(piVar13[0x2068] + iVar17) = uVar15;\n    return;\n  }" if (parenthesized_expression "(iVar17 < piVar13[0x206a])" ( (binary_expression "iVar17 < piVar13[0x206a]" identifier < (subscript_expression "piVar13[0x206a]" identifier [ number_literal ])) )) (compound_statement "{\n    piVar13[0x2069] = iVar17 + 1;\n    *(undefined1 *)(piVar13[0x2068] + iVar17) = uVar15;\n    return;\n  }" { (expression_statement "piVar13[0x2069] = iVar17 + 1;" (assignment_expression "piVar13[0x2069] = iVar17 + 1" (subscript_expression "piVar13[0x2069]" identifier [ number_literal ]) = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(piVar13[0x2068] + iVar17) = uVar15;" (assignment_expression "*(undefined1 *)(piVar13[0x2068] + iVar17) = uVar15" (pointer_expression "*(undefined1 *)(piVar13[0x2068] + iVar17)" * (cast_expression "(undefined1 *)(piVar13[0x2068] + iVar17)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar13[0x2068] + iVar17)" ( (binary_expression "piVar13[0x2068] + iVar17" (subscript_expression "piVar13[0x2068]" identifier [ number_literal ]) + identifier) )))) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "pcVar30 = *(code **)(pcVar30 + 0x391d8);" (assignment_expression "pcVar30 = *(code **)(pcVar30 + 0x391d8)" identifier = (pointer_expression "*(code **)(pcVar30 + 0x391d8)" * (cast_expression "(code **)(pcVar30 + 0x391d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar30 + 0x391d8)" ( (binary_expression "pcVar30 + 0x391d8" identifier + number_literal) ))))) ;) (expression_statement "piVar13[0x206a] = iVar17 + 0x200;" (assignment_expression "piVar13[0x206a] = iVar17 + 0x200" (subscript_expression "piVar13[0x206a]" identifier [ number_literal ]) = (binary_expression "iVar17 + 0x200" identifier + number_literal)) ;) (expression_statement "iVar17 = (*pcVar30)(piVar13[0x2068],iVar17 + 0x200,1);" (assignment_expression "iVar17 = (*pcVar30)(piVar13[0x2068],iVar17 + 0x200,1)" identifier = (call_expression "(*pcVar30)(piVar13[0x2068],iVar17 + 0x200,1)" (parenthesized_expression "(*pcVar30)" ( (pointer_expression "*pcVar30" * identifier) )) (argument_list "(piVar13[0x2068],iVar17 + 0x200,1)" ( (subscript_expression "piVar13[0x2068]" identifier [ number_literal ]) , (binary_expression "iVar17 + 0x200" identifier + number_literal) , number_literal )))) ;) (expression_statement "iVar28 = piVar13[0x2069];" (assignment_expression "iVar28 = piVar13[0x2069]" identifier = (subscript_expression "piVar13[0x2069]" identifier [ number_literal ])) ;) (expression_statement "piVar13[0x2068] = iVar17;" (assignment_expression "piVar13[0x2068] = iVar17" (subscript_expression "piVar13[0x2068]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar13[0x2069] = iVar28 + 1;" (assignment_expression "piVar13[0x2069] = iVar28 + 1" (subscript_expression "piVar13[0x2069]" identifier [ number_literal ]) = (binary_expression "iVar28 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(iVar17 + iVar28) = uVar15;" (assignment_expression "*(undefined1 *)(iVar17 + iVar28) = uVar15" (pointer_expression "*(undefined1 *)(iVar17 + iVar28)" * (cast_expression "(undefined1 *)(iVar17 + iVar28)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + iVar28)" ( (binary_expression "iVar17 + iVar28" identifier + identifier) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier short) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (binary_expression (subscript_expression IDENT [ IDENT ]) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT & LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT - IDENT) ])) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )) % LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )) * LIT)) + LIT) )))) = LIT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT)) )))) = LIT) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) & LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (unary_expression ! IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) * LIT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) * LIT)) + (binary_expression IDENT * LIT)) )) % LIT) + LIT) )) * LIT)) + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - IDENT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) | LIT) )) + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (while_statement while (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ IDENT ]) == IDENT) )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression LIT - IDENT) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression IDENT + IDENT) ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (break_statement break ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) & LIT) ))) + LIT) )))) != IDENT) )) (goto_statement goto statement_identifier ;))) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) - (pointer_expression * IDENT)) & LIT) ))) + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) != IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (break_statement break ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (argument_list ( IDENT , (pointer_expression * IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;) }))) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (argument_list ( IDENT , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT - LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) while (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = (pointer_expression * IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) * LIT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) * LIT)) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )) % LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )) * LIT)) + LIT) )))) = LIT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT)) )))) = LIT) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression IDENT + LIT) & LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression LIT < IDENT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression IDENT + LIT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) )))) = IDENT) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , (binary_expression IDENT + LIT) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = IDENT) ;) (return_statement return ;) })))
(function_definition "void FUN_000738dc(byte *param_1,int param_2)\n\n{\n  byte bVar1;\n  short sVar2;\n  bool bVar3;\n  undefined *puVar4;\n  uint *puVar5;\n  uint uVar6;\n  int *piVar7;\n  short *psVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  uint *puVar11;\n  int *piVar12;\n  int *piVar13;\n  byte bVar14;\n  undefined1 uVar15;\n  uint uVar16;\n  int iVar17;\n  int iVar18;\n  uint *puVar19;\n  uint uVar20;\n  int *piVar21;\n  int iVar22;\n  uint uVar23;\n  int iVar24;\n  int iVar25;\n  byte *pbVar26;\n  int iVar27;\n  int iVar28;\n  undefined *puVar29;\n  code *pcVar30;\n  int iStack_674;\n  uint uStack_670;\n  int aiStack_660 [64];\n  byte bStack_560;\n  byte bStack_55f;\n  byte bStack_55e;\n  int iStack_55c;\n  undefined *puStack_558;\n  int aiStack_50c [16];\n  uint auStack_4cc [16];\n  uint local_48c [288];\n  int *local_c;\n  \n  puVar4 = PTR___stack_chk_guard_000adcd4;\n  puVar19 = (uint *)(aiStack_50c + 1);\n  local_c = *(int **)PTR___stack_chk_guard_000adcd4;\n  puVar5 = puVar19;\n  do {\n    *puVar5 = 0;\n    puVar5 = puVar5 + 1;\n  } while (puVar5 != auStack_4cc);\n  uVar16 = 0;\n  if (0 < param_2) {\n    pbVar10 = param_1;\n    do {\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar16 < uVar23) {\n        uVar16 = uVar23;\n      }\n      aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }\n  uVar16 = 0;\n  puVar5 = auStack_4cc + 1;\n  do {\n    uVar23 = *puVar19;\n    puVar11 = puVar5 + 1;\n    *puVar5 = uVar16;\n    puVar19 = puVar19 + 1;\n    uVar16 = (uVar16 + uVar23) * 2;\n    puVar5 = puVar11;\n  } while (puVar11 != local_48c);\n  pbVar10 = param_1;\n  puVar5 = local_48c;\n  if (0 < param_2) {\n    do {\n      uVar23 = (uint)*pbVar10;\n      *puVar5 = 0;\n      uVar16 = auStack_4cc[uVar23];\n      auStack_4cc[uVar23] = uVar16 + 1;\n      if (uVar23 != 0) {\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar5 = puVar5 + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }\n  piVar21 = (int *)0x0;\n  FUN_00073648(local_48c);\n  if (local_c == *(int **)puVar4) {\n    return;\n  }\n  piVar12 = local_c;\n  puVar29 = PTR___stack_chk_fail_000adca4;\n  (*(code *)PTR___stack_chk_fail_000adca4)();\n  piVar7 = *(int **)(puVar29 + 0x3a284);\n  iVar28 = *piVar12;\n  puStack_558 = puVar4;\n  iStack_55c = *piVar7;\n  iVar17 = *(int *)(iVar28 + 0x38ff8);\n  if (iVar17 < 4) {\n    piVar13 = piVar12;\n    pbVar10 = param_1;\n    iVar18 = iVar17;\n    if (0 < iVar17) {\n      if (iVar17 + param_2 < 3) {\n        iVar27 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }\n      pbVar26 = (byte *)(iVar28 + 0x38ff2);\n      iVar24 = iVar27;\n      do {\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar24 < iVar17) != (int *)0x0);\n    }\nLAB_00073c5c:\n    uVar15 = SUB41(pbVar10,0);\n    *(int *)(iVar28 + 0x38ff8) = iVar18;\n    if (0 < param_2) {\n      iStack_674 = 0;\n      uStack_670 = 0;\n      bVar3 = param_2 < 3;\n      iVar17 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      } while (0 < param_2);\n    }\n    if (iStack_55c == *piVar7) {\n      return;\n    }\n  }\n  else {\n    iVar17 = *(int *)(puVar29 + 0x39878) + 0x72e0;\n    piVar13 = (int *)(*(int *)(puVar29 + 0x39878) + 0x72ec);\n    (**(code **)(puVar29 + 0x3a0b0))(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c);\n    uVar15 = (undefined1)iVar17;\n  }\n  pcVar30 = *(code **)(puVar29 + 0x3a254);\n  (*pcVar30)();\n  iVar17 = piVar13[0x2067];\n  *(undefined1 *)((int)piVar13 + iVar17 + 0x19c) = uVar15;\n  piVar13[0x2067] = iVar17 + 1U & 0x7fff;\n  iVar17 = piVar13[0x2069];\n  if (iVar17 < piVar13[0x206a]) {\n    piVar13[0x2069] = iVar17 + 1;\n    *(undefined1 *)(piVar13[0x2068] + iVar17) = uVar15;\n    return;\n  }\n  pcVar30 = *(code **)(pcVar30 + 0x391d8);\n  piVar13[0x206a] = iVar17 + 0x200;\n  iVar17 = (*pcVar30)(piVar13[0x2068],iVar17 + 0x200,1);\n  iVar28 = piVar13[0x2069];\n  piVar13[0x2068] = iVar17;\n  piVar13[0x2069] = iVar28 + 1;\n  *(undefined1 *)(iVar17 + iVar28) = uVar15;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000738dc(byte *param_1,int param_2)" (identifier "FUN_000738dc") (parameter_list "(byte *param_1,int param_2)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  byte bVar1;\n  short sVar2;\n  bool bVar3;\n  undefined *puVar4;\n  uint *puVar5;\n  uint uVar6;\n  int *piVar7;\n  short *psVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  uint *puVar11;\n  int *piVar12;\n  int *piVar13;\n  byte bVar14;\n  undefined1 uVar15;\n  uint uVar16;\n  int iVar17;\n  int iVar18;\n  uint *puVar19;\n  uint uVar20;\n  int *piVar21;\n  int iVar22;\n  uint uVar23;\n  int iVar24;\n  int iVar25;\n  byte *pbVar26;\n  int iVar27;\n  int iVar28;\n  undefined *puVar29;\n  code *pcVar30;\n  int iStack_674;\n  uint uStack_670;\n  int aiStack_660 [64];\n  byte bStack_560;\n  byte bStack_55f;\n  byte bStack_55e;\n  int iStack_55c;\n  undefined *puStack_558;\n  int aiStack_50c [16];\n  uint auStack_4cc [16];\n  uint local_48c [288];\n  int *local_c;\n  \n  puVar4 = PTR___stack_chk_guard_000adcd4;\n  puVar19 = (uint *)(aiStack_50c + 1);\n  local_c = *(int **)PTR___stack_chk_guard_000adcd4;\n  puVar5 = puVar19;\n  do {\n    *puVar5 = 0;\n    puVar5 = puVar5 + 1;\n  } while (puVar5 != auStack_4cc);\n  uVar16 = 0;\n  if (0 < param_2) {\n    pbVar10 = param_1;\n    do {\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar16 < uVar23) {\n        uVar16 = uVar23;\n      }\n      aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }\n  uVar16 = 0;\n  puVar5 = auStack_4cc + 1;\n  do {\n    uVar23 = *puVar19;\n    puVar11 = puVar5 + 1;\n    *puVar5 = uVar16;\n    puVar19 = puVar19 + 1;\n    uVar16 = (uVar16 + uVar23) * 2;\n    puVar5 = puVar11;\n  } while (puVar11 != local_48c);\n  pbVar10 = param_1;\n  puVar5 = local_48c;\n  if (0 < param_2) {\n    do {\n      uVar23 = (uint)*pbVar10;\n      *puVar5 = 0;\n      uVar16 = auStack_4cc[uVar23];\n      auStack_4cc[uVar23] = uVar16 + 1;\n      if (uVar23 != 0) {\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar5 = puVar5 + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }\n  piVar21 = (int *)0x0;\n  FUN_00073648(local_48c);\n  if (local_c == *(int **)puVar4) {\n    return;\n  }\n  piVar12 = local_c;\n  puVar29 = PTR___stack_chk_fail_000adca4;\n  (*(code *)PTR___stack_chk_fail_000adca4)();\n  piVar7 = *(int **)(puVar29 + 0x3a284);\n  iVar28 = *piVar12;\n  puStack_558 = puVar4;\n  iStack_55c = *piVar7;\n  iVar17 = *(int *)(iVar28 + 0x38ff8);\n  if (iVar17 < 4) {\n    piVar13 = piVar12;\n    pbVar10 = param_1;\n    iVar18 = iVar17;\n    if (0 < iVar17) {\n      if (iVar17 + param_2 < 3) {\n        iVar27 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }\n      pbVar26 = (byte *)(iVar28 + 0x38ff2);\n      iVar24 = iVar27;\n      do {\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar24 < iVar17) != (int *)0x0);\n    }\nLAB_00073c5c:\n    uVar15 = SUB41(pbVar10,0);\n    *(int *)(iVar28 + 0x38ff8) = iVar18;\n    if (0 < param_2) {\n      iStack_674 = 0;\n      uStack_670 = 0;\n      bVar3 = param_2 < 3;\n      iVar17 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      } while (0 < param_2);\n    }\n    if (iStack_55c == *piVar7) {\n      return;\n    }\n  }\n  else {\n    iVar17 = *(int *)(puVar29 + 0x39878) + 0x72e0;\n    piVar13 = (int *)(*(int *)(puVar29 + 0x39878) + 0x72ec);\n    (**(code **)(puVar29 + 0x3a0b0))(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c);\n    uVar15 = (undefined1)iVar17;\n  }\n  pcVar30 = *(code **)(puVar29 + 0x3a254);\n  (*pcVar30)();\n  iVar17 = piVar13[0x2067];\n  *(undefined1 *)((int)piVar13 + iVar17 + 0x19c) = uVar15;\n  piVar13[0x2067] = iVar17 + 1U & 0x7fff;\n  iVar17 = piVar13[0x2069];\n  if (iVar17 < piVar13[0x206a]) {\n    piVar13[0x2069] = iVar17 + 1;\n    *(undefined1 *)(piVar13[0x2068] + iVar17) = uVar15;\n    return;\n  }\n  pcVar30 = *(code **)(pcVar30 + 0x391d8);\n  piVar13[0x206a] = iVar17 + 0x200;\n  iVar17 = (*pcVar30)(piVar13[0x2068],iVar17 + 0x200,1);\n  iVar28 = piVar13[0x2069];\n  piVar13[0x2068] = iVar17;\n  piVar13[0x2069] = iVar28 + 1;\n  *(undefined1 *)(iVar17 + iVar28) = uVar15;\n  return;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "short sVar2;" (sized_type_specifier "short" (short "short")) (identifier "sVar2") (; ";")) (declaration "bool bVar3;" (primitive_type "bool") (identifier "bVar3") (; ";")) (declaration "undefined *puVar4;" (type_identifier "undefined") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "uint *puVar5;" (type_identifier "uint") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "short *psVar8;" (sized_type_specifier "short" (short "short")) (pointer_declarator "*psVar8" (* "*") (identifier "psVar8")) (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (declaration "byte *pbVar10;" (type_identifier "byte") (pointer_declarator "*pbVar10" (* "*") (identifier "pbVar10")) (; ";")) (declaration "uint *puVar11;" (type_identifier "uint") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "int *piVar12;" (primitive_type "int") (pointer_declarator "*piVar12" (* "*") (identifier "piVar12")) (; ";")) (declaration "int *piVar13;" (primitive_type "int") (pointer_declarator "*piVar13" (* "*") (identifier "piVar13")) (; ";")) (declaration "byte bVar14;" (type_identifier "byte") (identifier "bVar14") (; ";")) (declaration "undefined1 uVar15;" (type_identifier "undefined1") (identifier "uVar15") (; ";")) (declaration "uint uVar16;" (type_identifier "uint") (identifier "uVar16") (; ";")) (declaration "int iVar17;" (primitive_type "int") (identifier "iVar17") (; ";")) (declaration "int iVar18;" (primitive_type "int") (identifier "iVar18") (; ";")) (declaration "uint *puVar19;" (type_identifier "uint") (pointer_declarator "*puVar19" (* "*") (identifier "puVar19")) (; ";")) (declaration "uint uVar20;" (type_identifier "uint") (identifier "uVar20") (; ";")) (declaration "int *piVar21;" (primitive_type "int") (pointer_declarator "*piVar21" (* "*") (identifier "piVar21")) (; ";")) (declaration "int iVar22;" (primitive_type "int") (identifier "iVar22") (; ";")) (declaration "uint uVar23;" (type_identifier "uint") (identifier "uVar23") (; ";")) (declaration "int iVar24;" (primitive_type "int") (identifier "iVar24") (; ";")) (declaration "int iVar25;" (primitive_type "int") (identifier "iVar25") (; ";")) (declaration "byte *pbVar26;" (type_identifier "byte") (pointer_declarator "*pbVar26" (* "*") (identifier "pbVar26")) (; ";")) (declaration "int iVar27;" (primitive_type "int") (identifier "iVar27") (; ";")) (declaration "int iVar28;" (primitive_type "int") (identifier "iVar28") (; ";")) (declaration "undefined *puVar29;" (type_identifier "undefined") (pointer_declarator "*puVar29" (* "*") (identifier "puVar29")) (; ";")) (declaration "code *pcVar30;" (type_identifier "code") (pointer_declarator "*pcVar30" (* "*") (identifier "pcVar30")) (; ";")) (declaration "int iStack_674;" (primitive_type "int") (identifier "iStack_674") (; ";")) (declaration "uint uStack_670;" (type_identifier "uint") (identifier "uStack_670") (; ";")) (declaration "int aiStack_660 [64];" (primitive_type "int") (array_declarator "aiStack_660 [64]" (identifier "aiStack_660") ([ "[") (number_literal "64") (] "]")) (; ";")) (declaration "byte bStack_560;" (type_identifier "byte") (identifier "bStack_560") (; ";")) (declaration "byte bStack_55f;" (type_identifier "byte") (identifier "bStack_55f") (; ";")) (declaration "byte bStack_55e;" (type_identifier "byte") (identifier "bStack_55e") (; ";")) (declaration "int iStack_55c;" (primitive_type "int") (identifier "iStack_55c") (; ";")) (declaration "undefined *puStack_558;" (type_identifier "undefined") (pointer_declarator "*puStack_558" (* "*") (identifier "puStack_558")) (; ";")) (declaration "int aiStack_50c [16];" (primitive_type "int") (array_declarator "aiStack_50c [16]" (identifier "aiStack_50c") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "uint auStack_4cc [16];" (type_identifier "uint") (array_declarator "auStack_4cc [16]" (identifier "auStack_4cc") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "uint local_48c [288];" (type_identifier "uint") (array_declarator "local_48c [288]" (identifier "local_48c") ([ "[") (number_literal "288") (] "]")) (; ";")) (declaration "int *local_c;" (primitive_type "int") (pointer_declarator "*local_c" (* "*") (identifier "local_c")) (; ";")) (expression_statement "puVar4 = PTR___stack_chk_guard_000adcd4;" (assignment_expression "puVar4 = PTR___stack_chk_guard_000adcd4" (identifier "puVar4") (= "=") (identifier "PTR___stack_chk_guard_000adcd4")) (; ";")) (expression_statement "puVar19 = (uint *)(aiStack_50c + 1);" (assignment_expression "puVar19 = (uint *)(aiStack_50c + 1)" (identifier "puVar19") (= "=") (cast_expression "(uint *)(aiStack_50c + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(aiStack_50c + 1)" (( "(") (binary_expression "aiStack_50c + 1" (identifier "aiStack_50c") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "local_c = *(int **)PTR___stack_chk_guard_000adcd4;" (assignment_expression "local_c = *(int **)PTR___stack_chk_guard_000adcd4" (identifier "local_c") (= "=") (pointer_expression "*(int **)PTR___stack_chk_guard_000adcd4" (* "*") (cast_expression "(int **)PTR___stack_chk_guard_000adcd4" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR___stack_chk_guard_000adcd4")))) (; ";")) (expression_statement "puVar5 = puVar19;" (assignment_expression "puVar5 = puVar19" (identifier "puVar5") (= "=") (identifier "puVar19")) (; ";")) (do_statement "do {\n    *puVar5 = 0;\n    puVar5 = puVar5 + 1;\n  } while (puVar5 != auStack_4cc);" (do "do") (compound_statement "{\n    *puVar5 = 0;\n    puVar5 = puVar5 + 1;\n  }" ({ "{") (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar5 != auStack_4cc)" (( "(") (binary_expression "puVar5 != auStack_4cc" (identifier "puVar5") (!= "!=") (identifier "auStack_4cc")) () ")")) (; ";")) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" (identifier "uVar16") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0 < param_2) {\n    pbVar10 = param_1;\n    do {\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar16 < uVar23) {\n        uVar16 = uVar23;\n      }\n      aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }" (if "if") (parenthesized_expression "(0 < param_2)" (( "(") (binary_expression "0 < param_2" (number_literal "0") (< "<") (identifier "param_2")) () ")")) (compound_statement "{\n    pbVar10 = param_1;\n    do {\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar16 < uVar23) {\n        uVar16 = uVar23;\n      }\n      aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }" ({ "{") (expression_statement "pbVar10 = param_1;" (assignment_expression "pbVar10 = param_1" (identifier "pbVar10") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar16 < uVar23) {\n        uVar16 = uVar23;\n      }\n      aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1;\n    } while (param_1 + param_2 != pbVar10);" (do "do") (compound_statement "{\n      uVar23 = (uint)*pbVar10;\n      pbVar10 = pbVar10 + 1;\n      if (uVar16 < uVar23) {\n        uVar16 = uVar23;\n      }\n      aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1;\n    }" ({ "{") (expression_statement "uVar23 = (uint)*pbVar10;" (assignment_expression "uVar23 = (uint)*pbVar10" (identifier "uVar23") (= "=") (binary_expression "(uint)*pbVar10" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar10"))) (; ";")) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + 1" (identifier "pbVar10") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar16 < uVar23) {\n        uVar16 = uVar23;\n      }" (if "if") (parenthesized_expression "(uVar16 < uVar23)" (( "(") (binary_expression "uVar16 < uVar23" (identifier "uVar16") (< "<") (identifier "uVar23")) () ")")) (compound_statement "{\n        uVar16 = uVar23;\n      }" ({ "{") (expression_statement "uVar16 = uVar23;" (assignment_expression "uVar16 = uVar23" (identifier "uVar16") (= "=") (identifier "uVar23")) (; ";")) (} "}"))) (expression_statement "aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1;" (assignment_expression "aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1" (subscript_expression "aiStack_50c[uVar23]" (identifier "aiStack_50c") ([ "[") (identifier "uVar23") (] "]")) (= "=") (binary_expression "aiStack_50c[uVar23] + 1" (subscript_expression "aiStack_50c[uVar23]" (identifier "aiStack_50c") ([ "[") (identifier "uVar23") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_1 + param_2 != pbVar10)" (( "(") (binary_expression "param_1 + param_2 != pbVar10" (binary_expression "param_1 + param_2" (identifier "param_1") (+ "+") (identifier "param_2")) (!= "!=") (identifier "pbVar10")) () ")")) (; ";")) (} "}"))) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" (identifier "uVar16") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar5 = auStack_4cc + 1;" (assignment_expression "puVar5 = auStack_4cc + 1" (identifier "puVar5") (= "=") (binary_expression "auStack_4cc + 1" (identifier "auStack_4cc") (+ "+") (number_literal "1"))) (; ";")) (do_statement "do {\n    uVar23 = *puVar19;\n    puVar11 = puVar5 + 1;\n    *puVar5 = uVar16;\n    puVar19 = puVar19 + 1;\n    uVar16 = (uVar16 + uVar23) * 2;\n    puVar5 = puVar11;\n  } while (puVar11 != local_48c);" (do "do") (compound_statement "{\n    uVar23 = *puVar19;\n    puVar11 = puVar5 + 1;\n    *puVar5 = uVar16;\n    puVar19 = puVar19 + 1;\n    uVar16 = (uVar16 + uVar23) * 2;\n    puVar5 = puVar11;\n  }" ({ "{") (expression_statement "uVar23 = *puVar19;" (assignment_expression "uVar23 = *puVar19" (identifier "uVar23") (= "=") (pointer_expression "*puVar19" (* "*") (identifier "puVar19"))) (; ";")) (expression_statement "puVar11 = puVar5 + 1;" (assignment_expression "puVar11 = puVar5 + 1" (identifier "puVar11") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar5 = uVar16;" (assignment_expression "*puVar5 = uVar16" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "uVar16")) (; ";")) (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" (identifier "puVar19") (= "=") (binary_expression "puVar19 + 1" (identifier "puVar19") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar16 = (uVar16 + uVar23) * 2;" (assignment_expression "uVar16 = (uVar16 + uVar23) * 2" (identifier "uVar16") (= "=") (binary_expression "(uVar16 + uVar23) * 2" (parenthesized_expression "(uVar16 + uVar23)" (( "(") (binary_expression "uVar16 + uVar23" (identifier "uVar16") (+ "+") (identifier "uVar23")) () ")")) (* "*") (number_literal "2"))) (; ";")) (expression_statement "puVar5 = puVar11;" (assignment_expression "puVar5 = puVar11" (identifier "puVar5") (= "=") (identifier "puVar11")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar11 != local_48c)" (( "(") (binary_expression "puVar11 != local_48c" (identifier "puVar11") (!= "!=") (identifier "local_48c")) () ")")) (; ";")) (expression_statement "pbVar10 = param_1;" (assignment_expression "pbVar10 = param_1" (identifier "pbVar10") (= "=") (identifier "param_1")) (; ";")) (expression_statement "puVar5 = local_48c;" (assignment_expression "puVar5 = local_48c" (identifier "puVar5") (= "=") (identifier "local_48c")) (; ";")) (if_statement "if (0 < param_2) {\n    do {\n      uVar23 = (uint)*pbVar10;\n      *puVar5 = 0;\n      uVar16 = auStack_4cc[uVar23];\n      auStack_4cc[uVar23] = uVar16 + 1;\n      if (uVar23 != 0) {\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar5 = puVar5 + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }" (if "if") (parenthesized_expression "(0 < param_2)" (( "(") (binary_expression "0 < param_2" (number_literal "0") (< "<") (identifier "param_2")) () ")")) (compound_statement "{\n    do {\n      uVar23 = (uint)*pbVar10;\n      *puVar5 = 0;\n      uVar16 = auStack_4cc[uVar23];\n      auStack_4cc[uVar23] = uVar16 + 1;\n      if (uVar23 != 0) {\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar5 = puVar5 + 1;\n    } while (param_1 + param_2 != pbVar10);\n  }" ({ "{") (do_statement "do {\n      uVar23 = (uint)*pbVar10;\n      *puVar5 = 0;\n      uVar16 = auStack_4cc[uVar23];\n      auStack_4cc[uVar23] = uVar16 + 1;\n      if (uVar23 != 0) {\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar5 = puVar5 + 1;\n    } while (param_1 + param_2 != pbVar10);" (do "do") (compound_statement "{\n      uVar23 = (uint)*pbVar10;\n      *puVar5 = 0;\n      uVar16 = auStack_4cc[uVar23];\n      auStack_4cc[uVar23] = uVar16 + 1;\n      if (uVar23 != 0) {\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }\n      pbVar10 = pbVar10 + 1;\n      puVar5 = puVar5 + 1;\n    }" ({ "{") (expression_statement "uVar23 = (uint)*pbVar10;" (assignment_expression "uVar23 = (uint)*pbVar10" (identifier "uVar23") (= "=") (binary_expression "(uint)*pbVar10" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar10"))) (; ";")) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar16 = auStack_4cc[uVar23];" (assignment_expression "uVar16 = auStack_4cc[uVar23]" (identifier "uVar16") (= "=") (subscript_expression "auStack_4cc[uVar23]" (identifier "auStack_4cc") ([ "[") (identifier "uVar23") (] "]"))) (; ";")) (expression_statement "auStack_4cc[uVar23] = uVar16 + 1;" (assignment_expression "auStack_4cc[uVar23] = uVar16 + 1" (subscript_expression "auStack_4cc[uVar23]" (identifier "auStack_4cc") ([ "[") (identifier "uVar23") (] "]")) (= "=") (binary_expression "uVar16 + 1" (identifier "uVar16") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar23 != 0) {\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }" (if "if") (parenthesized_expression "(uVar23 != 0)" (( "(") (binary_expression "uVar23 != 0" (identifier "uVar23") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar6 = 0;\n        uVar20 = 0;\n        do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);\n        *puVar5 = uVar6;\n      }" ({ "{") (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" (identifier "uVar20") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        } while (uVar23 != uVar20);" (do "do") (compound_statement "{\n          uVar20 = uVar20 + 1;\n          uVar6 = uVar6 << 1 | uVar16 & 1;\n          uVar16 = (int)uVar16 >> 1;\n        }" ({ "{") (expression_statement "uVar20 = uVar20 + 1;" (assignment_expression "uVar20 = uVar20 + 1" (identifier "uVar20") (= "=") (binary_expression "uVar20 + 1" (identifier "uVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar6 = uVar6 << 1 | uVar16 & 1;" (assignment_expression "uVar6 = uVar6 << 1 | uVar16 & 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 << 1 | uVar16 & 1" (binary_expression "uVar6 << 1" (identifier "uVar6") (<< "<<") (number_literal "1")) (| "|") (binary_expression "uVar16 & 1" (identifier "uVar16") (& "&") (number_literal "1")))) (; ";")) (expression_statement "uVar16 = (int)uVar16 >> 1;" (assignment_expression "uVar16 = (int)uVar16 >> 1" (identifier "uVar16") (= "=") (binary_expression "(int)uVar16 >> 1" (cast_expression "(int)uVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar16")) (>> ">>") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar23 != uVar20)" (( "(") (binary_expression "uVar23 != uVar20" (identifier "uVar23") (!= "!=") (identifier "uVar20")) () ")")) (; ";")) (expression_statement "*puVar5 = uVar6;" (assignment_expression "*puVar5 = uVar6" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "uVar6")) (; ";")) (} "}"))) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + 1" (identifier "pbVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_1 + param_2 != pbVar10)" (( "(") (binary_expression "param_1 + param_2 != pbVar10" (binary_expression "param_1 + param_2" (identifier "param_1") (+ "+") (identifier "param_2")) (!= "!=") (identifier "pbVar10")) () ")")) (; ";")) (} "}"))) (expression_statement "piVar21 = (int *)0x0;" (assignment_expression "piVar21 = (int *)0x0" (identifier "piVar21") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "FUN_00073648(local_48c);" (call_expression "FUN_00073648(local_48c)" (identifier "FUN_00073648") (argument_list "(local_48c)" (( "(") (identifier "local_48c") () ")"))) (; ";")) (if_statement "if (local_c == *(int **)puVar4) {\n    return;\n  }" (if "if") (parenthesized_expression "(local_c == *(int **)puVar4)" (( "(") (binary_expression "local_c == *(int **)puVar4" (identifier "local_c") (== "==") (pointer_expression "*(int **)puVar4" (* "*") (cast_expression "(int **)puVar4" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar4")))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "piVar12 = local_c;" (assignment_expression "piVar12 = local_c" (identifier "piVar12") (= "=") (identifier "local_c")) (; ";")) (expression_statement "puVar29 = PTR___stack_chk_fail_000adca4;" (assignment_expression "puVar29 = PTR___stack_chk_fail_000adca4" (identifier "puVar29") (= "=") (identifier "PTR___stack_chk_fail_000adca4")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000adca4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000adca4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000adca4)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000adca4" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000adca4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000adca4"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar7 = *(int **)(puVar29 + 0x3a284);" (assignment_expression "piVar7 = *(int **)(puVar29 + 0x3a284)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(puVar29 + 0x3a284)" (* "*") (cast_expression "(int **)(puVar29 + 0x3a284)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar29 + 0x3a284)" (( "(") (binary_expression "puVar29 + 0x3a284" (identifier "puVar29") (+ "+") (number_literal "0x3a284")) () ")"))))) (; ";")) (expression_statement "iVar28 = *piVar12;" (assignment_expression "iVar28 = *piVar12" (identifier "iVar28") (= "=") (pointer_expression "*piVar12" (* "*") (identifier "piVar12"))) (; ";")) (expression_statement "puStack_558 = puVar4;" (assignment_expression "puStack_558 = puVar4" (identifier "puStack_558") (= "=") (identifier "puVar4")) (; ";")) (expression_statement "iStack_55c = *piVar7;" (assignment_expression "iStack_55c = *piVar7" (identifier "iStack_55c") (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (; ";")) (expression_statement "iVar17 = *(int *)(iVar28 + 0x38ff8);" (assignment_expression "iVar17 = *(int *)(iVar28 + 0x38ff8)" (identifier "iVar17") (= "=") (pointer_expression "*(int *)(iVar28 + 0x38ff8)" (* "*") (cast_expression "(int *)(iVar28 + 0x38ff8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + 0x38ff8)" (( "(") (binary_expression "iVar28 + 0x38ff8" (identifier "iVar28") (+ "+") (number_literal "0x38ff8")) () ")"))))) (; ";")) (if_statement "if (iVar17 < 4) {\n    piVar13 = piVar12;\n    pbVar10 = param_1;\n    iVar18 = iVar17;\n    if (0 < iVar17) {\n      if (iVar17 + param_2 < 3) {\n        iVar27 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }\n      pbVar26 = (byte *)(iVar28 + 0x38ff2);\n      iVar24 = iVar27;\n      do {\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar24 < iVar17) != (int *)0x0);\n    }\nLAB_00073c5c:\n    uVar15 = SUB41(pbVar10,0);\n    *(int *)(iVar28 + 0x38ff8) = iVar18;\n    if (0 < param_2) {\n      iStack_674 = 0;\n      uStack_670 = 0;\n      bVar3 = param_2 < 3;\n      iVar17 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      } while (0 < param_2);\n    }\n    if (iStack_55c == *piVar7) {\n      return;\n    }\n  }\n  else {\n    iVar17 = *(int *)(puVar29 + 0x39878) + 0x72e0;\n    piVar13 = (int *)(*(int *)(puVar29 + 0x39878) + 0x72ec);\n    (**(code **)(puVar29 + 0x3a0b0))(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c);\n    uVar15 = (undefined1)iVar17;\n  }" (if "if") (parenthesized_expression "(iVar17 < 4)" (( "(") (binary_expression "iVar17 < 4" (identifier "iVar17") (< "<") (number_literal "4")) () ")")) (compound_statement "{\n    piVar13 = piVar12;\n    pbVar10 = param_1;\n    iVar18 = iVar17;\n    if (0 < iVar17) {\n      if (iVar17 + param_2 < 3) {\n        iVar27 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }\n      pbVar26 = (byte *)(iVar28 + 0x38ff2);\n      iVar24 = iVar27;\n      do {\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar24 < iVar17) != (int *)0x0);\n    }\nLAB_00073c5c:\n    uVar15 = SUB41(pbVar10,0);\n    *(int *)(iVar28 + 0x38ff8) = iVar18;\n    if (0 < param_2) {\n      iStack_674 = 0;\n      uStack_670 = 0;\n      bVar3 = param_2 < 3;\n      iVar17 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      } while (0 < param_2);\n    }\n    if (iStack_55c == *piVar7) {\n      return;\n    }\n  }" ({ "{") (expression_statement "piVar13 = piVar12;" (assignment_expression "piVar13 = piVar12" (identifier "piVar13") (= "=") (identifier "piVar12")) (; ";")) (expression_statement "pbVar10 = param_1;" (assignment_expression "pbVar10 = param_1" (identifier "pbVar10") (= "=") (identifier "param_1")) (; ";")) (expression_statement "iVar18 = iVar17;" (assignment_expression "iVar18 = iVar17" (identifier "iVar18") (= "=") (identifier "iVar17")) (; ";")) (if_statement "if (0 < iVar17) {\n      if (iVar17 + param_2 < 3) {\n        iVar27 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }\n      pbVar26 = (byte *)(iVar28 + 0x38ff2);\n      iVar24 = iVar27;\n      do {\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar24 < iVar17) != (int *)0x0);\n    }" (if "if") (parenthesized_expression "(0 < iVar17)" (( "(") (binary_expression "0 < iVar17" (number_literal "0") (< "<") (identifier "iVar17")) () ")")) (compound_statement "{\n      if (iVar17 + param_2 < 3) {\n        iVar27 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }\n      pbVar26 = (byte *)(iVar28 + 0x38ff2);\n      iVar24 = iVar27;\n      do {\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar24 < iVar17) != (int *)0x0);\n    }" ({ "{") (if_statement "if (iVar17 + param_2 < 3) {\n        iVar27 = 0;\n      }\n      else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }" (if "if") (parenthesized_expression "(iVar17 + param_2 < 3)" (( "(") (binary_expression "iVar17 + param_2 < 3" (binary_expression "iVar17 + param_2" (identifier "iVar17") (+ "+") (identifier "param_2")) (< "<") (number_literal "3")) () ")")) (compound_statement "{\n        iVar27 = 0;\n      }" ({ "{") (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" (identifier "iVar27") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }" (else "else") (compound_statement "{\n        piVar13 = *(int **)(iVar28 + 0x38000);\n        pbVar26 = &bStack_560;\n        iVar27 = iVar17 + param_2 + -2;\n        iVar25 = 3;\n        iVar24 = 0;\n        iVar18 = iVar24;\n        do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);\n        iVar18 = iVar17 - iVar27;\n      }" ({ "{") (expression_statement "piVar13 = *(int **)(iVar28 + 0x38000);" (assignment_expression "piVar13 = *(int **)(iVar28 + 0x38000)" (identifier "piVar13") (= "=") (pointer_expression "*(int **)(iVar28 + 0x38000)" (* "*") (cast_expression "(int **)(iVar28 + 0x38000)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar28 + 0x38000)" (( "(") (binary_expression "iVar28 + 0x38000" (identifier "iVar28") (+ "+") (number_literal "0x38000")) () ")"))))) (; ";")) (expression_statement "pbVar26 = &bStack_560;" (assignment_expression "pbVar26 = &bStack_560" (identifier "pbVar26") (= "=") (pointer_expression "&bStack_560" (& "&") (identifier "bStack_560"))) (; ";")) (expression_statement "iVar27 = iVar17 + param_2 + -2;" (assignment_expression "iVar27 = iVar17 + param_2 + -2" (identifier "iVar27") (= "=") (binary_expression "iVar17 + param_2 + -2" (binary_expression "iVar17 + param_2" (identifier "iVar17") (+ "+") (identifier "param_2")) (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "iVar25 = 3;" (assignment_expression "iVar25 = 3" (identifier "iVar25") (= "=") (number_literal "3")) (; ";")) (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" (identifier "iVar24") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar18 = iVar24;" (assignment_expression "iVar18 = iVar24" (identifier "iVar18") (= "=") (identifier "iVar24")) (; ";")) (do_statement "do {\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        } while (iVar24 != iVar27);" (do "do") (compound_statement "{\n          do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);\n          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);\n          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;\n          if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }\n          psVar8[2] = (short)uVar16;\n          psVar8[1] = -1;\n          iVar24 = iVar28 + uVar16 * 2;\n          sVar2 = *(short *)(iVar24 + 0x38004);\n          pbVar10 = (byte *)(int)sVar2;\n          *psVar8 = sVar2;\n          *(short *)(iVar24 + 0x38004) = (short)piVar13;\n          if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }\n          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);\n          iVar24 = iVar18 + 1;\n          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);\n          *pbVar9 = bStack_560;\n          *(int **)(iVar28 + 0x38000) = piVar13;\n          if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }\n          pbVar26 = pbVar26 + -1;\n          iVar25 = iVar25 + 1;\n          iVar18 = iVar24;\n        }" ({ "{") (do_statement "do {\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          } while (iVar24 != iVar25);" (do "do") (compound_statement "{\n            if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }\n            pbVar10 = pbVar26 + iVar24;\n            iVar24 = iVar24 + 1;\n            *pbVar10 = bVar14;\n          }" ({ "{") (if_statement "if (iVar24 < iVar17) {\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }\n            else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }" (if "if") (parenthesized_expression "(iVar24 < iVar17)" (( "(") (binary_expression "iVar24 < iVar17" (identifier "iVar24") (< "<") (identifier "iVar17")) () ")")) (compound_statement "{\n              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);\n            }" ({ "{") (expression_statement "bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);" (assignment_expression "bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2)" (identifier "bVar14") (= "=") (pointer_expression "*(byte *)(iVar28 + iVar24 + 0x38ff2)" (* "*") (cast_expression "(byte *)(iVar28 + iVar24 + 0x38ff2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + iVar24 + 0x38ff2)" (( "(") (binary_expression "iVar28 + iVar24 + 0x38ff2" (binary_expression "iVar28 + iVar24" (identifier "iVar28") (+ "+") (identifier "iVar24")) (+ "+") (number_literal "0x38ff2")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n              bVar14 = param_1[iVar24 - iVar17];\n            }" (else "else") (compound_statement "{\n              bVar14 = param_1[iVar24 - iVar17];\n            }" ({ "{") (expression_statement "bVar14 = param_1[iVar24 - iVar17];" (assignment_expression "bVar14 = param_1[iVar24 - iVar17]" (identifier "bVar14") (= "=") (subscript_expression "param_1[iVar24 - iVar17]" (identifier "param_1") ([ "[") (binary_expression "iVar24 - iVar17" (identifier "iVar24") (- "-") (identifier "iVar17")) (] "]"))) (; ";")) (} "}")))) (expression_statement "pbVar10 = pbVar26 + iVar24;" (assignment_expression "pbVar10 = pbVar26 + iVar24" (identifier "pbVar10") (= "=") (binary_expression "pbVar26 + iVar24" (identifier "pbVar26") (+ "+") (identifier "iVar24"))) (; ";")) (expression_statement "iVar24 = iVar24 + 1;" (assignment_expression "iVar24 = iVar24 + 1" (identifier "iVar24") (= "=") (binary_expression "iVar24 + 1" (identifier "iVar24") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*pbVar10 = bVar14;" (assignment_expression "*pbVar10 = bVar14" (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")) (= "=") (identifier "bVar14")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar24 != iVar25)" (( "(") (binary_expression "iVar24 != iVar25" (identifier "iVar24") (!= "!=") (identifier "iVar25")) () ")")) (; ";")) (expression_statement "psVar8 = (short *)(iVar28 + (int)piVar13 * 6);" (assignment_expression "psVar8 = (short *)(iVar28 + (int)piVar13 * 6)" (identifier "psVar8") (= "=") (cast_expression "(short *)(iVar28 + (int)piVar13 * 6)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + (int)piVar13 * 6)" (( "(") (binary_expression "iVar28 + (int)piVar13 * 6" (identifier "iVar28") (+ "+") (binary_expression "(int)piVar13 * 6" (cast_expression "(int)piVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar13")) (* "*") (number_literal "6"))) () ")")))) (; ";")) (expression_statement "uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7;" (assignment_expression "uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7" (identifier "uVar16") (= "=") (binary_expression "((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)\n                   % 0x7f7" (parenthesized_expression "((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)" (( "(") (binary_expression "(uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101" (binary_expression "(uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107" (binary_expression "(uint)bStack_55e * 0x10d" (cast_expression "(uint)bStack_55e" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bStack_55e")) (* "*") (number_literal "0x10d")) (+ "+") (binary_expression "(uint)bStack_55f * 0x107" (cast_expression "(uint)bStack_55f" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bStack_55f")) (* "*") (number_literal "0x107"))) (+ "+") (binary_expression "(uint)bStack_560 * 0x101" (cast_expression "(uint)bStack_560" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bStack_560")) (* "*") (number_literal "0x101"))) () ")")) (% "%") (number_literal "0x7f7"))) (; ";")) (if_statement "if (psVar8[1] == -1) {\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }\n          else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }" (if "if") (parenthesized_expression "(psVar8[1] == -1)" (( "(") (binary_expression "psVar8[1] == -1" (subscript_expression "psVar8[1]" (identifier "psVar8") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n            if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }\n          }" ({ "{") (if_statement "if (psVar8[2] != -1) {\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }" (if "if") (parenthesized_expression "(psVar8[2] != -1)" (( "(") (binary_expression "psVar8[2] != -1" (subscript_expression "psVar8[2]" (identifier "psVar8") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n            }" ({ "{") (expression_statement "*(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;" (assignment_expression "*(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff" (pointer_expression "*(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4)" (* "*") (cast_expression "(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4)" (( "(") (binary_expression "iVar28 + (psVar8[2] + 0x1c000) * 2 + 4" (binary_expression "iVar28 + (psVar8[2] + 0x1c000) * 2" (identifier "iVar28") (+ "+") (binary_expression "(psVar8[2] + 0x1c000) * 2" (parenthesized_expression "(psVar8[2] + 0x1c000)" (( "(") (binary_expression "psVar8[2] + 0x1c000" (subscript_expression "psVar8[2]" (identifier "psVar8") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "0x1c000")) () ")")) (* "*") (number_literal "2"))) (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0xffff")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }" (else "else") (compound_statement "{\n            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n          }" ({ "{") (expression_statement "*(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;" (assignment_expression "*(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff" (pointer_expression "*(undefined2 *)(iVar28 + psVar8[1] * 6)" (* "*") (cast_expression "(undefined2 *)(iVar28 + psVar8[1] * 6)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + psVar8[1] * 6)" (( "(") (binary_expression "iVar28 + psVar8[1] * 6" (identifier "iVar28") (+ "+") (binary_expression "psVar8[1] * 6" (subscript_expression "psVar8[1]" (identifier "psVar8") ([ "[") (number_literal "1") (] "]")) (* "*") (number_literal "6"))) () ")")))) (= "=") (number_literal "0xffff")) (; ";")) (} "}")))) (expression_statement "psVar8[2] = (short)uVar16;" (assignment_expression "psVar8[2] = (short)uVar16" (subscript_expression "psVar8[2]" (identifier "psVar8") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(short)uVar16" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar16"))) (; ";")) (expression_statement "psVar8[1] = -1;" (assignment_expression "psVar8[1] = -1" (subscript_expression "psVar8[1]" (identifier "psVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "-1")) (; ";")) (expression_statement "iVar24 = iVar28 + uVar16 * 2;" (assignment_expression "iVar24 = iVar28 + uVar16 * 2" (identifier "iVar24") (= "=") (binary_expression "iVar28 + uVar16 * 2" (identifier "iVar28") (+ "+") (binary_expression "uVar16 * 2" (identifier "uVar16") (* "*") (number_literal "2")))) (; ";")) (expression_statement "sVar2 = *(short *)(iVar24 + 0x38004);" (assignment_expression "sVar2 = *(short *)(iVar24 + 0x38004)" (identifier "sVar2") (= "=") (pointer_expression "*(short *)(iVar24 + 0x38004)" (* "*") (cast_expression "(short *)(iVar24 + 0x38004)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar24 + 0x38004)" (( "(") (binary_expression "iVar24 + 0x38004" (identifier "iVar24") (+ "+") (number_literal "0x38004")) () ")"))))) (; ";")) (expression_statement "pbVar10 = (byte *)(int)sVar2;" (assignment_expression "pbVar10 = (byte *)(int)sVar2" (identifier "pbVar10") (= "=") (cast_expression "(byte *)(int)sVar2" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)sVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar2")))) (; ";")) (expression_statement "*psVar8 = sVar2;" (assignment_expression "*psVar8 = sVar2" (pointer_expression "*psVar8" (* "*") (identifier "psVar8")) (= "=") (identifier "sVar2")) (; ";")) (expression_statement "*(short *)(iVar24 + 0x38004) = (short)piVar13;" (assignment_expression "*(short *)(iVar24 + 0x38004) = (short)piVar13" (pointer_expression "*(short *)(iVar24 + 0x38004)" (* "*") (cast_expression "(short *)(iVar24 + 0x38004)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar24 + 0x38004)" (( "(") (binary_expression "iVar24 + 0x38004" (identifier "iVar24") (+ "+") (number_literal "0x38004")) () ")")))) (= "=") (cast_expression "(short)piVar13" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "piVar13"))) (; ";")) (if_statement "if (pbVar10 != (byte *)0xffffffff) {\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }" (if "if") (parenthesized_expression "(pbVar10 != (byte *)0xffffffff)" (( "(") (binary_expression "pbVar10 != (byte *)0xffffffff" (identifier "pbVar10") (!= "!=") (cast_expression "(byte *)0xffffffff" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (compound_statement "{\n            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;\n          }" ({ "{") (expression_statement "*(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;" (assignment_expression "*(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13" (pointer_expression "*(short *)(iVar28 + (int)pbVar10 * 6 + 2)" (* "*") (cast_expression "(short *)(iVar28 + (int)pbVar10 * 6 + 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + (int)pbVar10 * 6 + 2)" (( "(") (binary_expression "iVar28 + (int)pbVar10 * 6 + 2" (binary_expression "iVar28 + (int)pbVar10 * 6" (identifier "iVar28") (+ "+") (binary_expression "(int)pbVar10 * 6" (cast_expression "(int)pbVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar10")) (* "*") (number_literal "6"))) (+ "+") (number_literal "2")) () ")")))) (= "=") (cast_expression "(short)piVar13" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "piVar13"))) (; ";")) (} "}"))) (expression_statement "pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);" (assignment_expression "pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000)" (identifier "pbVar9") (= "=") (cast_expression "(byte *)((int)piVar13 + iVar28 + 0x30000)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar13 + iVar28 + 0x30000)" (( "(") (binary_expression "(int)piVar13 + iVar28 + 0x30000" (binary_expression "(int)piVar13 + iVar28" (cast_expression "(int)piVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar13")) (+ "+") (identifier "iVar28")) (+ "+") (number_literal "0x30000")) () ")")))) (; ";")) (expression_statement "iVar24 = iVar18 + 1;" (assignment_expression "iVar24 = iVar18 + 1" (identifier "iVar24") (= "=") (binary_expression "iVar18 + 1" (identifier "iVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);" (assignment_expression "piVar13 = (int *)((int)piVar13 + 1U & 0x7fff)" (identifier "piVar13") (= "=") (cast_expression "(int *)((int)piVar13 + 1U & 0x7fff)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar13 + 1U & 0x7fff)" (( "(") (binary_expression "(int)piVar13 + 1U & 0x7fff" (binary_expression "(int)piVar13 + 1U" (cast_expression "(int)piVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar13")) (+ "+") (number_literal "1U")) (& "&") (number_literal "0x7fff")) () ")")))) (; ";")) (expression_statement "*pbVar9 = bStack_560;" (assignment_expression "*pbVar9 = bStack_560" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (= "=") (identifier "bStack_560")) (; ";")) (expression_statement "*(int **)(iVar28 + 0x38000) = piVar13;" (assignment_expression "*(int **)(iVar28 + 0x38000) = piVar13" (pointer_expression "*(int **)(iVar28 + 0x38000)" (* "*") (cast_expression "(int **)(iVar28 + 0x38000)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar28 + 0x38000)" (( "(") (binary_expression "iVar28 + 0x38000" (identifier "iVar28") (+ "+") (number_literal "0x38000")) () ")")))) (= "=") (identifier "piVar13")) (; ";")) (if_statement "if (iVar17 == iVar24) {\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }" (if "if") (parenthesized_expression "(iVar17 == iVar24)" (( "(") (binary_expression "iVar17 == iVar24" (identifier "iVar17") (== "==") (identifier "iVar24")) () ")")) (compound_statement "{\n            iVar18 = 0;\n            goto LAB_00073c5c;\n          }" ({ "{") (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" (identifier "iVar18") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00073c5c;" (goto "goto") (statement_identifier "LAB_00073c5c") (; ";")) (} "}"))) (expression_statement "pbVar26 = pbVar26 + -1;" (assignment_expression "pbVar26 = pbVar26 + -1" (identifier "pbVar26") (= "=") (binary_expression "pbVar26 + -1" (identifier "pbVar26") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar25 = iVar25 + 1;" (assignment_expression "iVar25 = iVar25 + 1" (identifier "iVar25") (= "=") (binary_expression "iVar25 + 1" (identifier "iVar25") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar18 = iVar24;" (assignment_expression "iVar18 = iVar24" (identifier "iVar18") (= "=") (identifier "iVar24")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar24 != iVar27)" (( "(") (binary_expression "iVar24 != iVar27" (identifier "iVar24") (!= "!=") (identifier "iVar27")) () ")")) (; ";")) (expression_statement "iVar18 = iVar17 - iVar27;" (assignment_expression "iVar18 = iVar17 - iVar27" (identifier "iVar18") (= "=") (binary_expression "iVar17 - iVar27" (identifier "iVar17") (- "-") (identifier "iVar27"))) (; ";")) (} "}")))) (expression_statement "pbVar26 = (byte *)(iVar28 + 0x38ff2);" (assignment_expression "pbVar26 = (byte *)(iVar28 + 0x38ff2)" (identifier "pbVar26") (= "=") (cast_expression "(byte *)(iVar28 + 0x38ff2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + 0x38ff2)" (( "(") (binary_expression "iVar28 + 0x38ff2" (identifier "iVar28") (+ "+") (number_literal "0x38ff2")) () ")")))) (; ";")) (expression_statement "iVar24 = iVar27;" (assignment_expression "iVar24 = iVar27" (identifier "iVar24") (= "=") (identifier "iVar27")) (; ";")) (do_statement "do {\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      } while ((int *)(uint)(iVar24 < iVar17) != (int *)0x0);" (do "do") (compound_statement "{\n        iVar24 = iVar24 + 1;\n        bVar14 = pbVar26[iVar27];\n        *pbVar26 = bVar14;\n        pbVar26 = pbVar26 + 1;\n        piVar13 = (int *)(uint)(iVar24 < iVar17);\n        pbVar10 = (byte *)(uint)bVar14;\n      }" ({ "{") (expression_statement "iVar24 = iVar24 + 1;" (assignment_expression "iVar24 = iVar24 + 1" (identifier "iVar24") (= "=") (binary_expression "iVar24 + 1" (identifier "iVar24") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar14 = pbVar26[iVar27];" (assignment_expression "bVar14 = pbVar26[iVar27]" (identifier "bVar14") (= "=") (subscript_expression "pbVar26[iVar27]" (identifier "pbVar26") ([ "[") (identifier "iVar27") (] "]"))) (; ";")) (expression_statement "*pbVar26 = bVar14;" (assignment_expression "*pbVar26 = bVar14" (pointer_expression "*pbVar26" (* "*") (identifier "pbVar26")) (= "=") (identifier "bVar14")) (; ";")) (expression_statement "pbVar26 = pbVar26 + 1;" (assignment_expression "pbVar26 = pbVar26 + 1" (identifier "pbVar26") (= "=") (binary_expression "pbVar26 + 1" (identifier "pbVar26") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar13 = (int *)(uint)(iVar24 < iVar17);" (assignment_expression "piVar13 = (int *)(uint)(iVar24 < iVar17)" (identifier "piVar13") (= "=") (cast_expression "(int *)(uint)(iVar24 < iVar17)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)(iVar24 < iVar17)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar24 < iVar17)" (( "(") (binary_expression "iVar24 < iVar17" (identifier "iVar24") (< "<") (identifier "iVar17")) () ")"))))) (; ";")) (expression_statement "pbVar10 = (byte *)(uint)bVar14;" (assignment_expression "pbVar10 = (byte *)(uint)bVar14" (identifier "pbVar10") (= "=") (cast_expression "(byte *)(uint)bVar14" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(uint)bVar14" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar14")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int *)(uint)(iVar24 < iVar17) != (int *)0x0)" (( "(") (binary_expression "(int *)(uint)(iVar24 < iVar17) != (int *)0x0" (cast_expression "(int *)(uint)(iVar24 < iVar17)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)(iVar24 < iVar17)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar24 < iVar17)" (( "(") (binary_expression "iVar24 < iVar17" (identifier "iVar24") (< "<") (identifier "iVar17")) () ")")))) (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00073c5c:\n    uVar15 = SUB41(pbVar10,0);" (statement_identifier "LAB_00073c5c") (: ":") (expression_statement "uVar15 = SUB41(pbVar10,0);" (assignment_expression "uVar15 = SUB41(pbVar10,0)" (identifier "uVar15") (= "=") (call_expression "SUB41(pbVar10,0)" (identifier "SUB41") (argument_list "(pbVar10,0)" (( "(") (identifier "pbVar10") (, ",") (number_literal "0") () ")")))) (; ";"))) (expression_statement "*(int *)(iVar28 + 0x38ff8) = iVar18;" (assignment_expression "*(int *)(iVar28 + 0x38ff8) = iVar18" (pointer_expression "*(int *)(iVar28 + 0x38ff8)" (* "*") (cast_expression "(int *)(iVar28 + 0x38ff8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + 0x38ff8)" (( "(") (binary_expression "iVar28 + 0x38ff8" (identifier "iVar28") (+ "+") (number_literal "0x38ff8")) () ")")))) (= "=") (identifier "iVar18")) (; ";")) (if_statement "if (0 < param_2) {\n      iStack_674 = 0;\n      uStack_670 = 0;\n      bVar3 = param_2 < 3;\n      iVar17 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      } while (0 < param_2);\n    }" (if "if") (parenthesized_expression "(0 < param_2)" (( "(") (binary_expression "0 < param_2" (number_literal "0") (< "<") (identifier "param_2")) () ")")) (compound_statement "{\n      iStack_674 = 0;\n      uStack_670 = 0;\n      bVar3 = param_2 < 3;\n      iVar17 = 0;\n      do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      } while (0 < param_2);\n    }" ({ "{") (expression_statement "iStack_674 = 0;" (assignment_expression "iStack_674 = 0" (identifier "iStack_674") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_670 = 0;" (assignment_expression "uStack_670 = 0" (identifier "uStack_670") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar3 = param_2 < 3;" (assignment_expression "bVar3 = param_2 < 3" (identifier "bVar3") (= "=") (binary_expression "param_2 < 3" (identifier "param_2") (< "<") (number_literal "3"))) (; ";")) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" (identifier "iVar17") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      } while (0 < param_2);" (do "do") (compound_statement "{\n        do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);\n        uVar15 = 0xff;\n        pbVar10 = param_1 + (int)piVar13;\n        while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }\n        param_2 = param_2 + -1;\n        param_1 = param_1 + 1;\n        bVar3 = param_2 < 3;\n        iVar17 = iVar18;\n      }" ({ "{") (do_statement "do {\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        } while (piVar13 == (int *)0x0);" (do "do") (compound_statement "{\n          if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }\nLAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }\nLAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);\n          piVar13 = (int *)(iVar17 - 1);\n          iVar18 = 0;\n          iVar17 = 0;\n        }" ({ "{") (if_statement "if ((piVar21 != (int *)0x0) && (!bVar3)) {\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }" (if "if") (parenthesized_expression "((piVar21 != (int *)0x0) && (!bVar3))" (( "(") (binary_expression "(piVar21 != (int *)0x0) && (!bVar3)" (parenthesized_expression "(piVar21 != (int *)0x0)" (( "(") (binary_expression "piVar21 != (int *)0x0" (identifier "piVar21") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(!bVar3)" (( "(") (unary_expression "!bVar3" (! "!") (identifier "bVar3")) () ")"))) () ")")) (compound_statement "{\n            uVar16 = (uint)*param_1;\n            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);\n            if (iVar18 == -1) goto LAB_00073ca0;\n            iVar24 = *(int *)(iVar28 + 0x38000);\n            iVar27 = 0;\n            do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);\n            if (iVar25 == 0) goto LAB_00073ca0;\nLAB_00073fc8:\n            iVar18 = 3;\n            if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }\n            piVar13 = piVar21;\n            aiStack_660[1] = iVar18;\n            if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }\n            iStack_674 = aiStack_660[0];\n            uStack_670 = uVar16;\n            break;\n          }" ({ "{") (expression_statement "uVar16 = (uint)*param_1;" (assignment_expression "uVar16 = (uint)*param_1" (identifier "uVar16") (= "=") (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "param_1"))) (; ";")) (expression_statement "iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4);" (assignment_expression "iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4)" (identifier "iVar18") (= "=") (cast_expression "(int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4)" (* "*") (cast_expression "(short *)(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4)" (( "(") (binary_expression "iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2 + 4" (binary_expression "iVar28 + (((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2" (identifier "iVar28") (+ "+") (binary_expression "(((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000) * 2" (parenthesized_expression "(((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000)" (( "(") (binary_expression "((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +\n                                              0x1c000" (binary_expression "((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7" (parenthesized_expression "((uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101)" (( "(") (binary_expression "(uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101" (binary_expression "(uint)param_1[2] * 0x10d +\n                                               (uint)param_1[1] * 0x107" (binary_expression "(uint)param_1[2] * 0x10d" (cast_expression "(uint)param_1[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (* "*") (number_literal "0x10d")) (+ "+") (binary_expression "(uint)param_1[1] * 0x107" (cast_expression "(uint)param_1[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (* "*") (number_literal "0x107"))) (+ "+") (binary_expression "uVar16 * 0x101" (identifier "uVar16") (* "*") (number_literal "0x101"))) () ")")) (% "%") (number_literal "0x7f7")) (+ "+") (number_literal "0x1c000")) () ")")) (* "*") (number_literal "2"))) (+ "+") (number_literal "4")) () ")")))))) (; ";")) (if_statement "if (iVar18 == -1) goto LAB_00073ca0;" (if "if") (parenthesized_expression "(iVar18 == -1)" (( "(") (binary_expression "iVar18 == -1" (identifier "iVar18") (== "==") (number_literal "-1")) () ")")) (goto_statement "goto LAB_00073ca0;" (goto "goto") (statement_identifier "LAB_00073ca0") (; ";"))) (expression_statement "iVar24 = *(int *)(iVar28 + 0x38000);" (assignment_expression "iVar24 = *(int *)(iVar28 + 0x38000)" (identifier "iVar24") (= "=") (pointer_expression "*(int *)(iVar28 + 0x38000)" (* "*") (cast_expression "(int *)(iVar28 + 0x38000)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + 0x38000)" (( "(") (binary_expression "iVar28 + 0x38000" (identifier "iVar28") (+ "+") (number_literal "0x38000")) () ")"))))) (; ";")) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" (identifier "iVar27") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            } while (iVar18 != -1);" (do "do") (compound_statement "{\n              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;\n              if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }\n              iVar22 = 0x8000 - uVar23;\n              iVar25 = uVar23 - 0x8000;\n              uVar23 = uVar16;\n              if (iVar25 < 0) goto LAB_00073f88;\n              while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }\nLAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);\n              iVar25 = iVar27;\njoined_r0x00074094:\n              iVar18 = (int)sVar2;\n              iVar27 = iVar25;\n            }" ({ "{") (expression_statement "uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;" (assignment_expression "uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff" (identifier "uVar23") (= "=") (binary_expression "(iVar18 + 0x8000) - iVar24 & 0x80007fff" (binary_expression "(iVar18 + 0x8000) - iVar24" (parenthesized_expression "(iVar18 + 0x8000)" (( "(") (binary_expression "iVar18 + 0x8000" (identifier "iVar18") (+ "+") (number_literal "0x8000")) () ")")) (- "-") (identifier "iVar24")) (& "&") (number_literal "0x80007fff"))) (; ";")) (if_statement "if ((int)uVar23 < 0) {\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }" (if "if") (parenthesized_expression "((int)uVar23 < 0)" (( "(") (binary_expression "(int)uVar23 < 0" (cast_expression "(int)uVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar23")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;\n              }" ({ "{") (expression_statement "uVar23 = (uVar23 - 1 | 0xffff8000) + 1;" (assignment_expression "uVar23 = (uVar23 - 1 | 0xffff8000) + 1" (identifier "uVar23") (= "=") (binary_expression "(uVar23 - 1 | 0xffff8000) + 1" (parenthesized_expression "(uVar23 - 1 | 0xffff8000)" (( "(") (binary_expression "uVar23 - 1 | 0xffff8000" (binary_expression "uVar23 - 1" (identifier "uVar23") (- "-") (number_literal "1")) (| "|") (number_literal "0xffff8000")) () ")")) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "iVar22 = 0x8000 - uVar23;" (assignment_expression "iVar22 = 0x8000 - uVar23" (identifier "iVar22") (= "=") (binary_expression "0x8000 - uVar23" (number_literal "0x8000") (- "-") (identifier "uVar23"))) (; ";")) (expression_statement "iVar25 = uVar23 - 0x8000;" (assignment_expression "iVar25 = uVar23 - 0x8000" (identifier "iVar25") (= "=") (binary_expression "uVar23 - 0x8000" (identifier "uVar23") (- "-") (number_literal "0x8000"))) (; ";")) (expression_statement "uVar23 = uVar16;" (assignment_expression "uVar23 = uVar16" (identifier "uVar23") (= "=") (identifier "uVar16")) (; ";")) (if_statement "if (iVar25 < 0) goto LAB_00073f88;" (if "if") (parenthesized_expression "(iVar25 < 0)" (( "(") (binary_expression "iVar25 < 0" (identifier "iVar25") (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_00073f88;" (goto "goto") (statement_identifier "LAB_00073f88") (; ";"))) (while_statement "while (param_1[iVar25] == uVar23) {\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }" (while "while") (parenthesized_expression "(param_1[iVar25] == uVar23)" (( "(") (binary_expression "param_1[iVar25] == uVar23" (subscript_expression "param_1[iVar25]" (identifier "param_1") ([ "[") (identifier "iVar25") (] "]")) (== "==") (identifier "uVar23")) () ")")) (compound_statement "{\n                while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }\n              }" ({ "{") (while_statement "while( true ) {\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                  iVar25 = iVar25 + 1;\n                  if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }\n                  uVar23 = (uint)param_1[iVar22 + iVar25];\n                  if (-1 < iVar25) break;\nLAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;\n                }" ({ "{") (expression_statement "iVar25 = iVar25 + 1;" (assignment_expression "iVar25 = iVar25 + 1" (identifier "iVar25") (= "=") (binary_expression "iVar25 + 1" (identifier "iVar25") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (3 - iVar22 == iVar25) {\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }" (if "if") (parenthesized_expression "(3 - iVar22 == iVar25)" (( "(") (binary_expression "3 - iVar22 == iVar25" (binary_expression "3 - iVar22" (number_literal "3") (- "-") (identifier "iVar22")) (== "==") (identifier "iVar25")) () ")")) (compound_statement "{\n                    iVar25 = iVar27 + 1;\n                    aiStack_660[iVar27 * 2] = iVar22;\n                    aiStack_660[iVar27 * 2 + 1] = 3;\n                    if (0x1f < iVar25) goto LAB_00073fc8;\n                    sVar2 = *(short *)(iVar28 + iVar18 * 6);\n                    goto joined_r0x00074094;\n                  }" ({ "{") (expression_statement "iVar25 = iVar27 + 1;" (assignment_expression "iVar25 = iVar27 + 1" (identifier "iVar25") (= "=") (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "aiStack_660[iVar27 * 2] = iVar22;" (assignment_expression "aiStack_660[iVar27 * 2] = iVar22" (subscript_expression "aiStack_660[iVar27 * 2]" (identifier "aiStack_660") ([ "[") (binary_expression "iVar27 * 2" (identifier "iVar27") (* "*") (number_literal "2")) (] "]")) (= "=") (identifier "iVar22")) (; ";")) (expression_statement "aiStack_660[iVar27 * 2 + 1] = 3;" (assignment_expression "aiStack_660[iVar27 * 2 + 1] = 3" (subscript_expression "aiStack_660[iVar27 * 2 + 1]" (identifier "aiStack_660") ([ "[") (binary_expression "iVar27 * 2 + 1" (binary_expression "iVar27 * 2" (identifier "iVar27") (* "*") (number_literal "2")) (+ "+") (number_literal "1")) (] "]")) (= "=") (number_literal "3")) (; ";")) (if_statement "if (0x1f < iVar25) goto LAB_00073fc8;" (if "if") (parenthesized_expression "(0x1f < iVar25)" (( "(") (binary_expression "0x1f < iVar25" (number_literal "0x1f") (< "<") (identifier "iVar25")) () ")")) (goto_statement "goto LAB_00073fc8;" (goto "goto") (statement_identifier "LAB_00073fc8") (; ";"))) (expression_statement "sVar2 = *(short *)(iVar28 + iVar18 * 6);" (assignment_expression "sVar2 = *(short *)(iVar28 + iVar18 * 6)" (identifier "sVar2") (= "=") (pointer_expression "*(short *)(iVar28 + iVar18 * 6)" (* "*") (cast_expression "(short *)(iVar28 + iVar18 * 6)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + iVar18 * 6)" (( "(") (binary_expression "iVar28 + iVar18 * 6" (identifier "iVar28") (+ "+") (binary_expression "iVar18 * 6" (identifier "iVar18") (* "*") (number_literal "6"))) () ")"))))) (; ";")) (goto_statement "goto joined_r0x00074094;" (goto "goto") (statement_identifier "joined_r0x00074094") (; ";")) (} "}"))) (expression_statement "uVar23 = (uint)param_1[iVar22 + iVar25];" (assignment_expression "uVar23 = (uint)param_1[iVar22 + iVar25]" (identifier "uVar23") (= "=") (cast_expression "(uint)param_1[iVar22 + iVar25]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[iVar22 + iVar25]" (identifier "param_1") ([ "[") (binary_expression "iVar22 + iVar25" (identifier "iVar22") (+ "+") (identifier "iVar25")) (] "]")))) (; ";")) (if_statement "if (-1 < iVar25) break;" (if "if") (parenthesized_expression "(-1 < iVar25)" (( "(") (binary_expression "-1 < iVar25" (number_literal "-1") (< "<") (identifier "iVar25")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_00073f88:\n                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;" (statement_identifier "LAB_00073f88") (: ":") (if_statement "if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)\n                  goto LAB_00073fa4;" (if "if") (parenthesized_expression "(*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)" (( "(") (binary_expression "*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23" (pointer_expression "*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000)" (* "*") (cast_expression "(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000)" (( "(") (binary_expression "iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000" (binary_expression "iVar28 + (iVar24 + iVar25 & 0x7fffU)" (identifier "iVar28") (+ "+") (parenthesized_expression "(iVar24 + iVar25 & 0x7fffU)" (( "(") (binary_expression "iVar24 + iVar25 & 0x7fffU" (binary_expression "iVar24 + iVar25" (identifier "iVar24") (+ "+") (identifier "iVar25")) (& "&") (number_literal "0x7fffU")) () ")"))) (+ "+") (number_literal "0x30000")) () ")")))) (!= "!=") (identifier "uVar23")) () ")")) (goto_statement "goto LAB_00073fa4;" (goto "goto") (statement_identifier "LAB_00073fa4") (; ";")))) (} "}"))) (} "}"))) (labeled_statement "LAB_00073fa4:\n              sVar2 = *(short *)(iVar28 + iVar18 * 6);" (statement_identifier "LAB_00073fa4") (: ":") (expression_statement "sVar2 = *(short *)(iVar28 + iVar18 * 6);" (assignment_expression "sVar2 = *(short *)(iVar28 + iVar18 * 6)" (identifier "sVar2") (= "=") (pointer_expression "*(short *)(iVar28 + iVar18 * 6)" (* "*") (cast_expression "(short *)(iVar28 + iVar18 * 6)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + iVar18 * 6)" (( "(") (binary_expression "iVar28 + iVar18 * 6" (identifier "iVar28") (+ "+") (binary_expression "iVar18 * 6" (identifier "iVar18") (* "*") (number_literal "6"))) () ")"))))) (; ";"))) (expression_statement "iVar25 = iVar27;" (assignment_expression "iVar25 = iVar27" (identifier "iVar25") (= "=") (identifier "iVar27")) (; ";")) (labeled_statement "joined_r0x00074094:\n              iVar18 = (int)sVar2;" (statement_identifier "joined_r0x00074094") (: ":") (expression_statement "iVar18 = (int)sVar2;" (assignment_expression "iVar18 = (int)sVar2" (identifier "iVar18") (= "=") (cast_expression "(int)sVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar2"))) (; ";"))) (expression_statement "iVar27 = iVar25;" (assignment_expression "iVar27 = iVar25" (identifier "iVar27") (= "=") (identifier "iVar25")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar18 != -1)" (( "(") (binary_expression "iVar18 != -1" (identifier "iVar18") (!= "!=") (number_literal "-1")) () ")")) (; ";")) (if_statement "if (iVar25 == 0) goto LAB_00073ca0;" (if "if") (parenthesized_expression "(iVar25 == 0)" (( "(") (binary_expression "iVar25 == 0" (identifier "iVar25") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00073ca0;" (goto "goto") (statement_identifier "LAB_00073ca0") (; ";"))) (labeled_statement "LAB_00073fc8:\n            iVar18 = 3;" (statement_identifier "LAB_00073fc8") (: ":") (expression_statement "iVar18 = 3;" (assignment_expression "iVar18 = 3" (identifier "iVar18") (= "=") (number_literal "3")) (; ";"))) (if_statement "if (param_2 != 3) {\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }" (if "if") (parenthesized_expression "(param_2 != 3)" (( "(") (binary_expression "param_2 != 3" (identifier "param_2") (!= "!=") (number_literal "3")) () ")")) (compound_statement "{\n              pbVar10 = param_1 + 3;\n              do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);\n            }" ({ "{") (expression_statement "pbVar10 = param_1 + 3;" (assignment_expression "pbVar10 = param_1 + 3" (identifier "pbVar10") (= "=") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              } while (iVar18 != param_2);" (do "do") (compound_statement "{\n                bVar14 = *pbVar10;\n                iVar27 = iVar25 * 2;\n                piVar13 = aiStack_660;\n                iVar24 = 0;\n                do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);\n                if (iVar25 == 0) break;\n                iVar18 = iVar18 + 1;\n                pbVar10 = param_1 + iVar18;\n              }" ({ "{") (expression_statement "bVar14 = *pbVar10;" (assignment_expression "bVar14 = *pbVar10" (identifier "bVar14") (= "=") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10"))) (; ";")) (expression_statement "iVar27 = iVar25 * 2;" (assignment_expression "iVar27 = iVar25 * 2" (identifier "iVar27") (= "=") (binary_expression "iVar25 * 2" (identifier "iVar25") (* "*") (number_literal "2"))) (; ";")) (expression_statement "piVar13 = aiStack_660;" (assignment_expression "piVar13 = aiStack_660" (identifier "piVar13") (= "=") (identifier "aiStack_660")) (; ";")) (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" (identifier "iVar24") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                } while (aiStack_660 + iVar27 != piVar13);" (do "do") (compound_statement "{\n                  iVar25 = iVar18 - *piVar13;\n                  if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }\n                  iVar25 = iVar24;\n                  if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }\n                  piVar13 = piVar13 + 2;\n                  iVar24 = iVar25;\n                }" ({ "{") (expression_statement "iVar25 = iVar18 - *piVar13;" (assignment_expression "iVar25 = iVar18 - *piVar13" (identifier "iVar25") (= "=") (binary_expression "iVar18 - *piVar13" (identifier "iVar18") (- "-") (pointer_expression "*piVar13" (* "*") (identifier "piVar13")))) (; ";")) (if_statement "if (iVar25 < 0) {\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }\n                  else {\n                    bVar1 = param_1[iVar25];\n                  }" (if "if") (parenthesized_expression "(iVar25 < 0)" (( "(") (binary_expression "iVar25 < 0" (identifier "iVar25") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);\n                  }" ({ "{") (expression_statement "bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000);" (assignment_expression "bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000)" (* "*") (cast_expression "(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000)" (( "(") (binary_expression "iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU) + 0x30000" (binary_expression "iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU)" (identifier "iVar28") (+ "+") (parenthesized_expression "((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU)" (( "(") (binary_expression "(iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &\n                                               0x7fffU" (binary_expression "(iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13" (parenthesized_expression "(iVar18 + *(int *)(iVar28 + 0x38000))" (( "(") (binary_expression "iVar18 + *(int *)(iVar28 + 0x38000)" (identifier "iVar18") (+ "+") (pointer_expression "*(int *)(iVar28 + 0x38000)" (* "*") (cast_expression "(int *)(iVar28 + 0x38000)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + 0x38000)" (( "(") (binary_expression "iVar28 + 0x38000" (identifier "iVar28") (+ "+") (number_literal "0x38000")) () ")"))))) () ")")) (- "-") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) (& "&") (number_literal "0x7fffU")) () ")"))) (+ "+") (number_literal "0x30000")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n                    bVar1 = param_1[iVar25];\n                  }" (else "else") (compound_statement "{\n                    bVar1 = param_1[iVar25];\n                  }" ({ "{") (expression_statement "bVar1 = param_1[iVar25];" (assignment_expression "bVar1 = param_1[iVar25]" (identifier "bVar1") (= "=") (subscript_expression "param_1[iVar25]" (identifier "param_1") ([ "[") (identifier "iVar25") (] "]"))) (; ";")) (} "}")))) (expression_statement "iVar25 = iVar24;" (assignment_expression "iVar25 = iVar24" (identifier "iVar25") (= "=") (identifier "iVar24")) (; ";")) (if_statement "if (bVar1 == bVar14) {\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }" (if "if") (parenthesized_expression "(bVar1 == bVar14)" (( "(") (binary_expression "bVar1 == bVar14" (identifier "bVar1") (== "==") (identifier "bVar14")) () ")")) (compound_statement "{\n                    iVar22 = piVar13[1];\n                    iVar25 = iVar24 + 1;\n                    aiStack_660[iVar24 * 2] = *piVar13;\n                    aiStack_660[iVar24 * 2 + 1] = iVar22;\n                  }" ({ "{") (expression_statement "iVar22 = piVar13[1];" (assignment_expression "iVar22 = piVar13[1]" (identifier "iVar22") (= "=") (subscript_expression "piVar13[1]" (identifier "piVar13") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar25 = iVar24 + 1;" (assignment_expression "iVar25 = iVar24 + 1" (identifier "iVar25") (= "=") (binary_expression "iVar24 + 1" (identifier "iVar24") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "aiStack_660[iVar24 * 2] = *piVar13;" (assignment_expression "aiStack_660[iVar24 * 2] = *piVar13" (subscript_expression "aiStack_660[iVar24 * 2]" (identifier "aiStack_660") ([ "[") (binary_expression "iVar24 * 2" (identifier "iVar24") (* "*") (number_literal "2")) (] "]")) (= "=") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) (; ";")) (expression_statement "aiStack_660[iVar24 * 2 + 1] = iVar22;" (assignment_expression "aiStack_660[iVar24 * 2 + 1] = iVar22" (subscript_expression "aiStack_660[iVar24 * 2 + 1]" (identifier "aiStack_660") ([ "[") (binary_expression "iVar24 * 2 + 1" (binary_expression "iVar24 * 2" (identifier "iVar24") (* "*") (number_literal "2")) (+ "+") (number_literal "1")) (] "]")) (= "=") (identifier "iVar22")) (; ";")) (} "}"))) (expression_statement "piVar13 = piVar13 + 2;" (assignment_expression "piVar13 = piVar13 + 2" (identifier "piVar13") (= "=") (binary_expression "piVar13 + 2" (identifier "piVar13") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "iVar24 = iVar25;" (assignment_expression "iVar24 = iVar25" (identifier "iVar24") (= "=") (identifier "iVar25")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(aiStack_660 + iVar27 != piVar13)" (( "(") (binary_expression "aiStack_660 + iVar27 != piVar13" (binary_expression "aiStack_660 + iVar27" (identifier "aiStack_660") (+ "+") (identifier "iVar27")) (!= "!=") (identifier "piVar13")) () ")")) (; ";")) (if_statement "if (iVar25 == 0) break;" (if "if") (parenthesized_expression "(iVar25 == 0)" (( "(") (binary_expression "iVar25 == 0" (identifier "iVar25") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" (identifier "iVar18") (= "=") (binary_expression "iVar18 + 1" (identifier "iVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar10 = param_1 + iVar18;" (assignment_expression "pbVar10 = param_1 + iVar18" (identifier "pbVar10") (= "=") (binary_expression "param_1 + iVar18" (identifier "param_1") (+ "+") (identifier "iVar18"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar18 != param_2)" (( "(") (binary_expression "iVar18 != param_2" (identifier "iVar18") (!= "!=") (identifier "param_2")) () ")")) (; ";")) (} "}"))) (expression_statement "piVar13 = piVar21;" (assignment_expression "piVar13 = piVar21" (identifier "piVar13") (= "=") (identifier "piVar21")) (; ";")) (expression_statement "aiStack_660[1] = iVar18;" (assignment_expression "aiStack_660[1] = iVar18" (subscript_expression "aiStack_660[1]" (identifier "aiStack_660") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar18")) (; ";")) (if_statement "if (iVar17 != 0) {\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }" (if "if") (parenthesized_expression "(iVar17 != 0)" (( "(") (binary_expression "iVar17 != 0" (identifier "iVar17") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }\n              goto LAB_00073ca8;\n            }" ({ "{") (if_statement "if (iVar17 + 1 < iVar18) {\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }" (if "if") (parenthesized_expression "(iVar17 + 1 < iVar18)" (( "(") (binary_expression "iVar17 + 1 < iVar18" (binary_expression "iVar17 + 1" (identifier "iVar17") (+ "+") (number_literal "1")) (< "<") (identifier "iVar18")) () ")")) (compound_statement "{\n                (*(code *)piVar12[2])(piVar12,uStack_670);\n                iStack_674 = aiStack_660[0];\n                uStack_670 = (uint)*param_1;\n                break;\n              }" ({ "{") (expression_statement "(*(code *)piVar12[2])(piVar12,uStack_670);" (call_expression "(*(code *)piVar12[2])(piVar12,uStack_670)" (parenthesized_expression "(*(code *)piVar12[2])" (( "(") (pointer_expression "*(code *)piVar12[2]" (* "*") (cast_expression "(code *)piVar12[2]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar12[2]" (identifier "piVar12") ([ "[") (number_literal "2") (] "]")))) () ")")) (argument_list "(piVar12,uStack_670)" (( "(") (identifier "piVar12") (, ",") (identifier "uStack_670") () ")"))) (; ";")) (expression_statement "iStack_674 = aiStack_660[0];" (assignment_expression "iStack_674 = aiStack_660[0]" (identifier "iStack_674") (= "=") (subscript_expression "aiStack_660[0]" (identifier "aiStack_660") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "uStack_670 = (uint)*param_1;" (assignment_expression "uStack_670 = (uint)*param_1" (identifier "uStack_670") (= "=") (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "param_1"))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (goto_statement "goto LAB_00073ca8;" (goto "goto") (statement_identifier "LAB_00073ca8") (; ";")) (} "}"))) (expression_statement "iStack_674 = aiStack_660[0];" (assignment_expression "iStack_674 = aiStack_660[0]" (identifier "iStack_674") (= "=") (subscript_expression "aiStack_660[0]" (identifier "aiStack_660") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "uStack_670 = uVar16;" (assignment_expression "uStack_670 = uVar16" (identifier "uStack_670") (= "=") (identifier "uVar16")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (labeled_statement "LAB_00073ca0:\n          if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }" (statement_identifier "LAB_00073ca0") (: ":") (if_statement "if (iVar17 == 0) {\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }" (if "if") (parenthesized_expression "(iVar17 == 0)" (( "(") (binary_expression "iVar17 == 0" (identifier "iVar17") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            (*(code *)piVar12[2])(piVar12,*param_1);\n            piVar13 = (int *)0x1;\n            iVar18 = iVar17;\n            break;\n          }" ({ "{") (expression_statement "(*(code *)piVar12[2])(piVar12,*param_1);" (call_expression "(*(code *)piVar12[2])(piVar12,*param_1)" (parenthesized_expression "(*(code *)piVar12[2])" (( "(") (pointer_expression "*(code *)piVar12[2]" (* "*") (cast_expression "(code *)piVar12[2]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar12[2]" (identifier "piVar12") ([ "[") (number_literal "2") (] "]")))) () ")")) (argument_list "(piVar12,*param_1)" (( "(") (identifier "piVar12") (, ",") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")"))) (; ";")) (expression_statement "piVar13 = (int *)0x1;" (assignment_expression "piVar13 = (int *)0x1" (identifier "piVar13") (= "=") (cast_expression "(int *)0x1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "iVar18 = iVar17;" (assignment_expression "iVar18 = iVar17" (identifier "iVar18") (= "=") (identifier "iVar17")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}")))) (labeled_statement "LAB_00073ca8:\n          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);" (statement_identifier "LAB_00073ca8") (: ":") (expression_statement "(*(code *)piVar12[3])(piVar12,iStack_674,iVar17);" (call_expression "(*(code *)piVar12[3])(piVar12,iStack_674,iVar17)" (parenthesized_expression "(*(code *)piVar12[3])" (( "(") (pointer_expression "*(code *)piVar12[3]" (* "*") (cast_expression "(code *)piVar12[3]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar12[3]" (identifier "piVar12") ([ "[") (number_literal "3") (] "]")))) () ")")) (argument_list "(piVar12,iStack_674,iVar17)" (( "(") (identifier "piVar12") (, ",") (identifier "iStack_674") (, ",") (identifier "iVar17") () ")"))) (; ";"))) (expression_statement "piVar13 = (int *)(iVar17 - 1);" (assignment_expression "piVar13 = (int *)(iVar17 - 1)" (identifier "piVar13") (= "=") (cast_expression "(int *)(iVar17 - 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 - 1)" (( "(") (binary_expression "iVar17 - 1" (identifier "iVar17") (- "-") (number_literal "1")) () ")")))) (; ";")) (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" (identifier "iVar18") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" (identifier "iVar17") (= "=") (number_literal "0")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar13 == (int *)0x0)" (( "(") (binary_expression "piVar13 == (int *)0x0" (identifier "piVar13") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "uVar15 = 0xff;" (assignment_expression "uVar15 = 0xff" (identifier "uVar15") (= "=") (number_literal "0xff")) (; ";")) (expression_statement "pbVar10 = param_1 + (int)piVar13;" (assignment_expression "pbVar10 = param_1 + (int)piVar13" (identifier "pbVar10") (= "=") (binary_expression "param_1 + (int)piVar13" (identifier "param_1") (+ "+") (cast_expression "(int)piVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar13")))) (; ";")) (while_statement "while( true ) {\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }\n          if (param_1 + 1 == pbVar10) break;\n          param_2 = param_2 + -1;\n          param_1 = param_1 + 1;\n          bVar3 = param_2 < 3;\n        }" ({ "{") (if_statement "if (bVar3) {\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }\n          else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }" (if "if") (parenthesized_expression "(bVar3)" (( "(") (identifier "bVar3") () ")")) (compound_statement "{\n            iVar17 = *(int *)(iVar28 + 0x38ff8);\n            piVar13 = *(int **)(puVar29 + 0x39878);\n            if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }\n            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;\n            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;\n          }" ({ "{") (expression_statement "iVar17 = *(int *)(iVar28 + 0x38ff8);" (assignment_expression "iVar17 = *(int *)(iVar28 + 0x38ff8)" (identifier "iVar17") (= "=") (pointer_expression "*(int *)(iVar28 + 0x38ff8)" (* "*") (cast_expression "(int *)(iVar28 + 0x38ff8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + 0x38ff8)" (( "(") (binary_expression "iVar28 + 0x38ff8" (identifier "iVar28") (+ "+") (number_literal "0x38ff8")) () ")"))))) (; ";")) (expression_statement "piVar13 = *(int **)(puVar29 + 0x39878);" (assignment_expression "piVar13 = *(int **)(puVar29 + 0x39878)" (identifier "piVar13") (= "=") (pointer_expression "*(int **)(puVar29 + 0x39878)" (* "*") (cast_expression "(int **)(puVar29 + 0x39878)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar29 + 0x39878)" (( "(") (binary_expression "puVar29 + 0x39878" (identifier "puVar29") (+ "+") (number_literal "0x39878")) () ")"))))) (; ";")) (if_statement "if (2 < iVar17) {\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }" (if "if") (parenthesized_expression "(2 < iVar17)" (( "(") (binary_expression "2 < iVar17" (number_literal "2") (< "<") (identifier "iVar17")) () ")")) (compound_statement "{\n              iVar18 = 0x157;\n              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);\n              piVar13 = piVar13 + 0x1cc2;\n              (**(code **)(puVar29 + 0x3a0b0))();\n              piVar12 = piVar21;\n              goto LAB_00073c5c;\n            }" ({ "{") (expression_statement "iVar18 = 0x157;" (assignment_expression "iVar18 = 0x157" (identifier "iVar18") (= "=") (number_literal "0x157")) (; ";")) (expression_statement "pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);" (assignment_expression "pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0)" (identifier "pbVar10") (= "=") (cast_expression "(byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar29 + 0x39878) + 0x72e0)" (( "(") (binary_expression "*(int *)(puVar29 + 0x39878) + 0x72e0" (pointer_expression "*(int *)(puVar29 + 0x39878)" (* "*") (cast_expression "(int *)(puVar29 + 0x39878)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar29 + 0x39878)" (( "(") (binary_expression "puVar29 + 0x39878" (identifier "puVar29") (+ "+") (number_literal "0x39878")) () ")")))) (+ "+") (number_literal "0x72e0")) () ")")))) (; ";")) (expression_statement "piVar13 = piVar13 + 0x1cc2;" (assignment_expression "piVar13 = piVar13 + 0x1cc2" (identifier "piVar13") (= "=") (binary_expression "piVar13 + 0x1cc2" (identifier "piVar13") (+ "+") (number_literal "0x1cc2"))) (; ";")) (expression_statement "(**(code **)(puVar29 + 0x3a0b0))();" (call_expression "(**(code **)(puVar29 + 0x3a0b0))()" (parenthesized_expression "(**(code **)(puVar29 + 0x3a0b0))" (( "(") (pointer_expression "**(code **)(puVar29 + 0x3a0b0)" (* "*") (pointer_expression "*(code **)(puVar29 + 0x3a0b0)" (* "*") (cast_expression "(code **)(puVar29 + 0x3a0b0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar29 + 0x3a0b0)" (( "(") (binary_expression "puVar29 + 0x3a0b0" (identifier "puVar29") (+ "+") (number_literal "0x3a0b0")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar12 = piVar21;" (assignment_expression "piVar12 = piVar21" (identifier "piVar12") (= "=") (identifier "piVar21")) (; ";")) (goto_statement "goto LAB_00073c5c;" (goto "goto") (statement_identifier "LAB_00073c5c") (; ";")) (} "}"))) (expression_statement "*(int *)(iVar28 + 0x38ff8) = iVar17 + 1;" (assignment_expression "*(int *)(iVar28 + 0x38ff8) = iVar17 + 1" (pointer_expression "*(int *)(iVar28 + 0x38ff8)" (* "*") (cast_expression "(int *)(iVar28 + 0x38ff8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + 0x38ff8)" (( "(") (binary_expression "iVar28 + 0x38ff8" (identifier "iVar28") (+ "+") (number_literal "0x38ff8")) () ")")))) (= "=") (binary_expression "iVar17 + 1" (identifier "iVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;" (assignment_expression "*(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1" (pointer_expression "*(byte *)(iVar28 + iVar17 + 0x38ff2)" (* "*") (cast_expression "(byte *)(iVar28 + iVar17 + 0x38ff2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + iVar17 + 0x38ff2)" (( "(") (binary_expression "iVar28 + iVar17 + 0x38ff2" (binary_expression "iVar28 + iVar17" (identifier "iVar28") (+ "+") (identifier "iVar17")) (+ "+") (number_literal "0x38ff2")) () ")")))) (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (} "}")) (else_clause "else {\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }" (else "else") (compound_statement "{\n            bVar14 = *param_1;\n            piVar13 = (int *)(uint)bVar14;\n            iVar17 = *(int *)(iVar28 + 0x38000);\n            psVar8 = (short *)(iVar28 + iVar17 * 6);\n            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;\n            if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }\n            psVar8[2] = (short)uVar16;\n            psVar8[1] = -1;\n            iVar27 = iVar28 + uVar16 * 2;\n            sVar2 = *(short *)(iVar27 + 0x38004);\n            *psVar8 = sVar2;\n            *(short *)(iVar27 + 0x38004) = (short)iVar17;\n            if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }\n            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;\n            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;\n          }" ({ "{") (expression_statement "bVar14 = *param_1;" (assignment_expression "bVar14 = *param_1" (identifier "bVar14") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "piVar13 = (int *)(uint)bVar14;" (assignment_expression "piVar13 = (int *)(uint)bVar14" (identifier "piVar13") (= "=") (cast_expression "(int *)(uint)bVar14" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(uint)bVar14" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar14")))) (; ";")) (expression_statement "iVar17 = *(int *)(iVar28 + 0x38000);" (assignment_expression "iVar17 = *(int *)(iVar28 + 0x38000)" (identifier "iVar17") (= "=") (pointer_expression "*(int *)(iVar28 + 0x38000)" (* "*") (cast_expression "(int *)(iVar28 + 0x38000)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + 0x38000)" (( "(") (binary_expression "iVar28 + 0x38000" (identifier "iVar28") (+ "+") (number_literal "0x38000")) () ")"))))) (; ";")) (expression_statement "psVar8 = (short *)(iVar28 + iVar17 * 6);" (assignment_expression "psVar8 = (short *)(iVar28 + iVar17 * 6)" (identifier "psVar8") (= "=") (cast_expression "(short *)(iVar28 + iVar17 * 6)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + iVar17 * 6)" (( "(") (binary_expression "iVar28 + iVar17 * 6" (identifier "iVar28") (+ "+") (binary_expression "iVar17 * 6" (identifier "iVar17") (* "*") (number_literal "6"))) () ")")))) (; ";")) (expression_statement "uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7;" (assignment_expression "uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7" (identifier "uVar16") (= "=") (binary_expression "((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %\n                     0x7f7" (parenthesized_expression "((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101)" (( "(") (binary_expression "(uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101" (binary_expression "(uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107" (binary_expression "(uint)param_1[2] * 0x10d" (cast_expression "(uint)param_1[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (* "*") (number_literal "0x10d")) (+ "+") (binary_expression "(uint)param_1[1] * 0x107" (cast_expression "(uint)param_1[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (* "*") (number_literal "0x107"))) (+ "+") (binary_expression "(int)piVar13 * 0x101" (cast_expression "(int)piVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar13")) (* "*") (number_literal "0x101"))) () ")")) (% "%") (number_literal "0x7f7"))) (; ";")) (if_statement "if (psVar8[1] == -1) {\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }\n            else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }" (if "if") (parenthesized_expression "(psVar8[1] == -1)" (( "(") (binary_expression "psVar8[1] == -1" (subscript_expression "psVar8[1]" (identifier "psVar8") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n              if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }\n            }" ({ "{") (if_statement "if (psVar8[2] != -1) {\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }" (if "if") (parenthesized_expression "(psVar8[2] != -1)" (( "(") (binary_expression "psVar8[2] != -1" (subscript_expression "psVar8[2]" (identifier "psVar8") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;\n              }" ({ "{") (expression_statement "*(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;" (assignment_expression "*(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff" (pointer_expression "*(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4)" (* "*") (cast_expression "(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4)" (( "(") (binary_expression "iVar28 + (psVar8[2] + 0x1c000) * 2 + 4" (binary_expression "iVar28 + (psVar8[2] + 0x1c000) * 2" (identifier "iVar28") (+ "+") (binary_expression "(psVar8[2] + 0x1c000) * 2" (parenthesized_expression "(psVar8[2] + 0x1c000)" (( "(") (binary_expression "psVar8[2] + 0x1c000" (subscript_expression "psVar8[2]" (identifier "psVar8") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "0x1c000")) () ")")) (* "*") (number_literal "2"))) (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0xffff")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }" (else "else") (compound_statement "{\n              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;\n            }" ({ "{") (expression_statement "*(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;" (assignment_expression "*(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff" (pointer_expression "*(undefined2 *)(iVar28 + psVar8[1] * 6)" (* "*") (cast_expression "(undefined2 *)(iVar28 + psVar8[1] * 6)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + psVar8[1] * 6)" (( "(") (binary_expression "iVar28 + psVar8[1] * 6" (identifier "iVar28") (+ "+") (binary_expression "psVar8[1] * 6" (subscript_expression "psVar8[1]" (identifier "psVar8") ([ "[") (number_literal "1") (] "]")) (* "*") (number_literal "6"))) () ")")))) (= "=") (number_literal "0xffff")) (; ";")) (} "}")))) (expression_statement "psVar8[2] = (short)uVar16;" (assignment_expression "psVar8[2] = (short)uVar16" (subscript_expression "psVar8[2]" (identifier "psVar8") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(short)uVar16" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar16"))) (; ";")) (expression_statement "psVar8[1] = -1;" (assignment_expression "psVar8[1] = -1" (subscript_expression "psVar8[1]" (identifier "psVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "-1")) (; ";")) (expression_statement "iVar27 = iVar28 + uVar16 * 2;" (assignment_expression "iVar27 = iVar28 + uVar16 * 2" (identifier "iVar27") (= "=") (binary_expression "iVar28 + uVar16 * 2" (identifier "iVar28") (+ "+") (binary_expression "uVar16 * 2" (identifier "uVar16") (* "*") (number_literal "2")))) (; ";")) (expression_statement "sVar2 = *(short *)(iVar27 + 0x38004);" (assignment_expression "sVar2 = *(short *)(iVar27 + 0x38004)" (identifier "sVar2") (= "=") (pointer_expression "*(short *)(iVar27 + 0x38004)" (* "*") (cast_expression "(short *)(iVar27 + 0x38004)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar27 + 0x38004)" (( "(") (binary_expression "iVar27 + 0x38004" (identifier "iVar27") (+ "+") (number_literal "0x38004")) () ")"))))) (; ";")) (expression_statement "*psVar8 = sVar2;" (assignment_expression "*psVar8 = sVar2" (pointer_expression "*psVar8" (* "*") (identifier "psVar8")) (= "=") (identifier "sVar2")) (; ";")) (expression_statement "*(short *)(iVar27 + 0x38004) = (short)iVar17;" (assignment_expression "*(short *)(iVar27 + 0x38004) = (short)iVar17" (pointer_expression "*(short *)(iVar27 + 0x38004)" (* "*") (cast_expression "(short *)(iVar27 + 0x38004)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar27 + 0x38004)" (( "(") (binary_expression "iVar27 + 0x38004" (identifier "iVar27") (+ "+") (number_literal "0x38004")) () ")")))) (= "=") (cast_expression "(short)iVar17" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "iVar17"))) (; ";")) (if_statement "if (sVar2 != -1) {\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }" (if "if") (parenthesized_expression "(sVar2 != -1)" (( "(") (binary_expression "sVar2 != -1" (identifier "sVar2") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;\n            }" ({ "{") (expression_statement "*(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;" (assignment_expression "*(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17" (pointer_expression "*(short *)(iVar28 + sVar2 * 6 + 2)" (* "*") (cast_expression "(short *)(iVar28 + sVar2 * 6 + 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + sVar2 * 6 + 2)" (( "(") (binary_expression "iVar28 + sVar2 * 6 + 2" (binary_expression "iVar28 + sVar2 * 6" (identifier "iVar28") (+ "+") (binary_expression "sVar2 * 6" (identifier "sVar2") (* "*") (number_literal "6"))) (+ "+") (number_literal "2")) () ")")))) (= "=") (cast_expression "(short)iVar17" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "iVar17"))) (; ";")) (} "}"))) (expression_statement "*(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;" (assignment_expression "*(byte *)(iVar28 + iVar17 + 0x30000) = bVar14" (pointer_expression "*(byte *)(iVar28 + iVar17 + 0x30000)" (* "*") (cast_expression "(byte *)(iVar28 + iVar17 + 0x30000)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + iVar17 + 0x30000)" (( "(") (binary_expression "iVar28 + iVar17 + 0x30000" (binary_expression "iVar28 + iVar17" (identifier "iVar28") (+ "+") (identifier "iVar17")) (+ "+") (number_literal "0x30000")) () ")")))) (= "=") (identifier "bVar14")) (; ";")) (expression_statement "*(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;" (assignment_expression "*(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff" (pointer_expression "*(uint *)(iVar28 + 0x38000)" (* "*") (cast_expression "(uint *)(iVar28 + 0x38000)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + 0x38000)" (( "(") (binary_expression "iVar28 + 0x38000" (identifier "iVar28") (+ "+") (number_literal "0x38000")) () ")")))) (= "=") (binary_expression "iVar17 + 1U & 0x7fff" (binary_expression "iVar17 + 1U" (identifier "iVar17") (+ "+") (number_literal "1U")) (& "&") (number_literal "0x7fff"))) (; ";")) (} "}")))) (if_statement "if (param_1 + 1 == pbVar10) break;" (if "if") (parenthesized_expression "(param_1 + 1 == pbVar10)" (( "(") (binary_expression "param_1 + 1 == pbVar10" (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) (== "==") (identifier "pbVar10")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "param_2 = param_2 + -1;" (assignment_expression "param_2 = param_2 + -1" (identifier "param_2") (= "=") (binary_expression "param_2 + -1" (identifier "param_2") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar3 = param_2 < 3;" (assignment_expression "bVar3 = param_2 < 3" (identifier "bVar3") (= "=") (binary_expression "param_2 < 3" (identifier "param_2") (< "<") (number_literal "3"))) (; ";")) (} "}"))) (expression_statement "param_2 = param_2 + -1;" (assignment_expression "param_2 = param_2 + -1" (identifier "param_2") (= "=") (binary_expression "param_2 + -1" (identifier "param_2") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar3 = param_2 < 3;" (assignment_expression "bVar3 = param_2 < 3" (identifier "bVar3") (= "=") (binary_expression "param_2 < 3" (identifier "param_2") (< "<") (number_literal "3"))) (; ";")) (expression_statement "iVar17 = iVar18;" (assignment_expression "iVar17 = iVar18" (identifier "iVar17") (= "=") (identifier "iVar18")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0 < param_2)" (( "(") (binary_expression "0 < param_2" (number_literal "0") (< "<") (identifier "param_2")) () ")")) (; ";")) (} "}"))) (if_statement "if (iStack_55c == *piVar7) {\n      return;\n    }" (if "if") (parenthesized_expression "(iStack_55c == *piVar7)" (( "(") (binary_expression "iStack_55c == *piVar7" (identifier "iStack_55c") (== "==") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    iVar17 = *(int *)(puVar29 + 0x39878) + 0x72e0;\n    piVar13 = (int *)(*(int *)(puVar29 + 0x39878) + 0x72ec);\n    (**(code **)(puVar29 + 0x3a0b0))(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c);\n    uVar15 = (undefined1)iVar17;\n  }" (else "else") (compound_statement "{\n    iVar17 = *(int *)(puVar29 + 0x39878) + 0x72e0;\n    piVar13 = (int *)(*(int *)(puVar29 + 0x39878) + 0x72ec);\n    (**(code **)(puVar29 + 0x3a0b0))(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c);\n    uVar15 = (undefined1)iVar17;\n  }" ({ "{") (expression_statement "iVar17 = *(int *)(puVar29 + 0x39878) + 0x72e0;" (assignment_expression "iVar17 = *(int *)(puVar29 + 0x39878) + 0x72e0" (identifier "iVar17") (= "=") (binary_expression "*(int *)(puVar29 + 0x39878) + 0x72e0" (pointer_expression "*(int *)(puVar29 + 0x39878)" (* "*") (cast_expression "(int *)(puVar29 + 0x39878)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar29 + 0x39878)" (( "(") (binary_expression "puVar29 + 0x39878" (identifier "puVar29") (+ "+") (number_literal "0x39878")) () ")")))) (+ "+") (number_literal "0x72e0"))) (; ";")) (expression_statement "piVar13 = (int *)(*(int *)(puVar29 + 0x39878) + 0x72ec);" (assignment_expression "piVar13 = (int *)(*(int *)(puVar29 + 0x39878) + 0x72ec)" (identifier "piVar13") (= "=") (cast_expression "(int *)(*(int *)(puVar29 + 0x39878) + 0x72ec)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar29 + 0x39878) + 0x72ec)" (( "(") (binary_expression "*(int *)(puVar29 + 0x39878) + 0x72ec" (pointer_expression "*(int *)(puVar29 + 0x39878)" (* "*") (cast_expression "(int *)(puVar29 + 0x39878)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar29 + 0x39878)" (( "(") (binary_expression "puVar29 + 0x39878" (identifier "puVar29") (+ "+") (number_literal "0x39878")) () ")")))) (+ "+") (number_literal "0x72ec")) () ")")))) (; ";")) (expression_statement "(**(code **)(puVar29 + 0x3a0b0))(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c);" (call_expression "(**(code **)(puVar29 + 0x3a0b0))(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c)" (parenthesized_expression "(**(code **)(puVar29 + 0x3a0b0))" (( "(") (pointer_expression "**(code **)(puVar29 + 0x3a0b0)" (* "*") (pointer_expression "*(code **)(puVar29 + 0x3a0b0)" (* "*") (cast_expression "(code **)(puVar29 + 0x3a0b0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar29 + 0x3a0b0)" (( "(") (binary_expression "puVar29 + 0x3a0b0" (identifier "puVar29") (+ "+") (number_literal "0x3a0b0")) () ")"))))) () ")")) (argument_list "(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c)" (( "(") (identifier "piVar13") (, ",") (identifier "iVar17") (, ",") (number_literal "0xd0") (, ",") (binary_expression "*(int *)(puVar29 + 0x39878) + 0x740c" (pointer_expression "*(int *)(puVar29 + 0x39878)" (* "*") (cast_expression "(int *)(puVar29 + 0x39878)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar29 + 0x39878)" (( "(") (binary_expression "puVar29 + 0x39878" (identifier "puVar29") (+ "+") (number_literal "0x39878")) () ")")))) (+ "+") (number_literal "0x740c")) () ")"))) (; ";")) (expression_statement "uVar15 = (undefined1)iVar17;" (assignment_expression "uVar15 = (undefined1)iVar17" (identifier "uVar15") (= "=") (cast_expression "(undefined1)iVar17" (( "(") (type_descriptor "undefined1" (type_identifier "undefined1")) () ")") (identifier "iVar17"))) (; ";")) (} "}")))) (expression_statement "pcVar30 = *(code **)(puVar29 + 0x3a254);" (assignment_expression "pcVar30 = *(code **)(puVar29 + 0x3a254)" (identifier "pcVar30") (= "=") (pointer_expression "*(code **)(puVar29 + 0x3a254)" (* "*") (cast_expression "(code **)(puVar29 + 0x3a254)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar29 + 0x3a254)" (( "(") (binary_expression "puVar29 + 0x3a254" (identifier "puVar29") (+ "+") (number_literal "0x3a254")) () ")"))))) (; ";")) (expression_statement "(*pcVar30)();" (call_expression "(*pcVar30)()" (parenthesized_expression "(*pcVar30)" (( "(") (pointer_expression "*pcVar30" (* "*") (identifier "pcVar30")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar17 = piVar13[0x2067];" (assignment_expression "iVar17 = piVar13[0x2067]" (identifier "iVar17") (= "=") (subscript_expression "piVar13[0x2067]" (identifier "piVar13") ([ "[") (number_literal "0x2067") (] "]"))) (; ";")) (expression_statement "*(undefined1 *)((int)piVar13 + iVar17 + 0x19c) = uVar15;" (assignment_expression "*(undefined1 *)((int)piVar13 + iVar17 + 0x19c) = uVar15" (pointer_expression "*(undefined1 *)((int)piVar13 + iVar17 + 0x19c)" (* "*") (cast_expression "(undefined1 *)((int)piVar13 + iVar17 + 0x19c)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar13 + iVar17 + 0x19c)" (( "(") (binary_expression "(int)piVar13 + iVar17 + 0x19c" (binary_expression "(int)piVar13 + iVar17" (cast_expression "(int)piVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar13")) (+ "+") (identifier "iVar17")) (+ "+") (number_literal "0x19c")) () ")")))) (= "=") (identifier "uVar15")) (; ";")) (expression_statement "piVar13[0x2067] = iVar17 + 1U & 0x7fff;" (assignment_expression "piVar13[0x2067] = iVar17 + 1U & 0x7fff" (subscript_expression "piVar13[0x2067]" (identifier "piVar13") ([ "[") (number_literal "0x2067") (] "]")) (= "=") (binary_expression "iVar17 + 1U & 0x7fff" (binary_expression "iVar17 + 1U" (identifier "iVar17") (+ "+") (number_literal "1U")) (& "&") (number_literal "0x7fff"))) (; ";")) (expression_statement "iVar17 = piVar13[0x2069];" (assignment_expression "iVar17 = piVar13[0x2069]" (identifier "iVar17") (= "=") (subscript_expression "piVar13[0x2069]" (identifier "piVar13") ([ "[") (number_literal "0x2069") (] "]"))) (; ";")) (if_statement "if (iVar17 < piVar13[0x206a]) {\n    piVar13[0x2069] = iVar17 + 1;\n    *(undefined1 *)(piVar13[0x2068] + iVar17) = uVar15;\n    return;\n  }" (if "if") (parenthesized_expression "(iVar17 < piVar13[0x206a])" (( "(") (binary_expression "iVar17 < piVar13[0x206a]" (identifier "iVar17") (< "<") (subscript_expression "piVar13[0x206a]" (identifier "piVar13") ([ "[") (number_literal "0x206a") (] "]"))) () ")")) (compound_statement "{\n    piVar13[0x2069] = iVar17 + 1;\n    *(undefined1 *)(piVar13[0x2068] + iVar17) = uVar15;\n    return;\n  }" ({ "{") (expression_statement "piVar13[0x2069] = iVar17 + 1;" (assignment_expression "piVar13[0x2069] = iVar17 + 1" (subscript_expression "piVar13[0x2069]" (identifier "piVar13") ([ "[") (number_literal "0x2069") (] "]")) (= "=") (binary_expression "iVar17 + 1" (identifier "iVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined1 *)(piVar13[0x2068] + iVar17) = uVar15;" (assignment_expression "*(undefined1 *)(piVar13[0x2068] + iVar17) = uVar15" (pointer_expression "*(undefined1 *)(piVar13[0x2068] + iVar17)" (* "*") (cast_expression "(undefined1 *)(piVar13[0x2068] + iVar17)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar13[0x2068] + iVar17)" (( "(") (binary_expression "piVar13[0x2068] + iVar17" (subscript_expression "piVar13[0x2068]" (identifier "piVar13") ([ "[") (number_literal "0x2068") (] "]")) (+ "+") (identifier "iVar17")) () ")")))) (= "=") (identifier "uVar15")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "pcVar30 = *(code **)(pcVar30 + 0x391d8);" (assignment_expression "pcVar30 = *(code **)(pcVar30 + 0x391d8)" (identifier "pcVar30") (= "=") (pointer_expression "*(code **)(pcVar30 + 0x391d8)" (* "*") (cast_expression "(code **)(pcVar30 + 0x391d8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar30 + 0x391d8)" (( "(") (binary_expression "pcVar30 + 0x391d8" (identifier "pcVar30") (+ "+") (number_literal "0x391d8")) () ")"))))) (; ";")) (expression_statement "piVar13[0x206a] = iVar17 + 0x200;" (assignment_expression "piVar13[0x206a] = iVar17 + 0x200" (subscript_expression "piVar13[0x206a]" (identifier "piVar13") ([ "[") (number_literal "0x206a") (] "]")) (= "=") (binary_expression "iVar17 + 0x200" (identifier "iVar17") (+ "+") (number_literal "0x200"))) (; ";")) (expression_statement "iVar17 = (*pcVar30)(piVar13[0x2068],iVar17 + 0x200,1);" (assignment_expression "iVar17 = (*pcVar30)(piVar13[0x2068],iVar17 + 0x200,1)" (identifier "iVar17") (= "=") (call_expression "(*pcVar30)(piVar13[0x2068],iVar17 + 0x200,1)" (parenthesized_expression "(*pcVar30)" (( "(") (pointer_expression "*pcVar30" (* "*") (identifier "pcVar30")) () ")")) (argument_list "(piVar13[0x2068],iVar17 + 0x200,1)" (( "(") (subscript_expression "piVar13[0x2068]" (identifier "piVar13") ([ "[") (number_literal "0x2068") (] "]")) (, ",") (binary_expression "iVar17 + 0x200" (identifier "iVar17") (+ "+") (number_literal "0x200")) (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "iVar28 = piVar13[0x2069];" (assignment_expression "iVar28 = piVar13[0x2069]" (identifier "iVar28") (= "=") (subscript_expression "piVar13[0x2069]" (identifier "piVar13") ([ "[") (number_literal "0x2069") (] "]"))) (; ";")) (expression_statement "piVar13[0x2068] = iVar17;" (assignment_expression "piVar13[0x2068] = iVar17" (subscript_expression "piVar13[0x2068]" (identifier "piVar13") ([ "[") (number_literal "0x2068") (] "]")) (= "=") (identifier "iVar17")) (; ";")) (expression_statement "piVar13[0x2069] = iVar28 + 1;" (assignment_expression "piVar13[0x2069] = iVar28 + 1" (subscript_expression "piVar13[0x2069]" (identifier "piVar13") ([ "[") (number_literal "0x2069") (] "]")) (= "=") (binary_expression "iVar28 + 1" (identifier "iVar28") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined1 *)(iVar17 + iVar28) = uVar15;" (assignment_expression "*(undefined1 *)(iVar17 + iVar28) = uVar15" (pointer_expression "*(undefined1 *)(iVar17 + iVar28)" (* "*") (cast_expression "(undefined1 *)(iVar17 + iVar28)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + iVar28)" (( "(") (binary_expression "iVar17 + iVar28" (identifier "iVar17") (+ "+") (identifier "iVar28")) () ")")))) (= "=") (identifier "uVar15")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) right: (number_literal))))) right: (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (unary_expression argument: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)) right: (number_literal))) right: (number_literal))) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (while_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (identifier))) body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (number_literal) right: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) right: (number_literal))))) right: (identifier))) consequence: (goto_statement label: (statement_identifier)))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) right: (pointer_expression argument: (identifier))) right: (number_literal)))) right: (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) (break_statement))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (break_statement))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) arguments: (argument_list (identifier) (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (break_statement)))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) arguments: (argument_list (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) right: (number_literal))))) right: (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (return_statement)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (number_literal) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) right: (identifier))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)) (binary_expression left: (identifier) right: (number_literal)) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (identifier))) (return_statement))))

void MASKED(byte *param_1,int param_2)

{
  byte bVar1;
  short sVar2;
  bool bVar3;
  undefined *puVar4;
  uint *puVar5;
  uint uVar6;
  int *piVar7;
  short *psVar8;
  byte *pbVar9;
  byte *pbVar10;
  uint *puVar11;
  int *piVar12;
  int *piVar13;
  byte bVar14;
  undefined1 uVar15;
  uint uVar16;
  int iVar17;
  int iVar18;
  uint *puVar19;
  uint uVar20;
  int *piVar21;
  int iVar22;
  uint uVar23;
  int iVar24;
  int iVar25;
  byte *pbVar26;
  int iVar27;
  int iVar28;
  undefined *puVar29;
  code *pcVar30;
  int iStack_674;
  uint uStack_670;
  int aiStack_660 [64];
  byte bStack_560;
  byte bStack_55f;
  byte bStack_55e;
  int iStack_55c;
  undefined *puStack_558;
  int aiStack_50c [16];
  uint auStack_4cc [16];
  uint local_48c [288];
  int *local_c;
  
  puVar4 = PTR___stack_chk_guard_000adcd4;
  puVar19 = (uint *)(aiStack_50c + 1);
  local_c = *(int **)PTR___stack_chk_guard_000adcd4;
  puVar5 = puVar19;
  do {
    *puVar5 = 0;
    puVar5 = puVar5 + 1;
  } while (puVar5 != auStack_4cc);
  uVar16 = 0;
  if (0 < param_2) {
    pbVar10 = param_1;
    do {
      uVar23 = (uint)*pbVar10;
      pbVar10 = pbVar10 + 1;
      if (uVar16 < uVar23) {
        uVar16 = uVar23;
      }
      aiStack_50c[uVar23] = aiStack_50c[uVar23] + 1;
    } while (param_1 + param_2 != pbVar10);
  }
  uVar16 = 0;
  puVar5 = auStack_4cc + 1;
  do {
    uVar23 = *puVar19;
    puVar11 = puVar5 + 1;
    *puVar5 = uVar16;
    puVar19 = puVar19 + 1;
    uVar16 = (uVar16 + uVar23) * 2;
    puVar5 = puVar11;
  } while (puVar11 != local_48c);
  pbVar10 = param_1;
  puVar5 = local_48c;
  if (0 < param_2) {
    do {
      uVar23 = (uint)*pbVar10;
      *puVar5 = 0;
      uVar16 = auStack_4cc[uVar23];
      auStack_4cc[uVar23] = uVar16 + 1;
      if (uVar23 != 0) {
        uVar6 = 0;
        uVar20 = 0;
        do {
          uVar20 = uVar20 + 1;
          uVar6 = uVar6 << 1 | uVar16 & 1;
          uVar16 = (int)uVar16 >> 1;
        } while (uVar23 != uVar20);
        *puVar5 = uVar6;
      }
      pbVar10 = pbVar10 + 1;
      puVar5 = puVar5 + 1;
    } while (param_1 + param_2 != pbVar10);
  }
  piVar21 = (int *)0x0;
  FUN_00073648(local_48c);
  if (local_c == *(int **)puVar4) {
    return;
  }
  piVar12 = local_c;
  puVar29 = PTR___stack_chk_fail_000adca4;
  (*(code *)PTR___stack_chk_fail_000adca4)();
  piVar7 = *(int **)(puVar29 + 0x3a284);
  iVar28 = *piVar12;
  puStack_558 = puVar4;
  iStack_55c = *piVar7;
  iVar17 = *(int *)(iVar28 + 0x38ff8);
  if (iVar17 < 4) {
    piVar13 = piVar12;
    pbVar10 = param_1;
    iVar18 = iVar17;
    if (0 < iVar17) {
      if (iVar17 + param_2 < 3) {
        iVar27 = 0;
      }
      else {
        piVar13 = *(int **)(iVar28 + 0x38000);
        pbVar26 = &bStack_560;
        iVar27 = iVar17 + param_2 + -2;
        iVar25 = 3;
        iVar24 = 0;
        iVar18 = iVar24;
        do {
          do {
            if (iVar24 < iVar17) {
              bVar14 = *(byte *)(iVar28 + iVar24 + 0x38ff2);
            }
            else {
              bVar14 = param_1[iVar24 - iVar17];
            }
            pbVar10 = pbVar26 + iVar24;
            iVar24 = iVar24 + 1;
            *pbVar10 = bVar14;
          } while (iVar24 != iVar25);
          psVar8 = (short *)(iVar28 + (int)piVar13 * 6);
          uVar16 = ((uint)bStack_55e * 0x10d + (uint)bStack_55f * 0x107 + (uint)bStack_560 * 0x101)
                   % 0x7f7;
          if (psVar8[1] == -1) {
            if (psVar8[2] != -1) {
              *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;
            }
          }
          else {
            *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;
          }
          psVar8[2] = (short)uVar16;
          psVar8[1] = -1;
          iVar24 = iVar28 + uVar16 * 2;
          sVar2 = *(short *)(iVar24 + 0x38004);
          pbVar10 = (byte *)(int)sVar2;
          *psVar8 = sVar2;
          *(short *)(iVar24 + 0x38004) = (short)piVar13;
          if (pbVar10 != (byte *)0xffffffff) {
            *(short *)(iVar28 + (int)pbVar10 * 6 + 2) = (short)piVar13;
          }
          pbVar9 = (byte *)((int)piVar13 + iVar28 + 0x30000);
          iVar24 = iVar18 + 1;
          piVar13 = (int *)((int)piVar13 + 1U & 0x7fff);
          *pbVar9 = bStack_560;
          *(int **)(iVar28 + 0x38000) = piVar13;
          if (iVar17 == iVar24) {
            iVar18 = 0;
            goto LAB_00073c5c;
          }
          pbVar26 = pbVar26 + -1;
          iVar25 = iVar25 + 1;
          iVar18 = iVar24;
        } while (iVar24 != iVar27);
        iVar18 = iVar17 - iVar27;
      }
      pbVar26 = (byte *)(iVar28 + 0x38ff2);
      iVar24 = iVar27;
      do {
        iVar24 = iVar24 + 1;
        bVar14 = pbVar26[iVar27];
        *pbVar26 = bVar14;
        pbVar26 = pbVar26 + 1;
        piVar13 = (int *)(uint)(iVar24 < iVar17);
        pbVar10 = (byte *)(uint)bVar14;
      } while ((int *)(uint)(iVar24 < iVar17) != (int *)0x0);
    }
LAB_00073c5c:
    uVar15 = SUB41(pbVar10,0);
    *(int *)(iVar28 + 0x38ff8) = iVar18;
    if (0 < param_2) {
      iStack_674 = 0;
      uStack_670 = 0;
      bVar3 = param_2 < 3;
      iVar17 = 0;
      do {
        do {
          if ((piVar21 != (int *)0x0) && (!bVar3)) {
            uVar16 = (uint)*param_1;
            iVar18 = (int)*(short *)(iVar28 + (((uint)param_1[2] * 0x10d +
                                               (uint)param_1[1] * 0x107 + uVar16 * 0x101) % 0x7f7 +
                                              0x1c000) * 2 + 4);
            if (iVar18 == -1) goto LAB_00073ca0;
            iVar24 = *(int *)(iVar28 + 0x38000);
            iVar27 = 0;
            do {
              uVar23 = (iVar18 + 0x8000) - iVar24 & 0x80007fff;
              if ((int)uVar23 < 0) {
                uVar23 = (uVar23 - 1 | 0xffff8000) + 1;
              }
              iVar22 = 0x8000 - uVar23;
              iVar25 = uVar23 - 0x8000;
              uVar23 = uVar16;
              if (iVar25 < 0) goto LAB_00073f88;
              while (param_1[iVar25] == uVar23) {
                while( true ) {
                  iVar25 = iVar25 + 1;
                  if (3 - iVar22 == iVar25) {
                    iVar25 = iVar27 + 1;
                    aiStack_660[iVar27 * 2] = iVar22;
                    aiStack_660[iVar27 * 2 + 1] = 3;
                    if (0x1f < iVar25) goto LAB_00073fc8;
                    sVar2 = *(short *)(iVar28 + iVar18 * 6);
                    goto joined_r0x00074094;
                  }
                  uVar23 = (uint)param_1[iVar22 + iVar25];
                  if (-1 < iVar25) break;
LAB_00073f88:
                  if (*(byte *)(iVar28 + (iVar24 + iVar25 & 0x7fffU) + 0x30000) != uVar23)
                  goto LAB_00073fa4;
                }
              }
LAB_00073fa4:
              sVar2 = *(short *)(iVar28 + iVar18 * 6);
              iVar25 = iVar27;
joined_r0x00074094:
              iVar18 = (int)sVar2;
              iVar27 = iVar25;
            } while (iVar18 != -1);
            if (iVar25 == 0) goto LAB_00073ca0;
LAB_00073fc8:
            iVar18 = 3;
            if (param_2 != 3) {
              pbVar10 = param_1 + 3;
              do {
                bVar14 = *pbVar10;
                iVar27 = iVar25 * 2;
                piVar13 = aiStack_660;
                iVar24 = 0;
                do {
                  iVar25 = iVar18 - *piVar13;
                  if (iVar25 < 0) {
                    bVar1 = *(byte *)(iVar28 + ((iVar18 + *(int *)(iVar28 + 0x38000)) - *piVar13 &
                                               0x7fffU) + 0x30000);
                  }
                  else {
                    bVar1 = param_1[iVar25];
                  }
                  iVar25 = iVar24;
                  if (bVar1 == bVar14) {
                    iVar22 = piVar13[1];
                    iVar25 = iVar24 + 1;
                    aiStack_660[iVar24 * 2] = *piVar13;
                    aiStack_660[iVar24 * 2 + 1] = iVar22;
                  }
                  piVar13 = piVar13 + 2;
                  iVar24 = iVar25;
                } while (aiStack_660 + iVar27 != piVar13);
                if (iVar25 == 0) break;
                iVar18 = iVar18 + 1;
                pbVar10 = param_1 + iVar18;
              } while (iVar18 != param_2);
            }
            piVar13 = piVar21;
            aiStack_660[1] = iVar18;
            if (iVar17 != 0) {
              if (iVar17 + 1 < iVar18) {
                (*(code *)piVar12[2])(piVar12,uStack_670);
                iStack_674 = aiStack_660[0];
                uStack_670 = (uint)*param_1;
                break;
              }
              goto LAB_00073ca8;
            }
            iStack_674 = aiStack_660[0];
            uStack_670 = uVar16;
            break;
          }
LAB_00073ca0:
          if (iVar17 == 0) {
            (*(code *)piVar12[2])(piVar12,*param_1);
            piVar13 = (int *)0x1;
            iVar18 = iVar17;
            break;
          }
LAB_00073ca8:
          (*(code *)piVar12[3])(piVar12,iStack_674,iVar17);
          piVar13 = (int *)(iVar17 - 1);
          iVar18 = 0;
          iVar17 = 0;
        } while (piVar13 == (int *)0x0);
        uVar15 = 0xff;
        pbVar10 = param_1 + (int)piVar13;
        while( true ) {
          if (bVar3) {
            iVar17 = *(int *)(iVar28 + 0x38ff8);
            piVar13 = *(int **)(puVar29 + 0x39878);
            if (2 < iVar17) {
              iVar18 = 0x157;
              pbVar10 = (byte *)(*(int *)(puVar29 + 0x39878) + 0x72e0);
              piVar13 = piVar13 + 0x1cc2;
              (**(code **)(puVar29 + 0x3a0b0))();
              piVar12 = piVar21;
              goto LAB_00073c5c;
            }
            *(int *)(iVar28 + 0x38ff8) = iVar17 + 1;
            *(byte *)(iVar28 + iVar17 + 0x38ff2) = *param_1;
          }
          else {
            bVar14 = *param_1;
            piVar13 = (int *)(uint)bVar14;
            iVar17 = *(int *)(iVar28 + 0x38000);
            psVar8 = (short *)(iVar28 + iVar17 * 6);
            uVar16 = ((uint)param_1[2] * 0x10d + (uint)param_1[1] * 0x107 + (int)piVar13 * 0x101) %
                     0x7f7;
            if (psVar8[1] == -1) {
              if (psVar8[2] != -1) {
                *(undefined2 *)(iVar28 + (psVar8[2] + 0x1c000) * 2 + 4) = 0xffff;
              }
            }
            else {
              *(undefined2 *)(iVar28 + psVar8[1] * 6) = 0xffff;
            }
            psVar8[2] = (short)uVar16;
            psVar8[1] = -1;
            iVar27 = iVar28 + uVar16 * 2;
            sVar2 = *(short *)(iVar27 + 0x38004);
            *psVar8 = sVar2;
            *(short *)(iVar27 + 0x38004) = (short)iVar17;
            if (sVar2 != -1) {
              *(short *)(iVar28 + sVar2 * 6 + 2) = (short)iVar17;
            }
            *(byte *)(iVar28 + iVar17 + 0x30000) = bVar14;
            *(uint *)(iVar28 + 0x38000) = iVar17 + 1U & 0x7fff;
          }
          if (param_1 + 1 == pbVar10) break;
          param_2 = param_2 + -1;
          param_1 = param_1 + 1;
          bVar3 = param_2 < 3;
        }
        param_2 = param_2 + -1;
        param_1 = param_1 + 1;
        bVar3 = param_2 < 3;
        iVar17 = iVar18;
      } while (0 < param_2);
    }
    if (iStack_55c == *piVar7) {
      return;
    }
  }
  else {
    iVar17 = *(int *)(puVar29 + 0x39878) + 0x72e0;
    piVar13 = (int *)(*(int *)(puVar29 + 0x39878) + 0x72ec);
    (**(code **)(puVar29 + 0x3a0b0))(piVar13,iVar17,0xd0,*(int *)(puVar29 + 0x39878) + 0x740c);
    uVar15 = (undefined1)iVar17;
  }
  pcVar30 = *(code **)(puVar29 + 0x3a254);
  (*pcVar30)();
  iVar17 = piVar13[0x2067];
  *(undefined1 *)((int)piVar13 + iVar17 + 0x19c) = uVar15;
  piVar13[0x2067] = iVar17 + 1U & 0x7fff;
  iVar17 = piVar13[0x2069];
  if (iVar17 < piVar13[0x206a]) {
    piVar13[0x2069] = iVar17 + 1;
    *(undefined1 *)(piVar13[0x2068] + iVar17) = uVar15;
    return;
  }
  pcVar30 = *(code **)(pcVar30 + 0x391d8);
  piVar13[0x206a] = iVar17 + 0x200;
  iVar17 = (*pcVar30)(piVar13[0x2068],iVar17 + 0x200,1);
  iVar28 = piVar13[0x2069];
  piVar13[0x2068] = iVar17;
  piVar13[0x2069] = iVar28 + 1;
  *(undefined1 *)(iVar17 + iVar28) = uVar15;
  return;
}

