
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Unknown calling convention */

int inflate(z_streamp strm,int flush)

{
  int iVar1;
  Posf *pPVar2;
  internal_state *piVar3;
  uInt uVar4;
  byte bVar5;
  int iVar6;
  uint uVar7;
  char *pcVar8;
  Posf *pPVar9;
  ct_data_s cVar10;
  int iVar11;
  Bytef *pBVar12;
  gz_headerp pgVar13;
  ct_data_s cVar14;
  ushort *puVar15;
  byte bVar16;
  byte bVar17;
  undefined2 uVar18;
  uint uVar19;
  ct_data_s cVar20;
  ct_data_s cVar21;
  ct_data_s cVar22;
  undefined2 *puVar23;
  uint uVar24;
  ushort uVar25;
  byte *pbVar26;
  Posf *pPVar27;
  Bytef *pBVar28;
  uInt uVar29;
  Bytef *end;
  byte *pbVar31;
  int in_GS_OFFSET;
  byte bVar32;
  Posf *local_6c;
  gz_headerp local_64;
  byte *local_60;
  Posf *local_5c;
  Posf *local_50;
  int local_4c;
  uInt local_48;
  Posf *local_40;
  ct_data_s local_38;
  uchar hbuf [4];
  Bytef *pBVar30;
  
  bVar32 = 0;
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  if ((((strm != (z_streamp)0x0) && (strm->zalloc != (alloc_func)0x0)) &&
      (strm->zfree != (free_func)0x0)) &&
     ((iVar6 = inflateStateCheck(strm), iVar6 == 0 && (end = strm->next_out, end != (Bytef *)0x0))))
  {
    local_60 = strm->next_in;
    pPVar2 = (Posf *)strm->avail_in;
    if ((local_60 != (byte *)0x0) || (pPVar2 == (Posf *)0x0)) {
      piVar3 = strm->state;
      iVar6 = piVar3->status;
      if (iVar6 == 0x3f3f) {
        piVar3->status = 0x3f40;
        iVar6 = 0x3f40;
      }
      local_50 = (Posf *)strm->avail_out;
      local_64 = (gz_headerp)piVar3->window_size;
      cVar20 = (ct_data_s)piVar3->prev;
      local_6c = pPVar2;
      local_5c = local_50;
LAB_000178c9:
      switch(iVar6) {
      case 0x3f34:
        uVar7 = piVar3->pending_buf_size;
        if (uVar7 != 0) {
          if (0xf < (uint)cVar20) goto LAB_00018ec6;
          if (local_6c != (Posf *)0x0) goto LAB_00018ea0;
          goto LAB_00017f30;
        }
        piVar3->status = 0x3f40;
      case 0x3f40:
_L106:
        bVar16 = cVar20.fc;
        if (piVar3->pending_buf != (Bytef *)0x0) {
          cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8);
          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 7));
          piVar3->status = 0x3f4e;
          goto _L120;
        }
        pPVar27 = (Posf *)0x0;
        if ((uint)cVar20 < 3) {
          if (local_6c == (Posf *)0x0) goto LAB_00017f32;
          local_6c = (Posf *)((int)local_6c - 1);
          cVar20 = (ct_data_s)((int)cVar20 + 8);
          bVar17 = *local_60;
          local_60 = local_60 + 1;
          local_64 = (gz_headerp)((int)&local_64->text + ((uint)bVar17 << (bVar16 & 0x1f)));
        }
        piVar3->pending_buf = (Bytef *)((uint)local_64 & 1);
        uVar7 = (uint)local_64 >> 1 & 3;
        if (uVar7 == 2) {
          local_64 = (gz_headerp)((uint)local_64 >> 3);
          cVar20 = (ct_data_s)((int)cVar20 - 3);
          piVar3->status = 0x3f44;
_L110:
          for (; (uint)cVar20 < 0xe; cVar20 = (ct_data_s)((int)cVar20 + 8)) {
            if (local_6c == (Posf *)0x0) goto LAB_00017f30;
            local_6c = (Posf *)((int)local_6c - 1);
            local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));
            local_60 = local_60 + 1;
          }
          cVar20 = (ct_data_s)((int)cVar20 - 0xe);
          uVar24 = ((uint)local_64 & 0x1f) + 0x101;
          uVar7 = ((uint)local_64 >> 5 & 0x1f) + 1;
          uVar19 = ((uint)local_64 >> 10 & 0xf) + 4;
          local_64 = (gz_headerp)((uint)local_64 >> 0xe);
          piVar3->prev_match = uVar24;
          piVar3->match_available = uVar7;
          piVar3->match_length = uVar19;
          if ((uVar7 < 0x1f) && (uVar24 < 0x11f)) {
            uVar7 = 0;
            piVar3->strstart = 0;
            piVar3->status = 0x3f45;
LAB_000184b2:
            uVar24 = uVar7 + 1;
            do {
              uVar7 = uVar24;
              if ((uint)cVar20 < 3) {
                if (local_6c == (Posf *)0x0) {
                  pPVar27 = (Posf *)0x0;
                  local_6c = (Posf *)0x0;
                  goto LAB_00017f32;
                }
                local_6c = (Posf *)((int)local_6c - 1);
                bVar16 = cVar20.fc;
                cVar20 = (ct_data_s)((int)cVar20 + 8);
                local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))
                ;
                local_60 = local_60 + 1;
              }
              cVar20 = (ct_data_s)((int)cVar20 - 3);
              piVar3->strstart = uVar7;
              pgVar13 = (gz_headerp)((uint)local_64 >> 3);
              *(ushort *)
               ((int)(piVar3->dyn_ltree + -8) +
               (uint)*(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe) * 2) = (ushort)local_64 & 7;
              local_64 = pgVar13;
              uVar24 = uVar7 + 1;
            } while (uVar19 + 1 != uVar7 + 1);
LAB_00019253:
            if (uVar7 < 0x13) {
              puVar15 = inflate::order + uVar7;
              do {
                uVar25 = *puVar15;
                puVar15 = puVar15 + 1;
                *(undefined2 *)((int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2) = 0;
              } while (puVar15 != (ushort *)&UNK_000221e6);
              piVar3->strstart = 0x13;
            }
            piVar3->hash_shift = 7;
            piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);
            piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);
            iVar6 = inflate_table(CODES,(ushort *)&piVar3->lookahead,0x13,
                                  (code **)&piVar3->match_start,&piVar3->hash_shift,
                                  (ushort *)(piVar3->dyn_ltree + 0x98));
            if (iVar6 == 0) {
              local_48 = 0;
              piVar3->strstart = 0;
              piVar3->status = 0x3f46;
LAB_000185db:
              uVar7 = piVar3->prev_match;
              uVar19 = uVar7 + piVar3->match_available;
              while (local_48 < uVar19) {
                uVar24 = ~(-1 << ((byte)piVar3->hash_shift & 0x1f));
                iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;
                cVar21._1_3_ = 0;
                cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);
                uVar25 = *(ushort *)(iVar6 + 2);
                if ((uint)cVar20 < (uint)cVar21) {
                  if (local_6c != (Posf *)0x0) {
                    while( true ) {
                      pbVar26 = local_60 + 1;
                      local_6c = (Posf *)((int)local_6c - 1);
                      bVar16 = cVar20.fc;
                      cVar20 = (ct_data_s)((int)cVar20 + 8);
                      local_64 = (gz_headerp)
                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));
                      iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;
                      cVar21._1_3_ = 0;
                      cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);
                      uVar25 = *(ushort *)(iVar6 + 2);
                      local_60 = pbVar26;
                      if ((uint)cVar21 <= (uint)cVar20) break;
                      if (local_6c == (Posf *)0x0) goto LAB_00018d40;
                    }
                    goto LAB_00018694;
                  }
LAB_000192ef:
                  pPVar27 = (Posf *)0x0;
                  goto LAB_00017f32;
                }
LAB_00018694:
                bVar16 = cVar21.fc;
                if (uVar25 < 0x10) {
                  local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));
                  cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);
                  piVar3->strstart = local_48 + 1;
                  *(ushort *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2) = uVar25;
                  local_48 = local_48 + 1;
                }
                else {
                  if (uVar25 == 0x10) {
                    if ((uint)cVar20 < (int)cVar21 + 2U) {
                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;
                      while( true ) {
                        pbVar26 = local_60 + 1;
                        local_6c = (Posf *)((int)local_6c - 1);
                        bVar17 = cVar20.fc;
                        cVar20 = (ct_data_s)((int)cVar20 + 8);
                        local_64 = (gz_headerp)
                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));
                        local_60 = pbVar26;
                        if ((int)cVar21 + 2U <= (uint)cVar20) break;
                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;
                      }
                    }
                    cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);
                    local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));
                    if (local_48 == 0) {
                      strm->msg = "invalid bit length repeat";
                      piVar3->status = 0x3f51;
                      goto _L590;
                    }
                    uVar24 = (uint)local_64 & 3;
                    local_64 = (gz_headerp)((uint)local_64 >> 2);
                    cVar20 = (ct_data_s)((int)cVar20 - 2);
                    uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22);
                    iVar6 = uVar24 + 3;
                  }
                  else if (uVar25 == 0x11) {
                    if ((uint)cVar20 < (int)cVar21 + 3U) {
                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;
                      while( true ) {
                        pbVar26 = local_60 + 1;
                        local_6c = (Posf *)((int)local_6c - 1);
                        bVar17 = cVar20.fc;
                        cVar20 = (ct_data_s)((int)cVar20 + 8);
                        local_64 = (gz_headerp)
                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));
                        local_60 = pbVar26;
                        if ((int)cVar21 + 3U <= (uint)cVar20) break;
                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;
                      }
                    }
                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);
                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);
                    iVar6 = (uVar24 & 7) + 3;
                    uVar18 = 0;
                    local_64 = (gz_headerp)(uVar24 >> 3);
                  }
                  else {
                    if ((uint)cVar20 < (int)cVar21 + 7U) {
                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;
                      while( true ) {
                        pbVar26 = local_60 + 1;
                        local_6c = (Posf *)((int)local_6c - 1);
                        bVar17 = cVar20.fc;
                        cVar20 = (ct_data_s)((int)cVar20 + 8);
                        local_64 = (gz_headerp)
                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));
                        local_60 = pbVar26;
                        if ((int)cVar21 + 7U <= (uint)cVar20) break;
                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;
                      }
                    }
                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);
                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);
                    iVar6 = (uVar24 & 0x7f) + 0xb;
                    uVar18 = 0;
                    local_64 = (gz_headerp)(uVar24 >> 7);
                  }
                  uVar24 = iVar6 + local_48;
                  if (uVar19 < uVar24) {
                    strm->msg = "invalid bit length repeat";
                    piVar3->status = 0x3f51;
                    goto _L590;
                  }
                  puVar23 = (undefined2 *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2);
                  do {
                    *puVar23 = uVar18;
                    puVar23 = puVar23 + 1;
                  } while (puVar23 != (undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2));
                  piVar3->strstart = uVar24;
                  local_48 = uVar24;
                }
              }
              if (piVar3->status == 0x3f51) goto _L590;
              if (piVar3->dyn_ltree[0x78].fc.freq != 0) {
                piVar3->hash_shift = 9;
                piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);
                piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);
                iVar6 = inflate_table(LENS,(ushort *)&piVar3->lookahead,uVar7,
                                      (code **)&piVar3->match_start,&piVar3->hash_shift,
                                      (ushort *)(piVar3->dyn_ltree + 0x98));
                if (iVar6 == 0) {
                  piVar3->block_start = 6;
                  piVar3->hash_mask = piVar3->match_start;
                  iVar6 = inflate_table(DISTS,(ushort *)
                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2),
                                        piVar3->match_available,(code **)&piVar3->match_start,
                                        (uint *)&piVar3->block_start,
                                        (ushort *)(piVar3->dyn_ltree + 0x98));
                  if (iVar6 == 0) {
                    piVar3->status = 0x3f47;
                    if (flush != 6) {
_L113:
                      do {
                        piVar3->status = 0x3f48;
_L114:
                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {
                          strm->next_out = end;
                          strm->avail_out = (uInt)local_5c;
                          strm->avail_in = (uInt)local_6c;
                          strm->next_in = local_60;
                          piVar3->prev = (Posf *)cVar20;
                          piVar3->window_size = (ulg)local_64;
                          inflate_fast(strm,(uint)local_50);
                          end = strm->next_out;
                          local_5c = (Posf *)strm->avail_out;
                          cVar20 = (ct_data_s)piVar3->prev;
                          local_60 = strm->next_in;
                          local_6c = (Posf *)strm->avail_in;
                          local_64 = (gz_headerp)piVar3->window_size;
                          iVar6 = piVar3->status;
                          if (iVar6 != 0x3f3f) goto LAB_000178c9;
                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;
                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;
                          goto _L105;
                        }
                        uVar29 = piVar3->hash_shift;
                        uVar4 = piVar3->hash_bits;
                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));
                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);
                        bVar16 = pbVar26[1];
                        cVar22._1_3_ = 0;
                        cVar22.fc.freq._0_1_ = bVar16;
                        bVar17 = *pbVar26;
                        uVar25 = *(ushort *)(pbVar26 + 2);
                        cVar21 = cVar20;
                        if ((uint)cVar20 < (uint)cVar22) {
                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;
                          while( true ) {
                            pbVar31 = local_60 + 1;
                            local_6c = (Posf *)((int)local_6c - 1);
                            bVar16 = cVar20.fc;
                            cVar20 = (ct_data_s)((int)cVar20 + 8);
                            local_64 = (gz_headerp)
                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))
                            ;
                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);
                            bVar16 = pbVar26[1];
                            cVar22._1_3_ = 0;
                            cVar22.fc.freq._0_1_ = bVar16;
                            bVar17 = *pbVar26;
                            uVar25 = *(ushort *)(pbVar26 + 2);
                            cVar21 = cVar20;
                            local_60 = pbVar31;
                            if ((uint)cVar22 <= (uint)cVar20) break;
                            if (local_6c == (Posf *)0x0) {
                              pPVar27 = (Posf *)0x0;
                              goto LAB_00017f32;
                            }
                          }
                        }
                        pPVar27 = (Posf *)(uint)uVar25;
                        if (bVar17 == 0) {
                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));
                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);
                          piVar3[1].dyn_ltree[0x11c] = cVar22;
                          piVar3->head = pPVar27;
LAB_000191a7:
                          piVar3->status = 0x3f4d;
LAB_00017b6a:
                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;
                          local_5c = (Posf *)((int)local_5c - 1);
                          *end = (Bytef)piVar3->head;
                          piVar3->status = 0x3f48;
                          end = end + 1;
                          goto _L114;
                        }
                        bVar16 = cVar22.fc;
                        if ((bVar17 & 0xf0) == 0) {
                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));
                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))
                                                     + (int)pPVar27) * 4);
                          uVar25 = *(ushort *)(pbVar26 + 2);
                          bVar17 = *pbVar26;
                          uVar7 = (uint)pbVar26[1];
                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);
                          cVar20 = cVar21;
                          if ((uint)cVar21 < (uint)local_38) {
                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;
                            while( true ) {
                              pbVar31 = local_60 + 1;
                              cVar20 = (ct_data_s)((int)cVar21 + 8);
                              local_6c = (Posf *)((int)local_6c - 1);
                              local_64 = (gz_headerp)
                                         ((int)&local_64->text +
                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));
                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>
                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);
                              uVar25 = *(ushort *)(pbVar26 + 2);
                              bVar17 = *pbVar26;
                              uVar7 = (uint)pbVar26[1];
                              local_38 = (ct_data_s)((int)cVar22 + uVar7);
                              local_60 = pbVar31;
                              if ((uint)local_38 <= (uint)cVar20) break;
                              cVar21 = cVar20;
                              if (local_6c == (Posf *)0x0) {
                                pPVar27 = (Posf *)0x0;
                                goto LAB_00017f32;
                              }
                            }
                          }
                          local_40 = (Posf *)(uint)uVar25;
                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);
                          local_64 = (gz_headerp)
                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));
                          piVar3[1].dyn_ltree[0x11c] = local_38;
                          piVar3->head = local_40;
                          if (bVar17 != 0) goto LAB_00018d16;
                          goto LAB_000191a7;
                        }
                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));
                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);
                        piVar3[1].dyn_ltree[0x11c] = cVar22;
                        piVar3->head = pPVar27;
LAB_00018d16:
                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;
                        if ((bVar17 & 0x40) != 0) {
                          pcVar8 = "invalid literal/length code";
                          goto LAB_000188eb;
                        }
                        cVar21 = (ct_data_s)(bVar17 & 0xf);
                        piVar3->hash_size = (uInt)cVar21;
                        piVar3->status = 0x3f49;
LAB_00017d07:
                        if (cVar21 == (ct_data_s)0x0) {
                          cVar22 = (ct_data_s)piVar3->head;
                        }
                        else {
                          if ((uint)cVar20 < (uint)cVar21) {
                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;
                            while( true ) {
                              pbVar26 = local_60 + 1;
                              local_6c = (Posf *)((int)local_6c - 1);
                              bVar16 = cVar20.fc;
                              cVar20 = (ct_data_s)((int)cVar20 + 8);
                              local_64 = (gz_headerp)
                                         ((int)&local_64->text +
                                         ((uint)*local_60 << (bVar16 & 0x1f)));
                              local_60 = pbVar26;
                              if ((uint)cVar21 <= (uint)cVar20) break;
                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;
                            }
                          }
                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);
                          piVar3[1].dyn_ltree[0x11c] =
                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);
                          cVar22 = (ct_data_s)
                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +
                                   (int)piVar3->head);
                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));
                          piVar3->head = (Posf *)cVar22;
                        }
                        piVar3[1].dyn_ltree[0x11d] = cVar22;
                        piVar3->status = 0x3f4a;
_L116:
                        uVar29 = piVar3->hash_mask;
                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));
                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);
                        bVar16 = pbVar26[1];
                        bVar17 = *pbVar26;
                        uVar25 = *(ushort *)(pbVar26 + 2);
                        cVar10._1_3_ = 0;
                        cVar10.fc.freq._0_1_ = bVar16;
                        cVar21 = cVar20;
                        if ((uint)cVar20 < (uint)cVar10) {
                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;
                          while( true ) {
                            pbVar31 = local_60 + 1;
                            local_6c = (Posf *)((int)local_6c - 1);
                            bVar16 = cVar20.fc;
                            cVar20 = (ct_data_s)((int)cVar20 + 8);
                            local_64 = (gz_headerp)
                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))
                            ;
                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);
                            bVar16 = pbVar26[1];
                            bVar17 = *pbVar26;
                            uVar25 = *(ushort *)(pbVar26 + 2);
                            cVar10._1_3_ = 0;
                            cVar10.fc.freq._0_1_ = bVar16;
                            cVar21 = cVar20;
                            local_60 = pbVar31;
                            if ((uint)cVar10 <= (uint)cVar20) break;
                            if (local_6c == (Posf *)0x0) {
                              pPVar27 = (Posf *)0x0;
                              goto LAB_00017f32;
                            }
                          }
                        }
                        local_48 = (uInt)uVar25;
                        if ((bVar17 & 0xf0) == 0) {
                          bVar5 = cVar10.fc;
                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));
                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))
                                                      + local_48) * 4);
                          uVar25 = *(ushort *)(pbVar26 + 2);
                          bVar17 = *pbVar26;
                          cVar14._1_3_ = 0;
                          cVar14.fc.freq._0_1_ = pbVar26[1];
                          cVar20 = cVar21;
                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {
                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;
                            while( true ) {
                              pbVar31 = local_60 + 1;
                              cVar20 = (ct_data_s)((int)cVar21 + 8);
                              local_6c = (Posf *)((int)local_6c - 1);
                              local_64 = (gz_headerp)
                                         ((int)&local_64->text +
                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));
                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>
                                                           (bVar5 & 0x1f)) + local_48) * 4);
                              bVar17 = *pbVar26;
                              uVar25 = *(ushort *)(pbVar26 + 2);
                              cVar14._1_3_ = 0;
                              cVar14.fc.freq._0_1_ = pbVar26[1];
                              local_60 = pbVar31;
                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;
                              cVar21 = cVar20;
                              if (local_6c == (Posf *)0x0) {
                                pPVar27 = (Posf *)0x0;
                                goto LAB_00017f32;
                              }
                            }
                          }
                          local_48 = (uInt)uVar25;
                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);
                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));
                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);
                        }
                        else {
                          cVar22 = piVar3[1].dyn_ltree[0x11c];
                          cVar14 = cVar10;
                        }
                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));
                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);
                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);
                        if ((bVar17 & 0x40) != 0) {
                          strm->msg = "invalid distance code";
                          piVar3->status = 0x3f51;
                          pPVar27 = (Posf *)0xfffffffd;
                          goto LAB_00017f32;
                        }
                        cVar21 = (ct_data_s)(bVar17 & 0xf);
                        piVar3->hash_size = (uInt)cVar21;
                        piVar3->status = 0x3f4b;
                        piVar3->ins_h = local_48;
LAB_00017c87:
                        if (cVar21 != (ct_data_s)0x0) {
                          if ((uint)cVar20 < (uint)cVar21) {
                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;
                            while( true ) {
                              pbVar26 = local_60 + 1;
                              local_6c = (Posf *)((int)local_6c - 1);
                              bVar16 = cVar20.fc;
                              cVar20 = (ct_data_s)((int)cVar20 + 8);
                              local_64 = (gz_headerp)
                                         ((int)&local_64->text +
                                         ((uint)*local_60 << (bVar16 & 0x1f)));
                              local_60 = pbVar26;
                              if ((uint)cVar21 <= (uint)cVar20) break;
                              if (local_6c == (Posf *)0x0) {
                                pPVar27 = (Posf *)0x0;
                                goto LAB_00017f32;
                              }
                            }
                          }
                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);
                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;
                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));
                          piVar3->ins_h = piVar3->ins_h + uVar7;
                          piVar3[1].dyn_ltree[0x11c] =
                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);
                        }
                        piVar3->status = 0x3f4c;
_L118:
                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;
                        uVar7 = piVar3->ins_h;
                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {
                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));
                          if (((Posf *)piVar3->w_bits < pPVar9) &&
                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {
                            strm->msg = "invalid distance too far back";
                            piVar3->status = 0x3f51;
                            pPVar27 = (Posf *)0xfffffffd;
                            goto LAB_00017f32;
                          }
                          pPVar27 = (Posf *)piVar3->w_mask;
                          if (pPVar27 < pPVar9) {
                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);
                            iVar6 = piVar3->w_size - (int)pPVar9;
                          }
                          else {
                            iVar6 = (int)pPVar27 - (int)pPVar9;
                          }
                          pBVar28 = piVar3->window + iVar6;
                          pPVar27 = piVar3->head;
                          if (pPVar27 <= pPVar9) {
                            pPVar9 = pPVar27;
                          }
                        }
                        else {
                          pBVar28 = end + -uVar7;
                          pPVar9 = piVar3->head;
                          pPVar27 = pPVar9;
                        }
                        if (local_5c < pPVar9) {
                          pPVar9 = local_5c;
                        }
                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);
                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);
                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);
                        pBVar30 = end;
                        do {
                          end = pBVar30 + (uint)bVar32 * -2 + 1;
                          *pBVar30 = *pBVar28;
                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;
                          pBVar30 = end;
                        } while (end != pBVar12);
                        if (piVar3->head != (Posf *)0x0) {
                          iVar6 = piVar3->status;
                          goto LAB_000178c9;
                        }
                      } while( true );
                    }
                    pPVar27 = (Posf *)0x0;
                  }
                  else {
                    pPVar27 = (Posf *)0xfffffffd;
                    strm->msg = "invalid distances set";
                    piVar3->status = 0x3f51;
                  }
                  goto LAB_00017f32;
                }
                pcVar8 = "invalid literal/lengths set";
                goto LAB_00017b45;
              }
              pPVar27 = (Posf *)0xfffffffd;
              strm->msg = "invalid code -- missing end-of-block";
              piVar3->status = 0x3f51;
            }
            else {
              strm->msg = "invalid code lengths set";
              piVar3->status = 0x3f51;
              pPVar27 = (Posf *)0xfffffffd;
            }
            goto LAB_00017f32;
          }
          pcVar8 = "too many length or distance symbols";
          goto LAB_000188eb;
        }
        if (uVar7 == 3) {
          cVar20 = (ct_data_s)((int)cVar20 - 3);
          local_64 = (gz_headerp)((uint)local_64 >> 3);
          pPVar27 = (Posf *)0xfffffffd;
          strm->msg = "invalid block type";
          piVar3->status = 0x3f51;
          goto LAB_00017f32;
        }
        if (uVar7 == 1) {
          piVar3->hash_shift = 9;
          piVar3->block_start = 5;
          piVar3->status = 0x3f47;
          piVar3->hash_bits = (uInt)lenfix_3685;
          piVar3->hash_mask = (uInt)distfix_3686;
          if (flush != 6) {
            local_64 = (gz_headerp)((uint)local_64 >> 3);
            cVar20 = (ct_data_s)((int)cVar20 - 3);
            goto _L113;
          }
          local_64 = (gz_headerp)((uint)local_64 >> 3);
          cVar20 = (ct_data_s)((int)cVar20 - 3);
          goto LAB_00017f32;
        }
        local_64 = (gz_headerp)((uint)local_64 >> 3);
        piVar3->status = 0x3f41;
        cVar20 = (ct_data_s)((int)cVar20 - 3);
_L107:
        local_64 = (gz_headerp)((uint)local_64 >> (cVar20.fc & 7));
        for (cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8); (uint)cVar20 < 0x20;
            cVar20 = (ct_data_s)((int)cVar20 + 8)) {
          if (local_6c == (Posf *)0x0) goto LAB_00017f30;
          local_6c = (Posf *)((int)local_6c - 1);
          local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));
          local_60 = local_60 + 1;
        }
        pPVar27 = (Posf *)((uint)local_64 & 0xffff);
        if (pPVar27 != (Posf *)((uint)local_64 >> 0x10 ^ 0xffff)) {
          pcVar8 = "invalid stored block lengths";
          goto LAB_00017b45;
        }
        piVar3->head = pPVar27;
        piVar3->status = 0x3f42;
        if (flush == 6) {
          pPVar27 = (Posf *)0x0;
          cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
          cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
          local_64 = (gz_headerp)0x0;
          goto LAB_00017f32;
        }
        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
        local_64 = (gz_headerp)0x0;
LAB_00018557:
        piVar3->status = 0x3f43;
LAB_00018562:
        if (pPVar27 == (Posf *)0x0) {
          piVar3->status = 0x3f3f;
          goto _L105;
        }
        if (local_6c <= pPVar27) {
          pPVar27 = local_6c;
        }
        if (local_5c < pPVar27) {
          pPVar27 = local_5c;
        }
        if (pPVar27 == (Posf *)0x0) goto LAB_00017f30;
        memcpy(end,local_60,(size_t)pPVar27);
        local_6c = (Posf *)((int)local_6c - (int)pPVar27);
        local_60 = local_60 + (int)pPVar27;
        local_5c = (Posf *)((int)local_5c - (int)pPVar27);
        piVar3->head = (Posf *)((int)piVar3->head - (int)pPVar27);
        iVar6 = piVar3->status;
        end = end + (int)pPVar27;
        goto LAB_000178c9;
      case 0x3f35:
        goto joined_r0x0001879b;
      case 0x3f36:
        goto joined_r0x00018053;
      case 0x3f37:
        goto joined_r0x000180e3;
      case 0x3f38:
        uVar7 = piVar3->pending;
        if ((uVar7 & 0x400) == 0) goto LAB_000181ae;
        if ((uint)cVar20 < 0x10) goto LAB_0001829d;
        goto LAB_000182ea;
      case 0x3f39:
        uVar7 = piVar3->pending;
        goto LAB_000181cb;
      case 0x3f3a:
        uVar7 = piVar3->pending;
        goto LAB_0001832f;
      case 0x3f3b:
        uVar7 = piVar3->pending;
        goto LAB_0001835c;
      case 0x3f3c:
        uVar7 = piVar3->pending;
        goto LAB_00018382;
      case 0x3f3d:
        pgVar13 = local_64;
        goto joined_r0x00017e43;
      case 0x3f3e:
        goto _L104;
      case 0x3f3f:
        goto _L105;
      case 0x3f41:
        goto _L107;
      case 0x3f42:
        pPVar27 = piVar3->head;
        goto LAB_00018557;
      case 0x3f43:
        pPVar27 = piVar3->head;
        goto LAB_00018562;
      case 0x3f44:
        goto _L110;
      case 0x3f45:
        uVar7 = piVar3->strstart;
        uVar19 = piVar3->match_length;
        if (uVar19 <= uVar7) goto LAB_00019253;
        goto LAB_000184b2;
      case 0x3f46:
        local_48 = piVar3->strstart;
        goto LAB_000185db;
      case 0x3f47:
        goto _L113;
      case 0x3f48:
        goto _L114;
      case 0x3f49:
        cVar21 = (ct_data_s)piVar3->hash_size;
        goto LAB_00017d07;
      case 0x3f4a:
        goto _L116;
      case 0x3f4b:
        cVar21 = (ct_data_s)piVar3->hash_size;
        goto LAB_00017c87;
      case 0x3f4c:
        goto _L118;
      case 0x3f4d:
        goto LAB_00017b6a;
      case 0x3f4e:
_L120:
        uVar7 = piVar3->pending_buf_size;
        if (uVar7 == 0) goto LAB_00018e20;
        if (0x1f < (uint)cVar20) goto LAB_00017996;
        if (local_6c != (Posf *)0x0) goto LAB_00017970;
        goto LAB_00017f30;
      case 0x3f4f:
        uVar7 = piVar3->pending_buf_size;
        goto LAB_000183ff;
      case 0x3f50:
        pPVar27 = (Posf *)0x1;
        goto LAB_00017f32;
      case 0x3f51:
        goto _L590;
      case 0x3f52:
        goto _L593;
      }
    }
  }
  pPVar27 = (Posf *)0xfffffffe;
  goto LAB_00018778;
  while (local_6c != (Posf *)0x0) {
LAB_00018ea0:
    pbVar26 = local_60 + 1;
    local_6c = (Posf *)((int)local_6c - 1);
    bVar16 = cVar20.fc;
    cVar20 = (ct_data_s)((int)cVar20 + 8);
    local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));
    local_60 = pbVar26;
    if (0xf < (uint)cVar20) goto LAB_00018ec6;
  }
  goto LAB_000190a2;
LAB_00018ec6:
  if (((uVar7 & 2) == 0) || (local_64 != (gz_headerp)0x8b1f)) {
    piVar3->pending = 0;
    if (*(int *)&piVar3->method != 0) {
      *(undefined4 *)(*(int *)&piVar3->method + 0x30) = 0xffffffff;
    }
    if (((uVar7 & 1) == 0) ||
       (uVar7 = ((uint)local_64 & 0xff) * 0x100 + ((uint)local_64 >> 8),
       uVar7 != (uVar7 / 0x1f) * 0x1f)) {
      pcVar8 = "incorrect header check";
LAB_000188eb:
      pPVar27 = (Posf *)0xfffffffd;
      strm->msg = pcVar8;
      piVar3->status = 0x3f51;
    }
    else {
      if (((uint)local_64 & 0xf) == 8) {
        local_64 = (gz_headerp)((uint)local_64 >> 4);
        cVar20 = (ct_data_s)((int)cVar20 - 4);
        uVar7 = ((uint)local_64 & 0xf) + 8;
        if (piVar3->last_flush == 0) {
          piVar3->last_flush = uVar7;
          if (0xf < uVar7) {
LAB_00019879:
            pcVar8 = "invalid window size";
            goto LAB_00017b45;
          }
        }
        else if ((0xf < uVar7) || ((uint)piVar3->last_flush < uVar7)) goto LAB_00019879;
        piVar3->wrap = 1 << (sbyte)uVar7;
        pgVar13 = (gz_headerp)adler32(0,(Bytef *)0x0,0);
        piVar3->gzhead = pgVar13;
        strm->adler = (uLong)pgVar13;
        if (((uint)local_64 & 0x200) == 0) {
          piVar3->status = 0x3f3f;
          cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
          cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
          local_64 = (gz_headerp)0x0;
          goto _L105;
        }
        local_64 = (gz_headerp)0x0;
        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
        piVar3->status = 0x3f3d;
        do {
          if (local_6c == (Posf *)0x0) goto LAB_00017f30;
          local_6c = (Posf *)((int)local_6c - 1);
          bVar16 = cVar20.fc;
          cVar20 = (ct_data_s)((int)cVar20 + 8);
          pgVar13 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));
          local_60 = local_60 + 1;
joined_r0x00017e43:
          local_64 = pgVar13;
        } while ((uint)cVar20 < 0x20);
        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
        local_64 = (gz_headerp)0x0;
        pgVar13 = (gz_headerp)
                  (((uint)pgVar13 & 0xff00) * 0x100 +
                  (int)pgVar13 * 0x1000000 + ((uint)pgVar13 >> 0x18) + ((uint)pgVar13 >> 8 & 0xff00)
                  );
        piVar3->gzhead = pgVar13;
        strm->adler = (uLong)pgVar13;
        piVar3->status = 0x3f3e;
_L104:
        if (piVar3->pending_out != (Bytef *)0x0) {
          pgVar13 = (gz_headerp)adler32(0,(Bytef *)0x0,0);
          piVar3->gzhead = pgVar13;
          strm->adler = (uLong)pgVar13;
          piVar3->status = 0x3f3f;
          goto _L105;
        }
        pPVar27 = (Posf *)0x2;
        strm->next_out = end;
        strm->avail_out = (uInt)local_5c;
        strm->next_in = local_60;
        strm->avail_in = (uInt)local_6c;
        piVar3->prev = (Posf *)cVar20;
        piVar3->window_size = (ulg)local_64;
        goto LAB_00018778;
      }
      pcVar8 = "unknown compression method";
LAB_00017b45:
      pPVar27 = (Posf *)0xfffffffd;
      strm->msg = pcVar8;
      piVar3->status = 0x3f51;
    }
  }
  else {
    if (piVar3->last_flush == 0) {
      piVar3->last_flush = 0xf;
    }
    cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
    cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
    pgVar13 = (gz_headerp)crc32(0,(uchar *)0x0,0);
    hbuf[0] = '\x1f';
    hbuf[1] = 0x8b;
    piVar3->gzhead = pgVar13;
    pgVar13 = (gz_headerp)crc32((ulong)pgVar13,hbuf,2);
    piVar3->gzhead = pgVar13;
    piVar3->status = 0x3f35;
    local_64 = (gz_headerp)0x0;
    do {
      if (local_6c == (Posf *)0x0) goto LAB_00017f30;
      local_6c = (Posf *)((int)local_6c - 1);
      bVar16 = cVar20.fc;
      cVar20 = (ct_data_s)((int)cVar20 + 8);
      local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));
      local_60 = local_60 + 1;
joined_r0x0001879b:
    } while ((uint)cVar20 < 0x10);
    piVar3->pending = (ulg)local_64;
    if ((char)local_64 == '\b') {
      if (((uint)local_64 & 0xe000) != 0) {
        pcVar8 = "unknown header flags set";
        goto LAB_000188eb;
      }
      if (*(uint **)&piVar3->method != (uint *)0x0) {
        **(uint **)&piVar3->method = (uint)local_64 >> 8 & 1;
      }
      if ((((uint)local_64 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {
        hbuf._0_2_ = SUB42(local_64,0);
        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2);
        piVar3->gzhead = pgVar13;
      }
      local_64 = (gz_headerp)0x0;
      cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
      cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
      piVar3->status = 0x3f36;
      do {
        if (local_6c == (Posf *)0x0) goto LAB_00017f30;
        local_6c = (Posf *)((int)local_6c - 1);
        bVar16 = cVar20.fc;
        cVar20 = (ct_data_s)((int)cVar20 + 8);
        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));
        local_60 = local_60 + 1;
joined_r0x00018053:
      } while ((uint)cVar20 < 0x20);
      if (*(int *)&piVar3->method != 0) {
        *(gz_headerp *)(*(int *)&piVar3->method + 4) = local_64;
      }
      if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {
        hbuf._0_2_ = SUB42(local_64,0);
        hbuf[2] = (uchar)((uint)local_64 >> 0x10);
        hbuf[3] = (uchar)((uint)local_64 >> 0x18);
        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,4);
        piVar3->gzhead = pgVar13;
      }
      local_64 = (gz_headerp)0x0;
      cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
      cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
      piVar3->status = 0x3f37;
      do {
        if (local_6c == (Posf *)0x0) goto LAB_00017f30;
        local_6c = (Posf *)((int)local_6c - 1);
        bVar16 = cVar20.fc;
        cVar20 = (ct_data_s)((int)cVar20 + 8);
        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));
        local_60 = local_60 + 1;
joined_r0x000180e3:
      } while ((uint)cVar20 < 0x10);
      iVar6 = *(int *)&piVar3->method;
      if (iVar6 != 0) {
        *(uint *)(iVar6 + 8) = (uint)local_64 & 0xff;
        *(uint *)(iVar6 + 0xc) = (uint)local_64 >> 8;
      }
      uVar7 = piVar3->pending;
      if (((uVar7 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {
        hbuf._0_2_ = SUB42(local_64,0);
        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2);
        piVar3->gzhead = pgVar13;
        uVar7 = piVar3->pending;
      }
      piVar3->status = 0x3f38;
      if ((uVar7 & 0x400) == 0) {
        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
        local_64 = (gz_headerp)0x0;
LAB_000181ae:
        if (*(int *)&piVar3->method != 0) {
          *(undefined4 *)(*(int *)&piVar3->method + 0x10) = 0;
        }
        goto LAB_000181c0;
      }
      local_64 = (gz_headerp)0x0;
      cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
      cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
LAB_0001829d:
      if (local_6c == (Posf *)0x0) goto LAB_00017f30;
      do {
        pbVar26 = local_60 + 1;
        local_6c = (Posf *)((int)local_6c - 1);
        bVar16 = cVar20.fc;
        cVar20 = (ct_data_s)((int)cVar20 + 8);
        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));
        local_60 = pbVar26;
        if (0xf < (uint)cVar20) goto LAB_000182ea;
      } while (local_6c != (Posf *)0x0);
      pPVar27 = (Posf *)0x0;
    }
    else {
      strm->msg = "unknown compression method";
      piVar3->status = 0x3f51;
_L590:
      pPVar27 = (Posf *)0xfffffffd;
    }
  }
  goto LAB_00017f32;
LAB_000182ea:
  piVar3->head = (Posf *)local_64;
  if (*(int *)&piVar3->method != 0) {
    *(gz_headerp *)(*(int *)&piVar3->method + 0x14) = local_64;
  }
  if (((uVar7 & 0x200) == 0) || ((piVar3->pending_buf_size & 4) == 0)) {
    cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
    cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
    local_64 = (gz_headerp)0x0;
  }
  else {
    cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
    cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
    hbuf._0_2_ = SUB42(local_64,0);
    pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2);
    piVar3->gzhead = pgVar13;
    local_64 = (gz_headerp)0x0;
    uVar7 = piVar3->pending;
  }
LAB_000181c0:
  piVar3->status = 0x3f39;
LAB_000181cb:
  if ((uVar7 & 0x400) == 0) {
LAB_0001826a:
    piVar3->head = (Posf *)0x0;
    piVar3->status = 0x3f3a;
LAB_0001832f:
    if ((uVar7 & 0x800) == 0) {
      if (*(int *)&piVar3->method != 0) {
        *(undefined4 *)(*(int *)&piVar3->method + 0x1c) = 0;
      }
    }
    else {
      pPVar27 = (Posf *)0x0;
      if (local_6c == (Posf *)0x0) goto LAB_00017f32;
      do {
        iVar6 = *(int *)&piVar3->method;
        pPVar27 = (Posf *)((int)pPVar27 + 1);
        bVar16 = (local_60 + -1)[(int)pPVar27];
        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x1c), iVar11 != 0)) &&
           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x20))) {
          piVar3->head = (Posf *)((int)pPVar9 + 1);
          *(byte *)(iVar11 + (int)pPVar9) = bVar16;
        }
      } while ((bVar16 != 0) && (pPVar27 < local_6c));
      if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {
        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);
        piVar3->gzhead = pgVar13;
      }
      local_60 = local_60 + (int)pPVar27;
      local_6c = (Posf *)((int)local_6c - (int)pPVar27);
      if (bVar16 != 0) goto LAB_00017f30;
      uVar7 = piVar3->pending;
    }
    piVar3->head = (Posf *)0x0;
    piVar3->status = 0x3f3b;
LAB_0001835c:
    if ((uVar7 & 0x1000) == 0) {
      if (*(int *)&piVar3->method != 0) {
        *(undefined4 *)(*(int *)&piVar3->method + 0x24) = 0;
      }
    }
    else {
      pPVar27 = (Posf *)0x0;
      if (local_6c == (Posf *)0x0) goto LAB_00017f32;
      do {
        iVar6 = *(int *)&piVar3->method;
        pPVar27 = (Posf *)((int)pPVar27 + 1);
        bVar16 = (local_60 + -1)[(int)pPVar27];
        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x24), iVar11 != 0)) &&
           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x28))) {
          piVar3->head = (Posf *)((int)pPVar9 + 1);
          *(byte *)(iVar11 + (int)pPVar9) = bVar16;
        }
      } while ((bVar16 != 0) && (pPVar27 < local_6c));
      if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {
        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);
        piVar3->gzhead = pgVar13;
      }
      local_60 = local_60 + (int)pPVar27;
      local_6c = (Posf *)((int)local_6c - (int)pPVar27);
      if (bVar16 != 0) goto LAB_00017f30;
      uVar7 = piVar3->pending;
    }
    piVar3->status = 0x3f3c;
LAB_00018382:
    if ((uVar7 & 0x200) == 0) {
LAB_0001838b:
      iVar6 = *(int *)&piVar3->method;
      if (iVar6 != 0) {
        *(undefined4 *)(iVar6 + 0x30) = 1;
        *(uint *)(iVar6 + 0x2c) = (int)uVar7 >> 9 & 1;
      }
      pgVar13 = (gz_headerp)crc32(0,(uchar *)0x0,0);
      piVar3->gzhead = pgVar13;
      strm->adler = (uLong)pgVar13;
      piVar3->status = 0x3f3f;
      goto _L105;
    }
    if ((uint)cVar20 < 0x10) {
      if (local_6c == (Posf *)0x0) goto LAB_00017f30;
      do {
        pbVar26 = local_60 + 1;
        local_6c = (Posf *)((int)local_6c - 1);
        bVar16 = cVar20.fc;
        cVar20 = (ct_data_s)((int)cVar20 + 8);
        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));
        local_60 = pbVar26;
        if (0xf < (uint)cVar20) goto LAB_00018a2e;
      } while (local_6c != (Posf *)0x0);
      pPVar27 = (Posf *)0x0;
    }
    else {
LAB_00018a2e:
      if (((piVar3->pending_buf_size & 4) == 0) ||
         ((gz_headerp)(uint)*(ushort *)&piVar3->gzhead == local_64)) {
        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
        local_64 = (gz_headerp)0x0;
        goto LAB_0001838b;
      }
      strm->msg = "header crc mismatch";
      piVar3->status = 0x3f51;
      pPVar27 = (Posf *)0xfffffffd;
    }
  }
  else {
    pPVar27 = piVar3->head;
    pPVar9 = local_6c;
    if (pPVar27 < local_6c) {
      pPVar9 = pPVar27;
    }
    if (pPVar9 != (Posf *)0x0) {
      iVar6 = *(int *)&piVar3->method;
      if ((iVar6 != 0) && (*(int *)(iVar6 + 0x10) != 0)) {
        iVar11 = *(int *)(iVar6 + 0x14) - (int)pPVar27;
        pPVar27 = (Posf *)(*(uint *)(iVar6 + 0x18) - iVar11);
        if ((uint)((int)pPVar9 + iVar11) <= *(uint *)(iVar6 + 0x18)) {
          pPVar27 = pPVar9;
        }
        memcpy((void *)(iVar11 + *(int *)(iVar6 + 0x10)),local_60,(size_t)pPVar27);
        uVar7 = piVar3->pending;
      }
      if (((uVar7 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {
        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar9);
        piVar3->gzhead = pgVar13;
      }
      local_6c = (Posf *)((int)local_6c - (int)pPVar9);
      local_60 = local_60 + (int)pPVar9;
      pPVar27 = (Posf *)((int)piVar3->head - (int)pPVar9);
      piVar3->head = pPVar27;
    }
    if (pPVar27 == (Posf *)0x0) {
      uVar7 = piVar3->pending;
      goto LAB_0001826a;
    }
LAB_00017f30:
    pPVar27 = (Posf *)0x0;
  }
  goto LAB_00017f32;
LAB_00017996:
  uVar29 = (int)local_50 - (int)local_5c;
  strm->total_out = strm->total_out + uVar29;
  piVar3->gzindex = piVar3->gzindex + uVar29;
  uVar19 = uVar7 & 4;
  if ((uVar19 != 0) && (uVar29 != 0)) {
    if (piVar3->pending == 0) {
      pgVar13 = (gz_headerp)adler32((uLong)piVar3->gzhead,end + -uVar29,uVar29);
    }
    else {
      pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,end + -uVar29,uVar29);
    }
    piVar3->gzhead = pgVar13;
    strm->adler = (uLong)pgVar13;
    uVar7 = piVar3->pending_buf_size;
    uVar19 = uVar7 & 4;
  }
  if (uVar19 != 0) {
    pgVar13 = local_64;
    if (piVar3->pending == 0) {
      pgVar13 = (gz_headerp)
                (((uint)local_64 >> 0x18) + (int)local_64 * 0x1000000 +
                 ((uint)local_64 >> 8 & 0xff00) + ((uint)local_64 & 0xff00) * 0x100);
    }
    if (piVar3->gzhead != pgVar13) {
      strm->msg = "incorrect data check";
      piVar3->status = 0x3f51;
      pPVar27 = (Posf *)0xfffffffd;
      local_50 = local_5c;
      goto LAB_00017f32;
    }
  }
  cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
  cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
  local_64 = (gz_headerp)0x0;
  local_50 = local_5c;
LAB_00018e20:
  piVar3->status = 0x3f4f;
LAB_000183ff:
  if ((uVar7 != 0) && (piVar3->pending != 0)) {
    for (; (uint)cVar20 < 0x20; cVar20 = (ct_data_s)((int)cVar20 + 8)) {
      if (local_6c == (Posf *)0x0) goto LAB_00017f30;
      local_6c = (Posf *)((int)local_6c - 1);
      local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));
      local_60 = local_60 + 1;
    }
    if ((gz_headerp)piVar3->gzindex != local_64) {
      strm->msg = "incorrect length check";
      piVar3->status = 0x3f51;
      pPVar27 = (Posf *)0xfffffffd;
      goto LAB_00017f32;
    }
    cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
    cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
    local_64 = (gz_headerp)0x0;
  }
  pPVar27 = (Posf *)0x1;
  piVar3->status = 0x3f50;
  goto LAB_00017f32;
LAB_00018d40:
  pPVar27 = (Posf *)0x0;
  local_60 = pbVar26;
  goto LAB_00017f32;
code_r0x00018d1f:
  piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;
  piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;
  piVar3->status = 0x3f3f;
_L105:
  if (flush - 5U < 2) goto LAB_00017f30;
  goto _L106;
  while (local_6c != (Posf *)0x0) {
LAB_00017970:
    pbVar26 = local_60 + 1;
    local_6c = (Posf *)((int)local_6c - 1);
    bVar32 = cVar20.fc;
    cVar20 = (ct_data_s)((int)cVar20 + 8);
    local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar32 & 0x1f)));
    local_60 = pbVar26;
    if (0x1f < (uint)cVar20) goto LAB_00017996;
  }
LAB_000190a2:
  pPVar27 = (Posf *)0x0;
  local_60 = pbVar26;
LAB_00017f32:
  strm->next_in = local_60;
  strm->next_out = end;
  strm->avail_in = (uInt)local_6c;
  strm->avail_out = (uInt)local_5c;
  piVar3->window_size = (ulg)local_64;
  piVar3->prev = (Posf *)cVar20;
  if ((piVar3->w_size != 0) ||
     (((local_5c != local_50 && ((uint)piVar3->status < 0x3f51)) &&
      (((uint)piVar3->status < 0x3f4e || (flush != 4)))))) {
    iVar6 = updatewindow(strm,end,(int)local_50 - (int)local_5c);
    if (iVar6 != 0) {
      piVar3->status = 0x3f52;
_L593:
      pPVar27 = (Posf *)0xfffffffc;
      goto LAB_00018778;
    }
    local_6c = (Posf *)strm->avail_in;
    local_5c = (Posf *)strm->avail_out;
  }
  uVar29 = (int)local_50 - (int)local_5c;
  strm->total_in = strm->total_in + ((int)pPVar2 - (int)local_6c);
  strm->total_out = strm->total_out + uVar29;
  piVar3->gzindex = piVar3->gzindex + uVar29;
  if (((piVar3->pending_buf_size & 4) != 0) && (uVar29 != 0)) {
    if (piVar3->pending == 0) {
      pgVar13 = (gz_headerp)adler32((uLong)piVar3->gzhead,strm->next_out + -uVar29,uVar29);
    }
    else {
      pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,strm->next_out + -uVar29,uVar29);
    }
    piVar3->gzhead = pgVar13;
    strm->adler = (uLong)pgVar13;
  }
  pPVar9 = piVar3->prev;
  if (piVar3->pending_buf != (Bytef *)0x0) {
    pPVar9 = pPVar9 + 0x20;
  }
  iVar6 = piVar3->status;
  local_4c = 0;
  if (iVar6 == 0x3f3f) {
    pPVar9 = pPVar9 + 0x40;
  }
  else if ((iVar6 == 0x3f47) || (iVar6 == 0x3f42)) {
    local_4c = 0x100;
  }
  strm->data_type = (int)pPVar9 + local_4c;
  if ((((int)pPVar2 - (int)local_6c == 0 && uVar29 == 0) || (flush == 4)) &&
     (pPVar27 == (Posf *)0x0)) {
    pPVar27 = (Posf *)0xfffffffb;
  }
LAB_00018778:
  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {
    return (int)pPVar27;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

uint inflate(int *param_1,int param_2)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  byte bVar4;
  int iVar5;
  char *pcVar6;
  int iVar7;
  undefined1 *puVar8;
  undefined4 uVar9;
  uint uVar10;
  ushort *puVar11;
  byte bVar12;
  byte bVar13;
  uint uVar14;
  uint extraout_ECX;
  size_t __n;
  uint uVar15;
  uint extraout_ECX_00;
  uint extraout_ECX_01;
  undefined2 *puVar16;
  uint uVar17;
  uint uVar18;
  ushort uVar19;
  byte *pbVar20;
  uint uVar21;
  undefined1 *puVar22;
  undefined1 *__dest;
  byte *pbVar24;
  int in_GS_OFFSET;
  byte bVar25;
  uint local_6c;
  uint local_64;
  byte *local_60;
  uint local_5c;
  uint local_50;
  int local_4c;
  uint uStack_48;
  uint uStack_40;
  uint uStack_38;
  undefined2 uStack_24;
  undefined1 uStack_22;
  undefined1 uStack_21;
  int local_20;
  undefined4 uStack_14;
  undefined1 *puVar23;
  
  bVar25 = 0;
  uStack_14 = 0x17809;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if ((((param_1 != (int *)0x0) && (param_1[8] != 0)) && (param_1[9] != 0)) &&
     ((iVar5 = FUN_00017420(), iVar5 == 0 &&
      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0)))) {
    local_60 = (byte *)*param_1;
    uVar1 = param_1[1];
    if ((local_60 != (byte *)0x0) || (uVar1 == 0)) {
      uVar2 = param_1[7];
      iVar5 = *(int *)(uVar2 + 4);
      if (iVar5 == 0x3f3f) {
        *(undefined4 *)(uVar2 + 4) = 0x3f40;
        iVar5 = 0x3f40;
      }
      local_50 = param_1[4];
      local_64 = *(uint *)(uVar2 + 0x3c);
      uVar15 = *(uint *)(uVar2 + 0x40);
      uVar21 = uVar2;
      local_6c = uVar1;
      local_5c = local_50;
LAB_000178c9:
      switch(iVar5) {
      case 0x3f34:
        uVar21 = *(uint *)(uVar2 + 0xc);
        if (uVar21 != 0) {
          if (0xf < uVar15) goto code_r0x00018ec6;
          if (local_6c != 0) goto code_r0x00018ea0;
          goto LAB_00017f30;
        }
        *(undefined4 *)(uVar2 + 4) = 0x3f40;
      case 0x3f40:
LAB_0001790a:
        bVar12 = (byte)uVar15;
        if (*(int *)(uVar2 + 8) != 0) {
          uVar15 = uVar15 & 0xfffffff8;
          local_64 = local_64 >> (bVar12 & 7);
          *(undefined4 *)(uVar2 + 4) = 0x3f4e;
          goto code_r0x00017930;
        }
        uVar21 = 0;
        if (uVar15 < 3) {
          if (local_6c == 0) goto LAB_00017f32;
          local_6c = local_6c - 1;
          uVar15 = uVar15 + 8;
          bVar13 = *local_60;
          local_60 = local_60 + 1;
          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));
        }
        *(uint *)(uVar2 + 8) = local_64 & 1;
        uVar14 = local_64 >> 1 & 3;
        if (uVar14 == 2) {
          local_64 = local_64 >> 3;
          uVar15 = uVar15 - 3;
          *(undefined4 *)(uVar2 + 4) = 0x3f44;
code_r0x00018840:
          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {
            if (local_6c == 0) goto LAB_00017f30;
            local_6c = local_6c - 1;
            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));
            local_60 = local_60 + 1;
          }
          uVar15 = uVar15 - 0xe;
          uVar17 = (local_64 & 0x1f) + 0x101;
          uVar21 = (local_64 >> 5 & 0x1f) + 1;
          uVar14 = (local_64 >> 10 & 0xf) + 4;
          local_64 = local_64 >> 0xe;
          *(uint *)(uVar2 + 100) = uVar17;
          *(uint *)(uVar2 + 0x68) = uVar21;
          *(uint *)(uVar2 + 0x60) = uVar14;
          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {
            uVar21 = 0;
            *(undefined4 *)(uVar2 + 0x6c) = 0;
            *(undefined4 *)(uVar2 + 4) = 0x3f45;
LAB_000184b2:
            uVar17 = uVar21 + 1;
            do {
              uVar21 = uVar17;
              if (uVar15 < 3) {
                if (local_6c == 0) {
                  uVar21 = 0;
                  local_6c = 0;
                  goto LAB_00017f32;
                }
                local_6c = local_6c - 1;
                bVar12 = (byte)uVar15;
                uVar15 = uVar15 + 8;
                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
                local_60 = local_60 + 1;
              }
              uVar15 = uVar15 - 3;
              *(uint *)(uVar2 + 0x6c) = uVar21;
              uVar17 = local_64 >> 3;
              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =
                   (ushort)local_64 & 7;
              local_64 = uVar17;
              uVar17 = uVar21 + 1;
            } while (uVar14 + 1 != uVar21 + 1);
code_r0x00019253:
            if (uVar21 < 0x13) {
              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);
              do {
                uVar19 = *puVar11;
                puVar11 = puVar11 + 1;
                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;
              } while (puVar11 != (ushort *)&UNK_000221e6);
              *(undefined4 *)(uVar2 + 0x6c) = 0x13;
            }
            *(undefined4 *)(uVar2 + 0x58) = 7;
            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;
            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;
            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);
            if (iVar5 == 0) {
              uStack_48 = 0;
              *(undefined4 *)(uVar2 + 0x6c) = 0;
              *(undefined4 *)(uVar2 + 4) = 0x3f46;
              uVar21 = extraout_ECX_01;
LAB_000185db:
              iVar5 = *(int *)(uVar2 + 100);
              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);
              while (uStack_48 < uVar14) {
                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));
                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;
                uVar21 = (uint)*(byte *)(iVar7 + 1);
                uVar19 = *(ushort *)(iVar7 + 2);
                if (uVar15 < uVar21) {
                  if (local_6c != 0) {
                    while( true ) {
                      pbVar20 = local_60 + 1;
                      local_6c = local_6c - 1;
                      bVar12 = (byte)uVar15;
                      uVar15 = uVar15 + 8;
                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;
                      uVar21 = (uint)*(byte *)(iVar7 + 1);
                      uVar19 = *(ushort *)(iVar7 + 2);
                      local_60 = pbVar20;
                      if (uVar21 <= uVar15) break;
                      if (local_6c == 0) goto LAB_00018d40;
                    }
                    goto LAB_00018694;
                  }
LAB_000192ef:
                  uVar21 = 0;
                  goto LAB_00017f32;
                }
LAB_00018694:
                bVar12 = (byte)uVar21;
                if (uVar19 < 0x10) {
                  local_64 = local_64 >> (bVar12 & 0x1f);
                  uVar15 = uVar15 - uVar21;
                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;
                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;
                  uVar21 = uStack_48;
                  uStack_48 = uStack_48 + 1;
                }
                else {
                  if (uVar19 == 0x10) {
                    if (uVar15 < uVar21 + 2) {
                      if (local_6c == 0) goto LAB_000192ef;
                      while( true ) {
                        pbVar20 = local_60 + 1;
                        local_6c = local_6c - 1;
                        bVar13 = (byte)uVar15;
                        uVar15 = uVar15 + 8;
                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));
                        local_60 = pbVar20;
                        if (uVar21 + 2 <= uVar15) break;
                        if (local_6c == 0) goto LAB_00018d40;
                      }
                    }
                    uVar15 = uVar15 - uVar21;
                    local_64 = local_64 >> (bVar12 & 0x1f);
                    if (uStack_48 == 0) {
                      param_1[6] = (int)"invalid bit length repeat";
                      *(undefined4 *)(uVar2 + 4) = 0x3f51;
                      goto LAB_00018817;
                    }
                    uVar17 = local_64 & 3;
                    local_64 = local_64 >> 2;
                    uVar15 = uVar15 - 2;
                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);
                    iVar7 = uVar17 + 3;
                  }
                  else if (uVar19 == 0x11) {
                    if (uVar15 < uVar21 + 3) {
                      if (local_6c == 0) goto LAB_000192ef;
                      while( true ) {
                        pbVar20 = local_60 + 1;
                        local_6c = local_6c - 1;
                        bVar13 = (byte)uVar15;
                        uVar15 = uVar15 + 8;
                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));
                        local_60 = pbVar20;
                        if (uVar21 + 3 <= uVar15) break;
                        if (local_6c == 0) goto LAB_00018d40;
                      }
                    }
                    local_64 = local_64 >> (bVar12 & 0x1f);
                    uVar15 = (uVar15 - uVar21) - 3;
                    iVar7 = (local_64 & 7) + 3;
                    uVar21 = 0;
                    local_64 = local_64 >> 3;
                  }
                  else {
                    if (uVar15 < uVar21 + 7) {
                      if (local_6c == 0) goto LAB_000192ef;
                      while( true ) {
                        pbVar20 = local_60 + 1;
                        local_6c = local_6c - 1;
                        bVar13 = (byte)uVar15;
                        uVar15 = uVar15 + 8;
                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));
                        local_60 = pbVar20;
                        if (uVar21 + 7 <= uVar15) break;
                        if (local_6c == 0) goto LAB_00018d40;
                      }
                    }
                    local_64 = local_64 >> (bVar12 & 0x1f);
                    uVar15 = (uVar15 - uVar21) - 7;
                    iVar7 = (local_64 & 0x7f) + 0xb;
                    uVar21 = 0;
                    local_64 = local_64 >> 7;
                  }
                  uVar17 = iVar7 + uStack_48;
                  if (uVar14 < uVar17) {
                    param_1[6] = (int)"invalid bit length repeat";
                    *(undefined4 *)(uVar2 + 4) = 0x3f51;
                    goto LAB_00018817;
                  }
                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);
                  do {
                    *puVar16 = (short)uVar21;
                    puVar16 = puVar16 + 1;
                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));
                  *(uint *)(uVar2 + 0x6c) = uVar17;
                  uStack_48 = uVar17;
                }
              }
              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;
              if (*(short *)(uVar2 + 0x274) != 0) {
                *(undefined4 *)(uVar2 + 0x58) = 9;
                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;
                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;
                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,
                                     uVar21,uVar21);
                if (iVar5 == 0) {
                  uVar9 = *(undefined4 *)(uVar2 + 0x70);
                  *(undefined4 *)(uVar2 + 0x5c) = 6;
                  *(undefined4 *)(uVar2 + 0x54) = uVar9;
                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,
                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,
                                       uVar2 + 0x2f4,uVar9,uVar9);
                  if (iVar5 == 0) {
                    *(undefined4 *)(uVar2 + 4) = 0x3f47;
                    if (param_2 != 6) {
LAB_00017c70:
                      do {
                        *(undefined4 *)(uVar2 + 4) = 0x3f48;
LAB_00017b90:
                        if ((5 < local_6c) && (0x101 < local_5c)) {
                          param_1[3] = (int)__dest;
                          param_1[4] = local_5c;
                          param_1[1] = local_6c;
                          *param_1 = (int)local_60;
                          *(uint *)(uVar2 + 0x40) = uVar15;
                          *(uint *)(uVar2 + 0x3c) = local_64;
                          FUN_00016d10(param_1,local_50);
                          __dest = (undefined1 *)param_1[3];
                          local_5c = param_1[4];
                          uVar15 = *(uint *)(uVar2 + 0x40);
                          local_60 = (byte *)*param_1;
                          local_6c = param_1[1];
                          local_64 = *(uint *)(uVar2 + 0x3c);
                          iVar5 = *(int *)(uVar2 + 4);
                          uVar21 = extraout_ECX;
                          if (iVar5 != 0x3f3f) goto LAB_000178c9;
                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;
                          goto LAB_00017f13;
                        }
                        iVar5 = *(int *)(uVar2 + 0x50);
                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;
                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));
                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);
                        bVar12 = pbVar20[1];
                        uVar14 = (uint)bVar12;
                        bVar13 = *pbVar20;
                        uVar19 = *(ushort *)(pbVar20 + 2);
                        uVar21 = uVar15;
                        if (uVar15 < uVar14) {
                          if (local_6c == 0) goto LAB_00017f30;
                          while( true ) {
                            pbVar24 = local_60 + 1;
                            local_6c = local_6c - 1;
                            bVar12 = (byte)uVar15;
                            uVar15 = uVar15 + 8;
                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);
                            bVar12 = pbVar20[1];
                            uVar14 = (uint)bVar12;
                            bVar13 = *pbVar20;
                            uVar19 = *(ushort *)(pbVar20 + 2);
                            uVar21 = uVar15;
                            local_60 = pbVar24;
                            if (uVar14 <= uVar15) break;
                            if (local_6c == 0) {
                              uVar21 = 0;
                              goto LAB_00017f32;
                            }
                          }
                        }
                        uVar17 = (uint)uVar19;
                        if (bVar13 == 0) {
                          local_64 = local_64 >> (bVar12 & 0x1f);
                          uVar15 = uVar21 - uVar14;
                          *(uint *)(uVar2 + 0x1bc8) = uVar14;
                          *(uint *)(uVar2 + 0x44) = uVar17;
LAB_000191a7:
                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;
LAB_00017b6a:
                          if (local_5c == 0) goto LAB_00017f30;
                          local_5c = local_5c - 1;
                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);
                          *(undefined4 *)(uVar2 + 4) = 0x3f48;
                          __dest = __dest + 1;
                          goto LAB_00017b90;
                        }
                        bVar12 = (byte)uVar14;
                        if ((bVar13 & 0xf0) == 0) {
                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));
                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +
                                                     uVar17) * 4);
                          uVar19 = *(ushort *)(pbVar20 + 2);
                          bVar13 = *pbVar20;
                          uVar10 = (uint)pbVar20[1];
                          uStack_38 = uVar10 + uVar14;
                          uVar15 = uVar21;
                          if (uVar21 < uStack_38) {
                            if (local_6c == 0) goto LAB_00017f30;
                            while( true ) {
                              pbVar24 = local_60 + 1;
                              uVar15 = uVar21 + 8;
                              local_6c = local_6c - 1;
                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));
                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +
                                                         uVar17) * 4);
                              uVar19 = *(ushort *)(pbVar20 + 2);
                              bVar13 = *pbVar20;
                              uVar10 = (uint)pbVar20[1];
                              uStack_38 = uVar14 + uVar10;
                              local_60 = pbVar24;
                              if (uStack_38 <= uVar15) break;
                              uVar21 = uVar15;
                              if (local_6c == 0) {
                                uVar21 = 0;
                                goto LAB_00017f32;
                              }
                            }
                          }
                          uStack_40 = (uint)uVar19;
                          uVar15 = (uVar15 - uVar14) - uVar10;
                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);
                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;
                          *(uint *)(uVar2 + 0x44) = uStack_40;
                          if (bVar13 != 0) goto LAB_00018d16;
                          goto LAB_000191a7;
                        }
                        local_64 = local_64 >> (bVar12 & 0x1f);
                        uVar15 = uVar21 - uVar14;
                        *(uint *)(uVar2 + 0x1bc8) = uVar14;
                        *(uint *)(uVar2 + 0x44) = uVar17;
LAB_00018d16:
                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;
                        if ((bVar13 & 0x40) != 0) {
                          pcVar6 = "invalid literal/length code";
                          goto LAB_000188eb;
                        }
                        uVar21 = bVar13 & 0xf;
                        *(uint *)(uVar2 + 0x4c) = uVar21;
                        *(undefined4 *)(uVar2 + 4) = 0x3f49;
LAB_00017d07:
                        if (uVar21 == 0) {
                          iVar5 = *(int *)(uVar2 + 0x44);
                        }
                        else {
                          if (uVar15 < uVar21) {
                            if (local_6c == 0) goto LAB_00017f30;
                            while( true ) {
                              pbVar20 = local_60 + 1;
                              local_6c = local_6c - 1;
                              bVar12 = (byte)uVar15;
                              uVar15 = uVar15 + 8;
                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
                              local_60 = pbVar20;
                              if (uVar21 <= uVar15) break;
                              if (local_6c == 0) goto LAB_000190a2;
                            }
                          }
                          uVar15 = uVar15 - uVar21;
                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;
                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +
                                  *(int *)(uVar2 + 0x44);
                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);
                          *(int *)(uVar2 + 0x44) = iVar5;
                        }
                        *(int *)(uVar2 + 0x1bcc) = iVar5;
                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;
code_r0x00017d27:
                        iVar5 = *(int *)(uVar2 + 0x54);
                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));
                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);
                        bVar12 = pbVar20[1];
                        bVar13 = *pbVar20;
                        uVar19 = *(ushort *)(pbVar20 + 2);
                        uVar14 = (uint)bVar12;
                        uVar21 = uVar15;
                        if (uVar15 < uVar14) {
                          if (local_6c == 0) goto LAB_00017f30;
                          while( true ) {
                            pbVar24 = local_60 + 1;
                            local_6c = local_6c - 1;
                            bVar12 = (byte)uVar15;
                            uVar15 = uVar15 + 8;
                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);
                            bVar12 = pbVar20[1];
                            bVar13 = *pbVar20;
                            uVar19 = *(ushort *)(pbVar20 + 2);
                            uVar14 = (uint)bVar12;
                            uVar21 = uVar15;
                            local_60 = pbVar24;
                            if (uVar14 <= uVar15) break;
                            if (local_6c == 0) {
                              uVar21 = 0;
                              goto LAB_00017f32;
                            }
                          }
                        }
                        uStack_48 = (uint)uVar19;
                        if ((bVar13 & 0xf0) == 0) {
                          bVar4 = (byte)uVar14;
                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));
                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +
                                                     uStack_48) * 4);
                          uVar19 = *(ushort *)(pbVar20 + 2);
                          bVar13 = *pbVar20;
                          uVar17 = (uint)pbVar20[1];
                          uVar15 = uVar21;
                          if (uVar21 < uVar17 + uVar14) {
                            if (local_6c == 0) goto LAB_00017f30;
                            while( true ) {
                              pbVar24 = local_60 + 1;
                              uVar15 = uVar21 + 8;
                              local_6c = local_6c - 1;
                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));
                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +
                                                         uStack_48) * 4);
                              bVar13 = *pbVar20;
                              uVar19 = *(ushort *)(pbVar20 + 2);
                              uVar17 = (uint)pbVar20[1];
                              local_60 = pbVar24;
                              if (uVar17 + uVar14 <= uVar15) break;
                              uVar21 = uVar15;
                              if (local_6c == 0) {
                                uVar21 = 0;
                                goto LAB_00017f32;
                              }
                            }
                          }
                          uStack_48 = (uint)uVar19;
                          uVar21 = uVar15 - uVar14;
                          local_64 = local_64 >> (bVar4 & 0x1f);
                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);
                        }
                        else {
                          iVar5 = *(int *)(uVar2 + 0x1bc8);
                          uVar17 = uVar14;
                        }
                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);
                        uVar15 = uVar21 - uVar17;
                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;
                        if ((bVar13 & 0x40) != 0) {
                          param_1[6] = (int)"invalid distance code";
                          *(undefined4 *)(uVar2 + 4) = 0x3f51;
                          uVar21 = 0xfffffffd;
                          goto LAB_00017f32;
                        }
                        uVar21 = bVar13 & 0xf;
                        *(uint *)(uVar2 + 0x4c) = uVar21;
                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;
                        *(uint *)(uVar2 + 0x48) = uStack_48;
LAB_00017c87:
                        if (uVar21 != 0) {
                          if (uVar15 < uVar21) {
                            if (local_6c == 0) goto LAB_00017f30;
                            while( true ) {
                              pbVar20 = local_60 + 1;
                              local_6c = local_6c - 1;
                              bVar12 = (byte)uVar15;
                              uVar15 = uVar15 + 8;
                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
                              local_60 = pbVar20;
                              if (uVar21 <= uVar15) break;
                              if (local_6c == 0) {
                                uVar21 = 0;
                                goto LAB_00017f32;
                              }
                            }
                          }
                          uVar15 = uVar15 - uVar21;
                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;
                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);
                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;
                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;
                        }
                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;
code_r0x00017c9a:
                        if (local_5c == 0) goto LAB_00017f30;
                        uVar21 = *(uint *)(uVar2 + 0x48);
                        if (local_50 - local_5c < uVar21) {
                          uVar21 = uVar21 - (local_50 - local_5c);
                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))
                          {
                            param_1[6] = (int)"invalid distance too far back";
                            *(undefined4 *)(uVar2 + 4) = 0x3f51;
                            uVar21 = 0xfffffffd;
                            goto LAB_00017f32;
                          }
                          uVar14 = *(uint *)(uVar2 + 0x34);
                          if (uVar14 < uVar21) {
                            uVar21 = uVar21 - uVar14;
                            puVar22 = (undefined1 *)
                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));
                          }
                          else {
                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));
                          }
                          uVar14 = *(uint *)(uVar2 + 0x44);
                          if (uVar14 <= uVar21) {
                            uVar21 = uVar14;
                          }
                        }
                        else {
                          puVar22 = __dest + -uVar21;
                          uVar21 = *(uint *)(uVar2 + 0x44);
                          uVar14 = uVar21;
                        }
                        if (local_5c < uVar21) {
                          uVar21 = local_5c;
                        }
                        local_5c = local_5c - uVar21;
                        puVar8 = __dest + uVar21;
                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;
                        puVar23 = __dest;
                        do {
                          __dest = puVar23 + (uint)bVar25 * -2 + 1;
                          *puVar23 = *puVar22;
                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;
                          puVar23 = __dest;
                        } while (__dest != puVar8);
                        if (*(int *)(uVar2 + 0x44) != 0) {
                          iVar5 = *(int *)(uVar2 + 4);
                          uVar21 = uVar2;
                          goto LAB_000178c9;
                        }
                      } while( true );
                    }
                    uVar21 = 0;
                  }
                  else {
                    uVar21 = 0xfffffffd;
                    param_1[6] = (int)"invalid distances set";
                    *(undefined4 *)(uVar2 + 4) = 0x3f51;
                  }
                  goto LAB_00017f32;
                }
                pcVar6 = "invalid literal/lengths set";
                goto LAB_00017b45;
              }
              uVar21 = 0xfffffffd;
              param_1[6] = (int)"invalid code -- missing end-of-block";
              *(undefined4 *)(uVar2 + 4) = 0x3f51;
            }
            else {
              param_1[6] = (int)"invalid code lengths set";
              *(undefined4 *)(uVar2 + 4) = 0x3f51;
              uVar21 = 0xfffffffd;
            }
            goto LAB_00017f32;
          }
          pcVar6 = "too many length or distance symbols";
          goto LAB_000188eb;
        }
        if (uVar14 == 3) {
          uVar15 = uVar15 - 3;
          local_64 = local_64 >> 3;
          uVar21 = 0xfffffffd;
          param_1[6] = (int)"invalid block type";
          *(undefined4 *)(uVar2 + 4) = 0x3f51;
          goto LAB_00017f32;
        }
        if (uVar14 == 1) {
          *(undefined4 *)(uVar2 + 0x58) = 9;
          *(undefined4 *)(uVar2 + 0x5c) = 5;
          *(undefined4 *)(uVar2 + 4) = 0x3f47;
          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;
          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;
          if (param_2 != 6) {
            local_64 = local_64 >> 3;
            uVar15 = uVar15 - 3;
            goto LAB_00017c70;
          }
          local_64 = local_64 >> 3;
          uVar15 = uVar15 - 3;
          goto LAB_00017f32;
        }
        local_64 = local_64 >> 3;
        *(undefined4 *)(uVar2 + 4) = 0x3f41;
        uVar15 = uVar15 - 3;
code_r0x00017ac6:
        local_64 = local_64 >> ((byte)uVar15 & 7);
        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {
          if (local_6c == 0) goto LAB_00017f30;
          local_6c = local_6c - 1;
          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));
          local_60 = local_60 + 1;
        }
        uVar14 = local_64 & 0xffff;
        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {
          pcVar6 = "invalid stored block lengths";
          goto LAB_00017b45;
        }
        *(uint *)(uVar2 + 0x44) = uVar14;
        *(undefined4 *)(uVar2 + 4) = 0x3f42;
        if (param_2 == 6) {
          uVar21 = 0;
          uVar15 = 0;
          local_64 = 0;
          goto LAB_00017f32;
        }
        uVar15 = 0;
        local_64 = 0;
LAB_00018557:
        *(undefined4 *)(uVar2 + 4) = 0x3f43;
code_r0x00018562:
        if (uVar14 == 0) {
          *(undefined4 *)(uVar2 + 4) = 0x3f3f;
          goto LAB_00017f13;
        }
        if (local_6c <= uVar14) {
          uVar14 = local_6c;
        }
        if (local_5c < uVar14) {
          uVar14 = local_5c;
        }
        if (uVar14 == 0) goto LAB_00017f30;
        memcpy(__dest,local_60,uVar14);
        local_6c = local_6c - uVar14;
        local_60 = local_60 + uVar14;
        local_5c = local_5c - uVar14;
        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;
        iVar5 = *(int *)(uVar2 + 4);
        uVar21 = extraout_ECX_00;
        __dest = __dest + uVar14;
        goto LAB_000178c9;
      case 0x3f35:
        goto joined_r0x0001879b;
      case 0x3f36:
        goto joined_r0x00018053;
      case 0x3f37:
        goto joined_r0x000180e3;
      case 0x3f38:
        uVar21 = *(uint *)(uVar2 + 0x14);
        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;
        if (uVar15 < 0x10) goto code_r0x0001829d;
        goto code_r0x000182ea;
      case 0x3f39:
        uVar21 = *(uint *)(uVar2 + 0x14);
        goto code_r0x000181cb;
      case 0x3f3a:
        uVar21 = *(uint *)(uVar2 + 0x14);
        goto code_r0x0001832f;
      case 0x3f3b:
        uVar21 = *(uint *)(uVar2 + 0x14);
        goto code_r0x0001835c;
      case 0x3f3c:
        uVar21 = *(uint *)(uVar2 + 0x14);
        goto code_r0x00018382;
      case 0x3f3d:
        uVar21 = local_64;
        goto joined_r0x00017e43;
      case 0x3f3e:
        goto code_r0x00017eda;
      case 0x3f3f:
        goto LAB_00017f13;
      case 0x3f41:
        goto code_r0x00017ac6;
      case 0x3f42:
        uVar14 = *(uint *)(uVar2 + 0x44);
        goto LAB_00018557;
      case 0x3f43:
        uVar14 = *(uint *)(uVar2 + 0x44);
        goto code_r0x00018562;
      case 0x3f44:
        goto code_r0x00018840;
      case 0x3f45:
        uVar21 = *(uint *)(uVar2 + 0x6c);
        uVar14 = *(uint *)(uVar2 + 0x60);
        if (uVar14 <= uVar21) goto code_r0x00019253;
        goto LAB_000184b2;
      case 0x3f46:
        uStack_48 = *(uint *)(uVar2 + 0x6c);
        goto LAB_000185db;
      case 0x3f47:
        goto LAB_00017c70;
      case 0x3f48:
        goto LAB_00017b90;
      case 0x3f49:
        uVar21 = *(uint *)(uVar2 + 0x4c);
        goto LAB_00017d07;
      case 0x3f4a:
        goto code_r0x00017d27;
      case 0x3f4b:
        uVar21 = *(uint *)(uVar2 + 0x4c);
        goto LAB_00017c87;
      case 0x3f4c:
        goto code_r0x00017c9a;
      case 0x3f4d:
        goto LAB_00017b6a;
      case 0x3f4e:
code_r0x00017930:
        uVar21 = *(uint *)(uVar2 + 0xc);
        if (uVar21 == 0) goto LAB_00018e20;
        if (0x1f < uVar15) goto LAB_00017996;
        if (local_6c != 0) goto LAB_00017970;
        goto LAB_00017f30;
      case 0x3f4f:
        uVar21 = *(uint *)(uVar2 + 0xc);
        goto LAB_000183ff;
      case 0x3f50:
        uVar21 = 1;
        goto LAB_00017f32;
      case 0x3f51:
        goto LAB_00018817;
      case 0x3f52:
        goto code_r0x00018770;
      }
    }
  }
  uVar21 = 0xfffffffe;
  goto LAB_00018778;
  while (local_6c != 0) {
code_r0x00018ea0:
    pbVar20 = local_60 + 1;
    local_6c = local_6c - 1;
    bVar12 = (byte)uVar15;
    uVar15 = uVar15 + 8;
    local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
    local_60 = pbVar20;
    if (0xf < uVar15) goto code_r0x00018ec6;
  }
  goto LAB_000190a2;
code_r0x00018ec6:
  if (((uVar21 & 2) == 0) || (local_64 != 0x8b1f)) {
    *(undefined4 *)(uVar2 + 0x14) = 0;
    if (*(int *)(uVar2 + 0x24) != 0) {
      *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30) = 0xffffffff;
    }
    if (((uVar21 & 1) == 0) ||
       (uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8), uVar21 != (uVar21 / 0x1f) * 0x1f)) {
      pcVar6 = "incorrect header check";
LAB_000188eb:
      uVar21 = 0xfffffffd;
      param_1[6] = (int)pcVar6;
      *(undefined4 *)(uVar2 + 4) = 0x3f51;
    }
    else {
      if ((local_64 & 0xf) == 8) {
        local_64 = local_64 >> 4;
        uVar15 = uVar15 - 4;
        uVar21 = (local_64 & 0xf) + 8;
        if (*(uint *)(uVar2 + 0x28) == 0) {
          *(uint *)(uVar2 + 0x28) = uVar21;
          if (0xf < uVar21) {
code_r0x00019879:
            pcVar6 = "invalid window size";
            goto LAB_00017b45;
          }
        }
        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;
        iVar5 = 1 << (sbyte)uVar21;
        *(int *)(uVar2 + 0x18) = iVar5;
        iVar5 = adler32(0,0,0,iVar5);
        *(int *)(uVar2 + 0x1c) = iVar5;
        param_1[0xc] = iVar5;
        if ((local_64 & 0x200) == 0) {
          *(undefined4 *)(uVar2 + 4) = 0x3f3f;
          uVar15 = 0;
          local_64 = 0;
          goto LAB_00017f13;
        }
        local_64 = 0;
        uVar15 = 0;
        *(undefined4 *)(uVar2 + 4) = 0x3f3d;
        do {
          if (local_6c == 0) goto LAB_00017f30;
          local_6c = local_6c - 1;
          bVar12 = (byte)uVar15;
          uVar15 = uVar15 + 8;
          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
          local_60 = local_60 + 1;
joined_r0x00017e43:
          local_64 = uVar21;
        } while (uVar15 < 0x20);
        uVar15 = 0;
        local_64 = 0;
        iVar5 = (uVar21 & 0xff00) * 0x100 +
                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);
        *(int *)(uVar2 + 0x1c) = iVar5;
        param_1[0xc] = iVar5;
        *(undefined4 *)(uVar2 + 4) = 0x3f3e;
code_r0x00017eda:
        if (*(int *)(uVar2 + 0x10) != 0) {
          iVar5 = adler32(0,0,0);
          *(int *)(uVar2 + 0x1c) = iVar5;
          param_1[0xc] = iVar5;
          *(undefined4 *)(uVar2 + 4) = 0x3f3f;
          goto LAB_00017f13;
        }
        uVar21 = 2;
        param_1[3] = (int)__dest;
        param_1[4] = local_5c;
        *param_1 = (int)local_60;
        param_1[1] = local_6c;
        *(uint *)(uVar2 + 0x40) = uVar15;
        *(uint *)(uVar2 + 0x3c) = local_64;
        goto LAB_00018778;
      }
      pcVar6 = "unknown compression method";
LAB_00017b45:
      uVar21 = 0xfffffffd;
      param_1[6] = (int)pcVar6;
      *(undefined4 *)(uVar2 + 4) = 0x3f51;
    }
  }
  else {
    if (*(int *)(uVar2 + 0x28) == 0) {
      *(undefined4 *)(uVar2 + 0x28) = 0xf;
    }
    uVar15 = 0;
    uVar9 = crc32(0,0,0);
    uStack_24 = 0x8b1f;
    *(undefined4 *)(uVar2 + 0x1c) = uVar9;
    uVar9 = crc32(uVar9,&uStack_24,2);
    *(undefined4 *)(uVar2 + 0x1c) = uVar9;
    *(undefined4 *)(uVar2 + 4) = 0x3f35;
    local_64 = 0;
    do {
      if (local_6c == 0) goto LAB_00017f30;
      local_6c = local_6c - 1;
      bVar12 = (byte)uVar15;
      uVar15 = uVar15 + 8;
      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
      local_60 = local_60 + 1;
joined_r0x0001879b:
    } while (uVar15 < 0x10);
    *(uint *)(uVar2 + 0x14) = local_64;
    if ((char)local_64 == '\b') {
      if ((local_64 & 0xe000) != 0) {
        pcVar6 = "unknown header flags set";
        goto LAB_000188eb;
      }
      if (*(uint **)(uVar2 + 0x24) != (uint *)0x0) {
        **(uint **)(uVar2 + 0x24) = local_64 >> 8 & 1;
      }
      if (((local_64 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {
        uStack_24 = (undefined2)local_64;
        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2,uVar2);
        *(undefined4 *)(uVar2 + 0x1c) = uVar9;
      }
      local_64 = 0;
      uVar15 = 0;
      *(undefined4 *)(uVar2 + 4) = 0x3f36;
      do {
        if (local_6c == 0) goto LAB_00017f30;
        local_6c = local_6c - 1;
        bVar12 = (byte)uVar15;
        uVar15 = uVar15 + 8;
        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
        local_60 = local_60 + 1;
joined_r0x00018053:
      } while (uVar15 < 0x20);
      if (*(int *)(uVar2 + 0x24) != 0) {
        *(uint *)(*(int *)(uVar2 + 0x24) + 4) = local_64;
      }
      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {
        uStack_24 = (undefined2)local_64;
        uStack_22 = (undefined1)(local_64 >> 0x10);
        uStack_21 = (undefined1)(local_64 >> 0x18);
        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,4);
        *(undefined4 *)(uVar2 + 0x1c) = uVar9;
      }
      local_64 = 0;
      uVar15 = 0;
      *(undefined4 *)(uVar2 + 4) = 0x3f37;
      do {
        if (local_6c == 0) goto LAB_00017f30;
        local_6c = local_6c - 1;
        bVar12 = (byte)uVar15;
        uVar15 = uVar15 + 8;
        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
        local_60 = local_60 + 1;
joined_r0x000180e3:
      } while (uVar15 < 0x10);
      iVar5 = *(int *)(uVar2 + 0x24);
      if (iVar5 != 0) {
        *(uint *)(iVar5 + 8) = local_64 & 0xff;
        *(uint *)(iVar5 + 0xc) = local_64 >> 8;
      }
      uVar21 = *(uint *)(uVar2 + 0x14);
      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {
        uStack_24 = (undefined2)local_64;
        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);
        *(undefined4 *)(uVar2 + 0x1c) = uVar9;
        uVar21 = *(uint *)(uVar2 + 0x14);
      }
      *(undefined4 *)(uVar2 + 4) = 0x3f38;
      if ((uVar21 & 0x400) == 0) {
        uVar15 = 0;
        local_64 = 0;
code_r0x000181ae:
        if (*(int *)(uVar2 + 0x24) != 0) {
          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;
        }
        goto code_r0x000181c0;
      }
      local_64 = 0;
      uVar15 = 0;
code_r0x0001829d:
      if (local_6c == 0) goto LAB_00017f30;
      do {
        pbVar20 = local_60 + 1;
        local_6c = local_6c - 1;
        bVar12 = (byte)uVar15;
        uVar15 = uVar15 + 8;
        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
        local_60 = pbVar20;
        if (0xf < uVar15) goto code_r0x000182ea;
      } while (local_6c != 0);
      uVar21 = 0;
    }
    else {
      param_1[6] = (int)"unknown compression method";
      *(undefined4 *)(uVar2 + 4) = 0x3f51;
LAB_00018817:
      uVar21 = 0xfffffffd;
    }
  }
  goto LAB_00017f32;
code_r0x000182ea:
  *(uint *)(uVar2 + 0x44) = local_64;
  if (*(int *)(uVar2 + 0x24) != 0) {
    *(uint *)(*(int *)(uVar2 + 0x24) + 0x14) = local_64;
  }
  if (((uVar21 & 0x200) == 0) || ((*(byte *)(uVar2 + 0xc) & 4) == 0)) {
    uVar15 = 0;
    local_64 = 0;
  }
  else {
    uVar15 = 0;
    uStack_24 = (undefined2)local_64;
    uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);
    *(undefined4 *)(uVar2 + 0x1c) = uVar9;
    local_64 = 0;
    uVar21 = *(uint *)(uVar2 + 0x14);
  }
code_r0x000181c0:
  *(undefined4 *)(uVar2 + 4) = 0x3f39;
code_r0x000181cb:
  if ((uVar21 & 0x400) == 0) {
code_r0x0001826a:
    *(undefined4 *)(uVar2 + 0x44) = 0;
    *(undefined4 *)(uVar2 + 4) = 0x3f3a;
code_r0x0001832f:
    if ((uVar21 & 0x800) == 0) {
      if (*(int *)(uVar2 + 0x24) != 0) {
        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;
      }
    }
    else {
      uVar21 = 0;
      if (local_6c == 0) goto LAB_00017f32;
      do {
        iVar5 = *(int *)(uVar2 + 0x24);
        uVar14 = uVar21 + 1;
        bVar12 = local_60[uVar21];
        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&
           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {
          *(uint *)(uVar2 + 0x44) = uVar21 + 1;
          *(byte *)(iVar7 + uVar21) = bVar12;
        }
      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));
      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {
        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);
        *(undefined4 *)(uVar2 + 0x1c) = uVar9;
      }
      local_60 = local_60 + uVar14;
      local_6c = local_6c - uVar14;
      if (bVar12 != 0) goto LAB_00017f30;
      uVar21 = *(uint *)(uVar2 + 0x14);
    }
    *(undefined4 *)(uVar2 + 0x44) = 0;
    *(undefined4 *)(uVar2 + 4) = 0x3f3b;
code_r0x0001835c:
    if ((uVar21 & 0x1000) == 0) {
      if (*(int *)(uVar2 + 0x24) != 0) {
        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;
      }
    }
    else {
      uVar21 = 0;
      if (local_6c == 0) goto LAB_00017f32;
      do {
        iVar5 = *(int *)(uVar2 + 0x24);
        uVar14 = uVar21 + 1;
        bVar12 = local_60[uVar21];
        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&
           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {
          *(uint *)(uVar2 + 0x44) = uVar21 + 1;
          *(byte *)(iVar7 + uVar21) = bVar12;
        }
      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));
      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {
        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);
        *(undefined4 *)(uVar2 + 0x1c) = uVar9;
      }
      local_60 = local_60 + uVar14;
      local_6c = local_6c - uVar14;
      if (bVar12 != 0) goto LAB_00017f30;
      uVar21 = *(uint *)(uVar2 + 0x14);
    }
    *(undefined4 *)(uVar2 + 4) = 0x3f3c;
code_r0x00018382:
    if ((uVar21 & 0x200) == 0) {
code_r0x0001838b:
      iVar5 = *(int *)(uVar2 + 0x24);
      if (iVar5 != 0) {
        *(undefined4 *)(iVar5 + 0x30) = 1;
        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;
      }
      iVar5 = crc32(0,0,0);
      *(int *)(uVar2 + 0x1c) = iVar5;
      param_1[0xc] = iVar5;
      *(undefined4 *)(uVar2 + 4) = 0x3f3f;
      goto LAB_00017f13;
    }
    if (uVar15 < 0x10) {
      if (local_6c == 0) goto LAB_00017f30;
      do {
        pbVar20 = local_60 + 1;
        local_6c = local_6c - 1;
        bVar12 = (byte)uVar15;
        uVar15 = uVar15 + 8;
        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
        local_60 = pbVar20;
        if (0xf < uVar15) goto code_r0x00018a2e;
      } while (local_6c != 0);
      uVar21 = 0;
    }
    else {
code_r0x00018a2e:
      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {
        uVar15 = 0;
        local_64 = 0;
        goto code_r0x0001838b;
      }
      param_1[6] = (int)"header crc mismatch";
      *(undefined4 *)(uVar2 + 4) = 0x3f51;
      uVar21 = 0xfffffffd;
    }
  }
  else {
    uVar14 = *(uint *)(uVar2 + 0x44);
    uVar17 = local_6c;
    if (uVar14 < local_6c) {
      uVar17 = uVar14;
    }
    if (uVar17 != 0) {
      iVar5 = *(int *)(uVar2 + 0x24);
      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {
        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;
        __n = *(uint *)(iVar5 + 0x18) - iVar7;
        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {
          __n = uVar17;
        }
        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);
        uVar21 = *(uint *)(uVar2 + 0x14);
      }
      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {
        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);
        *(undefined4 *)(uVar2 + 0x1c) = uVar9;
      }
      local_6c = local_6c - uVar17;
      local_60 = local_60 + uVar17;
      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;
      *(uint *)(uVar2 + 0x44) = uVar14;
    }
    if (uVar14 == 0) {
      uVar21 = *(uint *)(uVar2 + 0x14);
      goto code_r0x0001826a;
    }
LAB_00017f30:
    uVar21 = 0;
  }
  goto LAB_00017f32;
LAB_00017996:
  iVar5 = local_50 - local_5c;
  param_1[5] = param_1[5] + iVar5;
  *(int *)(uVar2 + 0x20) = *(int *)(uVar2 + 0x20) + iVar5;
  uVar14 = uVar21 & 4;
  if ((uVar14 != 0) && (iVar5 != 0)) {
    if (*(int *)(uVar2 + 0x14) == 0) {
      iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);
    }
    else {
      iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);
    }
    *(int *)(uVar2 + 0x1c) = iVar5;
    param_1[0xc] = iVar5;
    uVar21 = *(uint *)(uVar2 + 0xc);
    uVar14 = uVar21 & 4;
  }
  if (uVar14 != 0) {
    uVar14 = local_64;
    if (*(int *)(uVar2 + 0x14) == 0) {
      uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +
               (local_64 & 0xff00) * 0x100;
    }
    if (*(uint *)(uVar2 + 0x1c) != uVar14) {
      param_1[6] = (int)"incorrect data check";
      *(undefined4 *)(uVar2 + 4) = 0x3f51;
      uVar21 = 0xfffffffd;
      local_50 = local_5c;
      goto LAB_00017f32;
    }
  }
  uVar15 = 0;
  local_64 = 0;
  local_50 = local_5c;
LAB_00018e20:
  *(undefined4 *)(uVar2 + 4) = 0x3f4f;
LAB_000183ff:
  if ((uVar21 != 0) && (*(int *)(uVar2 + 0x14) != 0)) {
    for (; uVar15 < 0x20; uVar15 = uVar15 + 8) {
      if (local_6c == 0) goto LAB_00017f30;
      local_6c = local_6c - 1;
      local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));
      local_60 = local_60 + 1;
    }
    if (*(uint *)(uVar2 + 0x20) != local_64) {
      param_1[6] = (int)"incorrect length check";
      *(undefined4 *)(uVar2 + 4) = 0x3f51;
      uVar21 = 0xfffffffd;
      goto LAB_00017f32;
    }
    uVar15 = 0;
    local_64 = 0;
  }
  uVar21 = 1;
  *(undefined4 *)(uVar2 + 4) = 0x3f50;
  goto LAB_00017f32;
LAB_00018d40:
  uVar21 = 0;
  local_60 = pbVar20;
  goto LAB_00017f32;
code_r0x00018d1f:
  *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;
  *(undefined4 *)(uVar2 + 4) = 0x3f3f;
LAB_00017f13:
  if (param_2 - 5U < 2) goto LAB_00017f30;
  goto LAB_0001790a;
  while (local_6c != 0) {
LAB_00017970:
    pbVar20 = local_60 + 1;
    local_6c = local_6c - 1;
    bVar25 = (byte)uVar15;
    uVar15 = uVar15 + 8;
    local_64 = local_64 + ((uint)*local_60 << (bVar25 & 0x1f));
    local_60 = pbVar20;
    if (0x1f < uVar15) goto LAB_00017996;
  }
LAB_000190a2:
  uVar21 = 0;
  local_60 = pbVar20;
LAB_00017f32:
  *param_1 = (int)local_60;
  param_1[3] = (int)__dest;
  param_1[1] = local_6c;
  param_1[4] = local_5c;
  *(uint *)(uVar2 + 0x3c) = local_64;
  *(uint *)(uVar2 + 0x40) = uVar15;
  if ((*(int *)(uVar2 + 0x2c) != 0) ||
     (((local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&
      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)))))) {
    iVar5 = FUN_000172e0();
    if (iVar5 != 0) {
      *(undefined4 *)(uVar2 + 4) = 0x3f52;
code_r0x00018770:
      uVar21 = 0xfffffffc;
      goto LAB_00018778;
    }
    local_6c = param_1[1];
    local_5c = param_1[4];
  }
  iVar5 = local_50 - local_5c;
  param_1[2] = param_1[2] + (uVar1 - local_6c);
  param_1[5] = param_1[5] + iVar5;
  *(int *)(uVar2 + 0x20) = *(int *)(uVar2 + 0x20) + iVar5;
  if (((*(byte *)(uVar2 + 0xc) & 4) != 0) && (iVar5 != 0)) {
    if (*(int *)(uVar2 + 0x14) == 0) {
      iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);
    }
    else {
      iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);
    }
    *(int *)(uVar2 + 0x1c) = iVar7;
    param_1[0xc] = iVar7;
  }
  iVar7 = *(int *)(uVar2 + 0x40);
  if (*(int *)(uVar2 + 8) != 0) {
    iVar7 = iVar7 + 0x40;
  }
  iVar3 = *(int *)(uVar2 + 4);
  local_4c = 0;
  if (iVar3 == 0x3f3f) {
    iVar7 = iVar7 + 0x80;
  }
  else if ((iVar3 == 0x3f47) || (iVar3 == 0x3f42)) {
    local_4c = 0x100;
  }
  param_1[0xb] = iVar7 + local_4c;
  if (((uVar1 - local_6c == 0 && iVar5 == 0) || (param_2 == 4)) && (uVar21 == 0)) {
    uVar21 = 0xfffffffb;
  }
LAB_00018778:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return uVar21;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0001eba0();
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x000125ff
ADD EAX,0x107f7
SUB ESP,0x6c
MOV EDI,dword ptr [ESP + 0x80]
MOV dword ptr [ESP + 0x24],EAX
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x5c],EAX
XOR EAX,EAX
TEST EDI,EDI
MOV dword ptr [ESP + 0x14],EDI
JZ 0x00017a40
MOV EAX,dword ptr [EDI + 0x20]
TEST EAX,EAX
JZ 0x00017a40
MOV EAX,dword ptr [EDI + 0x24]
TEST EAX,EAX
JZ 0x00017a40
MOV EAX,EDI
CALL 0x00017420
TEST EAX,EAX
MOV dword ptr [ESP + 0x30],EAX
JNZ 0x00017a40
MOV EAX,EDI
MOV EDI,dword ptr [EDI + 0xc]
TEST EDI,EDI
JZ 0x00017a40
MOV ESI,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x4]
TEST ESI,ESI
MOV dword ptr [ESP + 0x1c],ESI
MOV dword ptr [ESP + 0x28],EAX
JZ 0x00017a30
MOV EAX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EAX + 0x1c]
MOV dword ptr [ESP + 0xc],EAX
MOV EAX,dword ptr [EAX + 0x4]
CMP EAX,0x3f3f
JNZ 0x000178a4
MOV EAX,dword ptr [ESP + 0xc]
MOV dword ptr [EAX + 0x4],0x3f40
MOV EAX,0x3f40
MOV ESI,dword ptr [ESP + 0x14]
MOV ECX,dword ptr [ESP + 0xc]
MOV EBX,dword ptr [ESI + 0x10]
MOV ESI,dword ptr [ECX + 0x3c]
MOV EBP,dword ptr [ECX + 0x40]
MOV dword ptr [ESP + 0x18],ESI
MOV ESI,dword ptr [ESP + 0x28]
MOV dword ptr [ESP + 0x20],EBX
MOV dword ptr [ESP + 0x2c],EBX
MOV dword ptr [ESP + 0x10],ESI
SUB EAX,0x3f34
CMP EAX,0x1e
JA 0x00017a40
MOV EBX,dword ptr [ESP + 0x24]
MOV ESI,dword ptr [EBX + EAX*0x4 + 0xffff98c0]
ADD ESI,EBX
JMP ESI
TEST EAX,EAX
JZ 0x0001787f
NOP
LEA ESI,[ESI]
MOV ESI,0xfffffffe
JMP 0x00018778
MOV EAX,ESI
MOV ESI,dword ptr [ESP + 0x5c]
XOR ESI,dword ptr GS:[0x14]
JNZ 0x00019915
ADD ESP,0x6c
POP EBX
POP ESI
POP EDI
POP EBP
RET
CALL 0x0001eba0
(ERROR "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nuint inflate(int *param_1,int param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  int iVar3;\n  byte bVar4;\n  int iVar5;\n  char *pcVar6;\n  int iVar7;\n  undefined1 *puVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  ushort *puVar11;\n  byte bVar12;\n  byte bVar13;\n  uint uVar14;\n  uint extraout_ECX;\n  size_t __n;\n  uint uVar15;\n  uint extraout_ECX_00;\n  uint extraout_ECX_01;\n  undefined2 *puVar16;\n  uint uVar17;\n  uint uVar18;\n  ushort uVar19;\n  byte *pbVar20;\n  uint uVar21;\n  undefined1 *puVar22;\n  undefined1 *__dest;\n  byte *pbVar24;\n  int in_GS_OFFSET;\n  byte bVar25;\n  uint local_6c;\n  uint local_64;\n  byte *local_60;\n  uint local_5c;\n  uint local_50;\n  int local_4c;\n  uint uStack_48;\n  uint uStack_40;\n  uint uStack_38;\n  undefined2 uStack_24;\n  undefined1 uStack_22;\n  undefined1 uStack_21;\n  int local_20;\n  undefined4 uStack_14;\n  undefined1 *puVar23;\n  \n  bVar25 = 0;\n  uStack_14 = 0x17809;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((((param_1 != (int *)0x0) && (param_1[8] != 0)) && (param_1[9] != 0)) &&\n     ((iVar5 = FUN_00017420(), iVar5 == 0 &&\n      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0)))) {\n    local_60 = (byte *)*param_1;\n    uVar1 = param_1[1];\n    if ((local_60 != (byte *)0x0) || (uVar1 == 0)) {\n      uVar2 = param_1[7];\n      iVar5 = *(int *)(uVar2 + 4);\n      if (iVar5 == 0x3f3f) {\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n        iVar5 = 0x3f40;\n      }\n      local_50 = param_1[4];\n      local_64 = *(uint *)(uVar2 + 0x3c);\n      uVar15 = *(uint *)(uVar2 + 0x40);\n      uVar21 = uVar2;\n      local_6c = uVar1;\n      local_5c = local_50;\nLAB_000178c9:\n      switch(iVar5) {\n      case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n      case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;\n      case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;\n      case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;\n      case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;\n      case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;\n      case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto code_r0x00017eda;\n      case 0x3f3f:\n        goto LAB_00017f13;\n      case 0x3f41:\n        goto code_r0x00017ac6;\n      case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;\n      case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;\n      case 0x3f44:\n        goto code_r0x00018840;\n      case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;\n      case 0x3f47:\n        goto LAB_00017c70;\n      case 0x3f48:\n        goto LAB_00017b90;\n      case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto code_r0x00017d27;\n      case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto code_r0x00017c9a;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;\n      case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto LAB_00018817;\n      case 0x3f52:\n        goto code_r0x00018770;\n      }\n    }\n  }\n  uVar21 = 0xfffffffe;\n  goto LAB_00018778;\n  while (local_6c != 0) {\ncode_r0x00018ea0:\n    pbVar20 = local_60 + 1;\n    local_6c = local_6c - 1;\n    bVar12 = (byte)uVar15;\n    uVar15 = uVar15 + 8;\n    local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n    local_60 = pbVar20;\n    if (0xf < uVar15) goto code_r0x00018ec6;\n  }\n  goto LAB_000190a2;\ncode_r0x00018ec6:\n  if (((uVar21 & 2) == 0) || (local_64 != 0x8b1f)) {\n    *(undefined4 *)(uVar2 + 0x14) = 0;\n    if (*(int *)(uVar2 + 0x24) != 0) {\n      *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30) = 0xffffffff;\n    }\n    if (((uVar21 & 1) == 0) ||\n       (uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8), uVar21 != (uVar21 / 0x1f) * 0x1f)) {\n      pcVar6 = "incorrect header check";\nLAB_000188eb:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }\n    else {\n      if ((local_64 & 0xf) == 8) {\n        local_64 = local_64 >> 4;\n        uVar15 = uVar15 - 4;\n        uVar21 = (local_64 & 0xf) + 8;\n        if (*(uint *)(uVar2 + 0x28) == 0) {\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;\n        iVar5 = 1 << (sbyte)uVar21;\n        *(int *)(uVar2 + 0x18) = iVar5;\n        iVar5 = adler32(0,0,0,iVar5);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        if ((local_64 & 0x200) == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }\n        local_64 = 0;\n        uVar15 = 0;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3d;\n        do {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        } while (uVar15 < 0x20);\n        uVar15 = 0;\n        local_64 = 0;\n        iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3e;\ncode_r0x00017eda:\n        if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        uVar21 = 2;\n        param_1[3] = (int)__dest;\n        param_1[4] = local_5c;\n        *param_1 = (int)local_60;\n        param_1[1] = local_6c;\n        *(uint *)(uVar2 + 0x40) = uVar15;\n        *(uint *)(uVar2 + 0x3c) = local_64;\n        goto LAB_00018778;\n      }\n      pcVar6 = "unknown compression method";\nLAB_00017b45:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }\n  }\n  else {\n    if (*(int *)(uVar2 + 0x28) == 0) {\n      *(undefined4 *)(uVar2 + 0x28) = 0xf;\n    }\n    uVar15 = 0;\n    uVar9 = crc32(0,0,0);\n    uStack_24 = 0x8b1f;\n    *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n    uVar9 = crc32(uVar9,&uStack_24,2);\n    *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n    *(undefined4 *)(uVar2 + 4) = 0x3f35;\n    local_64 = 0;\n    do {\n      if (local_6c == 0) goto LAB_00017f30;\n      local_6c = local_6c - 1;\n      bVar12 = (byte)uVar15;\n      uVar15 = uVar15 + 8;\n      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n      local_60 = local_60 + 1;\njoined_r0x0001879b:\n    } while (uVar15 < 0x10);\n    *(uint *)(uVar2 + 0x14) = local_64;\n    if ((char)local_64 == '\b') {\n      if ((local_64 & 0xe000) != 0) {\n        pcVar6 = "unknown header flags set";\n        goto LAB_000188eb;\n      }\n      if (*(uint **)(uVar2 + 0x24) != (uint *)0x0) {\n        **(uint **)(uVar2 + 0x24) = local_64 >> 8 & 1;\n      }\n      if (((local_64 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uStack_24 = (undefined2)local_64;\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2,uVar2);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_64 = 0;\n      uVar15 = 0;\n      *(undefined4 *)(uVar2 + 4) = 0x3f36;\n      do {\n        if (local_6c == 0) goto LAB_00017f30;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = local_60 + 1;\njoined_r0x00018053:\n      } while (uVar15 < 0x20);\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(uint *)(*(int *)(uVar2 + 0x24) + 4) = local_64;\n      }\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uStack_24 = (undefined2)local_64;\n        uStack_22 = (undefined1)(local_64 >> 0x10);\n        uStack_21 = (undefined1)(local_64 >> 0x18);\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,4);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_64 = 0;\n      uVar15 = 0;\n      *(undefined4 *)(uVar2 + 4) = 0x3f37;\n      do {\n        if (local_6c == 0) goto LAB_00017f30;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = local_60 + 1;\njoined_r0x000180e3:\n      } while (uVar15 < 0x10);\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(uint *)(iVar5 + 8) = local_64 & 0xff;\n        *(uint *)(iVar5 + 0xc) = local_64 >> 8;\n      }\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uStack_24 = (undefined2)local_64;\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      *(undefined4 *)(uVar2 + 4) = 0x3f38;\n      if ((uVar21 & 0x400) == 0) {\n        uVar15 = 0;\n        local_64 = 0;\ncode_r0x000181ae:\n        if (*(int *)(uVar2 + 0x24) != 0) {\n          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;\n        }\n        goto code_r0x000181c0;\n      }\n      local_64 = 0;\n      uVar15 = 0;\ncode_r0x0001829d:\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x000182ea;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }\n    else {\n      param_1[6] = (int)"unknown compression method";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\nLAB_00018817:\n      uVar21 = 0xfffffffd;\n    }\n  }\n  goto LAB_00017f32;\ncode_r0x000182ea:\n  *(uint *)(uVar2 + 0x44) = local_64;\n  if (*(int *)(uVar2 + 0x24) != 0) {\n    *(uint *)(*(int *)(uVar2 + 0x24) + 0x14) = local_64;\n  }\n  if (((uVar21 & 0x200) == 0) || ((*(byte *)(uVar2 + 0xc) & 4) == 0)) {\n    uVar15 = 0;\n    local_64 = 0;\n  }\n  else {\n    uVar15 = 0;\n    uStack_24 = (undefined2)local_64;\n    uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n    *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n    local_64 = 0;\n    uVar21 = *(uint *)(uVar2 + 0x14);\n  }\ncode_r0x000181c0:\n  *(undefined4 *)(uVar2 + 4) = 0x3f39;\ncode_r0x000181cb:\n  if ((uVar21 & 0x400) == 0) {\ncode_r0x0001826a:\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3a;\ncode_r0x0001832f:\n    if ((uVar21 & 0x800) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3b;\ncode_r0x0001835c:\n    if ((uVar21 & 0x1000) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 4) = 0x3f3c;\ncode_r0x00018382:\n    if ((uVar21 & 0x200) == 0) {\ncode_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }\n      iVar5 = crc32(0,0,0);\n      *(int *)(uVar2 + 0x1c) = iVar5;\n      param_1[0xc] = iVar5;\n      *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n      goto LAB_00017f13;\n    }\n    if (uVar15 < 0x10) {\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }\n    else {\ncode_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }\n      param_1[6] = (int)"header crc mismatch";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n    }\n  }\n  else {\n    uVar14 = *(uint *)(uVar2 + 0x44);\n    uVar17 = local_6c;\n    if (uVar14 < local_6c) {\n      uVar17 = uVar14;\n    }\n    if (uVar17 != 0) {\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_6c = local_6c - uVar17;\n      local_60 = local_60 + uVar17;\n      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;\n      *(uint *)(uVar2 + 0x44) = uVar14;\n    }\n    if (uVar14 == 0) {\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      goto code_r0x0001826a;\n    }\nLAB_00017f30:\n    uVar21 = 0;\n  }\n  goto LAB_00017f32;\nLAB_00017996:\n  iVar5 = local_50 - local_5c;\n  param_1[5] = param_1[5] + iVar5;\n  *(int *)(uVar2 + 0x20) = *(int *)(uVar2 + 0x20) + iVar5;\n  uVar14 = uVar21 & 4;\n  if ((uVar14 != 0) && (iVar5 != 0)) {\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    else {\n      iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    *(int *)(uVar2 + 0x1c) = iVar5;\n    param_1[0xc] = iVar5;\n    uVar21 = *(uint *)(uVar2 + 0xc);\n    uVar14 = uVar21 & 4;\n  }\n  if (uVar14 != 0) {\n    uVar14 = local_64;\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100;\n    }\n    if (*(uint *)(uVar2 + 0x1c) != uVar14) {\n      param_1[6] = (int)"incorrect data check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      local_50 = local_5c;\n      goto LAB_00017f32;\n    }\n  }\n  uVar15 = 0;\n  local_64 = 0;\n  local_50 = local_5c;\nLAB_00018e20:\n  *(undefined4 *)(uVar2 + 4) = 0x3f4f;\nLAB_000183ff:\n  if ((uVar21 != 0) && (*(int *)(uVar2 + 0x14) != 0)) {\n    for (; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n      if (local_6c == 0) goto LAB_00017f30;\n      local_6c = local_6c - 1;\n      local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n      local_60 = local_60 + 1;\n    }\n    if (*(uint *)(uVar2 + 0x20) != local_64) {\n      param_1[6] = (int)"incorrect length check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      goto LAB_00017f32;\n    }\n    uVar15 = 0;\n    local_64 = 0;\n  }\n  uVar21 = 1;\n  *(undefined4 *)(uVar2 + 4) = 0x3f50;\n  goto LAB_00017f32;\nLAB_00018d40:\n  uVar21 = 0;\n  local_60 = pbVar20;\n  goto LAB_00017f32;\ncode_r0x00018d1f:\n  *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n  *(undefined4 *)(uVar2 + 4) = 0x3f3f;\nLAB_00017f13:\n  if (param_2 - 5U < 2) goto LAB_00017f30;\n  goto LAB_0001790a;\n  while (local_6c != 0) {\nLAB_00017970:\n    pbVar20 = local_60 + 1;\n    local_6c = local_6c - 1;\n    bVar25 = (byte)uVar15;\n    uVar15 = uVar15 + 8;\n    local_64 = local_64 + ((uint)*local_60 << (bVar25 & 0x1f));\n    local_60 = pbVar20;\n    if (0x1f < uVar15) goto LAB_00017996;\n  }\nLAB_000190a2:\n  uVar21 = 0;\n  local_60 = pbVar20;\nLAB_00017f32:\n  *param_1 = (int)local_60;\n  param_1[3] = (int)__dest;\n  param_1[1] = local_6c;\n  param_1[4] = local_5c;\n  *(uint *)(uVar2 + 0x3c) = local_64;\n  *(uint *)(uVar2 + 0x40) = uVar15;\n  if ((*(int *)(uVar2 + 0x2c) != 0) ||\n     (((local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&\n      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)))))) {\n    iVar5 = FUN_000172e0();\n    if (iVar5 != 0) {\n      *(undefined4 *)(uVar2 + 4) = 0x3f52;\ncode_r0x00018770:\n      uVar21 = 0xfffffffc;\n      goto LAB_00018778;\n    }\n    local_6c = param_1[1];\n    local_5c = param_1[4];\n  }\n  iVar5 = local_50 - local_5c;\n  param_1[2] = param_1[2] + (uVar1 - local_6c);\n  param_1[5] = param_1[5] + iVar5;\n  *(int *)(uVar2 + 0x20) = *(int *)(uVar2 + 0x20) + iVar5;\n  if (((*(byte *)(uVar2 + 0xc) & 4) != 0) && (iVar5 != 0)) {\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    else {\n      iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    *(int *)(uVar2 + 0x1c) = iVar7;\n    param_1[0xc] = iVar7;\n  }\n  iVar7 = *(int *)(uVar2 + 0x40);\n  if (*(int *)(uVar2 + 8) != 0) {\n    iVar7 = iVar7 + 0x40;\n  }\n  iVar3 = *(int *)(uVar2 + 4);\n  local_4c = 0;\n  if (iVar3 == 0x3f3f) {\n    iVar7 = iVar7 + 0x80;\n  }\n  else if ((iVar3 == 0x3f47) || (iVar3 == 0x3f42)) {\n    local_4c = 0x100;\n  }\n  param_1[0xb] = iVar7 + local_4c;\n  if (((uVar1 - local_6c == 0 && iVar5 == 0) || (param_2 == 4)) && (uVar21 == 0)) {\n    uVar21 = 0xfffffffb;\n  }\nLAB_00018778:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar21;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0001eba0();\n}\n\n" comment type_identifier (function_declarator "inflate(int *param_1,int param_2)" identifier (parameter_list "(int *param_1,int param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "ushort *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "uint extraout_ECX;" type_identifier identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "uint extraout_ECX_00;" type_identifier identifier ;) (declaration "uint extraout_ECX_01;" type_identifier identifier ;) (declaration "undefined2 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "ushort uVar19;" type_identifier identifier ;) (declaration "byte *pbVar20;" type_identifier (pointer_declarator "*pbVar20" * identifier) ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "undefined1 *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "undefined1 *__dest;" type_identifier (pointer_declarator "*__dest" * identifier) ;) (declaration "byte *pbVar24;" type_identifier (pointer_declarator "*pbVar24" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "byte bVar25;" type_identifier identifier ;) (declaration "uint local_6c;" type_identifier identifier ;) (declaration "uint local_64;" type_identifier identifier ;) (declaration "byte *local_60;" type_identifier (pointer_declarator "*local_60" * identifier) ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "uint local_50;" type_identifier identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "uint uStack_48;" type_identifier identifier ;) (declaration "uint uStack_40;" type_identifier identifier ;) (declaration "uint uStack_38;" type_identifier identifier ;) (declaration "undefined2 uStack_24;" type_identifier identifier ;) (declaration "undefined1 uStack_22;" type_identifier identifier ;) (declaration "undefined1 uStack_21;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (declaration "undefined1 *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (expression_statement "bVar25 = 0;" (assignment_expression "bVar25 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x17809;" (assignment_expression "uStack_14 = 0x17809" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((((param_1 != (int *)0x0) && (param_1[8] != 0)) && (param_1[9] != 0)) &&\n     ((iVar5 = FUN_00017420(), iVar5 == 0 &&\n      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0)))) {\n    local_60 = (byte *)*param_1;\n    uVar1 = param_1[1];\n    if ((local_60 != (byte *)0x0) || (uVar1 == 0)) {\n      uVar2 = param_1[7];\n      iVar5 = *(int *)(uVar2 + 4);\n      if (iVar5 == 0x3f3f) {\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n        iVar5 = 0x3f40;\n      }\n      local_50 = param_1[4];\n      local_64 = *(uint *)(uVar2 + 0x3c);\n      uVar15 = *(uint *)(uVar2 + 0x40);\n      uVar21 = uVar2;\n      local_6c = uVar1;\n      local_5c = local_50;\nLAB_000178c9:\n      switch(iVar5) {\n      case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n      case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;\n      case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;\n      case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;\n      case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;\n      case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;\n      case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto code_r0x00017eda;\n      case 0x3f3f:\n        goto LAB_00017f13;\n      case 0x3f41:\n        goto code_r0x00017ac6;\n      case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;\n      case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;\n      case 0x3f44:\n        goto code_r0x00018840;\n      case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;\n      case 0x3f47:\n        goto LAB_00017c70;\n      case 0x3f48:\n        goto LAB_00017b90;\n      case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto code_r0x00017d27;\n      case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto code_r0x00017c9a;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;\n      case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto LAB_00018817;\n      case 0x3f52:\n        goto code_r0x00018770;\n      }\n    }\n  }" if (parenthesized_expression "((((param_1 != (int *)0x0) && (param_1[8] != 0)) && (param_1[9] != 0)) &&\n     ((iVar5 = FUN_00017420(), iVar5 == 0 &&\n      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0))))" ( (binary_expression "(((param_1 != (int *)0x0) && (param_1[8] != 0)) && (param_1[9] != 0)) &&\n     ((iVar5 = FUN_00017420(), iVar5 == 0 &&\n      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0)))" (parenthesized_expression "(((param_1 != (int *)0x0) && (param_1[8] != 0)) && (param_1[9] != 0))" ( (binary_expression "((param_1 != (int *)0x0) && (param_1[8] != 0)) && (param_1[9] != 0)" (parenthesized_expression "((param_1 != (int *)0x0) && (param_1[8] != 0))" ( (binary_expression "(param_1 != (int *)0x0) && (param_1[8] != 0)" (parenthesized_expression "(param_1 != (int *)0x0)" ( (binary_expression "param_1 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(param_1[8] != 0)" ( (binary_expression "param_1[8] != 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) != number_literal) ))) )) && (parenthesized_expression "(param_1[9] != 0)" ( (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) != number_literal) ))) )) && (parenthesized_expression "((iVar5 = FUN_00017420(), iVar5 == 0 &&\n      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0)))" ( (parenthesized_expression "(iVar5 = FUN_00017420(), iVar5 == 0 &&\n      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0))" ( (comma_expression "iVar5 = FUN_00017420(), iVar5 == 0 &&\n      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0)" (assignment_expression "iVar5 = FUN_00017420()" identifier = (call_expression "FUN_00017420()" identifier (argument_list "()" ( )))) , (binary_expression "iVar5 == 0 &&\n      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0)" (binary_expression "iVar5 == 0" identifier == number_literal) && (parenthesized_expression "(__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0)" ( (comma_expression "__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0" (assignment_expression "__dest = (undefined1 *)param_1[3]" identifier = (cast_expression "(undefined1 *)param_1[3]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ]))) , (binary_expression "__dest != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )))) )) ))) )) (compound_statement "{\n    local_60 = (byte *)*param_1;\n    uVar1 = param_1[1];\n    if ((local_60 != (byte *)0x0) || (uVar1 == 0)) {\n      uVar2 = param_1[7];\n      iVar5 = *(int *)(uVar2 + 4);\n      if (iVar5 == 0x3f3f) {\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n        iVar5 = 0x3f40;\n      }\n      local_50 = param_1[4];\n      local_64 = *(uint *)(uVar2 + 0x3c);\n      uVar15 = *(uint *)(uVar2 + 0x40);\n      uVar21 = uVar2;\n      local_6c = uVar1;\n      local_5c = local_50;\nLAB_000178c9:\n      switch(iVar5) {\n      case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n      case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;\n      case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;\n      case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;\n      case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;\n      case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;\n      case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto code_r0x00017eda;\n      case 0x3f3f:\n        goto LAB_00017f13;\n      case 0x3f41:\n        goto code_r0x00017ac6;\n      case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;\n      case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;\n      case 0x3f44:\n        goto code_r0x00018840;\n      case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;\n      case 0x3f47:\n        goto LAB_00017c70;\n      case 0x3f48:\n        goto LAB_00017b90;\n      case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto code_r0x00017d27;\n      case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto code_r0x00017c9a;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;\n      case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto LAB_00018817;\n      case 0x3f52:\n        goto code_r0x00018770;\n      }\n    }\n  }" { (expression_statement "local_60 = (byte *)*param_1;" (assignment_expression "local_60 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if ((local_60 != (byte *)0x0) || (uVar1 == 0)) {\n      uVar2 = param_1[7];\n      iVar5 = *(int *)(uVar2 + 4);\n      if (iVar5 == 0x3f3f) {\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n        iVar5 = 0x3f40;\n      }\n      local_50 = param_1[4];\n      local_64 = *(uint *)(uVar2 + 0x3c);\n      uVar15 = *(uint *)(uVar2 + 0x40);\n      uVar21 = uVar2;\n      local_6c = uVar1;\n      local_5c = local_50;\nLAB_000178c9:\n      switch(iVar5) {\n      case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n      case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;\n      case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;\n      case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;\n      case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;\n      case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;\n      case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto code_r0x00017eda;\n      case 0x3f3f:\n        goto LAB_00017f13;\n      case 0x3f41:\n        goto code_r0x00017ac6;\n      case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;\n      case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;\n      case 0x3f44:\n        goto code_r0x00018840;\n      case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;\n      case 0x3f47:\n        goto LAB_00017c70;\n      case 0x3f48:\n        goto LAB_00017b90;\n      case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto code_r0x00017d27;\n      case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto code_r0x00017c9a;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;\n      case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto LAB_00018817;\n      case 0x3f52:\n        goto code_r0x00018770;\n      }\n    }" if (parenthesized_expression "((local_60 != (byte *)0x0) || (uVar1 == 0))" ( (binary_expression "(local_60 != (byte *)0x0) || (uVar1 == 0)" (parenthesized_expression "(local_60 != (byte *)0x0)" ( (binary_expression "local_60 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) ))) )) (compound_statement "{\n      uVar2 = param_1[7];\n      iVar5 = *(int *)(uVar2 + 4);\n      if (iVar5 == 0x3f3f) {\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n        iVar5 = 0x3f40;\n      }\n      local_50 = param_1[4];\n      local_64 = *(uint *)(uVar2 + 0x3c);\n      uVar15 = *(uint *)(uVar2 + 0x40);\n      uVar21 = uVar2;\n      local_6c = uVar1;\n      local_5c = local_50;\nLAB_000178c9:\n      switch(iVar5) {\n      case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n      case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;\n      case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;\n      case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;\n      case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;\n      case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;\n      case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto code_r0x00017eda;\n      case 0x3f3f:\n        goto LAB_00017f13;\n      case 0x3f41:\n        goto code_r0x00017ac6;\n      case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;\n      case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;\n      case 0x3f44:\n        goto code_r0x00018840;\n      case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;\n      case 0x3f47:\n        goto LAB_00017c70;\n      case 0x3f48:\n        goto LAB_00017b90;\n      case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto code_r0x00017d27;\n      case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto code_r0x00017c9a;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;\n      case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto LAB_00018817;\n      case 0x3f52:\n        goto code_r0x00018770;\n      }\n    }" { (expression_statement "uVar2 = param_1[7];" (assignment_expression "uVar2 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (expression_statement "iVar5 = *(int *)(uVar2 + 4);" (assignment_expression "iVar5 = *(int *)(uVar2 + 4)" identifier = (pointer_expression "*(int *)(uVar2 + 4)" * (cast_expression "(int *)(uVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 == 0x3f3f) {\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n        iVar5 = 0x3f40;\n      }" if (parenthesized_expression "(iVar5 == 0x3f3f)" ( (binary_expression "iVar5 == 0x3f3f" identifier == number_literal) )) (compound_statement "{\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n        iVar5 = 0x3f40;\n      }" { (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f40;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f40" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar5 = 0x3f40;" (assignment_expression "iVar5 = 0x3f40" identifier = number_literal) ;) })) (expression_statement "local_50 = param_1[4];" (assignment_expression "local_50 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "local_64 = *(uint *)(uVar2 + 0x3c);" (assignment_expression "local_64 = *(uint *)(uVar2 + 0x3c)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x3c)" * (cast_expression "(uint *)(uVar2 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x3c)" ( (binary_expression "uVar2 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = *(uint *)(uVar2 + 0x40);" (assignment_expression "uVar15 = *(uint *)(uVar2 + 0x40)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x40)" * (cast_expression "(uint *)(uVar2 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x40)" ( (binary_expression "uVar2 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "uVar21 = uVar2;" (assignment_expression "uVar21 = uVar2" identifier = identifier) ;) (expression_statement "local_6c = uVar1;" (assignment_expression "local_6c = uVar1" identifier = identifier) ;) (expression_statement "local_5c = local_50;" (assignment_expression "local_5c = local_50" identifier = identifier) ;) (labeled_statement "LAB_000178c9:\n      switch(iVar5) {\n      case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n      case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;\n      case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;\n      case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;\n      case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;\n      case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;\n      case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto code_r0x00017eda;\n      case 0x3f3f:\n        goto LAB_00017f13;\n      case 0x3f41:\n        goto code_r0x00017ac6;\n      case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;\n      case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;\n      case 0x3f44:\n        goto code_r0x00018840;\n      case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;\n      case 0x3f47:\n        goto LAB_00017c70;\n      case 0x3f48:\n        goto LAB_00017b90;\n      case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto code_r0x00017d27;\n      case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto code_r0x00017c9a;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;\n      case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto LAB_00018817;\n      case 0x3f52:\n        goto code_r0x00018770;\n      }" statement_identifier : (switch_statement "switch(iVar5) {\n      case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n      case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;\n      case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;\n      case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;\n      case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;\n      case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;\n      case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto code_r0x00017eda;\n      case 0x3f3f:\n        goto LAB_00017f13;\n      case 0x3f41:\n        goto code_r0x00017ac6;\n      case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;\n      case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;\n      case 0x3f44:\n        goto code_r0x00018840;\n      case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;\n      case 0x3f47:\n        goto LAB_00017c70;\n      case 0x3f48:\n        goto LAB_00017b90;\n      case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto code_r0x00017d27;\n      case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto code_r0x00017c9a;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;\n      case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto LAB_00018817;\n      case 0x3f52:\n        goto code_r0x00018770;\n      }" switch (parenthesized_expression "(iVar5)" ( identifier )) (compound_statement "{\n      case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n      case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;\n      case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;\n      case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;\n      case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;\n      case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;\n      case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto code_r0x00017eda;\n      case 0x3f3f:\n        goto LAB_00017f13;\n      case 0x3f41:\n        goto code_r0x00017ac6;\n      case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;\n      case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;\n      case 0x3f44:\n        goto code_r0x00018840;\n      case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;\n      case 0x3f47:\n        goto LAB_00017c70;\n      case 0x3f48:\n        goto LAB_00017b90;\n      case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto code_r0x00017d27;\n      case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto code_r0x00017c9a;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;\n      case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto LAB_00018817;\n      case 0x3f52:\n        goto code_r0x00018770;\n      }" { (case_statement "case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;" case number_literal : (expression_statement "uVar21 = *(uint *)(uVar2 + 0xc);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0xc)" identifier = (pointer_expression "*(uint *)(uVar2 + 0xc)" * (cast_expression "(uint *)(uVar2 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }" if (parenthesized_expression "(uVar21 != 0)" ( (binary_expression "uVar21 != 0" identifier != number_literal) )) (compound_statement "{\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }" { (if_statement "if (0xf < uVar15) goto code_r0x00018ec6;" if (parenthesized_expression "(0xf < uVar15)" ( (binary_expression "0xf < uVar15" number_literal < identifier) )) (goto_statement "goto code_r0x00018ec6;" goto statement_identifier ;)) (if_statement "if (local_6c != 0) goto code_r0x00018ea0;" if (parenthesized_expression "(local_6c != 0)" ( (binary_expression "local_6c != 0" identifier != number_literal) )) (goto_statement "goto code_r0x00018ea0;" goto statement_identifier ;)) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f40;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f40" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;)) (case_statement "case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;" case number_literal : (labeled_statement "LAB_0001790a:\n        bVar12 = (byte)uVar15;" statement_identifier : (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;)) (if_statement "if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }" if (parenthesized_expression "(*(int *)(uVar2 + 8) != 0)" ( (binary_expression "*(int *)(uVar2 + 8) != 0" (pointer_expression "*(int *)(uVar2 + 8)" * (cast_expression "(int *)(uVar2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 8)" ( (binary_expression "uVar2 + 8" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }" { (expression_statement "uVar15 = uVar15 & 0xfffffff8;" (assignment_expression "uVar15 = uVar15 & 0xfffffff8" identifier = (binary_expression "uVar15 & 0xfffffff8" identifier & number_literal)) ;) (expression_statement "local_64 = local_64 >> (bVar12 & 7);" (assignment_expression "local_64 = local_64 >> (bVar12 & 7)" identifier = (binary_expression "local_64 >> (bVar12 & 7)" identifier >> (parenthesized_expression "(bVar12 & 7)" ( (binary_expression "bVar12 & 7" identifier & number_literal) )))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f4e;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f4e" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto code_r0x00017930;" goto statement_identifier ;) })) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (if_statement "if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }" if (parenthesized_expression "(uVar15 < 3)" ( (binary_expression "uVar15 < 3" identifier < number_literal) )) (compound_statement "{\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }" { (if_statement "if (local_6c == 0) goto LAB_00017f32;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;)) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "bVar13 = *local_60;" (assignment_expression "bVar13 = *local_60" identifier = (pointer_expression "*local_60" * identifier)) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)bVar13 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)bVar13 << (bVar12 & 0x1f))" ( (binary_expression "(uint)bVar13 << (bVar12 & 0x1f)" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) })) (expression_statement "*(uint *)(uVar2 + 8) = local_64 & 1;" (assignment_expression "*(uint *)(uVar2 + 8) = local_64 & 1" (pointer_expression "*(uint *)(uVar2 + 8)" * (cast_expression "(uint *)(uVar2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 8)" ( (binary_expression "uVar2 + 8" identifier + number_literal) )))) = (binary_expression "local_64 & 1" identifier & number_literal)) ;) (expression_statement "uVar14 = local_64 >> 1 & 3;" (assignment_expression "uVar14 = local_64 >> 1 & 3" identifier = (binary_expression "local_64 >> 1 & 3" (binary_expression "local_64 >> 1" identifier >> number_literal) & number_literal)) ;) (if_statement "if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }" if (parenthesized_expression "(uVar14 == 2)" ( (binary_expression "uVar14 == 2" identifier == number_literal) )) (compound_statement "{\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }" { (expression_statement "local_64 = local_64 >> 3;" (assignment_expression "local_64 = local_64 >> 3" identifier = (binary_expression "local_64 >> 3" identifier >> number_literal)) ;) (expression_statement "uVar15 = uVar15 - 3;" (assignment_expression "uVar15 = uVar15 - 3" identifier = (binary_expression "uVar15 - 3" identifier - number_literal)) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f44;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f44" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "code_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }" statement_identifier : (for_statement "for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }" for ( ; (binary_expression "uVar15 < 0xe" identifier < number_literal) ; (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ) (compound_statement "{\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }" { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << ((byte)uVar15 & 0x1f))" ( (binary_expression "(uint)*local_60 << ((byte)uVar15 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "((byte)uVar15 & 0x1f)" ( (binary_expression "(byte)uVar15 & 0x1f" (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) }))) (expression_statement "uVar15 = uVar15 - 0xe;" (assignment_expression "uVar15 = uVar15 - 0xe" identifier = (binary_expression "uVar15 - 0xe" identifier - number_literal)) ;) (expression_statement "uVar17 = (local_64 & 0x1f) + 0x101;" (assignment_expression "uVar17 = (local_64 & 0x1f) + 0x101" identifier = (binary_expression "(local_64 & 0x1f) + 0x101" (parenthesized_expression "(local_64 & 0x1f)" ( (binary_expression "local_64 & 0x1f" identifier & number_literal) )) + number_literal)) ;) (expression_statement "uVar21 = (local_64 >> 5 & 0x1f) + 1;" (assignment_expression "uVar21 = (local_64 >> 5 & 0x1f) + 1" identifier = (binary_expression "(local_64 >> 5 & 0x1f) + 1" (parenthesized_expression "(local_64 >> 5 & 0x1f)" ( (binary_expression "local_64 >> 5 & 0x1f" (binary_expression "local_64 >> 5" identifier >> number_literal) & number_literal) )) + number_literal)) ;) (expression_statement "uVar14 = (local_64 >> 10 & 0xf) + 4;" (assignment_expression "uVar14 = (local_64 >> 10 & 0xf) + 4" identifier = (binary_expression "(local_64 >> 10 & 0xf) + 4" (parenthesized_expression "(local_64 >> 10 & 0xf)" ( (binary_expression "local_64 >> 10 & 0xf" (binary_expression "local_64 >> 10" identifier >> number_literal) & number_literal) )) + number_literal)) ;) (expression_statement "local_64 = local_64 >> 0xe;" (assignment_expression "local_64 = local_64 >> 0xe" identifier = (binary_expression "local_64 >> 0xe" identifier >> number_literal)) ;) (expression_statement "*(uint *)(uVar2 + 100) = uVar17;" (assignment_expression "*(uint *)(uVar2 + 100) = uVar17" (pointer_expression "*(uint *)(uVar2 + 100)" * (cast_expression "(uint *)(uVar2 + 100)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 100)" ( (binary_expression "uVar2 + 100" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(uVar2 + 0x68) = uVar21;" (assignment_expression "*(uint *)(uVar2 + 0x68) = uVar21" (pointer_expression "*(uint *)(uVar2 + 0x68)" * (cast_expression "(uint *)(uVar2 + 0x68)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x68)" ( (binary_expression "uVar2 + 0x68" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(uVar2 + 0x60) = uVar14;" (assignment_expression "*(uint *)(uVar2 + 0x60) = uVar14" (pointer_expression "*(uint *)(uVar2 + 0x60)" * (cast_expression "(uint *)(uVar2 + 0x60)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x60)" ( (binary_expression "uVar2 + 0x60" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }" if (parenthesized_expression "((uVar21 < 0x1f) && (uVar17 < 0x11f))" ( (binary_expression "(uVar21 < 0x1f) && (uVar17 < 0x11f)" (parenthesized_expression "(uVar21 < 0x1f)" ( (binary_expression "uVar21 < 0x1f" identifier < number_literal) )) && (parenthesized_expression "(uVar17 < 0x11f)" ( (binary_expression "uVar17 < 0x11f" identifier < number_literal) ))) )) (compound_statement "{\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }" { (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x6c) = 0;" (assignment_expression "*(undefined4 *)(uVar2 + 0x6c) = 0" (pointer_expression "*(undefined4 *)(uVar2 + 0x6c)" * (cast_expression "(undefined4 *)(uVar2 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x6c)" ( (binary_expression "uVar2 + 0x6c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f45;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f45" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "LAB_000184b2:\n            uVar17 = uVar21 + 1;" statement_identifier : (expression_statement "uVar17 = uVar21 + 1;" (assignment_expression "uVar17 = uVar21 + 1" identifier = (binary_expression "uVar21 + 1" identifier + number_literal)) ;)) (do_statement "do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);" do (compound_statement "{\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            }" { (expression_statement "uVar21 = uVar17;" (assignment_expression "uVar21 = uVar17" identifier = identifier) ;) (if_statement "if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }" if (parenthesized_expression "(uVar15 < 3)" ( (binary_expression "uVar15 < 3" identifier < number_literal) )) (compound_statement "{\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }" { (if_statement "if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (compound_statement "{\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }" { (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar15 = uVar15 - 3;" (assignment_expression "uVar15 = uVar15 - 3" identifier = (binary_expression "uVar15 - 3" identifier - number_literal)) ;) (expression_statement "*(uint *)(uVar2 + 0x6c) = uVar21;" (assignment_expression "*(uint *)(uVar2 + 0x6c) = uVar21" (pointer_expression "*(uint *)(uVar2 + 0x6c)" * (cast_expression "(uint *)(uVar2 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x6c)" ( (binary_expression "uVar2 + 0x6c" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar17 = local_64 >> 3;" (assignment_expression "uVar17 = local_64 >> 3" identifier = (binary_expression "local_64 >> 3" identifier >> number_literal)) ;) (expression_statement "*(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;" (assignment_expression "*(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7" (pointer_expression "*(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2)" * (cast_expression "(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2)" ( (binary_expression "uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2" (binary_expression "uVar2 + 0x74" identifier + number_literal) + (binary_expression "(uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2" (binary_expression "(uint)*(ushort *)(&UNK_000221be + uVar21 * 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(&UNK_000221be + uVar21 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_000221be + uVar21 * 2)" ( (binary_expression "&UNK_000221be + uVar21 * 2" (pointer_expression "&UNK_000221be" & identifier) + (binary_expression "uVar21 * 2" identifier * number_literal)) )))) * number_literal)) )))) = (binary_expression "(ushort)local_64 & 7" (cast_expression "(ushort)local_64" ( (type_descriptor "ushort" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "local_64 = uVar17;" (assignment_expression "local_64 = uVar17" identifier = identifier) ;) (expression_statement "uVar17 = uVar21 + 1;" (assignment_expression "uVar17 = uVar21 + 1" identifier = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar14 + 1 != uVar21 + 1)" ( (binary_expression "uVar14 + 1 != uVar21 + 1" (binary_expression "uVar14 + 1" identifier + number_literal) != (binary_expression "uVar21 + 1" identifier + number_literal)) )) ;) (labeled_statement "code_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }" statement_identifier : (if_statement "if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }" if (parenthesized_expression "(uVar21 < 0x13)" ( (binary_expression "uVar21 < 0x13" identifier < number_literal) )) (compound_statement "{\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }" { (expression_statement "puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);" (assignment_expression "puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2)" identifier = (cast_expression "(ushort *)(&UNK_000221c0 + uVar21 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_000221c0 + uVar21 * 2)" ( (binary_expression "&UNK_000221c0 + uVar21 * 2" (pointer_expression "&UNK_000221c0" & identifier) + (binary_expression "uVar21 * 2" identifier * number_literal)) )))) ;) (do_statement "do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);" do (compound_statement "{\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              }" { (expression_statement "uVar19 = *puVar11;" (assignment_expression "uVar19 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;" (assignment_expression "*(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0" (pointer_expression "*(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2)" * (cast_expression "(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x74 + (uint)uVar19 * 2)" ( (binary_expression "uVar2 + 0x74 + (uint)uVar19 * 2" (binary_expression "uVar2 + 0x74" identifier + number_literal) + (binary_expression "(uint)uVar19 * 2" (cast_expression "(uint)uVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) = number_literal) ;) }) while (parenthesized_expression "(puVar11 != (ushort *)&UNK_000221e6)" ( (binary_expression "puVar11 != (ushort *)&UNK_000221e6" identifier != (cast_expression "(ushort *)&UNK_000221e6" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&UNK_000221e6" & identifier))) )) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x6c) = 0x13;" (assignment_expression "*(undefined4 *)(uVar2 + 0x6c) = 0x13" (pointer_expression "*(undefined4 *)(uVar2 + 0x6c)" * (cast_expression "(undefined4 *)(uVar2 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x6c)" ( (binary_expression "uVar2 + 0x6c" identifier + number_literal) )))) = number_literal) ;) }))) (expression_statement "*(undefined4 *)(uVar2 + 0x58) = 7;" (assignment_expression "*(undefined4 *)(uVar2 + 0x58) = 7" (pointer_expression "*(undefined4 *)(uVar2 + 0x58)" * (cast_expression "(undefined4 *)(uVar2 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x58)" ( (binary_expression "uVar2 + 0x58" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(uVar2 + 0x70) = uVar2 + 0x534;" (assignment_expression "*(uint *)(uVar2 + 0x70) = uVar2 + 0x534" (pointer_expression "*(uint *)(uVar2 + 0x70)" * (cast_expression "(uint *)(uVar2 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x70)" ( (binary_expression "uVar2 + 0x70" identifier + number_literal) )))) = (binary_expression "uVar2 + 0x534" identifier + number_literal)) ;) (expression_statement "*(uint *)(uVar2 + 0x50) = uVar2 + 0x534;" (assignment_expression "*(uint *)(uVar2 + 0x50) = uVar2 + 0x534" (pointer_expression "*(uint *)(uVar2 + 0x50)" * (cast_expression "(uint *)(uVar2 + 0x50)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x50)" ( (binary_expression "uVar2 + 0x50" identifier + number_literal) )))) = (binary_expression "uVar2 + 0x534" identifier + number_literal)) ;) (expression_statement "iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);" (assignment_expression "iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4)" identifier = (call_expression "FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4)" identifier (argument_list "(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4)" ( number_literal , (binary_expression "uVar2 + 0x74" identifier + number_literal) , number_literal , (binary_expression "uVar2 + 0x70" identifier + number_literal) , (binary_expression "uVar2 + 0x58" identifier + number_literal) , (binary_expression "uVar2 + 0x2f4" identifier + number_literal) )))) ;) (if_statement "if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }" { (expression_statement "uStack_48 = 0;" (assignment_expression "uStack_48 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x6c) = 0;" (assignment_expression "*(undefined4 *)(uVar2 + 0x6c) = 0" (pointer_expression "*(undefined4 *)(uVar2 + 0x6c)" * (cast_expression "(undefined4 *)(uVar2 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x6c)" ( (binary_expression "uVar2 + 0x6c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f46;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f46" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar21 = extraout_ECX_01;" (assignment_expression "uVar21 = extraout_ECX_01" identifier = identifier) ;) (labeled_statement "LAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);" statement_identifier : (expression_statement "iVar5 = *(int *)(uVar2 + 100);" (assignment_expression "iVar5 = *(int *)(uVar2 + 100)" identifier = (pointer_expression "*(int *)(uVar2 + 100)" * (cast_expression "(int *)(uVar2 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 100)" ( (binary_expression "uVar2 + 100" identifier + number_literal) ))))) ;)) (expression_statement "uVar14 = iVar5 + *(int *)(uVar2 + 0x68);" (assignment_expression "uVar14 = iVar5 + *(int *)(uVar2 + 0x68)" identifier = (binary_expression "iVar5 + *(int *)(uVar2 + 0x68)" identifier + (pointer_expression "*(int *)(uVar2 + 0x68)" * (cast_expression "(int *)(uVar2 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x68)" ( (binary_expression "uVar2 + 0x68" identifier + number_literal) )))))) ;) (while_statement "while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }" while (parenthesized_expression "(uStack_48 < uVar14)" ( (binary_expression "uStack_48 < uVar14" identifier < identifier) )) (compound_statement "{\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }" { (expression_statement "uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));" (assignment_expression "uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f))" identifier = (unary_expression "~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f))" ( (binary_expression "-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f)" number_literal << (parenthesized_expression "((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f)" ( (binary_expression "(byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f" (binary_expression "(byte)*(undefined4 *)(uVar2 + 0x58)" (parenthesized_expression "(byte)" ( identifier )) * (cast_expression "(undefined4 *)(uVar2 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x58)" ( (binary_expression "uVar2 + 0x58" identifier + number_literal) )))) & number_literal) ))) )))) ;) (expression_statement "iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;" (assignment_expression "iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4" identifier = (binary_expression "*(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4" (pointer_expression "*(int *)(uVar2 + 0x50)" * (cast_expression "(int *)(uVar2 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x50)" ( (binary_expression "uVar2 + 0x50" identifier + number_literal) )))) + (binary_expression "(uVar17 & local_64) * 4" (parenthesized_expression "(uVar17 & local_64)" ( (binary_expression "uVar17 & local_64" identifier & identifier) )) * number_literal))) ;) (expression_statement "uVar21 = (uint)*(byte *)(iVar7 + 1);" (assignment_expression "uVar21 = (uint)*(byte *)(iVar7 + 1)" identifier = (binary_expression "(uint)*(byte *)(iVar7 + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar7 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 1)" ( (binary_expression "iVar7 + 1" identifier + number_literal) ))))) ;) (expression_statement "uVar19 = *(ushort *)(iVar7 + 2);" (assignment_expression "uVar19 = *(ushort *)(iVar7 + 2)" identifier = (pointer_expression "*(ushort *)(iVar7 + 2)" * (cast_expression "(ushort *)(iVar7 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 2)" ( (binary_expression "iVar7 + 2" identifier + number_literal) ))))) ;) (if_statement "if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }" if (parenthesized_expression "(uVar15 < uVar21)" ( (binary_expression "uVar15 < uVar21" identifier < identifier) )) (compound_statement "{\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }" { (if_statement "if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }" if (parenthesized_expression "(local_6c != 0)" ( (binary_expression "local_6c != 0" identifier != number_literal) )) (compound_statement "{\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }" { (while_statement "while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }" { (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;" (assignment_expression "iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4" identifier = (binary_expression "*(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4" (pointer_expression "*(int *)(uVar2 + 0x50)" * (cast_expression "(int *)(uVar2 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x50)" ( (binary_expression "uVar2 + 0x50" identifier + number_literal) )))) + (binary_expression "(uVar17 & local_64) * 4" (parenthesized_expression "(uVar17 & local_64)" ( (binary_expression "uVar17 & local_64" identifier & identifier) )) * number_literal))) ;) (expression_statement "uVar21 = (uint)*(byte *)(iVar7 + 1);" (assignment_expression "uVar21 = (uint)*(byte *)(iVar7 + 1)" identifier = (binary_expression "(uint)*(byte *)(iVar7 + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar7 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 1)" ( (binary_expression "iVar7 + 1" identifier + number_literal) ))))) ;) (expression_statement "uVar19 = *(ushort *)(iVar7 + 2);" (assignment_expression "uVar19 = *(ushort *)(iVar7 + 2)" identifier = (pointer_expression "*(ushort *)(iVar7 + 2)" * (cast_expression "(ushort *)(iVar7 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 2)" ( (binary_expression "iVar7 + 2" identifier + number_literal) ))))) ;) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" identifier = identifier) ;) (if_statement "if (uVar21 <= uVar15) break;" if (parenthesized_expression "(uVar21 <= uVar15)" ( (binary_expression "uVar21 <= uVar15" identifier <= identifier) )) (break_statement "break;" break ;)) (if_statement "if (local_6c == 0) goto LAB_00018d40;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00018d40;" goto statement_identifier ;)) })) (goto_statement "goto LAB_00018694;" goto statement_identifier ;) })) (labeled_statement "LAB_000192ef:\n                  uVar21 = 0;" statement_identifier : (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;)) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (labeled_statement "LAB_00018694:\n                bVar12 = (byte)uVar21;" statement_identifier : (expression_statement "bVar12 = (byte)uVar21;" (assignment_expression "bVar12 = (byte)uVar21" identifier = (cast_expression "(byte)uVar21" ( (type_descriptor "byte" type_identifier) ) identifier)) ;)) (if_statement "if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }" if (parenthesized_expression "(uVar19 < 0x10)" ( (binary_expression "uVar19 < 0x10" identifier < number_literal) )) (compound_statement "{\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }" { (expression_statement "local_64 = local_64 >> (bVar12 & 0x1f);" (assignment_expression "local_64 = local_64 >> (bVar12 & 0x1f)" identifier = (binary_expression "local_64 >> (bVar12 & 0x1f)" identifier >> (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar15 = uVar15 - uVar21;" (assignment_expression "uVar15 = uVar15 - uVar21" identifier = (binary_expression "uVar15 - uVar21" identifier - identifier)) ;) (expression_statement "*(uint *)(uVar2 + 0x6c) = uStack_48 + 1;" (assignment_expression "*(uint *)(uVar2 + 0x6c) = uStack_48 + 1" (pointer_expression "*(uint *)(uVar2 + 0x6c)" * (cast_expression "(uint *)(uVar2 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x6c)" ( (binary_expression "uVar2 + 0x6c" identifier + number_literal) )))) = (binary_expression "uStack_48 + 1" identifier + number_literal)) ;) (expression_statement "*(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;" (assignment_expression "*(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19" (pointer_expression "*(ushort *)(uVar2 + 0x74 + uStack_48 * 2)" * (cast_expression "(ushort *)(uVar2 + 0x74 + uStack_48 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x74 + uStack_48 * 2)" ( (binary_expression "uVar2 + 0x74 + uStack_48 * 2" (binary_expression "uVar2 + 0x74" identifier + number_literal) + (binary_expression "uStack_48 * 2" identifier * number_literal)) )))) = identifier) ;) (expression_statement "uVar21 = uStack_48;" (assignment_expression "uVar21 = uStack_48" identifier = identifier) ;) (expression_statement "uStack_48 = uStack_48 + 1;" (assignment_expression "uStack_48 = uStack_48 + 1" identifier = (binary_expression "uStack_48 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }" else (compound_statement "{\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }" { (if_statement "if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }" if (parenthesized_expression "(uVar19 == 0x10)" ( (binary_expression "uVar19 == 0x10" identifier == number_literal) )) (compound_statement "{\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }" { (if_statement "if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }" if (parenthesized_expression "(uVar15 < uVar21 + 2)" ( (binary_expression "uVar15 < uVar21 + 2" identifier < (binary_expression "uVar21 + 2" identifier + number_literal)) )) (compound_statement "{\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }" { (if_statement "if (local_6c == 0) goto LAB_000192ef;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_000192ef;" goto statement_identifier ;)) (while_statement "while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }" { (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar13 = (byte)uVar15;" (assignment_expression "bVar13 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar13 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar13 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar13 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar13 & 0x1f)" ( (binary_expression "bVar13 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" identifier = identifier) ;) (if_statement "if (uVar21 + 2 <= uVar15) break;" if (parenthesized_expression "(uVar21 + 2 <= uVar15)" ( (binary_expression "uVar21 + 2 <= uVar15" (binary_expression "uVar21 + 2" identifier + number_literal) <= identifier) )) (break_statement "break;" break ;)) (if_statement "if (local_6c == 0) goto LAB_00018d40;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00018d40;" goto statement_identifier ;)) })) })) (expression_statement "uVar15 = uVar15 - uVar21;" (assignment_expression "uVar15 = uVar15 - uVar21" identifier = (binary_expression "uVar15 - uVar21" identifier - identifier)) ;) (expression_statement "local_64 = local_64 >> (bVar12 & 0x1f);" (assignment_expression "local_64 = local_64 >> (bVar12 & 0x1f)" identifier = (binary_expression "local_64 >> (bVar12 & 0x1f)" identifier >> (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) )))) ;) (if_statement "if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }" if (parenthesized_expression "(uStack_48 == 0)" ( (binary_expression "uStack_48 == 0" identifier == number_literal) )) (compound_statement "{\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }" { (expression_statement "param_1[6] = (int)"invalid bit length repeat";" (assignment_expression "param_1[6] = (int)"invalid bit length repeat"" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)"invalid bit length repeat"" ( (type_descriptor "int" primitive_type) ) (string_literal ""invalid bit length repeat"" " string_content "))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00018817;" goto statement_identifier ;) })) (expression_statement "uVar17 = local_64 & 3;" (assignment_expression "uVar17 = local_64 & 3" identifier = (binary_expression "local_64 & 3" identifier & number_literal)) ;) (expression_statement "local_64 = local_64 >> 2;" (assignment_expression "local_64 = local_64 >> 2" identifier = (binary_expression "local_64 >> 2" identifier >> number_literal)) ;) (expression_statement "uVar15 = uVar15 - 2;" (assignment_expression "uVar15 = uVar15 - 2" identifier = (binary_expression "uVar15 - 2" identifier - number_literal)) ;) (expression_statement "uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);" (assignment_expression "uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2)" identifier = (binary_expression "(uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(uVar2 + 0x72 + uStack_48 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x72 + uStack_48 * 2)" ( (binary_expression "uVar2 + 0x72 + uStack_48 * 2" (binary_expression "uVar2 + 0x72" identifier + number_literal) + (binary_expression "uStack_48 * 2" identifier * number_literal)) ))))) ;) (expression_statement "iVar7 = uVar17 + 3;" (assignment_expression "iVar7 = uVar17 + 3" identifier = (binary_expression "uVar17 + 3" identifier + number_literal)) ;) }) (else_clause "else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }" else (if_statement "if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }" if (parenthesized_expression "(uVar19 == 0x11)" ( (binary_expression "uVar19 == 0x11" identifier == number_literal) )) (compound_statement "{\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }" { (if_statement "if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }" if (parenthesized_expression "(uVar15 < uVar21 + 3)" ( (binary_expression "uVar15 < uVar21 + 3" identifier < (binary_expression "uVar21 + 3" identifier + number_literal)) )) (compound_statement "{\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }" { (if_statement "if (local_6c == 0) goto LAB_000192ef;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_000192ef;" goto statement_identifier ;)) (while_statement "while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }" { (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar13 = (byte)uVar15;" (assignment_expression "bVar13 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar13 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar13 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar13 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar13 & 0x1f)" ( (binary_expression "bVar13 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" identifier = identifier) ;) (if_statement "if (uVar21 + 3 <= uVar15) break;" if (parenthesized_expression "(uVar21 + 3 <= uVar15)" ( (binary_expression "uVar21 + 3 <= uVar15" (binary_expression "uVar21 + 3" identifier + number_literal) <= identifier) )) (break_statement "break;" break ;)) (if_statement "if (local_6c == 0) goto LAB_00018d40;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00018d40;" goto statement_identifier ;)) })) })) (expression_statement "local_64 = local_64 >> (bVar12 & 0x1f);" (assignment_expression "local_64 = local_64 >> (bVar12 & 0x1f)" identifier = (binary_expression "local_64 >> (bVar12 & 0x1f)" identifier >> (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar15 = (uVar15 - uVar21) - 3;" (assignment_expression "uVar15 = (uVar15 - uVar21) - 3" identifier = (binary_expression "(uVar15 - uVar21) - 3" (parenthesized_expression "(uVar15 - uVar21)" ( (binary_expression "uVar15 - uVar21" identifier - identifier) )) - number_literal)) ;) (expression_statement "iVar7 = (local_64 & 7) + 3;" (assignment_expression "iVar7 = (local_64 & 7) + 3" identifier = (binary_expression "(local_64 & 7) + 3" (parenthesized_expression "(local_64 & 7)" ( (binary_expression "local_64 & 7" identifier & number_literal) )) + number_literal)) ;) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (expression_statement "local_64 = local_64 >> 3;" (assignment_expression "local_64 = local_64 >> 3" identifier = (binary_expression "local_64 >> 3" identifier >> number_literal)) ;) }) (else_clause "else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }" else (compound_statement "{\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }" { (if_statement "if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }" if (parenthesized_expression "(uVar15 < uVar21 + 7)" ( (binary_expression "uVar15 < uVar21 + 7" identifier < (binary_expression "uVar21 + 7" identifier + number_literal)) )) (compound_statement "{\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }" { (if_statement "if (local_6c == 0) goto LAB_000192ef;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_000192ef;" goto statement_identifier ;)) (while_statement "while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }" { (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar13 = (byte)uVar15;" (assignment_expression "bVar13 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar13 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar13 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar13 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar13 & 0x1f)" ( (binary_expression "bVar13 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" identifier = identifier) ;) (if_statement "if (uVar21 + 7 <= uVar15) break;" if (parenthesized_expression "(uVar21 + 7 <= uVar15)" ( (binary_expression "uVar21 + 7 <= uVar15" (binary_expression "uVar21 + 7" identifier + number_literal) <= identifier) )) (break_statement "break;" break ;)) (if_statement "if (local_6c == 0) goto LAB_00018d40;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00018d40;" goto statement_identifier ;)) })) })) (expression_statement "local_64 = local_64 >> (bVar12 & 0x1f);" (assignment_expression "local_64 = local_64 >> (bVar12 & 0x1f)" identifier = (binary_expression "local_64 >> (bVar12 & 0x1f)" identifier >> (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar15 = (uVar15 - uVar21) - 7;" (assignment_expression "uVar15 = (uVar15 - uVar21) - 7" identifier = (binary_expression "(uVar15 - uVar21) - 7" (parenthesized_expression "(uVar15 - uVar21)" ( (binary_expression "uVar15 - uVar21" identifier - identifier) )) - number_literal)) ;) (expression_statement "iVar7 = (local_64 & 0x7f) + 0xb;" (assignment_expression "iVar7 = (local_64 & 0x7f) + 0xb" identifier = (binary_expression "(local_64 & 0x7f) + 0xb" (parenthesized_expression "(local_64 & 0x7f)" ( (binary_expression "local_64 & 0x7f" identifier & number_literal) )) + number_literal)) ;) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (expression_statement "local_64 = local_64 >> 7;" (assignment_expression "local_64 = local_64 >> 7" identifier = (binary_expression "local_64 >> 7" identifier >> number_literal)) ;) }))))) (expression_statement "uVar17 = iVar7 + uStack_48;" (assignment_expression "uVar17 = iVar7 + uStack_48" identifier = (binary_expression "iVar7 + uStack_48" identifier + identifier)) ;) (if_statement "if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }" if (parenthesized_expression "(uVar14 < uVar17)" ( (binary_expression "uVar14 < uVar17" identifier < identifier) )) (compound_statement "{\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }" { (expression_statement "param_1[6] = (int)"invalid bit length repeat";" (assignment_expression "param_1[6] = (int)"invalid bit length repeat"" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)"invalid bit length repeat"" ( (type_descriptor "int" primitive_type) ) (string_literal ""invalid bit length repeat"" " string_content "))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00018817;" goto statement_identifier ;) })) (expression_statement "puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);" (assignment_expression "puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2)" identifier = (cast_expression "(undefined2 *)(uVar2 + 0x74 + uStack_48 * 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x74 + uStack_48 * 2)" ( (binary_expression "uVar2 + 0x74 + uStack_48 * 2" (binary_expression "uVar2 + 0x74" identifier + number_literal) + (binary_expression "uStack_48 * 2" identifier * number_literal)) )))) ;) (do_statement "do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));" do (compound_statement "{\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  }" { (expression_statement "*puVar16 = (short)uVar21;" (assignment_expression "*puVar16 = (short)uVar21" (pointer_expression "*puVar16" * identifier) = (cast_expression "(short)uVar21" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2))" ( (binary_expression "puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2)" identifier != (cast_expression "(undefined2 *)(uVar2 + 0x74 + uVar17 * 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x74 + uVar17 * 2)" ( (binary_expression "uVar2 + 0x74 + uVar17 * 2" (binary_expression "uVar2 + 0x74" identifier + number_literal) + (binary_expression "uVar17 * 2" identifier * number_literal)) )))) )) ;) (expression_statement "*(uint *)(uVar2 + 0x6c) = uVar17;" (assignment_expression "*(uint *)(uVar2 + 0x6c) = uVar17" (pointer_expression "*(uint *)(uVar2 + 0x6c)" * (cast_expression "(uint *)(uVar2 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x6c)" ( (binary_expression "uVar2 + 0x6c" identifier + number_literal) )))) = identifier) ;) (expression_statement "uStack_48 = uVar17;" (assignment_expression "uStack_48 = uVar17" identifier = identifier) ;) }))) })) (if_statement "if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;" if (parenthesized_expression "(*(int *)(uVar2 + 4) == 0x3f51)" ( (binary_expression "*(int *)(uVar2 + 4) == 0x3f51" (pointer_expression "*(int *)(uVar2 + 4)" * (cast_expression "(int *)(uVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_00018817;" goto statement_identifier ;)) (if_statement "if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }" if (parenthesized_expression "(*(short *)(uVar2 + 0x274) != 0)" ( (binary_expression "*(short *)(uVar2 + 0x274) != 0" (pointer_expression "*(short *)(uVar2 + 0x274)" * (cast_expression "(short *)(uVar2 + 0x274)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x274)" ( (binary_expression "uVar2 + 0x274" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }" { (expression_statement "*(undefined4 *)(uVar2 + 0x58) = 9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x58) = 9" (pointer_expression "*(undefined4 *)(uVar2 + 0x58)" * (cast_expression "(undefined4 *)(uVar2 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x58)" ( (binary_expression "uVar2 + 0x58" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(uVar2 + 0x70) = uVar2 + 0x534;" (assignment_expression "*(uint *)(uVar2 + 0x70) = uVar2 + 0x534" (pointer_expression "*(uint *)(uVar2 + 0x70)" * (cast_expression "(uint *)(uVar2 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x70)" ( (binary_expression "uVar2 + 0x70" identifier + number_literal) )))) = (binary_expression "uVar2 + 0x534" identifier + number_literal)) ;) (expression_statement "*(uint *)(uVar2 + 0x50) = uVar2 + 0x534;" (assignment_expression "*(uint *)(uVar2 + 0x50) = uVar2 + 0x534" (pointer_expression "*(uint *)(uVar2 + 0x50)" * (cast_expression "(uint *)(uVar2 + 0x50)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x50)" ( (binary_expression "uVar2 + 0x50" identifier + number_literal) )))) = (binary_expression "uVar2 + 0x534" identifier + number_literal)) ;) (expression_statement "iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);" (assignment_expression "iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21)" identifier = (call_expression "FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21)" identifier (argument_list "(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21)" ( number_literal , (binary_expression "uVar2 + 0x74" identifier + number_literal) , identifier , (binary_expression "uVar2 + 0x70" identifier + number_literal) , (binary_expression "uVar2 + 0x58" identifier + number_literal) , (binary_expression "uVar2 + 0x2f4" identifier + number_literal) , identifier , identifier )))) ;) (if_statement "if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }" { (expression_statement "uVar9 = *(undefined4 *)(uVar2 + 0x70);" (assignment_expression "uVar9 = *(undefined4 *)(uVar2 + 0x70)" identifier = (pointer_expression "*(undefined4 *)(uVar2 + 0x70)" * (cast_expression "(undefined4 *)(uVar2 + 0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x70)" ( (binary_expression "uVar2 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x5c) = 6;" (assignment_expression "*(undefined4 *)(uVar2 + 0x5c) = 6" (pointer_expression "*(undefined4 *)(uVar2 + 0x5c)" * (cast_expression "(undefined4 *)(uVar2 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x5c)" ( (binary_expression "uVar2 + 0x5c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x54) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x54) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x54)" * (cast_expression "(undefined4 *)(uVar2 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x54)" ( (binary_expression "uVar2 + 0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);" (assignment_expression "iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9)" identifier = (call_expression "FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9)" identifier (argument_list "(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9)" ( number_literal , (binary_expression "uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2" (binary_expression "uVar2 + 0x74" identifier + number_literal) + (binary_expression "*(int *)(uVar2 + 100) * 2" (pointer_expression "*(int *)(uVar2 + 100)" * (cast_expression "(int *)(uVar2 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 100)" ( (binary_expression "uVar2 + 100" identifier + number_literal) )))) * number_literal)) , (pointer_expression "*(undefined4 *)(uVar2 + 0x68)" * (cast_expression "(undefined4 *)(uVar2 + 0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x68)" ( (binary_expression "uVar2 + 0x68" identifier + number_literal) )))) , (binary_expression "uVar2 + 0x70" identifier + number_literal) , (binary_expression "uVar2 + 0x5c" identifier + number_literal) , (binary_expression "uVar2 + 0x2f4" identifier + number_literal) , identifier , identifier )))) ;) (if_statement "if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }" { (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f47;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f47" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }" if (parenthesized_expression "(param_2 != 6)" ( (binary_expression "param_2 != 6" identifier != number_literal) )) (compound_statement "{\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }" { (labeled_statement "LAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );" statement_identifier : (do_statement "do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );" do (compound_statement "{\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      }" { (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f48;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f48" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "LAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }" statement_identifier : (if_statement "if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }" if (parenthesized_expression "((5 < local_6c) && (0x101 < local_5c))" ( (binary_expression "(5 < local_6c) && (0x101 < local_5c)" (parenthesized_expression "(5 < local_6c)" ( (binary_expression "5 < local_6c" number_literal < identifier) )) && (parenthesized_expression "(0x101 < local_5c)" ( (binary_expression "0x101 < local_5c" number_literal < identifier) ))) )) (compound_statement "{\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }" { (expression_statement "param_1[3] = (int)__dest;" (assignment_expression "param_1[3] = (int)__dest" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[4] = local_5c;" (assignment_expression "param_1[4] = local_5c" (subscript_expression "param_1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[1] = local_6c;" (assignment_expression "param_1[1] = local_6c" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_1 = (int)local_60;" (assignment_expression "*param_1 = (int)local_60" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(uint *)(uVar2 + 0x40) = uVar15;" (assignment_expression "*(uint *)(uVar2 + 0x40) = uVar15" (pointer_expression "*(uint *)(uVar2 + 0x40)" * (cast_expression "(uint *)(uVar2 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x40)" ( (binary_expression "uVar2 + 0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(uVar2 + 0x3c) = local_64;" (assignment_expression "*(uint *)(uVar2 + 0x3c) = local_64" (pointer_expression "*(uint *)(uVar2 + 0x3c)" * (cast_expression "(uint *)(uVar2 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x3c)" ( (binary_expression "uVar2 + 0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_00016d10(param_1,local_50);" (call_expression "FUN_00016d10(param_1,local_50)" identifier (argument_list "(param_1,local_50)" ( identifier , identifier ))) ;) (expression_statement "__dest = (undefined1 *)param_1[3];" (assignment_expression "__dest = (undefined1 *)param_1[3]" identifier = (cast_expression "(undefined1 *)param_1[3]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ]))) ;) (expression_statement "local_5c = param_1[4];" (assignment_expression "local_5c = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "uVar15 = *(uint *)(uVar2 + 0x40);" (assignment_expression "uVar15 = *(uint *)(uVar2 + 0x40)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x40)" * (cast_expression "(uint *)(uVar2 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x40)" ( (binary_expression "uVar2 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "local_60 = (byte *)*param_1;" (assignment_expression "local_60 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "local_6c = param_1[1];" (assignment_expression "local_6c = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "local_64 = *(uint *)(uVar2 + 0x3c);" (assignment_expression "local_64 = *(uint *)(uVar2 + 0x3c)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x3c)" * (cast_expression "(uint *)(uVar2 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x3c)" ( (binary_expression "uVar2 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(uVar2 + 4);" (assignment_expression "iVar5 = *(int *)(uVar2 + 4)" identifier = (pointer_expression "*(int *)(uVar2 + 4)" * (cast_expression "(int *)(uVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar21 = extraout_ECX;" (assignment_expression "uVar21 = extraout_ECX" identifier = identifier) ;) (if_statement "if (iVar5 != 0x3f3f) goto LAB_000178c9;" if (parenthesized_expression "(iVar5 != 0x3f3f)" ( (binary_expression "iVar5 != 0x3f3f" identifier != number_literal) )) (goto_statement "goto LAB_000178c9;" goto statement_identifier ;)) (expression_statement "*(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff" (pointer_expression "*(undefined4 *)(uVar2 + 0x1bc8)" * (cast_expression "(undefined4 *)(uVar2 + 0x1bc8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00017f13;" goto statement_identifier ;) }))) (expression_statement "iVar5 = *(int *)(uVar2 + 0x50);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x50)" identifier = (pointer_expression "*(int *)(uVar2 + 0x50)" * (cast_expression "(int *)(uVar2 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x50)" ( (binary_expression "uVar2 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x1bc8) = 0;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1bc8) = 0" (pointer_expression "*(undefined4 *)(uVar2 + 0x1bc8)" * (cast_expression "(undefined4 *)(uVar2 + 0x1bc8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));" (assignment_expression "uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f))" identifier = (unary_expression "~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f))" ( (binary_expression "-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f)" number_literal << (parenthesized_expression "((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f)" ( (binary_expression "(byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f" (binary_expression "(byte)*(undefined4 *)(uVar2 + 0x58)" (parenthesized_expression "(byte)" ( identifier )) * (cast_expression "(undefined4 *)(uVar2 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x58)" ( (binary_expression "uVar2 + 0x58" identifier + number_literal) )))) & number_literal) ))) )))) ;) (expression_statement "pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);" (assignment_expression "pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4)" identifier = (cast_expression "(byte *)(iVar5 + (uVar17 & local_64) * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uVar17 & local_64) * 4)" ( (binary_expression "iVar5 + (uVar17 & local_64) * 4" identifier + (binary_expression "(uVar17 & local_64) * 4" (parenthesized_expression "(uVar17 & local_64)" ( (binary_expression "uVar17 & local_64" identifier & identifier) )) * number_literal)) )))) ;) (expression_statement "bVar12 = pbVar20[1];" (assignment_expression "bVar12 = pbVar20[1]" identifier = (subscript_expression "pbVar20[1]" identifier [ number_literal ])) ;) (expression_statement "uVar14 = (uint)bVar12;" (assignment_expression "uVar14 = (uint)bVar12" identifier = (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar13 = *pbVar20;" (assignment_expression "bVar13 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) (expression_statement "uVar19 = *(ushort *)(pbVar20 + 2);" (assignment_expression "uVar19 = *(ushort *)(pbVar20 + 2)" identifier = (pointer_expression "*(ushort *)(pbVar20 + 2)" * (cast_expression "(ushort *)(pbVar20 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar20 + 2)" ( (binary_expression "pbVar20 + 2" identifier + number_literal) ))))) ;) (expression_statement "uVar21 = uVar15;" (assignment_expression "uVar21 = uVar15" identifier = identifier) ;) (if_statement "if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }" if (parenthesized_expression "(uVar15 < uVar14)" ( (binary_expression "uVar15 < uVar14" identifier < identifier) )) (compound_statement "{\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }" { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (while_statement "while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }" { (expression_statement "pbVar24 = local_60 + 1;" (assignment_expression "pbVar24 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);" (assignment_expression "pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4)" identifier = (cast_expression "(byte *)(iVar5 + (uVar17 & local_64) * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uVar17 & local_64) * 4)" ( (binary_expression "iVar5 + (uVar17 & local_64) * 4" identifier + (binary_expression "(uVar17 & local_64) * 4" (parenthesized_expression "(uVar17 & local_64)" ( (binary_expression "uVar17 & local_64" identifier & identifier) )) * number_literal)) )))) ;) (expression_statement "bVar12 = pbVar20[1];" (assignment_expression "bVar12 = pbVar20[1]" identifier = (subscript_expression "pbVar20[1]" identifier [ number_literal ])) ;) (expression_statement "uVar14 = (uint)bVar12;" (assignment_expression "uVar14 = (uint)bVar12" identifier = (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar13 = *pbVar20;" (assignment_expression "bVar13 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) (expression_statement "uVar19 = *(ushort *)(pbVar20 + 2);" (assignment_expression "uVar19 = *(ushort *)(pbVar20 + 2)" identifier = (pointer_expression "*(ushort *)(pbVar20 + 2)" * (cast_expression "(ushort *)(pbVar20 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar20 + 2)" ( (binary_expression "pbVar20 + 2" identifier + number_literal) ))))) ;) (expression_statement "uVar21 = uVar15;" (assignment_expression "uVar21 = uVar15" identifier = identifier) ;) (expression_statement "local_60 = pbVar24;" (assignment_expression "local_60 = pbVar24" identifier = identifier) ;) (if_statement "if (uVar14 <= uVar15) break;" if (parenthesized_expression "(uVar14 <= uVar15)" ( (binary_expression "uVar14 <= uVar15" identifier <= identifier) )) (break_statement "break;" break ;)) (if_statement "if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (compound_statement "{\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }" { (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) })) })) (expression_statement "uVar17 = (uint)uVar19;" (assignment_expression "uVar17 = (uint)uVar19" identifier = (cast_expression "(uint)uVar19" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }" if (parenthesized_expression "(bVar13 == 0)" ( (binary_expression "bVar13 == 0" identifier == number_literal) )) (compound_statement "{\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }" { (expression_statement "local_64 = local_64 >> (bVar12 & 0x1f);" (assignment_expression "local_64 = local_64 >> (bVar12 & 0x1f)" identifier = (binary_expression "local_64 >> (bVar12 & 0x1f)" identifier >> (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar15 = uVar21 - uVar14;" (assignment_expression "uVar15 = uVar21 - uVar14" identifier = (binary_expression "uVar21 - uVar14" identifier - identifier)) ;) (expression_statement "*(uint *)(uVar2 + 0x1bc8) = uVar14;" (assignment_expression "*(uint *)(uVar2 + 0x1bc8) = uVar14" (pointer_expression "*(uint *)(uVar2 + 0x1bc8)" * (cast_expression "(uint *)(uVar2 + 0x1bc8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(uVar2 + 0x44) = uVar17;" (assignment_expression "*(uint *)(uVar2 + 0x44) = uVar17" (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;" statement_identifier : (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f4d;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f4d" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;)) (labeled_statement "LAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;" statement_identifier : (if_statement "if (local_5c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_5c == 0)" ( (binary_expression "local_5c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;))) (expression_statement "local_5c = local_5c - 1;" (assignment_expression "local_5c = local_5c - 1" identifier = (binary_expression "local_5c - 1" identifier - number_literal)) ;) (expression_statement "*__dest = (char)*(undefined4 *)(uVar2 + 0x44);" (assignment_expression "*__dest = (char)*(undefined4 *)(uVar2 + 0x44)" (pointer_expression "*__dest" * identifier) = (cast_expression "(char)*(undefined4 *)(uVar2 + 0x44)" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(undefined4 *)(uVar2 + 0x44)" * (cast_expression "(undefined4 *)(uVar2 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f48;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f48" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__dest = __dest + 1;" (assignment_expression "__dest = __dest + 1" identifier = (binary_expression "__dest + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00017b90;" goto statement_identifier ;) })) (expression_statement "bVar12 = (byte)uVar14;" (assignment_expression "bVar12 = (byte)uVar14" identifier = (cast_expression "(byte)uVar14" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }" if (parenthesized_expression "((bVar13 & 0xf0) == 0)" ( (binary_expression "(bVar13 & 0xf0) == 0" (parenthesized_expression "(bVar13 & 0xf0)" ( (binary_expression "bVar13 & 0xf0" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }" { (expression_statement "uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));" (assignment_expression "uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f))" identifier = (unary_expression "~(-1 << (bVar13 + bVar12 & 0x1f))" ~ (parenthesized_expression "(-1 << (bVar13 + bVar12 & 0x1f))" ( (binary_expression "-1 << (bVar13 + bVar12 & 0x1f)" number_literal << (parenthesized_expression "(bVar13 + bVar12 & 0x1f)" ( (binary_expression "bVar13 + bVar12 & 0x1f" (binary_expression "bVar13 + bVar12" identifier + identifier) & number_literal) ))) )))) ;) (expression_statement "pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);" (assignment_expression "pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4)" identifier = (cast_expression "(byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4)" ( (binary_expression "iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4" identifier + (binary_expression "(((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4" (parenthesized_expression "(((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17)" ( (binary_expression "((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17" (parenthesized_expression "((uVar18 & local_64) >> (bVar12 & 0x1f))" ( (binary_expression "(uVar18 & local_64) >> (bVar12 & 0x1f)" (parenthesized_expression "(uVar18 & local_64)" ( (binary_expression "uVar18 & local_64" identifier & identifier) )) >> (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )) + identifier) )) * number_literal)) )))) ;) (expression_statement "uVar19 = *(ushort *)(pbVar20 + 2);" (assignment_expression "uVar19 = *(ushort *)(pbVar20 + 2)" identifier = (pointer_expression "*(ushort *)(pbVar20 + 2)" * (cast_expression "(ushort *)(pbVar20 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar20 + 2)" ( (binary_expression "pbVar20 + 2" identifier + number_literal) ))))) ;) (expression_statement "bVar13 = *pbVar20;" (assignment_expression "bVar13 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) (expression_statement "uVar10 = (uint)pbVar20[1];" (assignment_expression "uVar10 = (uint)pbVar20[1]" identifier = (cast_expression "(uint)pbVar20[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar20[1]" identifier [ number_literal ]))) ;) (expression_statement "uStack_38 = uVar10 + uVar14;" (assignment_expression "uStack_38 = uVar10 + uVar14" identifier = (binary_expression "uVar10 + uVar14" identifier + identifier)) ;) (expression_statement "uVar15 = uVar21;" (assignment_expression "uVar15 = uVar21" identifier = identifier) ;) (if_statement "if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }" if (parenthesized_expression "(uVar21 < uStack_38)" ( (binary_expression "uVar21 < uStack_38" identifier < identifier) )) (compound_statement "{\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }" { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (while_statement "while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }" { (expression_statement "pbVar24 = local_60 + 1;" (assignment_expression "pbVar24 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "uVar15 = uVar21 + 8;" (assignment_expression "uVar15 = uVar21 + 8" identifier = (binary_expression "uVar21 + 8" identifier + number_literal)) ;) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << ((byte)uVar21 & 0x1f))" ( (binary_expression "(uint)*local_60 << ((byte)uVar21 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "((byte)uVar21 & 0x1f)" ( (binary_expression "(byte)uVar21 & 0x1f" (cast_expression "(byte)uVar21" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (expression_statement "pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);" (assignment_expression "pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4)" identifier = (cast_expression "(byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4)" ( (binary_expression "iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4" identifier + (binary_expression "(((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4" (parenthesized_expression "(((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17)" ( (binary_expression "((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17" (parenthesized_expression "((uVar18 & local_64) >> (bVar12 & 0x1f))" ( (binary_expression "(uVar18 & local_64) >> (bVar12 & 0x1f)" (parenthesized_expression "(uVar18 & local_64)" ( (binary_expression "uVar18 & local_64" identifier & identifier) )) >> (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )) + identifier) )) * number_literal)) )))) ;) (expression_statement "uVar19 = *(ushort *)(pbVar20 + 2);" (assignment_expression "uVar19 = *(ushort *)(pbVar20 + 2)" identifier = (pointer_expression "*(ushort *)(pbVar20 + 2)" * (cast_expression "(ushort *)(pbVar20 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar20 + 2)" ( (binary_expression "pbVar20 + 2" identifier + number_literal) ))))) ;) (expression_statement "bVar13 = *pbVar20;" (assignment_expression "bVar13 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) (expression_statement "uVar10 = (uint)pbVar20[1];" (assignment_expression "uVar10 = (uint)pbVar20[1]" identifier = (cast_expression "(uint)pbVar20[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar20[1]" identifier [ number_literal ]))) ;) (expression_statement "uStack_38 = uVar14 + uVar10;" (assignment_expression "uStack_38 = uVar14 + uVar10" identifier = (binary_expression "uVar14 + uVar10" identifier + identifier)) ;) (expression_statement "local_60 = pbVar24;" (assignment_expression "local_60 = pbVar24" identifier = identifier) ;) (if_statement "if (uStack_38 <= uVar15) break;" if (parenthesized_expression "(uStack_38 <= uVar15)" ( (binary_expression "uStack_38 <= uVar15" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar21 = uVar15;" (assignment_expression "uVar21 = uVar15" identifier = identifier) ;) (if_statement "if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (compound_statement "{\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }" { (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) })) })) (expression_statement "uStack_40 = (uint)uVar19;" (assignment_expression "uStack_40 = (uint)uVar19" identifier = (cast_expression "(uint)uVar19" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = (uVar15 - uVar14) - uVar10;" (assignment_expression "uVar15 = (uVar15 - uVar14) - uVar10" identifier = (binary_expression "(uVar15 - uVar14) - uVar10" (parenthesized_expression "(uVar15 - uVar14)" ( (binary_expression "uVar15 - uVar14" identifier - identifier) )) - identifier)) ;) (expression_statement "local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);" (assignment_expression "local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f)" identifier = (binary_expression "(local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f)" (parenthesized_expression "(local_64 >> (bVar12 & 0x1f))" ( (binary_expression "local_64 >> (bVar12 & 0x1f)" identifier >> (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )) >> (parenthesized_expression "((byte)uVar10 & 0x1f)" ( (binary_expression "(byte)uVar10 & 0x1f" (cast_expression "(byte)uVar10" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "*(uint *)(uVar2 + 0x1bc8) = uStack_38;" (assignment_expression "*(uint *)(uVar2 + 0x1bc8) = uStack_38" (pointer_expression "*(uint *)(uVar2 + 0x1bc8)" * (cast_expression "(uint *)(uVar2 + 0x1bc8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(uVar2 + 0x44) = uStack_40;" (assignment_expression "*(uint *)(uVar2 + 0x44) = uStack_40" (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = identifier) ;) (if_statement "if (bVar13 != 0) goto LAB_00018d16;" if (parenthesized_expression "(bVar13 != 0)" ( (binary_expression "bVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00018d16;" goto statement_identifier ;)) (goto_statement "goto LAB_000191a7;" goto statement_identifier ;) })) (expression_statement "local_64 = local_64 >> (bVar12 & 0x1f);" (assignment_expression "local_64 = local_64 >> (bVar12 & 0x1f)" identifier = (binary_expression "local_64 >> (bVar12 & 0x1f)" identifier >> (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar15 = uVar21 - uVar14;" (assignment_expression "uVar15 = uVar21 - uVar14" identifier = (binary_expression "uVar21 - uVar14" identifier - identifier)) ;) (expression_statement "*(uint *)(uVar2 + 0x1bc8) = uVar14;" (assignment_expression "*(uint *)(uVar2 + 0x1bc8) = uVar14" (pointer_expression "*(uint *)(uVar2 + 0x1bc8)" * (cast_expression "(uint *)(uVar2 + 0x1bc8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(uVar2 + 0x44) = uVar17;" (assignment_expression "*(uint *)(uVar2 + 0x44) = uVar17" (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;" statement_identifier : (if_statement "if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;" if (parenthesized_expression "((bVar13 & 0x20) != 0)" ( (binary_expression "(bVar13 & 0x20) != 0" (parenthesized_expression "(bVar13 & 0x20)" ( (binary_expression "bVar13 & 0x20" identifier & number_literal) )) != number_literal) )) (goto_statement "goto code_r0x00018d1f;" goto statement_identifier ;))) (if_statement "if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }" if (parenthesized_expression "((bVar13 & 0x40) != 0)" ( (binary_expression "(bVar13 & 0x40) != 0" (parenthesized_expression "(bVar13 & 0x40)" ( (binary_expression "bVar13 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }" { (expression_statement "pcVar6 = "invalid literal/length code";" (assignment_expression "pcVar6 = "invalid literal/length code"" identifier = (string_literal ""invalid literal/length code"" " string_content ")) ;) (goto_statement "goto LAB_000188eb;" goto statement_identifier ;) })) (expression_statement "uVar21 = bVar13 & 0xf;" (assignment_expression "uVar21 = bVar13 & 0xf" identifier = (binary_expression "bVar13 & 0xf" identifier & number_literal)) ;) (expression_statement "*(uint *)(uVar2 + 0x4c) = uVar21;" (assignment_expression "*(uint *)(uVar2 + 0x4c) = uVar21" (pointer_expression "*(uint *)(uVar2 + 0x4c)" * (cast_expression "(uint *)(uVar2 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x4c)" ( (binary_expression "uVar2 + 0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f49;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f49" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "LAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }" statement_identifier : (if_statement "if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }" if (parenthesized_expression "(uVar21 == 0)" ( (binary_expression "uVar21 == 0" identifier == number_literal) )) (compound_statement "{\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }" { (expression_statement "iVar5 = *(int *)(uVar2 + 0x44);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x44)" identifier = (pointer_expression "*(int *)(uVar2 + 0x44)" * (cast_expression "(int *)(uVar2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) ))))) ;) }) (else_clause "else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }" else (compound_statement "{\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }" { (if_statement "if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }" if (parenthesized_expression "(uVar15 < uVar21)" ( (binary_expression "uVar15 < uVar21" identifier < identifier) )) (compound_statement "{\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }" { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (while_statement "while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }" { (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" identifier = identifier) ;) (if_statement "if (uVar21 <= uVar15) break;" if (parenthesized_expression "(uVar21 <= uVar15)" ( (binary_expression "uVar21 <= uVar15" identifier <= identifier) )) (break_statement "break;" break ;)) (if_statement "if (local_6c == 0) goto LAB_000190a2;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_000190a2;" goto statement_identifier ;)) })) })) (expression_statement "uVar15 = uVar15 - uVar21;" (assignment_expression "uVar15 = uVar15 - uVar21" identifier = (binary_expression "uVar15 - uVar21" identifier - identifier)) ;) (expression_statement "*(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;" (assignment_expression "*(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21" (pointer_expression "*(int *)(uVar2 + 0x1bc8)" * (cast_expression "(int *)(uVar2 + 0x1bc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) )))) = (binary_expression "*(int *)(uVar2 + 0x1bc8) + uVar21" (pointer_expression "*(int *)(uVar2 + 0x1bc8)" * (cast_expression "(int *)(uVar2 + 0x1bc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) )))) + identifier)) ;) (expression_statement "iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);" (assignment_expression "iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44)" identifier = (binary_expression "(~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44)" (parenthesized_expression "(~(-1 << ((byte)uVar21 & 0x1f)) & local_64)" ( (binary_expression "~(-1 << ((byte)uVar21 & 0x1f)) & local_64" (unary_expression "~(-1 << ((byte)uVar21 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar21 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar21 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar21 & 0x1f)" ( (binary_expression "(byte)uVar21 & 0x1f" (cast_expression "(byte)uVar21" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) + (pointer_expression "*(int *)(uVar2 + 0x44)" * (cast_expression "(int *)(uVar2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))))) ;) (expression_statement "local_64 = local_64 >> ((byte)uVar21 & 0x1f);" (assignment_expression "local_64 = local_64 >> ((byte)uVar21 & 0x1f)" identifier = (binary_expression "local_64 >> ((byte)uVar21 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar21 & 0x1f)" ( (binary_expression "(byte)uVar21 & 0x1f" (cast_expression "(byte)uVar21" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "*(int *)(uVar2 + 0x44) = iVar5;" (assignment_expression "*(int *)(uVar2 + 0x44) = iVar5" (pointer_expression "*(int *)(uVar2 + 0x44)" * (cast_expression "(int *)(uVar2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = identifier) ;) })))) (expression_statement "*(int *)(uVar2 + 0x1bcc) = iVar5;" (assignment_expression "*(int *)(uVar2 + 0x1bcc) = iVar5" (pointer_expression "*(int *)(uVar2 + 0x1bcc)" * (cast_expression "(int *)(uVar2 + 0x1bcc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bcc)" ( (binary_expression "uVar2 + 0x1bcc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f4a;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f4a" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "code_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);" statement_identifier : (expression_statement "iVar5 = *(int *)(uVar2 + 0x54);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x54)" identifier = (pointer_expression "*(int *)(uVar2 + 0x54)" * (cast_expression "(int *)(uVar2 + 0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x54)" ( (binary_expression "uVar2 + 0x54" identifier + number_literal) ))))) ;)) (expression_statement "uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));" (assignment_expression "uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f))" identifier = (unary_expression "~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f))" ( (binary_expression "-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f)" number_literal << (parenthesized_expression "((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f)" ( (binary_expression "(byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f" (binary_expression "(byte)*(undefined4 *)(uVar2 + 0x5c)" (parenthesized_expression "(byte)" ( identifier )) * (cast_expression "(undefined4 *)(uVar2 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x5c)" ( (binary_expression "uVar2 + 0x5c" identifier + number_literal) )))) & number_literal) ))) )))) ;) (expression_statement "pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);" (assignment_expression "pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4)" identifier = (cast_expression "(byte *)(iVar5 + (local_64 & uVar17) * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (local_64 & uVar17) * 4)" ( (binary_expression "iVar5 + (local_64 & uVar17) * 4" identifier + (binary_expression "(local_64 & uVar17) * 4" (parenthesized_expression "(local_64 & uVar17)" ( (binary_expression "local_64 & uVar17" identifier & identifier) )) * number_literal)) )))) ;) (expression_statement "bVar12 = pbVar20[1];" (assignment_expression "bVar12 = pbVar20[1]" identifier = (subscript_expression "pbVar20[1]" identifier [ number_literal ])) ;) (expression_statement "bVar13 = *pbVar20;" (assignment_expression "bVar13 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) (expression_statement "uVar19 = *(ushort *)(pbVar20 + 2);" (assignment_expression "uVar19 = *(ushort *)(pbVar20 + 2)" identifier = (pointer_expression "*(ushort *)(pbVar20 + 2)" * (cast_expression "(ushort *)(pbVar20 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar20 + 2)" ( (binary_expression "pbVar20 + 2" identifier + number_literal) ))))) ;) (expression_statement "uVar14 = (uint)bVar12;" (assignment_expression "uVar14 = (uint)bVar12" identifier = (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar21 = uVar15;" (assignment_expression "uVar21 = uVar15" identifier = identifier) ;) (if_statement "if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }" if (parenthesized_expression "(uVar15 < uVar14)" ( (binary_expression "uVar15 < uVar14" identifier < identifier) )) (compound_statement "{\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }" { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (while_statement "while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }" { (expression_statement "pbVar24 = local_60 + 1;" (assignment_expression "pbVar24 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);" (assignment_expression "pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4)" identifier = (cast_expression "(byte *)(iVar5 + (uVar17 & local_64) * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uVar17 & local_64) * 4)" ( (binary_expression "iVar5 + (uVar17 & local_64) * 4" identifier + (binary_expression "(uVar17 & local_64) * 4" (parenthesized_expression "(uVar17 & local_64)" ( (binary_expression "uVar17 & local_64" identifier & identifier) )) * number_literal)) )))) ;) (expression_statement "bVar12 = pbVar20[1];" (assignment_expression "bVar12 = pbVar20[1]" identifier = (subscript_expression "pbVar20[1]" identifier [ number_literal ])) ;) (expression_statement "bVar13 = *pbVar20;" (assignment_expression "bVar13 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) (expression_statement "uVar19 = *(ushort *)(pbVar20 + 2);" (assignment_expression "uVar19 = *(ushort *)(pbVar20 + 2)" identifier = (pointer_expression "*(ushort *)(pbVar20 + 2)" * (cast_expression "(ushort *)(pbVar20 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar20 + 2)" ( (binary_expression "pbVar20 + 2" identifier + number_literal) ))))) ;) (expression_statement "uVar14 = (uint)bVar12;" (assignment_expression "uVar14 = (uint)bVar12" identifier = (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar21 = uVar15;" (assignment_expression "uVar21 = uVar15" identifier = identifier) ;) (expression_statement "local_60 = pbVar24;" (assignment_expression "local_60 = pbVar24" identifier = identifier) ;) (if_statement "if (uVar14 <= uVar15) break;" if (parenthesized_expression "(uVar14 <= uVar15)" ( (binary_expression "uVar14 <= uVar15" identifier <= identifier) )) (break_statement "break;" break ;)) (if_statement "if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (compound_statement "{\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }" { (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) })) })) (expression_statement "uStack_48 = (uint)uVar19;" (assignment_expression "uStack_48 = (uint)uVar19" identifier = (cast_expression "(uint)uVar19" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }" if (parenthesized_expression "((bVar13 & 0xf0) == 0)" ( (binary_expression "(bVar13 & 0xf0) == 0" (parenthesized_expression "(bVar13 & 0xf0)" ( (binary_expression "bVar13 & 0xf0" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }" { (expression_statement "bVar4 = (byte)uVar14;" (assignment_expression "bVar4 = (byte)uVar14" identifier = (cast_expression "(byte)uVar14" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));" (assignment_expression "uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f))" identifier = (unary_expression "~(-1 << (bVar13 + bVar4 & 0x1f))" ~ (parenthesized_expression "(-1 << (bVar13 + bVar4 & 0x1f))" ( (binary_expression "-1 << (bVar13 + bVar4 & 0x1f)" number_literal << (parenthesized_expression "(bVar13 + bVar4 & 0x1f)" ( (binary_expression "bVar13 + bVar4 & 0x1f" (binary_expression "bVar13 + bVar4" identifier + identifier) & number_literal) ))) )))) ;) (expression_statement "pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);" (assignment_expression "pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4)" identifier = (cast_expression "(byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4)" ( (binary_expression "iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4" identifier + (binary_expression "(((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4" (parenthesized_expression "(((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48)" ( (binary_expression "((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48" (parenthesized_expression "((uVar10 & local_64) >> (bVar12 & 0x1f))" ( (binary_expression "(uVar10 & local_64) >> (bVar12 & 0x1f)" (parenthesized_expression "(uVar10 & local_64)" ( (binary_expression "uVar10 & local_64" identifier & identifier) )) >> (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )) + identifier) )) * number_literal)) )))) ;) (expression_statement "uVar19 = *(ushort *)(pbVar20 + 2);" (assignment_expression "uVar19 = *(ushort *)(pbVar20 + 2)" identifier = (pointer_expression "*(ushort *)(pbVar20 + 2)" * (cast_expression "(ushort *)(pbVar20 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar20 + 2)" ( (binary_expression "pbVar20 + 2" identifier + number_literal) ))))) ;) (expression_statement "bVar13 = *pbVar20;" (assignment_expression "bVar13 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) (expression_statement "uVar17 = (uint)pbVar20[1];" (assignment_expression "uVar17 = (uint)pbVar20[1]" identifier = (cast_expression "(uint)pbVar20[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar20[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar15 = uVar21;" (assignment_expression "uVar15 = uVar21" identifier = identifier) ;) (if_statement "if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }" if (parenthesized_expression "(uVar21 < uVar17 + uVar14)" ( (binary_expression "uVar21 < uVar17 + uVar14" identifier < (binary_expression "uVar17 + uVar14" identifier + identifier)) )) (compound_statement "{\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }" { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (while_statement "while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }" { (expression_statement "pbVar24 = local_60 + 1;" (assignment_expression "pbVar24 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "uVar15 = uVar21 + 8;" (assignment_expression "uVar15 = uVar21 + 8" identifier = (binary_expression "uVar21 + 8" identifier + number_literal)) ;) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << ((byte)uVar21 & 0x1f))" ( (binary_expression "(uint)*local_60 << ((byte)uVar21 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "((byte)uVar21 & 0x1f)" ( (binary_expression "(byte)uVar21 & 0x1f" (cast_expression "(byte)uVar21" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (expression_statement "pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);" (assignment_expression "pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4)" identifier = (cast_expression "(byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4)" ( (binary_expression "iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4" identifier + (binary_expression "(((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4" (parenthesized_expression "(((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48)" ( (binary_expression "((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48" (parenthesized_expression "((uVar10 & local_64) >> (bVar4 & 0x1f))" ( (binary_expression "(uVar10 & local_64) >> (bVar4 & 0x1f)" (parenthesized_expression "(uVar10 & local_64)" ( (binary_expression "uVar10 & local_64" identifier & identifier) )) >> (parenthesized_expression "(bVar4 & 0x1f)" ( (binary_expression "bVar4 & 0x1f" identifier & number_literal) ))) )) + identifier) )) * number_literal)) )))) ;) (expression_statement "bVar13 = *pbVar20;" (assignment_expression "bVar13 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) (expression_statement "uVar19 = *(ushort *)(pbVar20 + 2);" (assignment_expression "uVar19 = *(ushort *)(pbVar20 + 2)" identifier = (pointer_expression "*(ushort *)(pbVar20 + 2)" * (cast_expression "(ushort *)(pbVar20 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar20 + 2)" ( (binary_expression "pbVar20 + 2" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = (uint)pbVar20[1];" (assignment_expression "uVar17 = (uint)pbVar20[1]" identifier = (cast_expression "(uint)pbVar20[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar20[1]" identifier [ number_literal ]))) ;) (expression_statement "local_60 = pbVar24;" (assignment_expression "local_60 = pbVar24" identifier = identifier) ;) (if_statement "if (uVar17 + uVar14 <= uVar15) break;" if (parenthesized_expression "(uVar17 + uVar14 <= uVar15)" ( (binary_expression "uVar17 + uVar14 <= uVar15" (binary_expression "uVar17 + uVar14" identifier + identifier) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar21 = uVar15;" (assignment_expression "uVar21 = uVar15" identifier = identifier) ;) (if_statement "if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (compound_statement "{\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }" { (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) })) })) (expression_statement "uStack_48 = (uint)uVar19;" (assignment_expression "uStack_48 = (uint)uVar19" identifier = (cast_expression "(uint)uVar19" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar21 = uVar15 - uVar14;" (assignment_expression "uVar21 = uVar15 - uVar14" identifier = (binary_expression "uVar15 - uVar14" identifier - identifier)) ;) (expression_statement "local_64 = local_64 >> (bVar4 & 0x1f);" (assignment_expression "local_64 = local_64 >> (bVar4 & 0x1f)" identifier = (binary_expression "local_64 >> (bVar4 & 0x1f)" identifier >> (parenthesized_expression "(bVar4 & 0x1f)" ( (binary_expression "bVar4 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);" (assignment_expression "iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8)" identifier = (binary_expression "uVar14 + *(int *)(uVar2 + 0x1bc8)" identifier + (pointer_expression "*(int *)(uVar2 + 0x1bc8)" * (cast_expression "(int *)(uVar2 + 0x1bc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) )))))) ;) }) (else_clause "else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }" else (compound_statement "{\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }" { (expression_statement "iVar5 = *(int *)(uVar2 + 0x1bc8);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x1bc8)" identifier = (pointer_expression "*(int *)(uVar2 + 0x1bc8)" * (cast_expression "(int *)(uVar2 + 0x1bc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = uVar14;" (assignment_expression "uVar17 = uVar14" identifier = identifier) ;) }))) (expression_statement "local_64 = local_64 >> ((byte)uVar17 & 0x1f);" (assignment_expression "local_64 = local_64 >> ((byte)uVar17 & 0x1f)" identifier = (binary_expression "local_64 >> ((byte)uVar17 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar17 & 0x1f)" ( (binary_expression "(byte)uVar17 & 0x1f" (cast_expression "(byte)uVar17" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar15 = uVar21 - uVar17;" (assignment_expression "uVar15 = uVar21 - uVar17" identifier = (binary_expression "uVar21 - uVar17" identifier - identifier)) ;) (expression_statement "*(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;" (assignment_expression "*(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5" (pointer_expression "*(uint *)(uVar2 + 0x1bc8)" * (cast_expression "(uint *)(uVar2 + 0x1bc8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) )))) = (binary_expression "uVar17 + iVar5" identifier + identifier)) ;) (if_statement "if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }" if (parenthesized_expression "((bVar13 & 0x40) != 0)" ( (binary_expression "(bVar13 & 0x40) != 0" (parenthesized_expression "(bVar13 & 0x40)" ( (binary_expression "bVar13 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }" { (expression_statement "param_1[6] = (int)"invalid distance code";" (assignment_expression "param_1[6] = (int)"invalid distance code"" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)"invalid distance code"" ( (type_descriptor "int" primitive_type) ) (string_literal ""invalid distance code"" " string_content "))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" identifier = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (expression_statement "uVar21 = bVar13 & 0xf;" (assignment_expression "uVar21 = bVar13 & 0xf" identifier = (binary_expression "bVar13 & 0xf" identifier & number_literal)) ;) (expression_statement "*(uint *)(uVar2 + 0x4c) = uVar21;" (assignment_expression "*(uint *)(uVar2 + 0x4c) = uVar21" (pointer_expression "*(uint *)(uVar2 + 0x4c)" * (cast_expression "(uint *)(uVar2 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x4c)" ( (binary_expression "uVar2 + 0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f4b;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f4b" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(uVar2 + 0x48) = uStack_48;" (assignment_expression "*(uint *)(uVar2 + 0x48) = uStack_48" (pointer_expression "*(uint *)(uVar2 + 0x48)" * (cast_expression "(uint *)(uVar2 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x48)" ( (binary_expression "uVar2 + 0x48" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }" statement_identifier : (if_statement "if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }" if (parenthesized_expression "(uVar21 != 0)" ( (binary_expression "uVar21 != 0" identifier != number_literal) )) (compound_statement "{\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }" { (if_statement "if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }" if (parenthesized_expression "(uVar15 < uVar21)" ( (binary_expression "uVar15 < uVar21" identifier < identifier) )) (compound_statement "{\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }" { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (while_statement "while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }" { (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" identifier = identifier) ;) (if_statement "if (uVar21 <= uVar15) break;" if (parenthesized_expression "(uVar21 <= uVar15)" ( (binary_expression "uVar21 <= uVar15" identifier <= identifier) )) (break_statement "break;" break ;)) (if_statement "if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (compound_statement "{\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }" { (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) })) })) (expression_statement "uVar15 = uVar15 - uVar21;" (assignment_expression "uVar15 = uVar15 - uVar21" identifier = (binary_expression "uVar15 - uVar21" identifier - identifier)) ;) (expression_statement "uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;" (assignment_expression "uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64" identifier = (binary_expression "~(-1 << ((byte)uVar21 & 0x1f)) & local_64" (unary_expression "~(-1 << ((byte)uVar21 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar21 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar21 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar21 & 0x1f)" ( (binary_expression "(byte)uVar21 & 0x1f" (cast_expression "(byte)uVar21" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier)) ;) (expression_statement "local_64 = local_64 >> ((byte)uVar21 & 0x1f);" (assignment_expression "local_64 = local_64 >> ((byte)uVar21 & 0x1f)" identifier = (binary_expression "local_64 >> ((byte)uVar21 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar21 & 0x1f)" ( (binary_expression "(byte)uVar21 & 0x1f" (cast_expression "(byte)uVar21" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "*(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;" (assignment_expression "*(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14" (pointer_expression "*(int *)(uVar2 + 0x48)" * (cast_expression "(int *)(uVar2 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x48)" ( (binary_expression "uVar2 + 0x48" identifier + number_literal) )))) = (binary_expression "*(int *)(uVar2 + 0x48) + uVar14" (pointer_expression "*(int *)(uVar2 + 0x48)" * (cast_expression "(int *)(uVar2 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x48)" ( (binary_expression "uVar2 + 0x48" identifier + number_literal) )))) + identifier)) ;) (expression_statement "*(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;" (assignment_expression "*(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21" (pointer_expression "*(int *)(uVar2 + 0x1bc8)" * (cast_expression "(int *)(uVar2 + 0x1bc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) )))) = (binary_expression "*(int *)(uVar2 + 0x1bc8) + uVar21" (pointer_expression "*(int *)(uVar2 + 0x1bc8)" * (cast_expression "(int *)(uVar2 + 0x1bc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) )))) + identifier)) ;) }))) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f4c;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f4c" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "code_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;" statement_identifier : (if_statement "if (local_5c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_5c == 0)" ( (binary_expression "local_5c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;))) (expression_statement "uVar21 = *(uint *)(uVar2 + 0x48);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x48)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x48)" * (cast_expression "(uint *)(uVar2 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x48)" ( (binary_expression "uVar2 + 0x48" identifier + number_literal) ))))) ;) (if_statement "if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }" if (parenthesized_expression "(local_50 - local_5c < uVar21)" ( (binary_expression "local_50 - local_5c < uVar21" (binary_expression "local_50 - local_5c" identifier - identifier) < identifier) )) (compound_statement "{\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }" { (expression_statement "uVar21 = uVar21 - (local_50 - local_5c);" (assignment_expression "uVar21 = uVar21 - (local_50 - local_5c)" identifier = (binary_expression "uVar21 - (local_50 - local_5c)" identifier - (parenthesized_expression "(local_50 - local_5c)" ( (binary_expression "local_50 - local_5c" identifier - identifier) )))) ;) (if_statement "if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }" if (parenthesized_expression "((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))" ( (binary_expression "(*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0)" (parenthesized_expression "(*(uint *)(uVar2 + 0x30) < uVar21)" ( (binary_expression "*(uint *)(uVar2 + 0x30) < uVar21" (pointer_expression "*(uint *)(uVar2 + 0x30)" * (cast_expression "(uint *)(uVar2 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x30)" ( (binary_expression "uVar2 + 0x30" identifier + number_literal) )))) < identifier) )) && (parenthesized_expression "(*(int *)(uVar2 + 0x1bc4) != 0)" ( (binary_expression "*(int *)(uVar2 + 0x1bc4) != 0" (pointer_expression "*(int *)(uVar2 + 0x1bc4)" * (cast_expression "(int *)(uVar2 + 0x1bc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc4)" ( (binary_expression "uVar2 + 0x1bc4" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }" { (expression_statement "param_1[6] = (int)"invalid distance too far back";" (assignment_expression "param_1[6] = (int)"invalid distance too far back"" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)"invalid distance too far back"" ( (type_descriptor "int" primitive_type) ) (string_literal ""invalid distance too far back"" " string_content "))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" identifier = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (expression_statement "uVar14 = *(uint *)(uVar2 + 0x34);" (assignment_expression "uVar14 = *(uint *)(uVar2 + 0x34)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x34)" * (cast_expression "(uint *)(uVar2 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x34)" ( (binary_expression "uVar2 + 0x34" identifier + number_literal) ))))) ;) (if_statement "if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }" if (parenthesized_expression "(uVar14 < uVar21)" ( (binary_expression "uVar14 < uVar21" identifier < identifier) )) (compound_statement "{\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }" { (expression_statement "uVar21 = uVar21 - uVar14;" (assignment_expression "uVar21 = uVar21 - uVar14" identifier = (binary_expression "uVar21 - uVar14" identifier - identifier)) ;) (expression_statement "puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));" (assignment_expression "puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c))" identifier = (cast_expression "(undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c))" ( (binary_expression "(*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c)" (parenthesized_expression "(*(int *)(uVar2 + 0x38) - uVar21)" ( (binary_expression "*(int *)(uVar2 + 0x38) - uVar21" (pointer_expression "*(int *)(uVar2 + 0x38)" * (cast_expression "(int *)(uVar2 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x38)" ( (binary_expression "uVar2 + 0x38" identifier + number_literal) )))) - identifier) )) + (pointer_expression "*(int *)(uVar2 + 0x2c)" * (cast_expression "(int *)(uVar2 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x2c)" ( (binary_expression "uVar2 + 0x2c" identifier + number_literal) ))))) )))) ;) }) (else_clause "else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }" else (compound_statement "{\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }" { (expression_statement "puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));" (assignment_expression "puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21))" identifier = (cast_expression "(undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21))" ( (binary_expression "*(int *)(uVar2 + 0x38) + (uVar14 - uVar21)" (pointer_expression "*(int *)(uVar2 + 0x38)" * (cast_expression "(int *)(uVar2 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x38)" ( (binary_expression "uVar2 + 0x38" identifier + number_literal) )))) + (parenthesized_expression "(uVar14 - uVar21)" ( (binary_expression "uVar14 - uVar21" identifier - identifier) ))) )))) ;) }))) (expression_statement "uVar14 = *(uint *)(uVar2 + 0x44);" (assignment_expression "uVar14 = *(uint *)(uVar2 + 0x44)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) ))))) ;) (if_statement "if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }" if (parenthesized_expression "(uVar14 <= uVar21)" ( (binary_expression "uVar14 <= uVar21" identifier <= identifier) )) (compound_statement "{\n                            uVar21 = uVar14;\n                          }" { (expression_statement "uVar21 = uVar14;" (assignment_expression "uVar21 = uVar14" identifier = identifier) ;) })) }) (else_clause "else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }" else (compound_statement "{\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }" { (expression_statement "puVar22 = __dest + -uVar21;" (assignment_expression "puVar22 = __dest + -uVar21" identifier = (binary_expression "__dest + -uVar21" identifier + (unary_expression "-uVar21" - identifier))) ;) (expression_statement "uVar21 = *(uint *)(uVar2 + 0x44);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x44)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "uVar14 = uVar21;" (assignment_expression "uVar14 = uVar21" identifier = identifier) ;) }))) (if_statement "if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }" if (parenthesized_expression "(local_5c < uVar21)" ( (binary_expression "local_5c < uVar21" identifier < identifier) )) (compound_statement "{\n                          uVar21 = local_5c;\n                        }" { (expression_statement "uVar21 = local_5c;" (assignment_expression "uVar21 = local_5c" identifier = identifier) ;) })) (expression_statement "local_5c = local_5c - uVar21;" (assignment_expression "local_5c = local_5c - uVar21" identifier = (binary_expression "local_5c - uVar21" identifier - identifier)) ;) (expression_statement "puVar8 = __dest + uVar21;" (assignment_expression "puVar8 = __dest + uVar21" identifier = (binary_expression "__dest + uVar21" identifier + identifier)) ;) (expression_statement "*(uint *)(uVar2 + 0x44) = uVar14 - uVar21;" (assignment_expression "*(uint *)(uVar2 + 0x44) = uVar14 - uVar21" (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = (binary_expression "uVar14 - uVar21" identifier - identifier)) ;) (expression_statement "puVar23 = __dest;" (assignment_expression "puVar23 = __dest" identifier = identifier) ;) (do_statement "do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);" do (compound_statement "{\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        }" { (expression_statement "__dest = puVar23 + (uint)bVar25 * -2 + 1;" (assignment_expression "__dest = puVar23 + (uint)bVar25 * -2 + 1" identifier = (binary_expression "puVar23 + (uint)bVar25 * -2 + 1" (binary_expression "puVar23 + (uint)bVar25 * -2" identifier + (binary_expression "(uint)bVar25 * -2" (cast_expression "(uint)bVar25" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "*puVar23 = *puVar22;" (assignment_expression "*puVar23 = *puVar22" (pointer_expression "*puVar23" * identifier) = (pointer_expression "*puVar22" * identifier)) ;) (expression_statement "puVar22 = puVar22 + (uint)bVar25 * -2 + 1;" (assignment_expression "puVar22 = puVar22 + (uint)bVar25 * -2 + 1" identifier = (binary_expression "puVar22 + (uint)bVar25 * -2 + 1" (binary_expression "puVar22 + (uint)bVar25 * -2" identifier + (binary_expression "(uint)bVar25 * -2" (cast_expression "(uint)bVar25" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar23 = __dest;" (assignment_expression "puVar23 = __dest" identifier = identifier) ;) }) while (parenthesized_expression "(__dest != puVar8)" ( (binary_expression "__dest != puVar8" identifier != identifier) )) ;) (if_statement "if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }" if (parenthesized_expression "(*(int *)(uVar2 + 0x44) != 0)" ( (binary_expression "*(int *)(uVar2 + 0x44) != 0" (pointer_expression "*(int *)(uVar2 + 0x44)" * (cast_expression "(int *)(uVar2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }" { (expression_statement "iVar5 = *(int *)(uVar2 + 4);" (assignment_expression "iVar5 = *(int *)(uVar2 + 4)" identifier = (pointer_expression "*(int *)(uVar2 + 4)" * (cast_expression "(int *)(uVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar21 = uVar2;" (assignment_expression "uVar21 = uVar2" identifier = identifier) ;) (goto_statement "goto LAB_000178c9;" goto statement_identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }" else (compound_statement "{\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }" { (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" identifier = number_literal) ;) (expression_statement "param_1[6] = (int)"invalid distances set";" (assignment_expression "param_1[6] = (int)"invalid distances set"" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)"invalid distances set"" ( (type_descriptor "int" primitive_type) ) (string_literal ""invalid distances set"" " string_content "))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) }))) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (expression_statement "pcVar6 = "invalid literal/lengths set";" (assignment_expression "pcVar6 = "invalid literal/lengths set"" identifier = (string_literal ""invalid literal/lengths set"" " string_content ")) ;) (goto_statement "goto LAB_00017b45;" goto statement_identifier ;) })) (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" identifier = number_literal) ;) (expression_statement "param_1[6] = (int)"invalid code -- missing end-of-block";" (assignment_expression "param_1[6] = (int)"invalid code -- missing end-of-block"" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)"invalid code -- missing end-of-block"" ( (type_descriptor "int" primitive_type) ) (string_literal ""invalid code -- missing end-of-block"" " string_content "))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }" else (compound_statement "{\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }" { (expression_statement "param_1[6] = (int)"invalid code lengths set";" (assignment_expression "param_1[6] = (int)"invalid code lengths set"" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)"invalid code lengths set"" ( (type_descriptor "int" primitive_type) ) (string_literal ""invalid code lengths set"" " string_content "))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" identifier = number_literal) ;) }))) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (expression_statement "pcVar6 = "too many length or distance symbols";" (assignment_expression "pcVar6 = "too many length or distance symbols"" identifier = (string_literal ""too many length or distance symbols"" " string_content ")) ;) (goto_statement "goto LAB_000188eb;" goto statement_identifier ;) })) (if_statement "if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }" if (parenthesized_expression "(uVar14 == 3)" ( (binary_expression "uVar14 == 3" identifier == number_literal) )) (compound_statement "{\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }" { (expression_statement "uVar15 = uVar15 - 3;" (assignment_expression "uVar15 = uVar15 - 3" identifier = (binary_expression "uVar15 - 3" identifier - number_literal)) ;) (expression_statement "local_64 = local_64 >> 3;" (assignment_expression "local_64 = local_64 >> 3" identifier = (binary_expression "local_64 >> 3" identifier >> number_literal)) ;) (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" identifier = number_literal) ;) (expression_statement "param_1[6] = (int)"invalid block type";" (assignment_expression "param_1[6] = (int)"invalid block type"" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)"invalid block type"" ( (type_descriptor "int" primitive_type) ) (string_literal ""invalid block type"" " string_content "))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (if_statement "if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }" if (parenthesized_expression "(uVar14 == 1)" ( (binary_expression "uVar14 == 1" identifier == number_literal) )) (compound_statement "{\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }" { (expression_statement "*(undefined4 *)(uVar2 + 0x58) = 9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x58) = 9" (pointer_expression "*(undefined4 *)(uVar2 + 0x58)" * (cast_expression "(undefined4 *)(uVar2 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x58)" ( (binary_expression "uVar2 + 0x58" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x5c) = 5;" (assignment_expression "*(undefined4 *)(uVar2 + 0x5c) = 5" (pointer_expression "*(undefined4 *)(uVar2 + 0x5c)" * (cast_expression "(undefined4 *)(uVar2 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x5c)" ( (binary_expression "uVar2 + 0x5c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f47;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f47" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined **)(uVar2 + 0x50) = &UNK_000219c0;" (assignment_expression "*(undefined **)(uVar2 + 0x50) = &UNK_000219c0" (pointer_expression "*(undefined **)(uVar2 + 0x50)" * (cast_expression "(undefined **)(uVar2 + 0x50)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar2 + 0x50)" ( (binary_expression "uVar2 + 0x50" identifier + number_literal) )))) = (pointer_expression "&UNK_000219c0" & identifier)) ;) (expression_statement "*(undefined **)(uVar2 + 0x54) = &UNK_00021940;" (assignment_expression "*(undefined **)(uVar2 + 0x54) = &UNK_00021940" (pointer_expression "*(undefined **)(uVar2 + 0x54)" * (cast_expression "(undefined **)(uVar2 + 0x54)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar2 + 0x54)" ( (binary_expression "uVar2 + 0x54" identifier + number_literal) )))) = (pointer_expression "&UNK_00021940" & identifier)) ;) (if_statement "if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }" if (parenthesized_expression "(param_2 != 6)" ( (binary_expression "param_2 != 6" identifier != number_literal) )) (compound_statement "{\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }" { (expression_statement "local_64 = local_64 >> 3;" (assignment_expression "local_64 = local_64 >> 3" identifier = (binary_expression "local_64 >> 3" identifier >> number_literal)) ;) (expression_statement "uVar15 = uVar15 - 3;" (assignment_expression "uVar15 = uVar15 - 3" identifier = (binary_expression "uVar15 - 3" identifier - number_literal)) ;) (goto_statement "goto LAB_00017c70;" goto statement_identifier ;) })) (expression_statement "local_64 = local_64 >> 3;" (assignment_expression "local_64 = local_64 >> 3" identifier = (binary_expression "local_64 >> 3" identifier >> number_literal)) ;) (expression_statement "uVar15 = uVar15 - 3;" (assignment_expression "uVar15 = uVar15 - 3" identifier = (binary_expression "uVar15 - 3" identifier - number_literal)) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (expression_statement "local_64 = local_64 >> 3;" (assignment_expression "local_64 = local_64 >> 3" identifier = (binary_expression "local_64 >> 3" identifier >> number_literal)) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f41;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f41" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar15 = uVar15 - 3;" (assignment_expression "uVar15 = uVar15 - 3" identifier = (binary_expression "uVar15 - 3" identifier - number_literal)) ;) (labeled_statement "code_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);" statement_identifier : (expression_statement "local_64 = local_64 >> ((byte)uVar15 & 7);" (assignment_expression "local_64 = local_64 >> ((byte)uVar15 & 7)" identifier = (binary_expression "local_64 >> ((byte)uVar15 & 7)" identifier >> (parenthesized_expression "((byte)uVar15 & 7)" ( (binary_expression "(byte)uVar15 & 7" (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;)) (for_statement "for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }" for ( (assignment_expression "uVar15 = uVar15 & 0xfffffff8" identifier = (binary_expression "uVar15 & 0xfffffff8" identifier & number_literal)) ; (binary_expression "uVar15 < 0x20" identifier < number_literal) ; (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ) (compound_statement "{\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }" { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << ((byte)uVar15 & 0x1f))" ( (binary_expression "(uint)*local_60 << ((byte)uVar15 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "((byte)uVar15 & 0x1f)" ( (binary_expression "(byte)uVar15 & 0x1f" (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar14 = local_64 & 0xffff;" (assignment_expression "uVar14 = local_64 & 0xffff" identifier = (binary_expression "local_64 & 0xffff" identifier & number_literal)) ;) (if_statement "if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }" if (parenthesized_expression "(uVar14 != (local_64 >> 0x10 ^ 0xffff))" ( (binary_expression "uVar14 != (local_64 >> 0x10 ^ 0xffff)" identifier != (parenthesized_expression "(local_64 >> 0x10 ^ 0xffff)" ( (binary_expression "local_64 >> 0x10 ^ 0xffff" (binary_expression "local_64 >> 0x10" identifier >> number_literal) ^ number_literal) ))) )) (compound_statement "{\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }" { (expression_statement "pcVar6 = "invalid stored block lengths";" (assignment_expression "pcVar6 = "invalid stored block lengths"" identifier = (string_literal ""invalid stored block lengths"" " string_content ")) ;) (goto_statement "goto LAB_00017b45;" goto statement_identifier ;) })) (expression_statement "*(uint *)(uVar2 + 0x44) = uVar14;" (assignment_expression "*(uint *)(uVar2 + 0x44) = uVar14" (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f42;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f42" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }" if (parenthesized_expression "(param_2 == 6)" ( (binary_expression "param_2 == 6" identifier == number_literal) )) (compound_statement "{\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }" { (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;" statement_identifier : (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f43;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f43" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;)) (labeled_statement "code_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }" statement_identifier : (if_statement "if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (compound_statement "{\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }" { (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3f;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3f" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00017f13;" goto statement_identifier ;) }))) (if_statement "if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }" if (parenthesized_expression "(local_6c <= uVar14)" ( (binary_expression "local_6c <= uVar14" identifier <= identifier) )) (compound_statement "{\n          uVar14 = local_6c;\n        }" { (expression_statement "uVar14 = local_6c;" (assignment_expression "uVar14 = local_6c" identifier = identifier) ;) })) (if_statement "if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }" if (parenthesized_expression "(local_5c < uVar14)" ( (binary_expression "local_5c < uVar14" identifier < identifier) )) (compound_statement "{\n          uVar14 = local_5c;\n        }" { (expression_statement "uVar14 = local_5c;" (assignment_expression "uVar14 = local_5c" identifier = identifier) ;) })) (if_statement "if (uVar14 == 0) goto LAB_00017f30;" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "memcpy(__dest,local_60,uVar14);" (call_expression "memcpy(__dest,local_60,uVar14)" identifier (argument_list "(__dest,local_60,uVar14)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_6c = local_6c - uVar14;" (assignment_expression "local_6c = local_6c - uVar14" identifier = (binary_expression "local_6c - uVar14" identifier - identifier)) ;) (expression_statement "local_60 = local_60 + uVar14;" (assignment_expression "local_60 = local_60 + uVar14" identifier = (binary_expression "local_60 + uVar14" identifier + identifier)) ;) (expression_statement "local_5c = local_5c - uVar14;" (assignment_expression "local_5c = local_5c - uVar14" identifier = (binary_expression "local_5c - uVar14" identifier - identifier)) ;) (expression_statement "*(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;" (assignment_expression "*(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14" (pointer_expression "*(int *)(uVar2 + 0x44)" * (cast_expression "(int *)(uVar2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = (binary_expression "*(int *)(uVar2 + 0x44) - uVar14" (pointer_expression "*(int *)(uVar2 + 0x44)" * (cast_expression "(int *)(uVar2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) - identifier)) ;) (expression_statement "iVar5 = *(int *)(uVar2 + 4);" (assignment_expression "iVar5 = *(int *)(uVar2 + 4)" identifier = (pointer_expression "*(int *)(uVar2 + 4)" * (cast_expression "(int *)(uVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar21 = extraout_ECX_00;" (assignment_expression "uVar21 = extraout_ECX_00" identifier = identifier) ;) (expression_statement "__dest = __dest + uVar14;" (assignment_expression "__dest = __dest + uVar14" identifier = (binary_expression "__dest + uVar14" identifier + identifier)) ;) (goto_statement "goto LAB_000178c9;" goto statement_identifier ;)) (case_statement "case 0x3f35:\n        goto joined_r0x0001879b;" case number_literal : (goto_statement "goto joined_r0x0001879b;" goto statement_identifier ;)) (case_statement "case 0x3f36:\n        goto joined_r0x00018053;" case number_literal : (goto_statement "goto joined_r0x00018053;" goto statement_identifier ;)) (case_statement "case 0x3f37:\n        goto joined_r0x000180e3;" case number_literal : (goto_statement "goto joined_r0x000180e3;" goto statement_identifier ;)) (case_statement "case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;" case number_literal : (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;" if (parenthesized_expression "((uVar21 & 0x400) == 0)" ( (binary_expression "(uVar21 & 0x400) == 0" (parenthesized_expression "(uVar21 & 0x400)" ( (binary_expression "uVar21 & 0x400" identifier & number_literal) )) == number_literal) )) (goto_statement "goto code_r0x000181ae;" goto statement_identifier ;)) (if_statement "if (uVar15 < 0x10) goto code_r0x0001829d;" if (parenthesized_expression "(uVar15 < 0x10)" ( (binary_expression "uVar15 < 0x10" identifier < number_literal) )) (goto_statement "goto code_r0x0001829d;" goto statement_identifier ;)) (goto_statement "goto code_r0x000182ea;" goto statement_identifier ;)) (case_statement "case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;" case number_literal : (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) ))))) ;) (goto_statement "goto code_r0x000181cb;" goto statement_identifier ;)) (case_statement "case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;" case number_literal : (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) ))))) ;) (goto_statement "goto code_r0x0001832f;" goto statement_identifier ;)) (case_statement "case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;" case number_literal : (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) ))))) ;) (goto_statement "goto code_r0x0001835c;" goto statement_identifier ;)) (case_statement "case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;" case number_literal : (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) ))))) ;) (goto_statement "goto code_r0x00018382;" goto statement_identifier ;)) (case_statement "case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;" case number_literal : (expression_statement "uVar21 = local_64;" (assignment_expression "uVar21 = local_64" identifier = identifier) ;) (goto_statement "goto joined_r0x00017e43;" goto statement_identifier ;)) (case_statement "case 0x3f3e:\n        goto code_r0x00017eda;" case number_literal : (goto_statement "goto code_r0x00017eda;" goto statement_identifier ;)) (case_statement "case 0x3f3f:\n        goto LAB_00017f13;" case number_literal : (goto_statement "goto LAB_00017f13;" goto statement_identifier ;)) (case_statement "case 0x3f41:\n        goto code_r0x00017ac6;" case number_literal : (goto_statement "goto code_r0x00017ac6;" goto statement_identifier ;)) (case_statement "case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;" case number_literal : (expression_statement "uVar14 = *(uint *)(uVar2 + 0x44);" (assignment_expression "uVar14 = *(uint *)(uVar2 + 0x44)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00018557;" goto statement_identifier ;)) (case_statement "case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;" case number_literal : (expression_statement "uVar14 = *(uint *)(uVar2 + 0x44);" (assignment_expression "uVar14 = *(uint *)(uVar2 + 0x44)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) ))))) ;) (goto_statement "goto code_r0x00018562;" goto statement_identifier ;)) (case_statement "case 0x3f44:\n        goto code_r0x00018840;" case number_literal : (goto_statement "goto code_r0x00018840;" goto statement_identifier ;)) (case_statement "case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;" case number_literal : (expression_statement "uVar21 = *(uint *)(uVar2 + 0x6c);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x6c)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x6c)" * (cast_expression "(uint *)(uVar2 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x6c)" ( (binary_expression "uVar2 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "uVar14 = *(uint *)(uVar2 + 0x60);" (assignment_expression "uVar14 = *(uint *)(uVar2 + 0x60)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x60)" * (cast_expression "(uint *)(uVar2 + 0x60)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x60)" ( (binary_expression "uVar2 + 0x60" identifier + number_literal) ))))) ;) (if_statement "if (uVar14 <= uVar21) goto code_r0x00019253;" if (parenthesized_expression "(uVar14 <= uVar21)" ( (binary_expression "uVar14 <= uVar21" identifier <= identifier) )) (goto_statement "goto code_r0x00019253;" goto statement_identifier ;)) (goto_statement "goto LAB_000184b2;" goto statement_identifier ;)) (case_statement "case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;" case number_literal : (expression_statement "uStack_48 = *(uint *)(uVar2 + 0x6c);" (assignment_expression "uStack_48 = *(uint *)(uVar2 + 0x6c)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x6c)" * (cast_expression "(uint *)(uVar2 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x6c)" ( (binary_expression "uVar2 + 0x6c" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_000185db;" goto statement_identifier ;)) (case_statement "case 0x3f47:\n        goto LAB_00017c70;" case number_literal : (goto_statement "goto LAB_00017c70;" goto statement_identifier ;)) (case_statement "case 0x3f48:\n        goto LAB_00017b90;" case number_literal : (goto_statement "goto LAB_00017b90;" goto statement_identifier ;)) (case_statement "case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;" case number_literal : (expression_statement "uVar21 = *(uint *)(uVar2 + 0x4c);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x4c)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x4c)" * (cast_expression "(uint *)(uVar2 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x4c)" ( (binary_expression "uVar2 + 0x4c" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00017d07;" goto statement_identifier ;)) (case_statement "case 0x3f4a:\n        goto code_r0x00017d27;" case number_literal : (goto_statement "goto code_r0x00017d27;" goto statement_identifier ;)) (case_statement "case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;" case number_literal : (expression_statement "uVar21 = *(uint *)(uVar2 + 0x4c);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x4c)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x4c)" * (cast_expression "(uint *)(uVar2 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x4c)" ( (binary_expression "uVar2 + 0x4c" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00017c87;" goto statement_identifier ;)) (case_statement "case 0x3f4c:\n        goto code_r0x00017c9a;" case number_literal : (goto_statement "goto code_r0x00017c9a;" goto statement_identifier ;)) (case_statement "case 0x3f4d:\n        goto LAB_00017b6a;" case number_literal : (goto_statement "goto LAB_00017b6a;" goto statement_identifier ;)) (case_statement "case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;" case number_literal : (labeled_statement "code_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);" statement_identifier : (expression_statement "uVar21 = *(uint *)(uVar2 + 0xc);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0xc)" identifier = (pointer_expression "*(uint *)(uVar2 + 0xc)" * (cast_expression "(uint *)(uVar2 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) ))))) ;)) (if_statement "if (uVar21 == 0) goto LAB_00018e20;" if (parenthesized_expression "(uVar21 == 0)" ( (binary_expression "uVar21 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00018e20;" goto statement_identifier ;)) (if_statement "if (0x1f < uVar15) goto LAB_00017996;" if (parenthesized_expression "(0x1f < uVar15)" ( (binary_expression "0x1f < uVar15" number_literal < identifier) )) (goto_statement "goto LAB_00017996;" goto statement_identifier ;)) (if_statement "if (local_6c != 0) goto LAB_00017970;" if (parenthesized_expression "(local_6c != 0)" ( (binary_expression "local_6c != 0" identifier != number_literal) )) (goto_statement "goto LAB_00017970;" goto statement_identifier ;)) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (case_statement "case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;" case number_literal : (expression_statement "uVar21 = *(uint *)(uVar2 + 0xc);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0xc)" identifier = (pointer_expression "*(uint *)(uVar2 + 0xc)" * (cast_expression "(uint *)(uVar2 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_000183ff;" goto statement_identifier ;)) (case_statement "case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;" case number_literal : (expression_statement "uVar21 = 1;" (assignment_expression "uVar21 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;)) (case_statement "case 0x3f51:\n        goto LAB_00018817;" case number_literal : (goto_statement "goto LAB_00018817;" goto statement_identifier ;)) (case_statement "case 0x3f52:\n        goto code_r0x00018770;" case number_literal : (goto_statement "goto code_r0x00018770;" goto statement_identifier ;)) }))) })) })) (expression_statement "uVar21 = 0xfffffffe;" (assignment_expression "uVar21 = 0xfffffffe" identifier = number_literal) ;) (goto_statement "goto LAB_00018778;" goto statement_identifier ;) (while_statement "while (local_6c != 0) {\ncode_r0x00018ea0:\n    pbVar20 = local_60 + 1;\n    local_6c = local_6c - 1;\n    bVar12 = (byte)uVar15;\n    uVar15 = uVar15 + 8;\n    local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n    local_60 = pbVar20;\n    if (0xf < uVar15) goto code_r0x00018ec6;\n  }" while (parenthesized_expression "(local_6c != 0)" ( (binary_expression "local_6c != 0" identifier != number_literal) )) (compound_statement "{\ncode_r0x00018ea0:\n    pbVar20 = local_60 + 1;\n    local_6c = local_6c - 1;\n    bVar12 = (byte)uVar15;\n    uVar15 = uVar15 + 8;\n    local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n    local_60 = pbVar20;\n    if (0xf < uVar15) goto code_r0x00018ec6;\n  }" { (labeled_statement "code_r0x00018ea0:\n    pbVar20 = local_60 + 1;" statement_identifier : (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;)) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" identifier = identifier) ;) (if_statement "if (0xf < uVar15) goto code_r0x00018ec6;" if (parenthesized_expression "(0xf < uVar15)" ( (binary_expression "0xf < uVar15" number_literal < identifier) )) (goto_statement "goto code_r0x00018ec6;" goto statement_identifier ;)) })) (goto_statement "goto LAB_000190a2;" goto statement_identifier ;) identifier : if (parenthesized_expression "(((uVar21 & 2) == 0) || (local_64 != 0x8b1f))" ( (binary_expression "((uVar21 & 2) == 0) || (local_64 != 0x8b1f)" (parenthesized_expression "((uVar21 & 2) == 0)" ( (binary_expression "(uVar21 & 2) == 0" (parenthesized_expression "(uVar21 & 2)" ( (binary_expression "uVar21 & 2" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(local_64 != 0x8b1f)" ( (binary_expression "local_64 != 0x8b1f" identifier != number_literal) ))) )) (compound_statement "{\n    *(undefined4 *)(uVar2 + 0x14) = 0;\n    if (*(int *)(uVar2 + 0x24) != 0) {\n      *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30) = 0xffffffff;\n    }\n    if (((uVar21 & 1) == 0) ||\n       (uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8), uVar21 != (uVar21 / 0x1f) * 0x1f)) {\n      pcVar6 = "incorrect header check";\nLAB_000188eb:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }\n    else {\n      if ((local_64 & 0xf) == 8) {\n        local_64 = local_64 >> 4;\n        uVar15 = uVar15 - 4;\n        uVar21 = (local_64 & 0xf) + 8;\n        if (*(uint *)(uVar2 + 0x28) == 0) {\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;\n        iVar5 = 1 << (sbyte)uVar21;\n        *(int *)(uVar2 + 0x18) = iVar5;\n        iVar5 = adler32(0,0,0,iVar5);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        if ((local_64 & 0x200) == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }\n        local_64 = 0;\n        uVar15 = 0;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3d;\n        do {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        } while (uVar15 < 0x20);\n        uVar15 = 0;\n        local_64 = 0;\n        iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3e;\ncode_r0x00017eda:\n        if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        uVar21 = 2;\n        param_1[3] = (int)__dest;\n        param_1[4] = local_5c;\n        *param_1 = (int)local_60;\n        param_1[1] = local_6c;\n        *(uint *)(uVar2 + 0x40) = uVar15;\n        *(uint *)(uVar2 + 0x3c) = local_64;\n        goto LAB_00018778;\n      }\n      pcVar6 = "unknown compression method";\nLAB_00017b45:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }\n  }" { (expression_statement "*(undefined4 *)(uVar2 + 0x14) = 0;" (assignment_expression "*(undefined4 *)(uVar2 + 0x14) = 0" (pointer_expression "*(undefined4 *)(uVar2 + 0x14)" * (cast_expression "(undefined4 *)(uVar2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (*(int *)(uVar2 + 0x24) != 0) {\n      *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30) = 0xffffffff;\n    }" if (parenthesized_expression "(*(int *)(uVar2 + 0x24) != 0)" ( (binary_expression "*(int *)(uVar2 + 0x24) != 0" (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30) = 0xffffffff;\n    }" { (expression_statement "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30) = 0xffffffff;" (assignment_expression "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30) = 0xffffffff" (pointer_expression "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30)" * (cast_expression "(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(uVar2 + 0x24) + 0x30)" ( (binary_expression "*(int *)(uVar2 + 0x24) + 0x30" (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) + number_literal) )))) = number_literal) ;) })) (if_statement "if (((uVar21 & 1) == 0) ||\n       (uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8), uVar21 != (uVar21 / 0x1f) * 0x1f)) {\n      pcVar6 = "incorrect header check";\nLAB_000188eb:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }\n    else {\n      if ((local_64 & 0xf) == 8) {\n        local_64 = local_64 >> 4;\n        uVar15 = uVar15 - 4;\n        uVar21 = (local_64 & 0xf) + 8;\n        if (*(uint *)(uVar2 + 0x28) == 0) {\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;\n        iVar5 = 1 << (sbyte)uVar21;\n        *(int *)(uVar2 + 0x18) = iVar5;\n        iVar5 = adler32(0,0,0,iVar5);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        if ((local_64 & 0x200) == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }\n        local_64 = 0;\n        uVar15 = 0;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3d;\n        do {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        } while (uVar15 < 0x20);\n        uVar15 = 0;\n        local_64 = 0;\n        iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3e;\ncode_r0x00017eda:\n        if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        uVar21 = 2;\n        param_1[3] = (int)__dest;\n        param_1[4] = local_5c;\n        *param_1 = (int)local_60;\n        param_1[1] = local_6c;\n        *(uint *)(uVar2 + 0x40) = uVar15;\n        *(uint *)(uVar2 + 0x3c) = local_64;\n        goto LAB_00018778;\n      }\n      pcVar6 = "unknown compression method";\nLAB_00017b45:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }" if (parenthesized_expression "(((uVar21 & 1) == 0) ||\n       (uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8), uVar21 != (uVar21 / 0x1f) * 0x1f))" ( (binary_expression "((uVar21 & 1) == 0) ||\n       (uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8), uVar21 != (uVar21 / 0x1f) * 0x1f)" (parenthesized_expression "((uVar21 & 1) == 0)" ( (binary_expression "(uVar21 & 1) == 0" (parenthesized_expression "(uVar21 & 1)" ( (binary_expression "uVar21 & 1" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8), uVar21 != (uVar21 / 0x1f) * 0x1f)" ( (comma_expression "uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8), uVar21 != (uVar21 / 0x1f) * 0x1f" (assignment_expression "uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8)" identifier = (binary_expression "(local_64 & 0xff) * 0x100 + (local_64 >> 8)" (binary_expression "(local_64 & 0xff) * 0x100" (parenthesized_expression "(local_64 & 0xff)" ( (binary_expression "local_64 & 0xff" identifier & number_literal) )) * number_literal) + (parenthesized_expression "(local_64 >> 8)" ( (binary_expression "local_64 >> 8" identifier >> number_literal) )))) , (binary_expression "uVar21 != (uVar21 / 0x1f) * 0x1f" identifier != (binary_expression "(uVar21 / 0x1f) * 0x1f" (parenthesized_expression "(uVar21 / 0x1f)" ( (binary_expression "uVar21 / 0x1f" identifier / number_literal) )) * number_literal))) ))) )) (compound_statement "{\n      pcVar6 = "incorrect header check";\nLAB_000188eb:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }" { (expression_statement "pcVar6 = "incorrect header check";" (assignment_expression "pcVar6 = "incorrect header check"" identifier = (string_literal ""incorrect header check"" " string_content ")) ;) (labeled_statement "LAB_000188eb:\n      uVar21 = 0xfffffffd;" statement_identifier : (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" identifier = number_literal) ;)) (expression_statement "param_1[6] = (int)pcVar6;" (assignment_expression "param_1[6] = (int)pcVar6" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n      if ((local_64 & 0xf) == 8) {\n        local_64 = local_64 >> 4;\n        uVar15 = uVar15 - 4;\n        uVar21 = (local_64 & 0xf) + 8;\n        if (*(uint *)(uVar2 + 0x28) == 0) {\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;\n        iVar5 = 1 << (sbyte)uVar21;\n        *(int *)(uVar2 + 0x18) = iVar5;\n        iVar5 = adler32(0,0,0,iVar5);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        if ((local_64 & 0x200) == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }\n        local_64 = 0;\n        uVar15 = 0;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3d;\n        do {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        } while (uVar15 < 0x20);\n        uVar15 = 0;\n        local_64 = 0;\n        iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3e;\ncode_r0x00017eda:\n        if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        uVar21 = 2;\n        param_1[3] = (int)__dest;\n        param_1[4] = local_5c;\n        *param_1 = (int)local_60;\n        param_1[1] = local_6c;\n        *(uint *)(uVar2 + 0x40) = uVar15;\n        *(uint *)(uVar2 + 0x3c) = local_64;\n        goto LAB_00018778;\n      }\n      pcVar6 = "unknown compression method";\nLAB_00017b45:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }" else (compound_statement "{\n      if ((local_64 & 0xf) == 8) {\n        local_64 = local_64 >> 4;\n        uVar15 = uVar15 - 4;\n        uVar21 = (local_64 & 0xf) + 8;\n        if (*(uint *)(uVar2 + 0x28) == 0) {\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;\n        iVar5 = 1 << (sbyte)uVar21;\n        *(int *)(uVar2 + 0x18) = iVar5;\n        iVar5 = adler32(0,0,0,iVar5);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        if ((local_64 & 0x200) == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }\n        local_64 = 0;\n        uVar15 = 0;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3d;\n        do {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        } while (uVar15 < 0x20);\n        uVar15 = 0;\n        local_64 = 0;\n        iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3e;\ncode_r0x00017eda:\n        if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        uVar21 = 2;\n        param_1[3] = (int)__dest;\n        param_1[4] = local_5c;\n        *param_1 = (int)local_60;\n        param_1[1] = local_6c;\n        *(uint *)(uVar2 + 0x40) = uVar15;\n        *(uint *)(uVar2 + 0x3c) = local_64;\n        goto LAB_00018778;\n      }\n      pcVar6 = "unknown compression method";\nLAB_00017b45:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }" { (if_statement "if ((local_64 & 0xf) == 8) {\n        local_64 = local_64 >> 4;\n        uVar15 = uVar15 - 4;\n        uVar21 = (local_64 & 0xf) + 8;\n        if (*(uint *)(uVar2 + 0x28) == 0) {\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;\n        iVar5 = 1 << (sbyte)uVar21;\n        *(int *)(uVar2 + 0x18) = iVar5;\n        iVar5 = adler32(0,0,0,iVar5);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        if ((local_64 & 0x200) == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }\n        local_64 = 0;\n        uVar15 = 0;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3d;\n        do {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        } while (uVar15 < 0x20);\n        uVar15 = 0;\n        local_64 = 0;\n        iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3e;\ncode_r0x00017eda:\n        if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        uVar21 = 2;\n        param_1[3] = (int)__dest;\n        param_1[4] = local_5c;\n        *param_1 = (int)local_60;\n        param_1[1] = local_6c;\n        *(uint *)(uVar2 + 0x40) = uVar15;\n        *(uint *)(uVar2 + 0x3c) = local_64;\n        goto LAB_00018778;\n      }" if (parenthesized_expression "((local_64 & 0xf) == 8)" ( (binary_expression "(local_64 & 0xf) == 8" (parenthesized_expression "(local_64 & 0xf)" ( (binary_expression "local_64 & 0xf" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        local_64 = local_64 >> 4;\n        uVar15 = uVar15 - 4;\n        uVar21 = (local_64 & 0xf) + 8;\n        if (*(uint *)(uVar2 + 0x28) == 0) {\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;\n        iVar5 = 1 << (sbyte)uVar21;\n        *(int *)(uVar2 + 0x18) = iVar5;\n        iVar5 = adler32(0,0,0,iVar5);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        if ((local_64 & 0x200) == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }\n        local_64 = 0;\n        uVar15 = 0;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3d;\n        do {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        } while (uVar15 < 0x20);\n        uVar15 = 0;\n        local_64 = 0;\n        iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3e;\ncode_r0x00017eda:\n        if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        uVar21 = 2;\n        param_1[3] = (int)__dest;\n        param_1[4] = local_5c;\n        *param_1 = (int)local_60;\n        param_1[1] = local_6c;\n        *(uint *)(uVar2 + 0x40) = uVar15;\n        *(uint *)(uVar2 + 0x3c) = local_64;\n        goto LAB_00018778;\n      }" { (expression_statement "local_64 = local_64 >> 4;" (assignment_expression "local_64 = local_64 >> 4" identifier = (binary_expression "local_64 >> 4" identifier >> number_literal)) ;) (expression_statement "uVar15 = uVar15 - 4;" (assignment_expression "uVar15 = uVar15 - 4" identifier = (binary_expression "uVar15 - 4" identifier - number_literal)) ;) (expression_statement "uVar21 = (local_64 & 0xf) + 8;" (assignment_expression "uVar21 = (local_64 & 0xf) + 8" identifier = (binary_expression "(local_64 & 0xf) + 8" (parenthesized_expression "(local_64 & 0xf)" ( (binary_expression "local_64 & 0xf" identifier & number_literal) )) + number_literal)) ;) (if_statement "if (*(uint *)(uVar2 + 0x28) == 0) {\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;" if (parenthesized_expression "(*(uint *)(uVar2 + 0x28) == 0)" ( (binary_expression "*(uint *)(uVar2 + 0x28) == 0" (pointer_expression "*(uint *)(uVar2 + 0x28)" * (cast_expression "(uint *)(uVar2 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x28)" ( (binary_expression "uVar2 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }" { (expression_statement "*(uint *)(uVar2 + 0x28) = uVar21;" (assignment_expression "*(uint *)(uVar2 + 0x28) = uVar21" (pointer_expression "*(uint *)(uVar2 + 0x28)" * (cast_expression "(uint *)(uVar2 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x28)" ( (binary_expression "uVar2 + 0x28" identifier + number_literal) )))) = identifier) ;) (if_statement "if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }" if (parenthesized_expression "(0xf < uVar21)" ( (binary_expression "0xf < uVar21" number_literal < identifier) )) (compound_statement "{\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }" { (labeled_statement "code_r0x00019879:\n            pcVar6 = "invalid window size";" statement_identifier : (expression_statement "pcVar6 = "invalid window size";" (assignment_expression "pcVar6 = "invalid window size"" identifier = (string_literal ""invalid window size"" " string_content ")) ;)) (goto_statement "goto LAB_00017b45;" goto statement_identifier ;) })) }) (else_clause "else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;" else (if_statement "if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;" if (parenthesized_expression "((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21))" ( (binary_expression "(0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)" (parenthesized_expression "(0xf < uVar21)" ( (binary_expression "0xf < uVar21" number_literal < identifier) )) || (parenthesized_expression "(*(uint *)(uVar2 + 0x28) < uVar21)" ( (binary_expression "*(uint *)(uVar2 + 0x28) < uVar21" (pointer_expression "*(uint *)(uVar2 + 0x28)" * (cast_expression "(uint *)(uVar2 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x28)" ( (binary_expression "uVar2 + 0x28" identifier + number_literal) )))) < identifier) ))) )) (goto_statement "goto code_r0x00019879;" goto statement_identifier ;)))) (expression_statement "iVar5 = 1 << (sbyte)uVar21;" (assignment_expression "iVar5 = 1 << (sbyte)uVar21" identifier = (binary_expression "1 << (sbyte)uVar21" number_literal << (cast_expression "(sbyte)uVar21" ( (type_descriptor "sbyte" type_identifier) ) identifier))) ;) (expression_statement "*(int *)(uVar2 + 0x18) = iVar5;" (assignment_expression "*(int *)(uVar2 + 0x18) = iVar5" (pointer_expression "*(int *)(uVar2 + 0x18)" * (cast_expression "(int *)(uVar2 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x18)" ( (binary_expression "uVar2 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar5 = adler32(0,0,0,iVar5);" (assignment_expression "iVar5 = adler32(0,0,0,iVar5)" identifier = (call_expression "adler32(0,0,0,iVar5)" identifier (argument_list "(0,0,0,iVar5)" ( number_literal , number_literal , number_literal , identifier )))) ;) (expression_statement "*(int *)(uVar2 + 0x1c) = iVar5;" (assignment_expression "*(int *)(uVar2 + 0x1c) = iVar5" (pointer_expression "*(int *)(uVar2 + 0x1c)" * (cast_expression "(int *)(uVar2 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[0xc] = iVar5;" (assignment_expression "param_1[0xc] = iVar5" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((local_64 & 0x200) == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }" if (parenthesized_expression "((local_64 & 0x200) == 0)" ( (binary_expression "(local_64 & 0x200) == 0" (parenthesized_expression "(local_64 & 0x200)" ( (binary_expression "local_64 & 0x200" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }" { (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3f;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3f" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00017f13;" goto statement_identifier ;) })) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3d;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3d" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (do_statement "do {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        } while (uVar15 < 0x20);" do (compound_statement "{\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        }" { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (labeled_statement "joined_r0x00017e43:\n          local_64 = uVar21;" statement_identifier : (expression_statement "local_64 = uVar21;" (assignment_expression "local_64 = uVar21" identifier = identifier) ;)) }) while (parenthesized_expression "(uVar15 < 0x20)" ( (binary_expression "uVar15 < 0x20" identifier < number_literal) )) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (expression_statement "iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);" (assignment_expression "iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00)" identifier = (binary_expression "(uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00)" (binary_expression "(uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18)" (binary_expression "(uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000" (binary_expression "(uVar21 & 0xff00) * 0x100" (parenthesized_expression "(uVar21 & 0xff00)" ( (binary_expression "uVar21 & 0xff00" identifier & number_literal) )) * number_literal) + (binary_expression "uVar21 * 0x1000000" identifier * number_literal)) + (parenthesized_expression "(uVar21 >> 0x18)" ( (binary_expression "uVar21 >> 0x18" identifier >> number_literal) ))) + (parenthesized_expression "(uVar21 >> 8 & 0xff00)" ( (binary_expression "uVar21 >> 8 & 0xff00" (binary_expression "uVar21 >> 8" identifier >> number_literal) & number_literal) )))) ;) (expression_statement "*(int *)(uVar2 + 0x1c) = iVar5;" (assignment_expression "*(int *)(uVar2 + 0x1c) = iVar5" (pointer_expression "*(int *)(uVar2 + 0x1c)" * (cast_expression "(int *)(uVar2 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[0xc] = iVar5;" (assignment_expression "param_1[0xc] = iVar5" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3e;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3e" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "code_r0x00017eda:\n        if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }" statement_identifier : (if_statement "if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }" if (parenthesized_expression "(*(int *)(uVar2 + 0x10) != 0)" ( (binary_expression "*(int *)(uVar2 + 0x10) != 0" (pointer_expression "*(int *)(uVar2 + 0x10)" * (cast_expression "(int *)(uVar2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x10)" ( (binary_expression "uVar2 + 0x10" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }" { (expression_statement "iVar5 = adler32(0,0,0);" (assignment_expression "iVar5 = adler32(0,0,0)" identifier = (call_expression "adler32(0,0,0)" identifier (argument_list "(0,0,0)" ( number_literal , number_literal , number_literal )))) ;) (expression_statement "*(int *)(uVar2 + 0x1c) = iVar5;" (assignment_expression "*(int *)(uVar2 + 0x1c) = iVar5" (pointer_expression "*(int *)(uVar2 + 0x1c)" * (cast_expression "(int *)(uVar2 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[0xc] = iVar5;" (assignment_expression "param_1[0xc] = iVar5" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3f;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3f" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00017f13;" goto statement_identifier ;) }))) (expression_statement "uVar21 = 2;" (assignment_expression "uVar21 = 2" identifier = number_literal) ;) (expression_statement "param_1[3] = (int)__dest;" (assignment_expression "param_1[3] = (int)__dest" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[4] = local_5c;" (assignment_expression "param_1[4] = local_5c" (subscript_expression "param_1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_1 = (int)local_60;" (assignment_expression "*param_1 = (int)local_60" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[1] = local_6c;" (assignment_expression "param_1[1] = local_6c" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(uint *)(uVar2 + 0x40) = uVar15;" (assignment_expression "*(uint *)(uVar2 + 0x40) = uVar15" (pointer_expression "*(uint *)(uVar2 + 0x40)" * (cast_expression "(uint *)(uVar2 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x40)" ( (binary_expression "uVar2 + 0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(uVar2 + 0x3c) = local_64;" (assignment_expression "*(uint *)(uVar2 + 0x3c) = local_64" (pointer_expression "*(uint *)(uVar2 + 0x3c)" * (cast_expression "(uint *)(uVar2 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x3c)" ( (binary_expression "uVar2 + 0x3c" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_00018778;" goto statement_identifier ;) })) (expression_statement "pcVar6 = "unknown compression method";" (assignment_expression "pcVar6 = "unknown compression method"" identifier = (string_literal ""unknown compression method"" " string_content ")) ;) (labeled_statement "LAB_00017b45:\n      uVar21 = 0xfffffffd;" statement_identifier : (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" identifier = number_literal) ;)) (expression_statement "param_1[6] = (int)pcVar6;" (assignment_expression "param_1[6] = (int)pcVar6" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) }))) }) else { (if_statement "if (*(int *)(uVar2 + 0x28) == 0) {\n      *(undefined4 *)(uVar2 + 0x28) = 0xf;\n    }" if (parenthesized_expression "(*(int *)(uVar2 + 0x28) == 0)" ( (binary_expression "*(int *)(uVar2 + 0x28) == 0" (pointer_expression "*(int *)(uVar2 + 0x28)" * (cast_expression "(int *)(uVar2 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x28)" ( (binary_expression "uVar2 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      *(undefined4 *)(uVar2 + 0x28) = 0xf;\n    }" { (expression_statement "*(undefined4 *)(uVar2 + 0x28) = 0xf;" (assignment_expression "*(undefined4 *)(uVar2 + 0x28) = 0xf" (pointer_expression "*(undefined4 *)(uVar2 + 0x28)" * (cast_expression "(undefined4 *)(uVar2 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x28)" ( (binary_expression "uVar2 + 0x28" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "uVar9 = crc32(0,0,0);" (assignment_expression "uVar9 = crc32(0,0,0)" identifier = (call_expression "crc32(0,0,0)" identifier (argument_list "(0,0,0)" ( number_literal , number_literal , number_literal )))) ;) (expression_statement "uStack_24 = 0x8b1f;" (assignment_expression "uStack_24 = 0x8b1f" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar9 = crc32(uVar9,&uStack_24,2);" (assignment_expression "uVar9 = crc32(uVar9,&uStack_24,2)" identifier = (call_expression "crc32(uVar9,&uStack_24,2)" identifier (argument_list "(uVar9,&uStack_24,2)" ( identifier , (pointer_expression "&uStack_24" & identifier) , number_literal )))) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f35;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f35" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) do { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (labeled_statement "joined_r0x0001879b:\n    } while (uVar15 < 0x10);" statement_identifier : (ERROR "}" }) (while_statement "while (uVar15 < 0x10);" while (parenthesized_expression "(uVar15 < 0x10)" ( (binary_expression "uVar15 < 0x10" identifier < number_literal) )) (expression_statement ";" ;))) (expression_statement "*(uint *)(uVar2 + 0x14) = local_64;" (assignment_expression "*(uint *)(uVar2 + 0x14) = local_64" (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) )))) = identifier) ;) if (parenthesized_expression "((char)local_64 == '\b')" ( (binary_expression "(char)local_64 == '\b'" (cast_expression "(char)local_64" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\b'" ' escape_sequence ')) )) { (if_statement "if ((local_64 & 0xe000) != 0) {\n        pcVar6 = "unknown header flags set";\n        goto LAB_000188eb;\n      }" if (parenthesized_expression "((local_64 & 0xe000) != 0)" ( (binary_expression "(local_64 & 0xe000) != 0" (parenthesized_expression "(local_64 & 0xe000)" ( (binary_expression "local_64 & 0xe000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        pcVar6 = "unknown header flags set";\n        goto LAB_000188eb;\n      }" { (expression_statement "pcVar6 = "unknown header flags set";" (assignment_expression "pcVar6 = "unknown header flags set"" identifier = (string_literal ""unknown header flags set"" " string_content ")) ;) (goto_statement "goto LAB_000188eb;" goto statement_identifier ;) })) (if_statement "if (*(uint **)(uVar2 + 0x24) != (uint *)0x0) {\n        **(uint **)(uVar2 + 0x24) = local_64 >> 8 & 1;\n      }" if (parenthesized_expression "(*(uint **)(uVar2 + 0x24) != (uint *)0x0)" ( (binary_expression "*(uint **)(uVar2 + 0x24) != (uint *)0x0" (pointer_expression "*(uint **)(uVar2 + 0x24)" * (cast_expression "(uint **)(uVar2 + 0x24)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        **(uint **)(uVar2 + 0x24) = local_64 >> 8 & 1;\n      }" { (expression_statement "**(uint **)(uVar2 + 0x24) = local_64 >> 8 & 1;" (assignment_expression "**(uint **)(uVar2 + 0x24) = local_64 >> 8 & 1" (pointer_expression "**(uint **)(uVar2 + 0x24)" * (pointer_expression "*(uint **)(uVar2 + 0x24)" * (cast_expression "(uint **)(uVar2 + 0x24)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) ))))) = (binary_expression "local_64 >> 8 & 1" (binary_expression "local_64 >> 8" identifier >> number_literal) & number_literal)) ;) })) (if_statement "if (((local_64 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uStack_24 = (undefined2)local_64;\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2,uVar2);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" if (parenthesized_expression "(((local_64 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0))" ( (binary_expression "((local_64 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)" (parenthesized_expression "((local_64 & 0x200) != 0)" ( (binary_expression "(local_64 & 0x200) != 0" (parenthesized_expression "(local_64 & 0x200)" ( (binary_expression "local_64 & 0x200" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) != 0)" ( (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" ( (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" * (cast_expression "(byte *)(uVar2 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        uStack_24 = (undefined2)local_64;\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2,uVar2);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" { (expression_statement "uStack_24 = (undefined2)local_64;" (assignment_expression "uStack_24 = (undefined2)local_64" identifier = (cast_expression "(undefined2)local_64" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (expression_statement "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2,uVar2);" (assignment_expression "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2,uVar2)" identifier = (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2,uVar2)" identifier (argument_list "(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2,uVar2)" ( (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) , (pointer_expression "&uStack_24" & identifier) , number_literal , identifier )))) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f36;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f36" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) do { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (labeled_statement "joined_r0x00018053:\n      } while (uVar15 < 0x20);" statement_identifier : (ERROR "}" }) (while_statement "while (uVar15 < 0x20);" while (parenthesized_expression "(uVar15 < 0x20)" ( (binary_expression "uVar15 < 0x20" identifier < number_literal) )) (expression_statement ";" ;))) (if_statement "if (*(int *)(uVar2 + 0x24) != 0) {\n        *(uint *)(*(int *)(uVar2 + 0x24) + 4) = local_64;\n      }" if (parenthesized_expression "(*(int *)(uVar2 + 0x24) != 0)" ( (binary_expression "*(int *)(uVar2 + 0x24) != 0" (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        *(uint *)(*(int *)(uVar2 + 0x24) + 4) = local_64;\n      }" { (expression_statement "*(uint *)(*(int *)(uVar2 + 0x24) + 4) = local_64;" (assignment_expression "*(uint *)(*(int *)(uVar2 + 0x24) + 4) = local_64" (pointer_expression "*(uint *)(*(int *)(uVar2 + 0x24) + 4)" * (cast_expression "(uint *)(*(int *)(uVar2 + 0x24) + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(uVar2 + 0x24) + 4)" ( (binary_expression "*(int *)(uVar2 + 0x24) + 4" (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) + number_literal) )))) = identifier) ;) })) (if_statement "if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uStack_24 = (undefined2)local_64;\n        uStack_22 = (undefined1)(local_64 >> 0x10);\n        uStack_21 = (undefined1)(local_64 >> 0x18);\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,4);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" if (parenthesized_expression "(((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0))" ( (binary_expression "((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)" (parenthesized_expression "((*(byte *)(uVar2 + 0x15) & 2) != 0)" ( (binary_expression "(*(byte *)(uVar2 + 0x15) & 2) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0x15) & 2)" ( (binary_expression "*(byte *)(uVar2 + 0x15) & 2" (pointer_expression "*(byte *)(uVar2 + 0x15)" * (cast_expression "(byte *)(uVar2 + 0x15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x15)" ( (binary_expression "uVar2 + 0x15" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) != 0)" ( (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" ( (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" * (cast_expression "(byte *)(uVar2 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        uStack_24 = (undefined2)local_64;\n        uStack_22 = (undefined1)(local_64 >> 0x10);\n        uStack_21 = (undefined1)(local_64 >> 0x18);\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,4);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" { (expression_statement "uStack_24 = (undefined2)local_64;" (assignment_expression "uStack_24 = (undefined2)local_64" identifier = (cast_expression "(undefined2)local_64" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (expression_statement "uStack_22 = (undefined1)(local_64 >> 0x10);" (assignment_expression "uStack_22 = (undefined1)(local_64 >> 0x10)" identifier = (call_expression "(undefined1)(local_64 >> 0x10)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "(local_64 >> 0x10)" ( (binary_expression "local_64 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "uStack_21 = (undefined1)(local_64 >> 0x18);" (assignment_expression "uStack_21 = (undefined1)(local_64 >> 0x18)" identifier = (call_expression "(undefined1)(local_64 >> 0x18)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "(local_64 >> 0x18)" ( (binary_expression "local_64 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,4);" (assignment_expression "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,4)" identifier = (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,4)" identifier (argument_list "(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,4)" ( (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) , (pointer_expression "&uStack_24" & identifier) , number_literal )))) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f37;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f37" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) do (ERROR "{\n        if (local_6c == 0) goto LAB_00017f30;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = local_60 + 1;\njoined_r0x000180e3:\n      } while (uVar15 < 0x10);\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(uint *)(iVar5 + 8) = local_64 & 0xff;\n        *(uint *)(iVar5 + 0xc) = local_64 >> 8;\n      }\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uStack_24 = (undefined2)local_64;\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      *(undefined4 *)(uVar2 + 4) = 0x3f38;\n      if ((uVar21 & 0x400) == 0) {\n        uVar15 = 0;\n        local_64 = 0;\ncode_r0x000181ae:\n        if (*(int *)(uVar2 + 0x24) != 0) {\n          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;\n        }\n        goto code_r0x000181c0;\n      }\n      local_64 = 0;\n      uVar15 = 0;\ncode_r0x0001829d:\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x000182ea;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }\n    else {\n      param_1[6] = (int)"unknown compression method";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\nLAB_00018817:\n      uVar21 = 0xfffffffd;\n    }\n  }\n  goto LAB_00017f32;\ncode_r0x000182ea:\n  *(uint *)(uVar2 + 0x44) = local_64;\n  if (*(int *)(uVar2 + 0x24) != 0) {\n    *(uint *)(*(int *)(uVar2 + 0x24) + 0x14) = local_64;\n  }\n  if (((uVar21 & 0x200) == 0) || ((*(byte *)(uVar2 + 0xc) & 4) == 0)) {\n    uVar15 = 0;\n    local_64 = 0;\n  }\n  else {\n    uVar15 = 0;\n    uStack_24 = (undefined2)local_64;\n    uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n    *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n    local_64 = 0;\n    uVar21 = *(uint *)(uVar2 + 0x14);\n  }\ncode_r0x000181c0:\n  *(undefined4 *)(uVar2 + 4) = 0x3f39;\ncode_r0x000181cb:\n  if ((uVar21 & 0x400) == 0) {\ncode_r0x0001826a:\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3a;\ncode_r0x0001832f:\n    if ((uVar21 & 0x800) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3b;\ncode_r0x0001835c:\n    if ((uVar21 & 0x1000) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 4) = 0x3f3c;\ncode_r0x00018382:\n    if ((uVar21 & 0x200) == 0) {\ncode_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }\n      iVar5 = crc32(0,0,0);\n      *(int *)(uVar2 + 0x1c) = iVar5;\n      param_1[0xc] = iVar5;\n      *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n      goto LAB_00017f13;\n    }\n    if (uVar15 < 0x10) {\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }\n    else {\ncode_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }\n      param_1[6] = (int)"header crc mismatch";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n    }\n  }\n  else {\n    uVar14 = *(uint *)(uVar2 + 0x44);\n    uVar17 = local_6c;\n    if (uVar14 < local_6c) {\n      uVar17 = uVar14;\n    }\n    if (uVar17 != 0) {\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_6c = local_6c - uVar17;\n      local_60 = local_60 + uVar17;\n      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;\n      *(uint *)(uVar2 + 0x44) = uVar14;\n    }\n    if (uVar14 == 0) {\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      goto code_r0x0001826a;\n    }\nLAB_00017f30:\n    uVar21 = 0;\n  }\n  goto LAB_00017f32;\nLAB_00017996:\n  iVar5 = local_50 - local_5c;\n  param_1[5] = param_1[5] + iVar5;\n  *(int *)(uVar2 + 0x20) = *(int *)(uVar2 + 0x20) + iVar5;\n  uVar14 = uVar21 & 4;\n  if ((uVar14 != 0) && (iVar5 != 0)) {\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    else {\n      iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    *(int *)(uVar2 + 0x1c) = iVar5;\n    param_1[0xc] = iVar5;\n    uVar21 = *(uint *)(uVar2 + 0xc);\n    uVar14 = uVar21 & 4;\n  }\n  if (uVar14 != 0) {\n    uVar14 = local_64;\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100;\n    }\n    if (*(uint *)(uVar2 + 0x1c) != uVar14) {\n      param_1[6] = (int)"incorrect data check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      local_50 = local_5c;\n      goto LAB_00017f32;\n    }\n  }\n  uVar15 = 0;\n  local_64 = 0;\n  local_50 = local_5c;\nLAB_00018e20:\n  *(undefined4 *)(uVar2 + 4) = 0x3f4f;\nLAB_000183ff:\n  if ((uVar21 != 0) && (*(int *)(uVar2 + 0x14) != 0)) {\n    for (; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n      if (local_6c == 0) goto LAB_00017f30;\n      local_6c = local_6c - 1;\n      local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n      local_60 = local_60 + 1;\n    }\n    if (*(uint *)(uVar2 + 0x20) != local_64) {\n      param_1[6] = (int)"incorrect length check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      goto LAB_00017f32;\n    }\n    uVar15 = 0;\n    local_64 = 0;\n  }\n  uVar21 = 1;\n  *(undefined4 *)(uVar2 + 4) = 0x3f50;\n  goto LAB_00017f32;\nLAB_00018d40:\n  uVar21 = 0;\n  local_60 = pbVar20;\n  goto LAB_00017f32;\ncode_r0x00018d1f:\n  *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n  *(undefined4 *)(uVar2 + 4) = 0x3f3f;\nLAB_00017f13:\n  if (param_2 - 5U < 2) goto LAB_00017f30;\n  goto LAB_0001790a;\n  while (local_6c != 0) {\nLAB_00017970:\n    pbVar20 = local_60 + 1;\n    local_6c = local_6c - 1;\n    bVar25 = (byte)uVar15;\n    uVar15 = uVar15 + 8;\n    local_64 = local_64 + ((uint)*local_60 << (bVar25 & 0x1f));\n    local_60 = pbVar20;\n    if (0x1f < uVar15) goto LAB_00017996;\n  }\nLAB_000190a2:\n  uVar21 = 0;\n  local_60 = pbVar20;\nLAB_00017f32:\n  *param_1 = (int)local_60;\n  param_1[3] = (int)__dest;\n  param_1[1] = local_6c;\n  param_1[4] = local_5c;\n  *(uint *)(uVar2 + 0x3c) = local_64;\n  *(uint *)(uVar2 + 0x40) = uVar15;\n  if ((*(int *)(uVar2 + 0x2c) != 0) ||\n     (((local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&\n      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)))))) {\n    iVar5 = FUN_000172e0();\n    if (iVar5 != 0) {\n      *(undefined4 *)(uVar2 + 4) = 0x3f52;\ncode_r0x00018770:\n      uVar21 = 0xfffffffc;\n      goto LAB_00018778;\n    }\n    local_6c = param_1[1];\n    local_5c = param_1[4];\n  }\n  iVar5 = local_50 - local_5c;\n  param_1[2] = param_1[2] + (uVar1 - local_6c);\n  param_1[5] = param_1[5] + iVar5;\n  *(int *)(uVar2 + 0x20) = *(int *)(uVar2 + 0x20) + iVar5;\n  if (((*(byte *)(uVar2 + 0xc) & 4) != 0) && (iVar5 != 0)) {\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    else {\n      iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    *(int *)(uVar2 + 0x1c) = iVar7;\n    param_1[0xc] = iVar7;\n  }\n  iVar7 = *(int *)(uVar2 + 0x40);\n  if (*(int *)(uVar2 + 8) != 0) {\n    iVar7 = iVar7 + 0x40;\n  }\n  iVar3 = *(int *)(uVar2 + 4);\n  local_4c = 0;\n  if (iVar3 == 0x3f3f) {\n    iVar7 = iVar7 + 0x80;\n  }\n  else if ((iVar3 == 0x3f47) || (iVar3 == 0x3f42)) {\n    local_4c = 0x100;\n  }\n  param_1[0xb] = iVar7 + local_4c;\n  if (((uVar1 - local_6c == 0 && iVar5 == 0) || (param_2 == 4)) && (uVar21 == 0)) {\n    uVar21 = 0xfffffffb;\n  }\nLAB_00018778:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar21;\n  }" (compound_statement "{\n        if (local_6c == 0) goto LAB_00017f30;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = local_60 + 1;\njoined_r0x000180e3:\n      } while (uVar15 < 0x10);\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(uint *)(iVar5 + 8) = local_64 & 0xff;\n        *(uint *)(iVar5 + 0xc) = local_64 >> 8;\n      }\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uStack_24 = (undefined2)local_64;\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      *(undefined4 *)(uVar2 + 4) = 0x3f38;\n      if ((uVar21 & 0x400) == 0) {\n        uVar15 = 0;\n        local_64 = 0;\ncode_r0x000181ae:\n        if (*(int *)(uVar2 + 0x24) != 0) {\n          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;\n        }\n        goto code_r0x000181c0;\n      }\n      local_64 = 0;\n      uVar15 = 0;\ncode_r0x0001829d:\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x000182ea;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }" { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (labeled_statement "joined_r0x000180e3:\n      } while (uVar15 < 0x10);" statement_identifier : (ERROR "}" }) (while_statement "while (uVar15 < 0x10);" while (parenthesized_expression "(uVar15 < 0x10)" ( (binary_expression "uVar15 < 0x10" identifier < number_literal) )) (expression_statement ";" ;))) (expression_statement "iVar5 = *(int *)(uVar2 + 0x24);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x24)" identifier = (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 != 0) {\n        *(uint *)(iVar5 + 8) = local_64 & 0xff;\n        *(uint *)(iVar5 + 0xc) = local_64 >> 8;\n      }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n        *(uint *)(iVar5 + 8) = local_64 & 0xff;\n        *(uint *)(iVar5 + 0xc) = local_64 >> 8;\n      }" { (expression_statement "*(uint *)(iVar5 + 8) = local_64 & 0xff;" (assignment_expression "*(uint *)(iVar5 + 8) = local_64 & 0xff" (pointer_expression "*(uint *)(iVar5 + 8)" * (cast_expression "(uint *)(iVar5 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 8)" ( (binary_expression "iVar5 + 8" identifier + number_literal) )))) = (binary_expression "local_64 & 0xff" identifier & number_literal)) ;) (expression_statement "*(uint *)(iVar5 + 0xc) = local_64 >> 8;" (assignment_expression "*(uint *)(iVar5 + 0xc) = local_64 >> 8" (pointer_expression "*(uint *)(iVar5 + 0xc)" * (cast_expression "(uint *)(iVar5 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) )))) = (binary_expression "local_64 >> 8" identifier >> number_literal)) ;) })) (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uStack_24 = (undefined2)local_64;\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }" if (parenthesized_expression "(((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0))" ( (binary_expression "((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)" (parenthesized_expression "((uVar21 & 0x200) != 0)" ( (binary_expression "(uVar21 & 0x200) != 0" (parenthesized_expression "(uVar21 & 0x200)" ( (binary_expression "uVar21 & 0x200" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) != 0)" ( (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" ( (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" * (cast_expression "(byte *)(uVar2 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        uStack_24 = (undefined2)local_64;\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }" { (expression_statement "uStack_24 = (undefined2)local_64;" (assignment_expression "uStack_24 = (undefined2)local_64" identifier = (cast_expression "(undefined2)local_64" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (expression_statement "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);" (assignment_expression "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2)" identifier = (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2)" identifier (argument_list "(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2)" ( (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) , (pointer_expression "&uStack_24" & identifier) , number_literal )))) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) ))))) ;) })) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f38;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f38" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (if_statement "if ((uVar21 & 0x400) == 0) {\n        uVar15 = 0;\n        local_64 = 0;\ncode_r0x000181ae:\n        if (*(int *)(uVar2 + 0x24) != 0) {\n          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;\n        }\n        goto code_r0x000181c0;\n      }" if (parenthesized_expression "((uVar21 & 0x400) == 0)" ( (binary_expression "(uVar21 & 0x400) == 0" (parenthesized_expression "(uVar21 & 0x400)" ( (binary_expression "uVar21 & 0x400" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        uVar15 = 0;\n        local_64 = 0;\ncode_r0x000181ae:\n        if (*(int *)(uVar2 + 0x24) != 0) {\n          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;\n        }\n        goto code_r0x000181c0;\n      }" { (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (labeled_statement "code_r0x000181ae:\n        if (*(int *)(uVar2 + 0x24) != 0) {\n          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;\n        }" statement_identifier : (if_statement "if (*(int *)(uVar2 + 0x24) != 0) {\n          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;\n        }" if (parenthesized_expression "(*(int *)(uVar2 + 0x24) != 0)" ( (binary_expression "*(int *)(uVar2 + 0x24) != 0" (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;\n        }" { (expression_statement "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;" (assignment_expression "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0" (pointer_expression "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10)" * (cast_expression "(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(uVar2 + 0x24) + 0x10)" ( (binary_expression "*(int *)(uVar2 + 0x24) + 0x10" (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) + number_literal) )))) = number_literal) ;) }))) (goto_statement "goto code_r0x000181c0;" goto statement_identifier ;) })) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (labeled_statement "code_r0x0001829d:\n      if (local_6c == 0) goto LAB_00017f30;" statement_identifier : (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;))) (do_statement "do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x000182ea;\n      } while (local_6c != 0);" do (compound_statement "{\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x000182ea;\n      }" { (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" identifier = identifier) ;) (if_statement "if (0xf < uVar15) goto code_r0x000182ea;" if (parenthesized_expression "(0xf < uVar15)" ( (binary_expression "0xf < uVar15" number_literal < identifier) )) (goto_statement "goto code_r0x000182ea;" goto statement_identifier ;)) }) while (parenthesized_expression "(local_6c != 0)" ( (binary_expression "local_6c != 0" identifier != number_literal) )) ;) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) }) else (compound_statement "{\n      param_1[6] = (int)"unknown compression method";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\nLAB_00018817:\n      uVar21 = 0xfffffffd;\n    }" { (expression_statement "param_1[6] = (int)"unknown compression method";" (assignment_expression "param_1[6] = (int)"unknown compression method"" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)"unknown compression method"" ( (type_descriptor "int" primitive_type) ) (string_literal ""unknown compression method"" " string_content "))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "LAB_00018817:\n      uVar21 = 0xfffffffd;" statement_identifier : (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" identifier = number_literal) ;)) }) } (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) (labeled_statement "code_r0x000182ea:\n  *(uint *)(uVar2 + 0x44) = local_64;" statement_identifier : (expression_statement "*(uint *)(uVar2 + 0x44) = local_64;" (assignment_expression "*(uint *)(uVar2 + 0x44) = local_64" (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = identifier) ;)) (if_statement "if (*(int *)(uVar2 + 0x24) != 0) {\n    *(uint *)(*(int *)(uVar2 + 0x24) + 0x14) = local_64;\n  }" if (parenthesized_expression "(*(int *)(uVar2 + 0x24) != 0)" ( (binary_expression "*(int *)(uVar2 + 0x24) != 0" (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    *(uint *)(*(int *)(uVar2 + 0x24) + 0x14) = local_64;\n  }" { (expression_statement "*(uint *)(*(int *)(uVar2 + 0x24) + 0x14) = local_64;" (assignment_expression "*(uint *)(*(int *)(uVar2 + 0x24) + 0x14) = local_64" (pointer_expression "*(uint *)(*(int *)(uVar2 + 0x24) + 0x14)" * (cast_expression "(uint *)(*(int *)(uVar2 + 0x24) + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(uVar2 + 0x24) + 0x14)" ( (binary_expression "*(int *)(uVar2 + 0x24) + 0x14" (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) + number_literal) )))) = identifier) ;) })) (if_statement "if (((uVar21 & 0x200) == 0) || ((*(byte *)(uVar2 + 0xc) & 4) == 0)) {\n    uVar15 = 0;\n    local_64 = 0;\n  }\n  else {\n    uVar15 = 0;\n    uStack_24 = (undefined2)local_64;\n    uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n    *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n    local_64 = 0;\n    uVar21 = *(uint *)(uVar2 + 0x14);\n  }" if (parenthesized_expression "(((uVar21 & 0x200) == 0) || ((*(byte *)(uVar2 + 0xc) & 4) == 0))" ( (binary_expression "((uVar21 & 0x200) == 0) || ((*(byte *)(uVar2 + 0xc) & 4) == 0)" (parenthesized_expression "((uVar21 & 0x200) == 0)" ( (binary_expression "(uVar21 & 0x200) == 0" (parenthesized_expression "(uVar21 & 0x200)" ( (binary_expression "uVar21 & 0x200" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) == 0)" ( (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) == 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" ( (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" * (cast_expression "(byte *)(uVar2 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    uVar15 = 0;\n    local_64 = 0;\n  }" { (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    uVar15 = 0;\n    uStack_24 = (undefined2)local_64;\n    uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n    *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n    local_64 = 0;\n    uVar21 = *(uint *)(uVar2 + 0x14);\n  }" else (compound_statement "{\n    uVar15 = 0;\n    uStack_24 = (undefined2)local_64;\n    uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n    *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n    local_64 = 0;\n    uVar21 = *(uint *)(uVar2 + 0x14);\n  }" { (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "uStack_24 = (undefined2)local_64;" (assignment_expression "uStack_24 = (undefined2)local_64" identifier = (cast_expression "(undefined2)local_64" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (expression_statement "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);" (assignment_expression "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2)" identifier = (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2)" identifier (argument_list "(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2)" ( (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) , (pointer_expression "&uStack_24" & identifier) , number_literal )))) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) ))))) ;) }))) (labeled_statement "code_r0x000181c0:\n  *(undefined4 *)(uVar2 + 4) = 0x3f39;" statement_identifier : (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f39;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f39" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;)) (labeled_statement "code_r0x000181cb:\n  if ((uVar21 & 0x400) == 0) {\ncode_r0x0001826a:\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3a;\ncode_r0x0001832f:\n    if ((uVar21 & 0x800) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3b;\ncode_r0x0001835c:\n    if ((uVar21 & 0x1000) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 4) = 0x3f3c;\ncode_r0x00018382:\n    if ((uVar21 & 0x200) == 0) {\ncode_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }\n      iVar5 = crc32(0,0,0);\n      *(int *)(uVar2 + 0x1c) = iVar5;\n      param_1[0xc] = iVar5;\n      *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n      goto LAB_00017f13;\n    }\n    if (uVar15 < 0x10) {\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }\n    else {\ncode_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }\n      param_1[6] = (int)"header crc mismatch";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n    }\n  }\n  else {\n    uVar14 = *(uint *)(uVar2 + 0x44);\n    uVar17 = local_6c;\n    if (uVar14 < local_6c) {\n      uVar17 = uVar14;\n    }\n    if (uVar17 != 0) {\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_6c = local_6c - uVar17;\n      local_60 = local_60 + uVar17;\n      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;\n      *(uint *)(uVar2 + 0x44) = uVar14;\n    }\n    if (uVar14 == 0) {\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      goto code_r0x0001826a;\n    }\nLAB_00017f30:\n    uVar21 = 0;\n  }" statement_identifier : (if_statement "if ((uVar21 & 0x400) == 0) {\ncode_r0x0001826a:\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3a;\ncode_r0x0001832f:\n    if ((uVar21 & 0x800) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3b;\ncode_r0x0001835c:\n    if ((uVar21 & 0x1000) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 4) = 0x3f3c;\ncode_r0x00018382:\n    if ((uVar21 & 0x200) == 0) {\ncode_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }\n      iVar5 = crc32(0,0,0);\n      *(int *)(uVar2 + 0x1c) = iVar5;\n      param_1[0xc] = iVar5;\n      *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n      goto LAB_00017f13;\n    }\n    if (uVar15 < 0x10) {\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }\n    else {\ncode_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }\n      param_1[6] = (int)"header crc mismatch";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n    }\n  }\n  else {\n    uVar14 = *(uint *)(uVar2 + 0x44);\n    uVar17 = local_6c;\n    if (uVar14 < local_6c) {\n      uVar17 = uVar14;\n    }\n    if (uVar17 != 0) {\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_6c = local_6c - uVar17;\n      local_60 = local_60 + uVar17;\n      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;\n      *(uint *)(uVar2 + 0x44) = uVar14;\n    }\n    if (uVar14 == 0) {\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      goto code_r0x0001826a;\n    }\nLAB_00017f30:\n    uVar21 = 0;\n  }" if (parenthesized_expression "((uVar21 & 0x400) == 0)" ( (binary_expression "(uVar21 & 0x400) == 0" (parenthesized_expression "(uVar21 & 0x400)" ( (binary_expression "uVar21 & 0x400" identifier & number_literal) )) == number_literal) )) (compound_statement "{\ncode_r0x0001826a:\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3a;\ncode_r0x0001832f:\n    if ((uVar21 & 0x800) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3b;\ncode_r0x0001835c:\n    if ((uVar21 & 0x1000) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 4) = 0x3f3c;\ncode_r0x00018382:\n    if ((uVar21 & 0x200) == 0) {\ncode_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }\n      iVar5 = crc32(0,0,0);\n      *(int *)(uVar2 + 0x1c) = iVar5;\n      param_1[0xc] = iVar5;\n      *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n      goto LAB_00017f13;\n    }\n    if (uVar15 < 0x10) {\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }\n    else {\ncode_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }\n      param_1[6] = (int)"header crc mismatch";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n    }\n  }" { (labeled_statement "code_r0x0001826a:\n    *(undefined4 *)(uVar2 + 0x44) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(uVar2 + 0x44) = 0;" (assignment_expression "*(undefined4 *)(uVar2 + 0x44) = 0" (pointer_expression "*(undefined4 *)(uVar2 + 0x44)" * (cast_expression "(undefined4 *)(uVar2 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3a;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3a" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "code_r0x0001832f:\n    if ((uVar21 & 0x800) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }" statement_identifier : (if_statement "if ((uVar21 & 0x800) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }" if (parenthesized_expression "((uVar21 & 0x800) == 0)" ( (binary_expression "(uVar21 & 0x800) == 0" (parenthesized_expression "(uVar21 & 0x800)" ( (binary_expression "uVar21 & 0x800" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }\n    }" { (if_statement "if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }" if (parenthesized_expression "(*(int *)(uVar2 + 0x24) != 0)" ( (binary_expression "*(int *)(uVar2 + 0x24) != 0" (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }" { (expression_statement "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;" (assignment_expression "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0" (pointer_expression "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c)" * (cast_expression "(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(uVar2 + 0x24) + 0x1c)" ( (binary_expression "*(int *)(uVar2 + 0x24) + 0x1c" (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) + number_literal) )))) = number_literal) ;) })) }) (else_clause "else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }" else (compound_statement "{\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }" { (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (if_statement "if (local_6c == 0) goto LAB_00017f32;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;)) (do_statement "do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));" do (compound_statement "{\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      }" { (expression_statement "iVar5 = *(int *)(uVar2 + 0x24);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x24)" identifier = (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "uVar14 = uVar21 + 1;" (assignment_expression "uVar14 = uVar21 + 1" identifier = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) (expression_statement "bVar12 = local_60[uVar21];" (assignment_expression "bVar12 = local_60[uVar21]" identifier = (subscript_expression "local_60[uVar21]" identifier [ identifier ])) ;) (if_statement "if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }" if (parenthesized_expression "(((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20)))" ( (binary_expression "((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))" (parenthesized_expression "((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0))" ( (binary_expression "(iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)" ( (comma_expression "iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0" (assignment_expression "iVar7 = *(int *)(iVar5 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar5 + 0x1c)" * (cast_expression "(int *)(iVar5 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x1c)" ( (binary_expression "iVar5 + 0x1c" identifier + number_literal) ))))) , (binary_expression "iVar7 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))" ( (comma_expression "uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20)" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x44)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) ))))) , (binary_expression "uVar21 < *(uint *)(iVar5 + 0x20)" identifier < (pointer_expression "*(uint *)(iVar5 + 0x20)" * (cast_expression "(uint *)(iVar5 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x20)" ( (binary_expression "iVar5 + 0x20" identifier + number_literal) )))))) ))) )) (compound_statement "{\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }" { (expression_statement "*(uint *)(uVar2 + 0x44) = uVar21 + 1;" (assignment_expression "*(uint *)(uVar2 + 0x44) = uVar21 + 1" (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) (expression_statement "*(byte *)(iVar7 + uVar21) = bVar12;" (assignment_expression "*(byte *)(iVar7 + uVar21) = bVar12" (pointer_expression "*(byte *)(iVar7 + uVar21)" * (cast_expression "(byte *)(iVar7 + uVar21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + uVar21)" ( (binary_expression "iVar7 + uVar21" identifier + identifier) )))) = identifier) ;) })) }) while (parenthesized_expression "((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c))" ( (binary_expression "(bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c)" (parenthesized_expression "(bVar12 != 0)" ( (binary_expression "bVar12 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar21 = uVar14, uVar14 < local_6c)" ( (comma_expression "uVar21 = uVar14, uVar14 < local_6c" (assignment_expression "uVar21 = uVar14" identifier = identifier) , (binary_expression "uVar14 < local_6c" identifier < identifier)) ))) )) ;) (if_statement "if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" if (parenthesized_expression "(((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0))" ( (binary_expression "((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)" (parenthesized_expression "((*(byte *)(uVar2 + 0x15) & 2) != 0)" ( (binary_expression "(*(byte *)(uVar2 + 0x15) & 2) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0x15) & 2)" ( (binary_expression "*(byte *)(uVar2 + 0x15) & 2" (pointer_expression "*(byte *)(uVar2 + 0x15)" * (cast_expression "(byte *)(uVar2 + 0x15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x15)" ( (binary_expression "uVar2 + 0x15" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) != 0)" ( (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" ( (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" * (cast_expression "(byte *)(uVar2 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" { (expression_statement "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);" (assignment_expression "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14)" identifier = (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14)" identifier (argument_list "(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14)" ( (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) , identifier , identifier )))) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "local_60 = local_60 + uVar14;" (assignment_expression "local_60 = local_60 + uVar14" identifier = (binary_expression "local_60 + uVar14" identifier + identifier)) ;) (expression_statement "local_6c = local_6c - uVar14;" (assignment_expression "local_6c = local_6c - uVar14" identifier = (binary_expression "local_6c - uVar14" identifier - identifier)) ;) (if_statement "if (bVar12 != 0) goto LAB_00017f30;" if (parenthesized_expression "(bVar12 != 0)" ( (binary_expression "bVar12 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) ))))) ;) })))) (expression_statement "*(undefined4 *)(uVar2 + 0x44) = 0;" (assignment_expression "*(undefined4 *)(uVar2 + 0x44) = 0" (pointer_expression "*(undefined4 *)(uVar2 + 0x44)" * (cast_expression "(undefined4 *)(uVar2 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3b;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3b" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "code_r0x0001835c:\n    if ((uVar21 & 0x1000) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }" statement_identifier : (if_statement "if ((uVar21 & 0x1000) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }" if (parenthesized_expression "((uVar21 & 0x1000) == 0)" ( (binary_expression "(uVar21 & 0x1000) == 0" (parenthesized_expression "(uVar21 & 0x1000)" ( (binary_expression "uVar21 & 0x1000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }\n    }" { (if_statement "if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }" if (parenthesized_expression "(*(int *)(uVar2 + 0x24) != 0)" ( (binary_expression "*(int *)(uVar2 + 0x24) != 0" (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }" { (expression_statement "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;" (assignment_expression "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0" (pointer_expression "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24)" * (cast_expression "(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(uVar2 + 0x24) + 0x24)" ( (binary_expression "*(int *)(uVar2 + 0x24) + 0x24" (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) + number_literal) )))) = number_literal) ;) })) }) (else_clause "else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }" else (compound_statement "{\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }" { (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (if_statement "if (local_6c == 0) goto LAB_00017f32;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;)) (do_statement "do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));" do (compound_statement "{\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      }" { (expression_statement "iVar5 = *(int *)(uVar2 + 0x24);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x24)" identifier = (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "uVar14 = uVar21 + 1;" (assignment_expression "uVar14 = uVar21 + 1" identifier = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) (expression_statement "bVar12 = local_60[uVar21];" (assignment_expression "bVar12 = local_60[uVar21]" identifier = (subscript_expression "local_60[uVar21]" identifier [ identifier ])) ;) (if_statement "if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }" if (parenthesized_expression "(((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28)))" ( (binary_expression "((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))" (parenthesized_expression "((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0))" ( (binary_expression "(iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)" ( (comma_expression "iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0" (assignment_expression "iVar7 = *(int *)(iVar5 + 0x24)" identifier = (pointer_expression "*(int *)(iVar5 + 0x24)" * (cast_expression "(int *)(iVar5 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x24)" ( (binary_expression "iVar5 + 0x24" identifier + number_literal) ))))) , (binary_expression "iVar7 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))" ( (comma_expression "uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28)" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x44)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) ))))) , (binary_expression "uVar21 < *(uint *)(iVar5 + 0x28)" identifier < (pointer_expression "*(uint *)(iVar5 + 0x28)" * (cast_expression "(uint *)(iVar5 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x28)" ( (binary_expression "iVar5 + 0x28" identifier + number_literal) )))))) ))) )) (compound_statement "{\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }" { (expression_statement "*(uint *)(uVar2 + 0x44) = uVar21 + 1;" (assignment_expression "*(uint *)(uVar2 + 0x44) = uVar21 + 1" (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) (expression_statement "*(byte *)(iVar7 + uVar21) = bVar12;" (assignment_expression "*(byte *)(iVar7 + uVar21) = bVar12" (pointer_expression "*(byte *)(iVar7 + uVar21)" * (cast_expression "(byte *)(iVar7 + uVar21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + uVar21)" ( (binary_expression "iVar7 + uVar21" identifier + identifier) )))) = identifier) ;) })) }) while (parenthesized_expression "((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c))" ( (binary_expression "(bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c)" (parenthesized_expression "(bVar12 != 0)" ( (binary_expression "bVar12 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar21 = uVar14, uVar14 < local_6c)" ( (comma_expression "uVar21 = uVar14, uVar14 < local_6c" (assignment_expression "uVar21 = uVar14" identifier = identifier) , (binary_expression "uVar14 < local_6c" identifier < identifier)) ))) )) ;) (if_statement "if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" if (parenthesized_expression "(((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0))" ( (binary_expression "((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)" (parenthesized_expression "((*(byte *)(uVar2 + 0x15) & 2) != 0)" ( (binary_expression "(*(byte *)(uVar2 + 0x15) & 2) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0x15) & 2)" ( (binary_expression "*(byte *)(uVar2 + 0x15) & 2" (pointer_expression "*(byte *)(uVar2 + 0x15)" * (cast_expression "(byte *)(uVar2 + 0x15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x15)" ( (binary_expression "uVar2 + 0x15" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) != 0)" ( (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" ( (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" * (cast_expression "(byte *)(uVar2 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" { (expression_statement "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);" (assignment_expression "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14)" identifier = (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14)" identifier (argument_list "(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14)" ( (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) , identifier , identifier )))) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "local_60 = local_60 + uVar14;" (assignment_expression "local_60 = local_60 + uVar14" identifier = (binary_expression "local_60 + uVar14" identifier + identifier)) ;) (expression_statement "local_6c = local_6c - uVar14;" (assignment_expression "local_6c = local_6c - uVar14" identifier = (binary_expression "local_6c - uVar14" identifier - identifier)) ;) (if_statement "if (bVar12 != 0) goto LAB_00017f30;" if (parenthesized_expression "(bVar12 != 0)" ( (binary_expression "bVar12 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) ))))) ;) })))) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3c;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3c" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "code_r0x00018382:\n    if ((uVar21 & 0x200) == 0) {\ncode_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }\n      iVar5 = crc32(0,0,0);\n      *(int *)(uVar2 + 0x1c) = iVar5;\n      param_1[0xc] = iVar5;\n      *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n      goto LAB_00017f13;\n    }" statement_identifier : (if_statement "if ((uVar21 & 0x200) == 0) {\ncode_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }\n      iVar5 = crc32(0,0,0);\n      *(int *)(uVar2 + 0x1c) = iVar5;\n      param_1[0xc] = iVar5;\n      *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n      goto LAB_00017f13;\n    }" if (parenthesized_expression "((uVar21 & 0x200) == 0)" ( (binary_expression "(uVar21 & 0x200) == 0" (parenthesized_expression "(uVar21 & 0x200)" ( (binary_expression "uVar21 & 0x200" identifier & number_literal) )) == number_literal) )) (compound_statement "{\ncode_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }\n      iVar5 = crc32(0,0,0);\n      *(int *)(uVar2 + 0x1c) = iVar5;\n      param_1[0xc] = iVar5;\n      *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n      goto LAB_00017f13;\n    }" { (labeled_statement "code_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);" statement_identifier : (expression_statement "iVar5 = *(int *)(uVar2 + 0x24);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x24)" identifier = (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) ))))) ;)) (if_statement "if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }" { (expression_statement "*(undefined4 *)(iVar5 + 0x30) = 1;" (assignment_expression "*(undefined4 *)(iVar5 + 0x30) = 1" (pointer_expression "*(undefined4 *)(iVar5 + 0x30)" * (cast_expression "(undefined4 *)(iVar5 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x30)" ( (binary_expression "iVar5 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;" (assignment_expression "*(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1" (pointer_expression "*(uint *)(iVar5 + 0x2c)" * (cast_expression "(uint *)(iVar5 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x2c)" ( (binary_expression "iVar5 + 0x2c" identifier + number_literal) )))) = (binary_expression "(int)uVar21 >> 9 & 1" (binary_expression "(int)uVar21 >> 9" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) & number_literal)) ;) })) (expression_statement "iVar5 = crc32(0,0,0);" (assignment_expression "iVar5 = crc32(0,0,0)" identifier = (call_expression "crc32(0,0,0)" identifier (argument_list "(0,0,0)" ( number_literal , number_literal , number_literal )))) ;) (expression_statement "*(int *)(uVar2 + 0x1c) = iVar5;" (assignment_expression "*(int *)(uVar2 + 0x1c) = iVar5" (pointer_expression "*(int *)(uVar2 + 0x1c)" * (cast_expression "(int *)(uVar2 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[0xc] = iVar5;" (assignment_expression "param_1[0xc] = iVar5" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3f;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3f" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00017f13;" goto statement_identifier ;) }))) (if_statement "if (uVar15 < 0x10) {\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }\n    else {\ncode_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }\n      param_1[6] = (int)"header crc mismatch";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n    }" if (parenthesized_expression "(uVar15 < 0x10)" ( (binary_expression "uVar15 < 0x10" identifier < number_literal) )) (compound_statement "{\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }" { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (do_statement "do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      } while (local_6c != 0);" do (compound_statement "{\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      }" { (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" identifier = identifier) ;) (if_statement "if (0xf < uVar15) goto code_r0x00018a2e;" if (parenthesized_expression "(0xf < uVar15)" ( (binary_expression "0xf < uVar15" number_literal < identifier) )) (goto_statement "goto code_r0x00018a2e;" goto statement_identifier ;)) }) while (parenthesized_expression "(local_6c != 0)" ( (binary_expression "local_6c != 0" identifier != number_literal) )) ;) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) }) (else_clause "else {\ncode_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }\n      param_1[6] = (int)"header crc mismatch";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n    }" else (compound_statement "{\ncode_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }\n      param_1[6] = (int)"header crc mismatch";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n    }" { (labeled_statement "code_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }" statement_identifier : (if_statement "if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }" if (parenthesized_expression "(((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64))" ( (binary_expression "((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)" (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) == 0)" ( (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) == 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" ( (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" * (cast_expression "(byte *)(uVar2 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "(*(ushort *)(uVar2 + 0x1c) == local_64)" ( (binary_expression "*(ushort *)(uVar2 + 0x1c) == local_64" (pointer_expression "*(ushort *)(uVar2 + 0x1c)" * (cast_expression "(ushort *)(uVar2 + 0x1c)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) == identifier) ))) )) (compound_statement "{\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }" { (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (goto_statement "goto code_r0x0001838b;" goto statement_identifier ;) }))) (expression_statement "param_1[6] = (int)"header crc mismatch";" (assignment_expression "param_1[6] = (int)"header crc mismatch"" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)"header crc mismatch"" ( (type_descriptor "int" primitive_type) ) (string_literal ""header crc mismatch"" " string_content "))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" identifier = number_literal) ;) }))) }) (else_clause "else {\n    uVar14 = *(uint *)(uVar2 + 0x44);\n    uVar17 = local_6c;\n    if (uVar14 < local_6c) {\n      uVar17 = uVar14;\n    }\n    if (uVar17 != 0) {\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_6c = local_6c - uVar17;\n      local_60 = local_60 + uVar17;\n      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;\n      *(uint *)(uVar2 + 0x44) = uVar14;\n    }\n    if (uVar14 == 0) {\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      goto code_r0x0001826a;\n    }\nLAB_00017f30:\n    uVar21 = 0;\n  }" else (compound_statement "{\n    uVar14 = *(uint *)(uVar2 + 0x44);\n    uVar17 = local_6c;\n    if (uVar14 < local_6c) {\n      uVar17 = uVar14;\n    }\n    if (uVar17 != 0) {\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_6c = local_6c - uVar17;\n      local_60 = local_60 + uVar17;\n      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;\n      *(uint *)(uVar2 + 0x44) = uVar14;\n    }\n    if (uVar14 == 0) {\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      goto code_r0x0001826a;\n    }\nLAB_00017f30:\n    uVar21 = 0;\n  }" { (expression_statement "uVar14 = *(uint *)(uVar2 + 0x44);" (assignment_expression "uVar14 = *(uint *)(uVar2 + 0x44)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = local_6c;" (assignment_expression "uVar17 = local_6c" identifier = identifier) ;) (if_statement "if (uVar14 < local_6c) {\n      uVar17 = uVar14;\n    }" if (parenthesized_expression "(uVar14 < local_6c)" ( (binary_expression "uVar14 < local_6c" identifier < identifier) )) (compound_statement "{\n      uVar17 = uVar14;\n    }" { (expression_statement "uVar17 = uVar14;" (assignment_expression "uVar17 = uVar14" identifier = identifier) ;) })) (if_statement "if (uVar17 != 0) {\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_6c = local_6c - uVar17;\n      local_60 = local_60 + uVar17;\n      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;\n      *(uint *)(uVar2 + 0x44) = uVar14;\n    }" if (parenthesized_expression "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_6c = local_6c - uVar17;\n      local_60 = local_60 + uVar17;\n      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;\n      *(uint *)(uVar2 + 0x44) = uVar14;\n    }" { (expression_statement "iVar5 = *(int *)(uVar2 + 0x24);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x24)" identifier = (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }" if (parenthesized_expression "((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0))" ( (binary_expression "(iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(int *)(iVar5 + 0x10) != 0)" ( (binary_expression "*(int *)(iVar5 + 0x10) != 0" (pointer_expression "*(int *)(iVar5 + 0x10)" * (cast_expression "(int *)(iVar5 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }" { (expression_statement "iVar7 = *(int *)(iVar5 + 0x14) - uVar14;" (assignment_expression "iVar7 = *(int *)(iVar5 + 0x14) - uVar14" identifier = (binary_expression "*(int *)(iVar5 + 0x14) - uVar14" (pointer_expression "*(int *)(iVar5 + 0x14)" * (cast_expression "(int *)(iVar5 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) - identifier)) ;) (expression_statement "__n = *(uint *)(iVar5 + 0x18) - iVar7;" (assignment_expression "__n = *(uint *)(iVar5 + 0x18) - iVar7" identifier = (binary_expression "*(uint *)(iVar5 + 0x18) - iVar7" (pointer_expression "*(uint *)(iVar5 + 0x18)" * (cast_expression "(uint *)(iVar5 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) )))) - identifier)) ;) (if_statement "if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }" if (parenthesized_expression "(uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18))" ( (binary_expression "uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)" (binary_expression "uVar17 + iVar7" identifier + identifier) <= (pointer_expression "*(uint *)(iVar5 + 0x18)" * (cast_expression "(uint *)(iVar5 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n          __n = uVar17;\n        }" { (expression_statement "__n = uVar17;" (assignment_expression "__n = uVar17" identifier = identifier) ;) })) (expression_statement "memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);" (call_expression "memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n)" identifier (argument_list "((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n)" ( (cast_expression "(void *)(iVar7 + *(int *)(iVar5 + 0x10))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + *(int *)(iVar5 + 0x10))" ( (binary_expression "iVar7 + *(int *)(iVar5 + 0x10)" identifier + (pointer_expression "*(int *)(iVar5 + 0x10)" * (cast_expression "(int *)(iVar5 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) ))))) ))) , identifier , identifier ))) ;) (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) ))))) ;) })) (if_statement "if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" if (parenthesized_expression "(((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0))" ( (binary_expression "((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)" (parenthesized_expression "((uVar21 & 0x200) != 0)" ( (binary_expression "(uVar21 & 0x200) != 0" (parenthesized_expression "(uVar21 & 0x200)" ( (binary_expression "uVar21 & 0x200" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) != 0)" ( (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" ( (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" * (cast_expression "(byte *)(uVar2 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" { (expression_statement "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);" (assignment_expression "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17)" identifier = (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17)" identifier (argument_list "(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17)" ( (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) , identifier , identifier )))) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "local_6c = local_6c - uVar17;" (assignment_expression "local_6c = local_6c - uVar17" identifier = (binary_expression "local_6c - uVar17" identifier - identifier)) ;) (expression_statement "local_60 = local_60 + uVar17;" (assignment_expression "local_60 = local_60 + uVar17" identifier = (binary_expression "local_60 + uVar17" identifier + identifier)) ;) (expression_statement "uVar14 = *(int *)(uVar2 + 0x44) - uVar17;" (assignment_expression "uVar14 = *(int *)(uVar2 + 0x44) - uVar17" identifier = (binary_expression "*(int *)(uVar2 + 0x44) - uVar17" (pointer_expression "*(int *)(uVar2 + 0x44)" * (cast_expression "(int *)(uVar2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) - identifier)) ;) (expression_statement "*(uint *)(uVar2 + 0x44) = uVar14;" (assignment_expression "*(uint *)(uVar2 + 0x44) = uVar14" (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = identifier) ;) })) (if_statement "if (uVar14 == 0) {\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      goto code_r0x0001826a;\n    }" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      goto code_r0x0001826a;\n    }" { (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) ))))) ;) (goto_statement "goto code_r0x0001826a;" goto statement_identifier ;) })) (labeled_statement "LAB_00017f30:\n    uVar21 = 0;" statement_identifier : (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;)) })))) goto identifier ; identifier : identifier = identifier - identifier ; identifier [ number_literal ] = identifier [ number_literal ] + identifier ; * ( primitive_type * ) ( identifier + number_literal ) = * ( primitive_type * ) ( identifier + number_literal ) + identifier ; identifier = identifier & number_literal ; (if_statement "if ((uVar14 != 0) && (iVar5 != 0)) {\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    else {\n      iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    *(int *)(uVar2 + 0x1c) = iVar5;\n    param_1[0xc] = iVar5;\n    uVar21 = *(uint *)(uVar2 + 0xc);\n    uVar14 = uVar21 & 4;\n  }" if (parenthesized_expression "((uVar14 != 0) && (iVar5 != 0))" ( (binary_expression "(uVar14 != 0) && (iVar5 != 0)" (parenthesized_expression "(uVar14 != 0)" ( (binary_expression "uVar14 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    else {\n      iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    *(int *)(uVar2 + 0x1c) = iVar5;\n    param_1[0xc] = iVar5;\n    uVar21 = *(uint *)(uVar2 + 0xc);\n    uVar14 = uVar21 & 4;\n  }" { (if_statement "if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    else {\n      iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }" if (parenthesized_expression "(*(int *)(uVar2 + 0x14) == 0)" ( (binary_expression "*(int *)(uVar2 + 0x14) == 0" (pointer_expression "*(int *)(uVar2 + 0x14)" * (cast_expression "(int *)(uVar2 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }" { (expression_statement "iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);" (assignment_expression "iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5)" identifier = (call_expression "adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5)" identifier (argument_list "(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5)" ( (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) , (binary_expression "(int)__dest - iVar5" (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) , identifier )))) ;) }) (else_clause "else {\n      iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }" else (compound_statement "{\n      iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }" { (expression_statement "iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);" (assignment_expression "iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5)" identifier = (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5)" identifier (argument_list "(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5)" ( (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) , (binary_expression "(int)__dest - iVar5" (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) , identifier )))) ;) }))) (expression_statement "*(int *)(uVar2 + 0x1c) = iVar5;" (assignment_expression "*(int *)(uVar2 + 0x1c) = iVar5" (pointer_expression "*(int *)(uVar2 + 0x1c)" * (cast_expression "(int *)(uVar2 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[0xc] = iVar5;" (assignment_expression "param_1[0xc] = iVar5" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar21 = *(uint *)(uVar2 + 0xc);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0xc)" identifier = (pointer_expression "*(uint *)(uVar2 + 0xc)" * (cast_expression "(uint *)(uVar2 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar14 = uVar21 & 4;" (assignment_expression "uVar14 = uVar21 & 4" identifier = (binary_expression "uVar21 & 4" identifier & number_literal)) ;) })) (if_statement "if (uVar14 != 0) {\n    uVar14 = local_64;\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100;\n    }\n    if (*(uint *)(uVar2 + 0x1c) != uVar14) {\n      param_1[6] = (int)"incorrect data check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      local_50 = local_5c;\n      goto LAB_00017f32;\n    }\n  }" if (parenthesized_expression "(uVar14 != 0)" ( (binary_expression "uVar14 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar14 = local_64;\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100;\n    }\n    if (*(uint *)(uVar2 + 0x1c) != uVar14) {\n      param_1[6] = (int)"incorrect data check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      local_50 = local_5c;\n      goto LAB_00017f32;\n    }\n  }" { (expression_statement "uVar14 = local_64;" (assignment_expression "uVar14 = local_64" identifier = identifier) ;) (if_statement "if (*(int *)(uVar2 + 0x14) == 0) {\n      uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100;\n    }" if (parenthesized_expression "(*(int *)(uVar2 + 0x14) == 0)" ( (binary_expression "*(int *)(uVar2 + 0x14) == 0" (pointer_expression "*(int *)(uVar2 + 0x14)" * (cast_expression "(int *)(uVar2 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100;\n    }" { (expression_statement "uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100;" (assignment_expression "uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100" identifier = (binary_expression "(local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100" (binary_expression "(local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00)" (binary_expression "(local_64 >> 0x18) + local_64 * 0x1000000" (parenthesized_expression "(local_64 >> 0x18)" ( (binary_expression "local_64 >> 0x18" identifier >> number_literal) )) + (binary_expression "local_64 * 0x1000000" identifier * number_literal)) + (parenthesized_expression "(local_64 >> 8 & 0xff00)" ( (binary_expression "local_64 >> 8 & 0xff00" (binary_expression "local_64 >> 8" identifier >> number_literal) & number_literal) ))) + (binary_expression "(local_64 & 0xff00) * 0x100" (parenthesized_expression "(local_64 & 0xff00)" ( (binary_expression "local_64 & 0xff00" identifier & number_literal) )) * number_literal))) ;) })) (if_statement "if (*(uint *)(uVar2 + 0x1c) != uVar14) {\n      param_1[6] = (int)"incorrect data check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      local_50 = local_5c;\n      goto LAB_00017f32;\n    }" if (parenthesized_expression "(*(uint *)(uVar2 + 0x1c) != uVar14)" ( (binary_expression "*(uint *)(uVar2 + 0x1c) != uVar14" (pointer_expression "*(uint *)(uVar2 + 0x1c)" * (cast_expression "(uint *)(uVar2 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n      param_1[6] = (int)"incorrect data check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      local_50 = local_5c;\n      goto LAB_00017f32;\n    }" { (expression_statement "param_1[6] = (int)"incorrect data check";" (assignment_expression "param_1[6] = (int)"incorrect data check"" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)"incorrect data check"" ( (type_descriptor "int" primitive_type) ) (string_literal ""incorrect data check"" " string_content "))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" identifier = number_literal) ;) (expression_statement "local_50 = local_5c;" (assignment_expression "local_50 = local_5c" identifier = identifier) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) })) identifier = number_literal ; identifier = number_literal ; identifier = identifier ; (labeled_statement "LAB_00018e20:\n  *(undefined4 *)(uVar2 + 4) = 0x3f4f;" statement_identifier : (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f4f;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f4f" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;)) (labeled_statement "LAB_000183ff:\n  if ((uVar21 != 0) && (*(int *)(uVar2 + 0x14) != 0)) {\n    for (; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n      if (local_6c == 0) goto LAB_00017f30;\n      local_6c = local_6c - 1;\n      local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n      local_60 = local_60 + 1;\n    }\n    if (*(uint *)(uVar2 + 0x20) != local_64) {\n      param_1[6] = (int)"incorrect length check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      goto LAB_00017f32;\n    }\n    uVar15 = 0;\n    local_64 = 0;\n  }" statement_identifier : (if_statement "if ((uVar21 != 0) && (*(int *)(uVar2 + 0x14) != 0)) {\n    for (; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n      if (local_6c == 0) goto LAB_00017f30;\n      local_6c = local_6c - 1;\n      local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n      local_60 = local_60 + 1;\n    }\n    if (*(uint *)(uVar2 + 0x20) != local_64) {\n      param_1[6] = (int)"incorrect length check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      goto LAB_00017f32;\n    }\n    uVar15 = 0;\n    local_64 = 0;\n  }" if (parenthesized_expression "((uVar21 != 0) && (*(int *)(uVar2 + 0x14) != 0))" ( (binary_expression "(uVar21 != 0) && (*(int *)(uVar2 + 0x14) != 0)" (parenthesized_expression "(uVar21 != 0)" ( (binary_expression "uVar21 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(int *)(uVar2 + 0x14) != 0)" ( (binary_expression "*(int *)(uVar2 + 0x14) != 0" (pointer_expression "*(int *)(uVar2 + 0x14)" * (cast_expression "(int *)(uVar2 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n    for (; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n      if (local_6c == 0) goto LAB_00017f30;\n      local_6c = local_6c - 1;\n      local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n      local_60 = local_60 + 1;\n    }\n    if (*(uint *)(uVar2 + 0x20) != local_64) {\n      param_1[6] = (int)"incorrect length check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      goto LAB_00017f32;\n    }\n    uVar15 = 0;\n    local_64 = 0;\n  }" { (for_statement "for (; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n      if (local_6c == 0) goto LAB_00017f30;\n      local_6c = local_6c - 1;\n      local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n      local_60 = local_60 + 1;\n    }" for ( ; (binary_expression "uVar15 < 0x20" identifier < number_literal) ; (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ) (compound_statement "{\n      if (local_6c == 0) goto LAB_00017f30;\n      local_6c = local_6c - 1;\n      local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n      local_60 = local_60 + 1;\n    }" { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << ((byte)uVar15 & 0x1f))" ( (binary_expression "(uint)*local_60 << ((byte)uVar15 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "((byte)uVar15 & 0x1f)" ( (binary_expression "(byte)uVar15 & 0x1f" (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) })) (if_statement "if (*(uint *)(uVar2 + 0x20) != local_64) {\n      param_1[6] = (int)"incorrect length check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      goto LAB_00017f32;\n    }" if (parenthesized_expression "(*(uint *)(uVar2 + 0x20) != local_64)" ( (binary_expression "*(uint *)(uVar2 + 0x20) != local_64" (pointer_expression "*(uint *)(uVar2 + 0x20)" * (cast_expression "(uint *)(uVar2 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x20)" ( (binary_expression "uVar2 + 0x20" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n      param_1[6] = (int)"incorrect length check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      goto LAB_00017f32;\n    }" { (expression_statement "param_1[6] = (int)"incorrect length check";" (assignment_expression "param_1[6] = (int)"incorrect length check"" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)"incorrect length check"" ( (type_descriptor "int" primitive_type) ) (string_literal ""incorrect length check"" " string_content "))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" identifier = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) }))) identifier = number_literal ; (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f50;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f50" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) (labeled_statement "LAB_00018d40:\n  uVar21 = 0;" statement_identifier : (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;)) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" identifier = identifier) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) (labeled_statement "code_r0x00018d1f:\n  *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;" statement_identifier : (expression_statement "*(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff" (pointer_expression "*(undefined4 *)(uVar2 + 0x1bc8)" * (cast_expression "(undefined4 *)(uVar2 + 0x1bc8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3f;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3f" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "LAB_00017f13:\n  if (param_2 - 5U < 2) goto LAB_00017f30;" statement_identifier : (if_statement "if (param_2 - 5U < 2) goto LAB_00017f30;" if (parenthesized_expression "(param_2 - 5U < 2)" ( (binary_expression "param_2 - 5U < 2" (binary_expression "param_2 - 5U" identifier - number_literal) < number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;))) (goto_statement "goto LAB_0001790a;" goto statement_identifier ;) while (parenthesized_expression "(local_6c != 0)" ( (binary_expression "local_6c != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00017970:\n    pbVar20 = local_60 + 1;\n    local_6c = local_6c - 1;\n    bVar25 = (byte)uVar15;\n    uVar15 = uVar15 + 8;\n    local_64 = local_64 + ((uint)*local_60 << (bVar25 & 0x1f));\n    local_60 = pbVar20;\n    if (0x1f < uVar15) goto LAB_00017996;\n  }" { (labeled_statement "LAB_00017970:\n    pbVar20 = local_60 + 1;" statement_identifier : (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;)) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar25 = (byte)uVar15;" (assignment_expression "bVar25 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar25 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar25 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar25 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar25 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar25 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar25 & 0x1f)" ( (binary_expression "bVar25 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" identifier = identifier) ;) (if_statement "if (0x1f < uVar15) goto LAB_00017996;" if (parenthesized_expression "(0x1f < uVar15)" ( (binary_expression "0x1f < uVar15" number_literal < identifier) )) (goto_statement "goto LAB_00017996;" goto statement_identifier ;)) }) (labeled_statement "LAB_000190a2:\n  uVar21 = 0;" statement_identifier : (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;)) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" identifier = identifier) ;) (labeled_statement "LAB_00017f32:\n  *param_1 = (int)local_60;" statement_identifier : (expression_statement "*param_1 = (int)local_60;" (assignment_expression "*param_1 = (int)local_60" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (expression_statement "param_1[3] = (int)__dest;" (assignment_expression "param_1[3] = (int)__dest" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[1] = local_6c;" (assignment_expression "param_1[1] = local_6c" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[4] = local_5c;" (assignment_expression "param_1[4] = local_5c" (subscript_expression "param_1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(uint *)(uVar2 + 0x3c) = local_64;" (assignment_expression "*(uint *)(uVar2 + 0x3c) = local_64" (pointer_expression "*(uint *)(uVar2 + 0x3c)" * (cast_expression "(uint *)(uVar2 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x3c)" ( (binary_expression "uVar2 + 0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(uVar2 + 0x40) = uVar15;" (assignment_expression "*(uint *)(uVar2 + 0x40) = uVar15" (pointer_expression "*(uint *)(uVar2 + 0x40)" * (cast_expression "(uint *)(uVar2 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x40)" ( (binary_expression "uVar2 + 0x40" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((*(int *)(uVar2 + 0x2c) != 0) ||\n     (((local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&\n      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)))))) {\n    iVar5 = FUN_000172e0();\n    if (iVar5 != 0) {\n      *(undefined4 *)(uVar2 + 4) = 0x3f52;\ncode_r0x00018770:\n      uVar21 = 0xfffffffc;\n      goto LAB_00018778;\n    }\n    local_6c = param_1[1];\n    local_5c = param_1[4];\n  }" if (parenthesized_expression "((*(int *)(uVar2 + 0x2c) != 0) ||\n     (((local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&\n      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4))))))" ( (binary_expression "(*(int *)(uVar2 + 0x2c) != 0) ||\n     (((local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&\n      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)))))" (parenthesized_expression "(*(int *)(uVar2 + 0x2c) != 0)" ( (binary_expression "*(int *)(uVar2 + 0x2c) != 0" (pointer_expression "*(int *)(uVar2 + 0x2c)" * (cast_expression "(int *)(uVar2 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x2c)" ( (binary_expression "uVar2 + 0x2c" identifier + number_literal) )))) != number_literal) )) || (parenthesized_expression "(((local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&\n      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)))))" ( (parenthesized_expression "((local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&\n      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4))))" ( (binary_expression "(local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&\n      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)))" (parenthesized_expression "(local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51))" ( (binary_expression "local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)" (binary_expression "local_5c != local_50" identifier != identifier) && (parenthesized_expression "(*(uint *)(uVar2 + 4) < 0x3f51)" ( (binary_expression "*(uint *)(uVar2 + 4) < 0x3f51" (pointer_expression "*(uint *)(uVar2 + 4)" * (cast_expression "(uint *)(uVar2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) < number_literal) ))) )) && (parenthesized_expression "((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)))" ( (parenthesized_expression "(*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4))" ( (binary_expression "*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)" (binary_expression "*(uint *)(uVar2 + 4) < 0x3f4e" (pointer_expression "*(uint *)(uVar2 + 4)" * (cast_expression "(uint *)(uVar2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) < number_literal) || (parenthesized_expression "(param_2 != 4)" ( (binary_expression "param_2 != 4" identifier != number_literal) ))) )) ))) )) ))) )) (compound_statement "{\n    iVar5 = FUN_000172e0();\n    if (iVar5 != 0) {\n      *(undefined4 *)(uVar2 + 4) = 0x3f52;\ncode_r0x00018770:\n      uVar21 = 0xfffffffc;\n      goto LAB_00018778;\n    }\n    local_6c = param_1[1];\n    local_5c = param_1[4];\n  }" { (expression_statement "iVar5 = FUN_000172e0();" (assignment_expression "iVar5 = FUN_000172e0()" identifier = (call_expression "FUN_000172e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 != 0) {\n      *(undefined4 *)(uVar2 + 4) = 0x3f52;\ncode_r0x00018770:\n      uVar21 = 0xfffffffc;\n      goto LAB_00018778;\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      *(undefined4 *)(uVar2 + 4) = 0x3f52;\ncode_r0x00018770:\n      uVar21 = 0xfffffffc;\n      goto LAB_00018778;\n    }" { (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f52;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f52" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "code_r0x00018770:\n      uVar21 = 0xfffffffc;" statement_identifier : (expression_statement "uVar21 = 0xfffffffc;" (assignment_expression "uVar21 = 0xfffffffc" identifier = number_literal) ;)) (goto_statement "goto LAB_00018778;" goto statement_identifier ;) })) (expression_statement "local_6c = param_1[1];" (assignment_expression "local_6c = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "local_5c = param_1[4];" (assignment_expression "local_5c = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) })) (expression_statement "iVar5 = local_50 - local_5c;" (assignment_expression "iVar5 = local_50 - local_5c" identifier = (binary_expression "local_50 - local_5c" identifier - identifier)) ;) (expression_statement "param_1[2] = param_1[2] + (uVar1 - local_6c);" (assignment_expression "param_1[2] = param_1[2] + (uVar1 - local_6c)" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (binary_expression "param_1[2] + (uVar1 - local_6c)" (subscript_expression "param_1[2]" identifier [ number_literal ]) + (parenthesized_expression "(uVar1 - local_6c)" ( (binary_expression "uVar1 - local_6c" identifier - identifier) )))) ;) (expression_statement "param_1[5] = param_1[5] + iVar5;" (assignment_expression "param_1[5] = param_1[5] + iVar5" (subscript_expression "param_1[5]" identifier [ number_literal ]) = (binary_expression "param_1[5] + iVar5" (subscript_expression "param_1[5]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "*(int *)(uVar2 + 0x20) = *(int *)(uVar2 + 0x20) + iVar5;" (assignment_expression "*(int *)(uVar2 + 0x20) = *(int *)(uVar2 + 0x20) + iVar5" (pointer_expression "*(int *)(uVar2 + 0x20)" * (cast_expression "(int *)(uVar2 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x20)" ( (binary_expression "uVar2 + 0x20" identifier + number_literal) )))) = (binary_expression "*(int *)(uVar2 + 0x20) + iVar5" (pointer_expression "*(int *)(uVar2 + 0x20)" * (cast_expression "(int *)(uVar2 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x20)" ( (binary_expression "uVar2 + 0x20" identifier + number_literal) )))) + identifier)) ;) (if_statement "if (((*(byte *)(uVar2 + 0xc) & 4) != 0) && (iVar5 != 0)) {\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    else {\n      iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    *(int *)(uVar2 + 0x1c) = iVar7;\n    param_1[0xc] = iVar7;\n  }" if (parenthesized_expression "(((*(byte *)(uVar2 + 0xc) & 4) != 0) && (iVar5 != 0))" ( (binary_expression "((*(byte *)(uVar2 + 0xc) & 4) != 0) && (iVar5 != 0)" (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) != 0)" ( (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" ( (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" * (cast_expression "(byte *)(uVar2 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    else {\n      iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    *(int *)(uVar2 + 0x1c) = iVar7;\n    param_1[0xc] = iVar7;\n  }" { (if_statement "if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    else {\n      iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }" if (parenthesized_expression "(*(int *)(uVar2 + 0x14) == 0)" ( (binary_expression "*(int *)(uVar2 + 0x14) == 0" (pointer_expression "*(int *)(uVar2 + 0x14)" * (cast_expression "(int *)(uVar2 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }" { (expression_statement "iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);" (assignment_expression "iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5)" identifier = (call_expression "adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5)" identifier (argument_list "(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5)" ( (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) , (binary_expression "param_1[3] - iVar5" (subscript_expression "param_1[3]" identifier [ number_literal ]) - identifier) , identifier )))) ;) }) (else_clause "else {\n      iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }" else (compound_statement "{\n      iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }" { (expression_statement "iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);" (assignment_expression "iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5)" identifier = (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5)" identifier (argument_list "(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5)" ( (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) , (binary_expression "param_1[3] - iVar5" (subscript_expression "param_1[3]" identifier [ number_literal ]) - identifier) , identifier )))) ;) }))) (expression_statement "*(int *)(uVar2 + 0x1c) = iVar7;" (assignment_expression "*(int *)(uVar2 + 0x1c) = iVar7" (pointer_expression "*(int *)(uVar2 + 0x1c)" * (cast_expression "(int *)(uVar2 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[0xc] = iVar7;" (assignment_expression "param_1[0xc] = iVar7" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "iVar7 = *(int *)(uVar2 + 0x40);" (assignment_expression "iVar7 = *(int *)(uVar2 + 0x40)" identifier = (pointer_expression "*(int *)(uVar2 + 0x40)" * (cast_expression "(int *)(uVar2 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x40)" ( (binary_expression "uVar2 + 0x40" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(uVar2 + 8) != 0) {\n    iVar7 = iVar7 + 0x40;\n  }" if (parenthesized_expression "(*(int *)(uVar2 + 8) != 0)" ( (binary_expression "*(int *)(uVar2 + 8) != 0" (pointer_expression "*(int *)(uVar2 + 8)" * (cast_expression "(int *)(uVar2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 8)" ( (binary_expression "uVar2 + 8" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    iVar7 = iVar7 + 0x40;\n  }" { (expression_statement "iVar7 = iVar7 + 0x40;" (assignment_expression "iVar7 = iVar7 + 0x40" identifier = (binary_expression "iVar7 + 0x40" identifier + number_literal)) ;) })) (expression_statement "iVar3 = *(int *)(uVar2 + 4);" (assignment_expression "iVar3 = *(int *)(uVar2 + 4)" identifier = (pointer_expression "*(int *)(uVar2 + 4)" * (cast_expression "(int *)(uVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) ))))) ;) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (if_statement "if (iVar3 == 0x3f3f) {\n    iVar7 = iVar7 + 0x80;\n  }\n  else if ((iVar3 == 0x3f47) || (iVar3 == 0x3f42)) {\n    local_4c = 0x100;\n  }" if (parenthesized_expression "(iVar3 == 0x3f3f)" ( (binary_expression "iVar3 == 0x3f3f" identifier == number_literal) )) (compound_statement "{\n    iVar7 = iVar7 + 0x80;\n  }" { (expression_statement "iVar7 = iVar7 + 0x80;" (assignment_expression "iVar7 = iVar7 + 0x80" identifier = (binary_expression "iVar7 + 0x80" identifier + number_literal)) ;) }) (else_clause "else if ((iVar3 == 0x3f47) || (iVar3 == 0x3f42)) {\n    local_4c = 0x100;\n  }" else (if_statement "if ((iVar3 == 0x3f47) || (iVar3 == 0x3f42)) {\n    local_4c = 0x100;\n  }" if (parenthesized_expression "((iVar3 == 0x3f47) || (iVar3 == 0x3f42))" ( (binary_expression "(iVar3 == 0x3f47) || (iVar3 == 0x3f42)" (parenthesized_expression "(iVar3 == 0x3f47)" ( (binary_expression "iVar3 == 0x3f47" identifier == number_literal) )) || (parenthesized_expression "(iVar3 == 0x3f42)" ( (binary_expression "iVar3 == 0x3f42" identifier == number_literal) ))) )) (compound_statement "{\n    local_4c = 0x100;\n  }" { (expression_statement "local_4c = 0x100;" (assignment_expression "local_4c = 0x100" identifier = number_literal) ;) })))) (expression_statement "param_1[0xb] = iVar7 + local_4c;" (assignment_expression "param_1[0xb] = iVar7 + local_4c" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "iVar7 + local_4c" identifier + identifier)) ;) (if_statement "if (((uVar1 - local_6c == 0 && iVar5 == 0) || (param_2 == 4)) && (uVar21 == 0)) {\n    uVar21 = 0xfffffffb;\n  }" if (parenthesized_expression "(((uVar1 - local_6c == 0 && iVar5 == 0) || (param_2 == 4)) && (uVar21 == 0))" ( (binary_expression "((uVar1 - local_6c == 0 && iVar5 == 0) || (param_2 == 4)) && (uVar21 == 0)" (parenthesized_expression "((uVar1 - local_6c == 0 && iVar5 == 0) || (param_2 == 4))" ( (binary_expression "(uVar1 - local_6c == 0 && iVar5 == 0) || (param_2 == 4)" (parenthesized_expression "(uVar1 - local_6c == 0 && iVar5 == 0)" ( (binary_expression "uVar1 - local_6c == 0 && iVar5 == 0" (binary_expression "uVar1 - local_6c == 0" (binary_expression "uVar1 - local_6c" identifier - identifier) == number_literal) && (binary_expression "iVar5 == 0" identifier == number_literal)) )) || (parenthesized_expression "(param_2 == 4)" ( (binary_expression "param_2 == 4" identifier == number_literal) ))) )) && (parenthesized_expression "(uVar21 == 0)" ( (binary_expression "uVar21 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    uVar21 = 0xfffffffb;\n  }" { (expression_statement "uVar21 = 0xfffffffb;" (assignment_expression "uVar21 = 0xfffffffb" identifier = number_literal) ;) })) (labeled_statement "LAB_00018778:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar21;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar21;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return uVar21;\n  }" { (return_statement "return uVar21;" return identifier ;) })))) comment (expression_statement "FUN_0001eba0();" (call_expression "FUN_0001eba0()" identifier (argument_list "()" ( ))) ;) })
(ERROR "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Unknown calling convention */\n\nint inflate(z_streamp strm,int flush)\n\n{\n  int iVar1;\n  Posf *pPVar2;\n  internal_state *piVar3;\n  uInt uVar4;\n  byte bVar5;\n  int iVar6;\n  uint uVar7;\n  char *pcVar8;\n  Posf *pPVar9;\n  ct_data_s cVar10;\n  int iVar11;\n  Bytef *pBVar12;\n  gz_headerp pgVar13;\n  ct_data_s cVar14;\n  ushort *puVar15;\n  byte bVar16;\n  byte bVar17;\n  undefined2 uVar18;\n  uint uVar19;\n  ct_data_s cVar20;\n  ct_data_s cVar21;\n  ct_data_s cVar22;\n  undefined2 *puVar23;\n  uint uVar24;\n  ushort uVar25;\n  byte *pbVar26;\n  Posf *pPVar27;\n  Bytef *pBVar28;\n  uInt uVar29;\n  Bytef *end;\n  byte *pbVar31;\n  int in_GS_OFFSET;\n  byte bVar32;\n  Posf *local_6c;\n  gz_headerp local_64;\n  byte *local_60;\n  Posf *local_5c;\n  Posf *local_50;\n  int local_4c;\n  uInt local_48;\n  Posf *local_40;\n  ct_data_s local_38;\n  uchar hbuf [4];\n  Bytef *pBVar30;\n  \n  bVar32 = 0;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((((strm != (z_streamp)0x0) && (strm->zalloc != (alloc_func)0x0)) &&\n      (strm->zfree != (free_func)0x0)) &&\n     ((iVar6 = inflateStateCheck(strm), iVar6 == 0 && (end = strm->next_out, end != (Bytef *)0x0))))\n  {\n    local_60 = strm->next_in;\n    pPVar2 = (Posf *)strm->avail_in;\n    if ((local_60 != (byte *)0x0) || (pPVar2 == (Posf *)0x0)) {\n      piVar3 = strm->state;\n      iVar6 = piVar3->status;\n      if (iVar6 == 0x3f3f) {\n        piVar3->status = 0x3f40;\n        iVar6 = 0x3f40;\n      }\n      local_50 = (Posf *)strm->avail_out;\n      local_64 = (gz_headerp)piVar3->window_size;\n      cVar20 = (ct_data_s)piVar3->prev;\n      local_6c = pPVar2;\n      local_5c = local_50;\nLAB_000178c9:\n      switch(iVar6) {\n      case 0x3f34:\n        uVar7 = piVar3->pending_buf_size;\n        if (uVar7 != 0) {\n          if (0xf < (uint)cVar20) goto LAB_00018ec6;\n          if (local_6c != (Posf *)0x0) goto LAB_00018ea0;\n          goto LAB_00017f30;\n        }\n        piVar3->status = 0x3f40;\n      case 0x3f40:\n_L106:\n        bVar16 = cVar20.fc;\n        if (piVar3->pending_buf != (Bytef *)0x0) {\n          cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8);\n          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 7));\n          piVar3->status = 0x3f4e;\n          goto _L120;\n        }\n        pPVar27 = (Posf *)0x0;\n        if ((uint)cVar20 < 3) {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n          local_6c = (Posf *)((int)local_6c - 1);\n          cVar20 = (ct_data_s)((int)cVar20 + 8);\n          bVar17 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = (gz_headerp)((int)&local_64->text + ((uint)bVar17 << (bVar16 & 0x1f)));\n        }\n        piVar3->pending_buf = (Bytef *)((uint)local_64 & 1);\n        uVar7 = (uint)local_64 >> 1 & 3;\n        if (uVar7 == 2) {\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          piVar3->status = 0x3f44;\n_L110:\n          for (; (uint)cVar20 < 0xe; cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n            local_6c = (Posf *)((int)local_6c - 1);\n            local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n            local_60 = local_60 + 1;\n          }\n          cVar20 = (ct_data_s)((int)cVar20 - 0xe);\n          uVar24 = ((uint)local_64 & 0x1f) + 0x101;\n          uVar7 = ((uint)local_64 >> 5 & 0x1f) + 1;\n          uVar19 = ((uint)local_64 >> 10 & 0xf) + 4;\n          local_64 = (gz_headerp)((uint)local_64 >> 0xe);\n          piVar3->prev_match = uVar24;\n          piVar3->match_available = uVar7;\n          piVar3->match_length = uVar19;\n          if ((uVar7 < 0x1f) && (uVar24 < 0x11f)) {\n            uVar7 = 0;\n            piVar3->strstart = 0;\n            piVar3->status = 0x3f45;\nLAB_000184b2:\n            uVar24 = uVar7 + 1;\n            do {\n              uVar7 = uVar24;\n              if ((uint)cVar20 < 3) {\n                if (local_6c == (Posf *)0x0) {\n                  pPVar27 = (Posf *)0x0;\n                  local_6c = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\n                local_6c = (Posf *)((int)local_6c - 1);\n                bVar16 = cVar20.fc;\n                cVar20 = (ct_data_s)((int)cVar20 + 8);\n                local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                ;\n                local_60 = local_60 + 1;\n              }\n              cVar20 = (ct_data_s)((int)cVar20 - 3);\n              piVar3->strstart = uVar7;\n              pgVar13 = (gz_headerp)((uint)local_64 >> 3);\n              *(ushort *)\n               ((int)(piVar3->dyn_ltree + -8) +\n               (uint)*(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe) * 2) = (ushort)local_64 & 7;\n              local_64 = pgVar13;\n              uVar24 = uVar7 + 1;\n            } while (uVar19 + 1 != uVar7 + 1);\nLAB_00019253:\n            if (uVar7 < 0x13) {\n              puVar15 = inflate::order + uVar7;\n              do {\n                uVar25 = *puVar15;\n                puVar15 = puVar15 + 1;\n                *(undefined2 *)((int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2) = 0;\n              } while (puVar15 != (ushort *)&UNK_000221e6);\n              piVar3->strstart = 0x13;\n            }\n            piVar3->hash_shift = 7;\n            piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n            piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n            iVar6 = inflate_table(CODES,(ushort *)&piVar3->lookahead,0x13,\n                                  (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                  (ushort *)(piVar3->dyn_ltree + 0x98));\n            if (iVar6 == 0) {\n              local_48 = 0;\n              piVar3->strstart = 0;\n              piVar3->status = 0x3f46;\nLAB_000185db:\n              uVar7 = piVar3->prev_match;\n              uVar19 = uVar7 + piVar3->match_available;\n              while (local_48 < uVar19) {\n                uVar24 = ~(-1 << ((byte)piVar3->hash_shift & 0x1f));\n                iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                cVar21._1_3_ = 0;\n                cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                uVar25 = *(ushort *)(iVar6 + 2);\n                if ((uint)cVar20 < (uint)cVar21) {\n                  if (local_6c != (Posf *)0x0) {\n                    while( true ) {\n                      pbVar26 = local_60 + 1;\n                      local_6c = (Posf *)((int)local_6c - 1);\n                      bVar16 = cVar20.fc;\n                      cVar20 = (ct_data_s)((int)cVar20 + 8);\n                      local_64 = (gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n                      iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                      cVar21._1_3_ = 0;\n                      cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                      uVar25 = *(ushort *)(iVar6 + 2);\n                      local_60 = pbVar26;\n                      if ((uint)cVar21 <= (uint)cVar20) break;\n                      if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  pPVar27 = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar16 = cVar21.fc;\n                if (uVar25 < 0x10) {\n                  local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                  cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                  piVar3->strstart = local_48 + 1;\n                  *(ushort *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2) = uVar25;\n                  local_48 = local_48 + 1;\n                }\n                else {\n                  if (uVar25 == 0x10) {\n                    if ((uint)cVar20 < (int)cVar21 + 2U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                    local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                    if (local_48 == 0) {\n                      strm->msg = "invalid bit length repeat";\n                      piVar3->status = 0x3f51;\n                      goto _L590;\n                    }\n                    uVar24 = (uint)local_64 & 3;\n                    local_64 = (gz_headerp)((uint)local_64 >> 2);\n                    cVar20 = (ct_data_s)((int)cVar20 - 2);\n                    uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22);\n                    iVar6 = uVar24 + 3;\n                  }\n                  else if (uVar25 == 0x11) {\n                    if ((uint)cVar20 < (int)cVar21 + 3U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);\n                    iVar6 = (uVar24 & 7) + 3;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 3);\n                  }\n                  else {\n                    if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);\n                    iVar6 = (uVar24 & 0x7f) + 0xb;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 7);\n                  }\n                  uVar24 = iVar6 + local_48;\n                  if (uVar19 < uVar24) {\n                    strm->msg = "invalid bit length repeat";\n                    piVar3->status = 0x3f51;\n                    goto _L590;\n                  }\n                  puVar23 = (undefined2 *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2);\n                  do {\n                    *puVar23 = uVar18;\n                    puVar23 = puVar23 + 1;\n                  } while (puVar23 != (undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2));\n                  piVar3->strstart = uVar24;\n                  local_48 = uVar24;\n                }\n              }\n              if (piVar3->status == 0x3f51) goto _L590;\n              if (piVar3->dyn_ltree[0x78].fc.freq != 0) {\n                piVar3->hash_shift = 9;\n                piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n                piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n                iVar6 = inflate_table(LENS,(ushort *)&piVar3->lookahead,uVar7,\n                                      (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                      (ushort *)(piVar3->dyn_ltree + 0x98));\n                if (iVar6 == 0) {\n                  piVar3->block_start = 6;\n                  piVar3->hash_mask = piVar3->match_start;\n                  iVar6 = inflate_table(DISTS,(ushort *)\n                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2),\n                                        piVar3->match_available,(code **)&piVar3->match_start,\n                                        (uint *)&piVar3->block_start,\n                                        (ushort *)(piVar3->dyn_ltree + 0x98));\n                  if (iVar6 == 0) {\n                    piVar3->status = 0x3f47;\n                    if (flush != 6) {\n_L113:\n                      do {\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    pPVar27 = (Posf *)0x0;\n                  }\n                  else {\n                    pPVar27 = (Posf *)0xfffffffd;\n                    strm->msg = "invalid distances set";\n                    piVar3->status = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar8 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              pPVar27 = (Posf *)0xfffffffd;\n              strm->msg = "invalid code -- missing end-of-block";\n              piVar3->status = 0x3f51;\n            }\n            else {\n              strm->msg = "invalid code lengths set";\n              piVar3->status = 0x3f51;\n              pPVar27 = (Posf *)0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar8 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar7 == 3) {\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          pPVar27 = (Posf *)0xfffffffd;\n          strm->msg = "invalid block type";\n          piVar3->status = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar7 == 1) {\n          piVar3->hash_shift = 9;\n          piVar3->block_start = 5;\n          piVar3->status = 0x3f47;\n          piVar3->hash_bits = (uInt)lenfix_3685;\n          piVar3->hash_mask = (uInt)distfix_3686;\n          if (flush != 6) {\n            local_64 = (gz_headerp)((uint)local_64 >> 3);\n            cVar20 = (ct_data_s)((int)cVar20 - 3);\n            goto _L113;\n          }\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          goto LAB_00017f32;\n        }\n        local_64 = (gz_headerp)((uint)local_64 >> 3);\n        piVar3->status = 0x3f41;\n        cVar20 = (ct_data_s)((int)cVar20 - 3);\n_L107:\n        local_64 = (gz_headerp)((uint)local_64 >> (cVar20.fc & 7));\n        for (cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8); (uint)cVar20 < 0x20;\n            cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n          local_6c = (Posf *)((int)local_6c - 1);\n          local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n          local_60 = local_60 + 1;\n        }\n        pPVar27 = (Posf *)((uint)local_64 & 0xffff);\n        if (pPVar27 != (Posf *)((uint)local_64 >> 0x10 ^ 0xffff)) {\n          pcVar8 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        piVar3->head = pPVar27;\n        piVar3->status = 0x3f42;\n        if (flush == 6) {\n          pPVar27 = (Posf *)0x0;\n          cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n          cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n          local_64 = (gz_headerp)0x0;\n          goto LAB_00017f32;\n        }\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\nLAB_00018557:\n        piVar3->status = 0x3f43;\nLAB_00018562:\n        if (pPVar27 == (Posf *)0x0) {\n          piVar3->status = 0x3f3f;\n          goto _L105;\n        }\n        if (local_6c <= pPVar27) {\n          pPVar27 = local_6c;\n        }\n        if (local_5c < pPVar27) {\n          pPVar27 = local_5c;\n        }\n        if (pPVar27 == (Posf *)0x0) goto LAB_00017f30;\n        memcpy(end,local_60,(size_t)pPVar27);\n        local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n        local_60 = local_60 + (int)pPVar27;\n        local_5c = (Posf *)((int)local_5c - (int)pPVar27);\n        piVar3->head = (Posf *)((int)piVar3->head - (int)pPVar27);\n        iVar6 = piVar3->status;\n        end = end + (int)pPVar27;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar7 = piVar3->pending;\n        if ((uVar7 & 0x400) == 0) goto LAB_000181ae;\n        if ((uint)cVar20 < 0x10) goto LAB_0001829d;\n        goto LAB_000182ea;\n      case 0x3f39:\n        uVar7 = piVar3->pending;\n        goto LAB_000181cb;\n      case 0x3f3a:\n        uVar7 = piVar3->pending;\n        goto LAB_0001832f;\n      case 0x3f3b:\n        uVar7 = piVar3->pending;\n        goto LAB_0001835c;\n      case 0x3f3c:\n        uVar7 = piVar3->pending;\n        goto LAB_00018382;\n      case 0x3f3d:\n        pgVar13 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto _L104;\n      case 0x3f3f:\n        goto _L105;\n      case 0x3f41:\n        goto _L107;\n      case 0x3f42:\n        pPVar27 = piVar3->head;\n        goto LAB_00018557;\n      case 0x3f43:\n        pPVar27 = piVar3->head;\n        goto LAB_00018562;\n      case 0x3f44:\n        goto _L110;\n      case 0x3f45:\n        uVar7 = piVar3->strstart;\n        uVar19 = piVar3->match_length;\n        if (uVar19 <= uVar7) goto LAB_00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        local_48 = piVar3->strstart;\n        goto LAB_000185db;\n      case 0x3f47:\n        goto _L113;\n      case 0x3f48:\n        goto _L114;\n      case 0x3f49:\n        cVar21 = (ct_data_s)piVar3->hash_size;\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto _L116;\n      case 0x3f4b:\n        cVar21 = (ct_data_s)piVar3->hash_size;\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto _L118;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\n_L120:\n        uVar7 = piVar3->pending_buf_size;\n        if (uVar7 == 0) goto LAB_00018e20;\n        if (0x1f < (uint)cVar20) goto LAB_00017996;\n        if (local_6c != (Posf *)0x0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar7 = piVar3->pending_buf_size;\n        goto LAB_000183ff;\n      case 0x3f50:\n        pPVar27 = (Posf *)0x1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto _L590;\n      case 0x3f52:\n        goto _L593;\n      }\n    }\n  }\n  pPVar27 = (Posf *)0xfffffffe;\n  goto LAB_00018778;\n  while (local_6c != (Posf *)0x0) {\nLAB_00018ea0:\n    pbVar26 = local_60 + 1;\n    local_6c = (Posf *)((int)local_6c - 1);\n    bVar16 = cVar20.fc;\n    cVar20 = (ct_data_s)((int)cVar20 + 8);\n    local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n    local_60 = pbVar26;\n    if (0xf < (uint)cVar20) goto LAB_00018ec6;\n  }\n  goto LAB_000190a2;\nLAB_00018ec6:\n  if (((uVar7 & 2) == 0) || (local_64 != (gz_headerp)0x8b1f)) {\n    piVar3->pending = 0;\n    if (*(int *)&piVar3->method != 0) {\n      *(undefined4 *)(*(int *)&piVar3->method + 0x30) = 0xffffffff;\n    }\n    if (((uVar7 & 1) == 0) ||\n       (uVar7 = ((uint)local_64 & 0xff) * 0x100 + ((uint)local_64 >> 8),\n       uVar7 != (uVar7 / 0x1f) * 0x1f)) {\n      pcVar8 = "incorrect header check";\nLAB_000188eb:\n      pPVar27 = (Posf *)0xfffffffd;\n      strm->msg = pcVar8;\n      piVar3->status = 0x3f51;\n    }\n    else {\n      if (((uint)local_64 & 0xf) == 8) {\n        local_64 = (gz_headerp)((uint)local_64 >> 4);\n        cVar20 = (ct_data_s)((int)cVar20 - 4);\n        uVar7 = ((uint)local_64 & 0xf) + 8;\n        if (piVar3->last_flush == 0) {\n          piVar3->last_flush = uVar7;\n          if (0xf < uVar7) {\nLAB_00019879:\n            pcVar8 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar7) || ((uint)piVar3->last_flush < uVar7)) goto LAB_00019879;\n        piVar3->wrap = 1 << (sbyte)uVar7;\n        pgVar13 = (gz_headerp)adler32(0,(Bytef *)0x0,0);\n        piVar3->gzhead = pgVar13;\n        strm->adler = (uLong)pgVar13;\n        if (((uint)local_64 & 0x200) == 0) {\n          piVar3->status = 0x3f3f;\n          cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n          cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n          local_64 = (gz_headerp)0x0;\n          goto _L105;\n        }\n        local_64 = (gz_headerp)0x0;\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        piVar3->status = 0x3f3d;\n        do {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n          local_6c = (Posf *)((int)local_6c - 1);\n          bVar16 = cVar20.fc;\n          cVar20 = (ct_data_s)((int)cVar20 + 8);\n          pgVar13 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = pgVar13;\n        } while ((uint)cVar20 < 0x20);\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\n        pgVar13 = (gz_headerp)\n                  (((uint)pgVar13 & 0xff00) * 0x100 +\n                  (int)pgVar13 * 0x1000000 + ((uint)pgVar13 >> 0x18) + ((uint)pgVar13 >> 8 & 0xff00)\n                  );\n        piVar3->gzhead = pgVar13;\n        strm->adler = (uLong)pgVar13;\n        piVar3->status = 0x3f3e;\n_L104:\n        if (piVar3->pending_out != (Bytef *)0x0) {\n          pgVar13 = (gz_headerp)adler32(0,(Bytef *)0x0,0);\n          piVar3->gzhead = pgVar13;\n          strm->adler = (uLong)pgVar13;\n          piVar3->status = 0x3f3f;\n          goto _L105;\n        }\n        pPVar27 = (Posf *)0x2;\n        strm->next_out = end;\n        strm->avail_out = (uInt)local_5c;\n        strm->next_in = local_60;\n        strm->avail_in = (uInt)local_6c;\n        piVar3->prev = (Posf *)cVar20;\n        piVar3->window_size = (ulg)local_64;\n        goto LAB_00018778;\n      }\n      pcVar8 = "unknown compression method";\nLAB_00017b45:\n      pPVar27 = (Posf *)0xfffffffd;\n      strm->msg = pcVar8;\n      piVar3->status = 0x3f51;\n    }\n  }\n  else {\n    if (piVar3->last_flush == 0) {\n      piVar3->last_flush = 0xf;\n    }\n    cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n    cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n    pgVar13 = (gz_headerp)crc32(0,(uchar *)0x0,0);\n    hbuf[0] = '\x1f';\n    hbuf[1] = 0x8b;\n    piVar3->gzhead = pgVar13;\n    pgVar13 = (gz_headerp)crc32((ulong)pgVar13,hbuf,2);\n    piVar3->gzhead = pgVar13;\n    piVar3->status = 0x3f35;\n    local_64 = (gz_headerp)0x0;\n    do {\n      if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n      local_6c = (Posf *)((int)local_6c - 1);\n      bVar16 = cVar20.fc;\n      cVar20 = (ct_data_s)((int)cVar20 + 8);\n      local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n      local_60 = local_60 + 1;\njoined_r0x0001879b:\n    } while ((uint)cVar20 < 0x10);\n    piVar3->pending = (ulg)local_64;\n    if ((char)local_64 == '\b') {\n      if (((uint)local_64 & 0xe000) != 0) {\n        pcVar8 = "unknown header flags set";\n        goto LAB_000188eb;\n      }\n      if (*(uint **)&piVar3->method != (uint *)0x0) {\n        **(uint **)&piVar3->method = (uint)local_64 >> 8 & 1;\n      }\n      if ((((uint)local_64 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        hbuf._0_2_ = SUB42(local_64,0);\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2);\n        piVar3->gzhead = pgVar13;\n      }\n      local_64 = (gz_headerp)0x0;\n      cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n      cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n      piVar3->status = 0x3f36;\n      do {\n        if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n        local_6c = (Posf *)((int)local_6c - 1);\n        bVar16 = cVar20.fc;\n        cVar20 = (ct_data_s)((int)cVar20 + 8);\n        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n        local_60 = local_60 + 1;\njoined_r0x00018053:\n      } while ((uint)cVar20 < 0x20);\n      if (*(int *)&piVar3->method != 0) {\n        *(gz_headerp *)(*(int *)&piVar3->method + 4) = local_64;\n      }\n      if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        hbuf._0_2_ = SUB42(local_64,0);\n        hbuf[2] = (uchar)((uint)local_64 >> 0x10);\n        hbuf[3] = (uchar)((uint)local_64 >> 0x18);\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,4);\n        piVar3->gzhead = pgVar13;\n      }\n      local_64 = (gz_headerp)0x0;\n      cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n      cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n      piVar3->status = 0x3f37;\n      do {\n        if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n        local_6c = (Posf *)((int)local_6c - 1);\n        bVar16 = cVar20.fc;\n        cVar20 = (ct_data_s)((int)cVar20 + 8);\n        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n        local_60 = local_60 + 1;\njoined_r0x000180e3:\n      } while ((uint)cVar20 < 0x10);\n      iVar6 = *(int *)&piVar3->method;\n      if (iVar6 != 0) {\n        *(uint *)(iVar6 + 8) = (uint)local_64 & 0xff;\n        *(uint *)(iVar6 + 0xc) = (uint)local_64 >> 8;\n      }\n      uVar7 = piVar3->pending;\n      if (((uVar7 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        hbuf._0_2_ = SUB42(local_64,0);\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2);\n        piVar3->gzhead = pgVar13;\n        uVar7 = piVar3->pending;\n      }\n      piVar3->status = 0x3f38;\n      if ((uVar7 & 0x400) == 0) {\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\nLAB_000181ae:\n        if (*(int *)&piVar3->method != 0) {\n          *(undefined4 *)(*(int *)&piVar3->method + 0x10) = 0;\n        }\n        goto LAB_000181c0;\n      }\n      local_64 = (gz_headerp)0x0;\n      cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n      cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\nLAB_0001829d:\n      if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n      do {\n        pbVar26 = local_60 + 1;\n        local_6c = (Posf *)((int)local_6c - 1);\n        bVar16 = cVar20.fc;\n        cVar20 = (ct_data_s)((int)cVar20 + 8);\n        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n        local_60 = pbVar26;\n        if (0xf < (uint)cVar20) goto LAB_000182ea;\n      } while (local_6c != (Posf *)0x0);\n      pPVar27 = (Posf *)0x0;\n    }\n    else {\n      strm->msg = "unknown compression method";\n      piVar3->status = 0x3f51;\n_L590:\n      pPVar27 = (Posf *)0xfffffffd;\n    }\n  }\n  goto LAB_00017f32;\nLAB_000182ea:\n  piVar3->head = (Posf *)local_64;\n  if (*(int *)&piVar3->method != 0) {\n    *(gz_headerp *)(*(int *)&piVar3->method + 0x14) = local_64;\n  }\n  if (((uVar7 & 0x200) == 0) || ((piVar3->pending_buf_size & 4) == 0)) {\n    cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n    cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n    local_64 = (gz_headerp)0x0;\n  }\n  else {\n    cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n    cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n    hbuf._0_2_ = SUB42(local_64,0);\n    pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2);\n    piVar3->gzhead = pgVar13;\n    local_64 = (gz_headerp)0x0;\n    uVar7 = piVar3->pending;\n  }\nLAB_000181c0:\n  piVar3->status = 0x3f39;\nLAB_000181cb:\n  if ((uVar7 & 0x400) == 0) {\nLAB_0001826a:\n    piVar3->head = (Posf *)0x0;\n    piVar3->status = 0x3f3a;\nLAB_0001832f:\n    if ((uVar7 & 0x800) == 0) {\n      if (*(int *)&piVar3->method != 0) {\n        *(undefined4 *)(*(int *)&piVar3->method + 0x1c) = 0;\n      }\n    }\n    else {\n      pPVar27 = (Posf *)0x0;\n      if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n      do {\n        iVar6 = *(int *)&piVar3->method;\n        pPVar27 = (Posf *)((int)pPVar27 + 1);\n        bVar16 = (local_60 + -1)[(int)pPVar27];\n        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x1c), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x20))) {\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }\n      } while ((bVar16 != 0) && (pPVar27 < local_6c));\n      if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);\n        piVar3->gzhead = pgVar13;\n      }\n      local_60 = local_60 + (int)pPVar27;\n      local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n      if (bVar16 != 0) goto LAB_00017f30;\n      uVar7 = piVar3->pending;\n    }\n    piVar3->head = (Posf *)0x0;\n    piVar3->status = 0x3f3b;\nLAB_0001835c:\n    if ((uVar7 & 0x1000) == 0) {\n      if (*(int *)&piVar3->method != 0) {\n        *(undefined4 *)(*(int *)&piVar3->method + 0x24) = 0;\n      }\n    }\n    else {\n      pPVar27 = (Posf *)0x0;\n      if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n      do {\n        iVar6 = *(int *)&piVar3->method;\n        pPVar27 = (Posf *)((int)pPVar27 + 1);\n        bVar16 = (local_60 + -1)[(int)pPVar27];\n        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x24), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x28))) {\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }\n      } while ((bVar16 != 0) && (pPVar27 < local_6c));\n      if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);\n        piVar3->gzhead = pgVar13;\n      }\n      local_60 = local_60 + (int)pPVar27;\n      local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n      if (bVar16 != 0) goto LAB_00017f30;\n      uVar7 = piVar3->pending;\n    }\n    piVar3->status = 0x3f3c;\nLAB_00018382:\n    if ((uVar7 & 0x200) == 0) {\nLAB_0001838b:\n      iVar6 = *(int *)&piVar3->method;\n      if (iVar6 != 0) {\n        *(undefined4 *)(iVar6 + 0x30) = 1;\n        *(uint *)(iVar6 + 0x2c) = (int)uVar7 >> 9 & 1;\n      }\n      pgVar13 = (gz_headerp)crc32(0,(uchar *)0x0,0);\n      piVar3->gzhead = pgVar13;\n      strm->adler = (uLong)pgVar13;\n      piVar3->status = 0x3f3f;\n      goto _L105;\n    }\n    if ((uint)cVar20 < 0x10) {\n      if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n      do {\n        pbVar26 = local_60 + 1;\n        local_6c = (Posf *)((int)local_6c - 1);\n        bVar16 = cVar20.fc;\n        cVar20 = (ct_data_s)((int)cVar20 + 8);\n        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n        local_60 = pbVar26;\n        if (0xf < (uint)cVar20) goto LAB_00018a2e;\n      } while (local_6c != (Posf *)0x0);\n      pPVar27 = (Posf *)0x0;\n    }\n    else {\nLAB_00018a2e:\n      if (((piVar3->pending_buf_size & 4) == 0) ||\n         ((gz_headerp)(uint)*(ushort *)&piVar3->gzhead == local_64)) {\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\n        goto LAB_0001838b;\n      }\n      strm->msg = "header crc mismatch";\n      piVar3->status = 0x3f51;\n      pPVar27 = (Posf *)0xfffffffd;\n    }\n  }\n  else {\n    pPVar27 = piVar3->head;\n    pPVar9 = local_6c;\n    if (pPVar27 < local_6c) {\n      pPVar9 = pPVar27;\n    }\n    if (pPVar9 != (Posf *)0x0) {\n      iVar6 = *(int *)&piVar3->method;\n      if ((iVar6 != 0) && (*(int *)(iVar6 + 0x10) != 0)) {\n        iVar11 = *(int *)(iVar6 + 0x14) - (int)pPVar27;\n        pPVar27 = (Posf *)(*(uint *)(iVar6 + 0x18) - iVar11);\n        if ((uint)((int)pPVar9 + iVar11) <= *(uint *)(iVar6 + 0x18)) {\n          pPVar27 = pPVar9;\n        }\n        memcpy((void *)(iVar11 + *(int *)(iVar6 + 0x10)),local_60,(size_t)pPVar27);\n        uVar7 = piVar3->pending;\n      }\n      if (((uVar7 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar9);\n        piVar3->gzhead = pgVar13;\n      }\n      local_6c = (Posf *)((int)local_6c - (int)pPVar9);\n      local_60 = local_60 + (int)pPVar9;\n      pPVar27 = (Posf *)((int)piVar3->head - (int)pPVar9);\n      piVar3->head = pPVar27;\n    }\n    if (pPVar27 == (Posf *)0x0) {\n      uVar7 = piVar3->pending;\n      goto LAB_0001826a;\n    }\nLAB_00017f30:\n    pPVar27 = (Posf *)0x0;\n  }\n  goto LAB_00017f32;\nLAB_00017996:\n  uVar29 = (int)local_50 - (int)local_5c;\n  strm->total_out = strm->total_out + uVar29;\n  piVar3->gzindex = piVar3->gzindex + uVar29;\n  uVar19 = uVar7 & 4;\n  if ((uVar19 != 0) && (uVar29 != 0)) {\n    if (piVar3->pending == 0) {\n      pgVar13 = (gz_headerp)adler32((uLong)piVar3->gzhead,end + -uVar29,uVar29);\n    }\n    else {\n      pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,end + -uVar29,uVar29);\n    }\n    piVar3->gzhead = pgVar13;\n    strm->adler = (uLong)pgVar13;\n    uVar7 = piVar3->pending_buf_size;\n    uVar19 = uVar7 & 4;\n  }\n  if (uVar19 != 0) {\n    pgVar13 = local_64;\n    if (piVar3->pending == 0) {\n      pgVar13 = (gz_headerp)\n                (((uint)local_64 >> 0x18) + (int)local_64 * 0x1000000 +\n                 ((uint)local_64 >> 8 & 0xff00) + ((uint)local_64 & 0xff00) * 0x100);\n    }\n    if (piVar3->gzhead != pgVar13) {\n      strm->msg = "incorrect data check";\n      piVar3->status = 0x3f51;\n      pPVar27 = (Posf *)0xfffffffd;\n      local_50 = local_5c;\n      goto LAB_00017f32;\n    }\n  }\n  cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n  cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n  local_64 = (gz_headerp)0x0;\n  local_50 = local_5c;\nLAB_00018e20:\n  piVar3->status = 0x3f4f;\nLAB_000183ff:\n  if ((uVar7 != 0) && (piVar3->pending != 0)) {\n    for (; (uint)cVar20 < 0x20; cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n      if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n      local_6c = (Posf *)((int)local_6c - 1);\n      local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n      local_60 = local_60 + 1;\n    }\n    if ((gz_headerp)piVar3->gzindex != local_64) {\n      strm->msg = "incorrect length check";\n      piVar3->status = 0x3f51;\n      pPVar27 = (Posf *)0xfffffffd;\n      goto LAB_00017f32;\n    }\n    cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n    cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n    local_64 = (gz_headerp)0x0;\n  }\n  pPVar27 = (Posf *)0x1;\n  piVar3->status = 0x3f50;\n  goto LAB_00017f32;\nLAB_00018d40:\n  pPVar27 = (Posf *)0x0;\n  local_60 = pbVar26;\n  goto LAB_00017f32;\ncode_r0x00018d1f:\n  piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n  piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n  piVar3->status = 0x3f3f;\n_L105:\n  if (flush - 5U < 2) goto LAB_00017f30;\n  goto _L106;\n  while (local_6c != (Posf *)0x0) {\nLAB_00017970:\n    pbVar26 = local_60 + 1;\n    local_6c = (Posf *)((int)local_6c - 1);\n    bVar32 = cVar20.fc;\n    cVar20 = (ct_data_s)((int)cVar20 + 8);\n    local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar32 & 0x1f)));\n    local_60 = pbVar26;\n    if (0x1f < (uint)cVar20) goto LAB_00017996;\n  }\nLAB_000190a2:\n  pPVar27 = (Posf *)0x0;\n  local_60 = pbVar26;\nLAB_00017f32:\n  strm->next_in = local_60;\n  strm->next_out = end;\n  strm->avail_in = (uInt)local_6c;\n  strm->avail_out = (uInt)local_5c;\n  piVar3->window_size = (ulg)local_64;\n  piVar3->prev = (Posf *)cVar20;\n  if ((piVar3->w_size != 0) ||\n     (((local_5c != local_50 && ((uint)piVar3->status < 0x3f51)) &&\n      (((uint)piVar3->status < 0x3f4e || (flush != 4)))))) {\n    iVar6 = updatewindow(strm,end,(int)local_50 - (int)local_5c);\n    if (iVar6 != 0) {\n      piVar3->status = 0x3f52;\n_L593:\n      pPVar27 = (Posf *)0xfffffffc;\n      goto LAB_00018778;\n    }\n    local_6c = (Posf *)strm->avail_in;\n    local_5c = (Posf *)strm->avail_out;\n  }\n  uVar29 = (int)local_50 - (int)local_5c;\n  strm->total_in = strm->total_in + ((int)pPVar2 - (int)local_6c);\n  strm->total_out = strm->total_out + uVar29;\n  piVar3->gzindex = piVar3->gzindex + uVar29;\n  if (((piVar3->pending_buf_size & 4) != 0) && (uVar29 != 0)) {\n    if (piVar3->pending == 0) {\n      pgVar13 = (gz_headerp)adler32((uLong)piVar3->gzhead,strm->next_out + -uVar29,uVar29);\n    }\n    else {\n      pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,strm->next_out + -uVar29,uVar29);\n    }\n    piVar3->gzhead = pgVar13;\n    strm->adler = (uLong)pgVar13;\n  }\n  pPVar9 = piVar3->prev;\n  if (piVar3->pending_buf != (Bytef *)0x0) {\n    pPVar9 = pPVar9 + 0x20;\n  }\n  iVar6 = piVar3->status;\n  local_4c = 0;\n  if (iVar6 == 0x3f3f) {\n    pPVar9 = pPVar9 + 0x40;\n  }\n  else if ((iVar6 == 0x3f47) || (iVar6 == 0x3f42)) {\n    local_4c = 0x100;\n  }\n  strm->data_type = (int)pPVar9 + local_4c;\n  if ((((int)pPVar2 - (int)local_6c == 0 && uVar29 == 0) || (flush == 4)) &&\n     (pPVar27 == (Posf *)0x0)) {\n    pPVar27 = (Posf *)0xfffffffb;\n  }\nLAB_00018778:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (int)pPVar27;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" comment comment primitive_type (function_declarator "inflate(z_streamp strm,int flush)" identifier (parameter_list "(z_streamp strm,int flush)" ( (parameter_declaration "z_streamp strm" type_identifier identifier) , (parameter_declaration "int flush" primitive_type identifier) ))) { (declaration "int iVar1;" primitive_type identifier ;) (declaration "Posf *pPVar2;" type_identifier (pointer_declarator "*pPVar2" * identifier) ;) (declaration "internal_state *piVar3;" type_identifier (pointer_declarator "*piVar3" * identifier) ;) (declaration "uInt uVar4;" type_identifier identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "Posf *pPVar9;" type_identifier (pointer_declarator "*pPVar9" * identifier) ;) (declaration "ct_data_s cVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "Bytef *pBVar12;" type_identifier (pointer_declarator "*pBVar12" * identifier) ;) (declaration "gz_headerp pgVar13;" type_identifier identifier ;) (declaration "ct_data_s cVar14;" type_identifier identifier ;) (declaration "ushort *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "byte bVar16;" type_identifier identifier ;) (declaration "byte bVar17;" type_identifier identifier ;) (declaration "undefined2 uVar18;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "ct_data_s cVar20;" type_identifier identifier ;) (declaration "ct_data_s cVar21;" type_identifier identifier ;) (declaration "ct_data_s cVar22;" type_identifier identifier ;) (declaration "undefined2 *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "uint uVar24;" type_identifier identifier ;) (declaration "ushort uVar25;" type_identifier identifier ;) (declaration "byte *pbVar26;" type_identifier (pointer_declarator "*pbVar26" * identifier) ;) (declaration "Posf *pPVar27;" type_identifier (pointer_declarator "*pPVar27" * identifier) ;) (declaration "Bytef *pBVar28;" type_identifier (pointer_declarator "*pBVar28" * identifier) ;) (declaration "uInt uVar29;" type_identifier identifier ;) (declaration "Bytef *end;" type_identifier (pointer_declarator "*end" * identifier) ;) (declaration "byte *pbVar31;" type_identifier (pointer_declarator "*pbVar31" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "byte bVar32;" type_identifier identifier ;) (declaration "Posf *local_6c;" type_identifier (pointer_declarator "*local_6c" * identifier) ;) (declaration "gz_headerp local_64;" type_identifier identifier ;) (declaration "byte *local_60;" type_identifier (pointer_declarator "*local_60" * identifier) ;) (declaration "Posf *local_5c;" type_identifier (pointer_declarator "*local_5c" * identifier) ;) (declaration "Posf *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "uInt local_48;" type_identifier identifier ;) (declaration "Posf *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "ct_data_s local_38;" type_identifier identifier ;) (declaration "uchar hbuf [4];" type_identifier (array_declarator "hbuf [4]" identifier [ number_literal ]) ;) (declaration "Bytef *pBVar30;" type_identifier (pointer_declarator "*pBVar30" * identifier) ;) (expression_statement "bVar32 = 0;" (assignment_expression "bVar32 = 0" identifier = number_literal) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((((strm != (z_streamp)0x0) && (strm->zalloc != (alloc_func)0x0)) &&\n      (strm->zfree != (free_func)0x0)) &&\n     ((iVar6 = inflateStateCheck(strm), iVar6 == 0 && (end = strm->next_out, end != (Bytef *)0x0))))\n  {\n    local_60 = strm->next_in;\n    pPVar2 = (Posf *)strm->avail_in;\n    if ((local_60 != (byte *)0x0) || (pPVar2 == (Posf *)0x0)) {\n      piVar3 = strm->state;\n      iVar6 = piVar3->status;\n      if (iVar6 == 0x3f3f) {\n        piVar3->status = 0x3f40;\n        iVar6 = 0x3f40;\n      }\n      local_50 = (Posf *)strm->avail_out;\n      local_64 = (gz_headerp)piVar3->window_size;\n      cVar20 = (ct_data_s)piVar3->prev;\n      local_6c = pPVar2;\n      local_5c = local_50;\nLAB_000178c9:\n      switch(iVar6) {\n      case 0x3f34:\n        uVar7 = piVar3->pending_buf_size;\n        if (uVar7 != 0) {\n          if (0xf < (uint)cVar20) goto LAB_00018ec6;\n          if (local_6c != (Posf *)0x0) goto LAB_00018ea0;\n          goto LAB_00017f30;\n        }\n        piVar3->status = 0x3f40;\n      case 0x3f40:\n_L106:\n        bVar16 = cVar20.fc;\n        if (piVar3->pending_buf != (Bytef *)0x0) {\n          cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8);\n          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 7));\n          piVar3->status = 0x3f4e;\n          goto _L120;\n        }\n        pPVar27 = (Posf *)0x0;\n        if ((uint)cVar20 < 3) {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n          local_6c = (Posf *)((int)local_6c - 1);\n          cVar20 = (ct_data_s)((int)cVar20 + 8);\n          bVar17 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = (gz_headerp)((int)&local_64->text + ((uint)bVar17 << (bVar16 & 0x1f)));\n        }\n        piVar3->pending_buf = (Bytef *)((uint)local_64 & 1);\n        uVar7 = (uint)local_64 >> 1 & 3;\n        if (uVar7 == 2) {\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          piVar3->status = 0x3f44;\n_L110:\n          for (; (uint)cVar20 < 0xe; cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n            local_6c = (Posf *)((int)local_6c - 1);\n            local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n            local_60 = local_60 + 1;\n          }\n          cVar20 = (ct_data_s)((int)cVar20 - 0xe);\n          uVar24 = ((uint)local_64 & 0x1f) + 0x101;\n          uVar7 = ((uint)local_64 >> 5 & 0x1f) + 1;\n          uVar19 = ((uint)local_64 >> 10 & 0xf) + 4;\n          local_64 = (gz_headerp)((uint)local_64 >> 0xe);\n          piVar3->prev_match = uVar24;\n          piVar3->match_available = uVar7;\n          piVar3->match_length = uVar19;\n          if ((uVar7 < 0x1f) && (uVar24 < 0x11f)) {\n            uVar7 = 0;\n            piVar3->strstart = 0;\n            piVar3->status = 0x3f45;\nLAB_000184b2:\n            uVar24 = uVar7 + 1;\n            do {\n              uVar7 = uVar24;\n              if ((uint)cVar20 < 3) {\n                if (local_6c == (Posf *)0x0) {\n                  pPVar27 = (Posf *)0x0;\n                  local_6c = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\n                local_6c = (Posf *)((int)local_6c - 1);\n                bVar16 = cVar20.fc;\n                cVar20 = (ct_data_s)((int)cVar20 + 8);\n                local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                ;\n                local_60 = local_60 + 1;\n              }\n              cVar20 = (ct_data_s)((int)cVar20 - 3);\n              piVar3->strstart = uVar7;\n              pgVar13 = (gz_headerp)((uint)local_64 >> 3);\n              *(ushort *)\n               ((int)(piVar3->dyn_ltree + -8) +\n               (uint)*(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe) * 2) = (ushort)local_64 & 7;\n              local_64 = pgVar13;\n              uVar24 = uVar7 + 1;\n            } while (uVar19 + 1 != uVar7 + 1);\nLAB_00019253:\n            if (uVar7 < 0x13) {\n              puVar15 = inflate::order + uVar7;\n              do {\n                uVar25 = *puVar15;\n                puVar15 = puVar15 + 1;\n                *(undefined2 *)((int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2) = 0;\n              } while (puVar15 != (ushort *)&UNK_000221e6);\n              piVar3->strstart = 0x13;\n            }\n            piVar3->hash_shift = 7;\n            piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n            piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n            iVar6 = inflate_table(CODES,(ushort *)&piVar3->lookahead,0x13,\n                                  (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                  (ushort *)(piVar3->dyn_ltree + 0x98));\n            if (iVar6 == 0) {\n              local_48 = 0;\n              piVar3->strstart = 0;\n              piVar3->status = 0x3f46;\nLAB_000185db:\n              uVar7 = piVar3->prev_match;\n              uVar19 = uVar7 + piVar3->match_available;\n              while (local_48 < uVar19) {\n                uVar24 = ~(-1 << ((byte)piVar3->hash_shift & 0x1f));\n                iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                cVar21._1_3_ = 0;\n                cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                uVar25 = *(ushort *)(iVar6 + 2);\n                if ((uint)cVar20 < (uint)cVar21) {\n                  if (local_6c != (Posf *)0x0) {\n                    while( true ) {\n                      pbVar26 = local_60 + 1;\n                      local_6c = (Posf *)((int)local_6c - 1);\n                      bVar16 = cVar20.fc;\n                      cVar20 = (ct_data_s)((int)cVar20 + 8);\n                      local_64 = (gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n                      iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                      cVar21._1_3_ = 0;\n                      cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                      uVar25 = *(ushort *)(iVar6 + 2);\n                      local_60 = pbVar26;\n                      if ((uint)cVar21 <= (uint)cVar20) break;\n                      if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  pPVar27 = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar16 = cVar21.fc;\n                if (uVar25 < 0x10) {\n                  local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                  cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                  piVar3->strstart = local_48 + 1;\n                  *(ushort *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2) = uVar25;\n                  local_48 = local_48 + 1;\n                }\n                else {\n                  if (uVar25 == 0x10) {\n                    if ((uint)cVar20 < (int)cVar21 + 2U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                    local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                    if (local_48 == 0) {\n                      strm->msg = "invalid bit length repeat";\n                      piVar3->status = 0x3f51;\n                      goto _L590;\n                    }\n                    uVar24 = (uint)local_64 & 3;\n                    local_64 = (gz_headerp)((uint)local_64 >> 2);\n                    cVar20 = (ct_data_s)((int)cVar20 - 2);\n                    uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22);\n                    iVar6 = uVar24 + 3;\n                  }\n                  else if (uVar25 == 0x11) {\n                    if ((uint)cVar20 < (int)cVar21 + 3U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);\n                    iVar6 = (uVar24 & 7) + 3;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 3);\n                  }\n                  else {\n                    if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);\n                    iVar6 = (uVar24 & 0x7f) + 0xb;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 7);\n                  }\n                  uVar24 = iVar6 + local_48;\n                  if (uVar19 < uVar24) {\n                    strm->msg = "invalid bit length repeat";\n                    piVar3->status = 0x3f51;\n                    goto _L590;\n                  }\n                  puVar23 = (undefined2 *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2);\n                  do {\n                    *puVar23 = uVar18;\n                    puVar23 = puVar23 + 1;\n                  } while (puVar23 != (undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2));\n                  piVar3->strstart = uVar24;\n                  local_48 = uVar24;\n                }\n              }\n              if (piVar3->status == 0x3f51) goto _L590;\n              if (piVar3->dyn_ltree[0x78].fc.freq != 0) {\n                piVar3->hash_shift = 9;\n                piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n                piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n                iVar6 = inflate_table(LENS,(ushort *)&piVar3->lookahead,uVar7,\n                                      (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                      (ushort *)(piVar3->dyn_ltree + 0x98));\n                if (iVar6 == 0) {\n                  piVar3->block_start = 6;\n                  piVar3->hash_mask = piVar3->match_start;\n                  iVar6 = inflate_table(DISTS,(ushort *)\n                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2),\n                                        piVar3->match_available,(code **)&piVar3->match_start,\n                                        (uint *)&piVar3->block_start,\n                                        (ushort *)(piVar3->dyn_ltree + 0x98));\n                  if (iVar6 == 0) {\n                    piVar3->status = 0x3f47;\n                    if (flush != 6) {\n_L113:\n                      do {\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    pPVar27 = (Posf *)0x0;\n                  }\n                  else {\n                    pPVar27 = (Posf *)0xfffffffd;\n                    strm->msg = "invalid distances set";\n                    piVar3->status = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar8 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              pPVar27 = (Posf *)0xfffffffd;\n              strm->msg = "invalid code -- missing end-of-block";\n              piVar3->status = 0x3f51;\n            }\n            else {\n              strm->msg = "invalid code lengths set";\n              piVar3->status = 0x3f51;\n              pPVar27 = (Posf *)0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar8 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar7 == 3) {\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          pPVar27 = (Posf *)0xfffffffd;\n          strm->msg = "invalid block type";\n          piVar3->status = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar7 == 1) {\n          piVar3->hash_shift = 9;\n          piVar3->block_start = 5;\n          piVar3->status = 0x3f47;\n          piVar3->hash_bits = (uInt)lenfix_3685;\n          piVar3->hash_mask = (uInt)distfix_3686;\n          if (flush != 6) {\n            local_64 = (gz_headerp)((uint)local_64 >> 3);\n            cVar20 = (ct_data_s)((int)cVar20 - 3);\n            goto _L113;\n          }\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          goto LAB_00017f32;\n        }\n        local_64 = (gz_headerp)((uint)local_64 >> 3);\n        piVar3->status = 0x3f41;\n        cVar20 = (ct_data_s)((int)cVar20 - 3);\n_L107:\n        local_64 = (gz_headerp)((uint)local_64 >> (cVar20.fc & 7));\n        for (cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8); (uint)cVar20 < 0x20;\n            cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n          local_6c = (Posf *)((int)local_6c - 1);\n          local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n          local_60 = local_60 + 1;\n        }\n        pPVar27 = (Posf *)((uint)local_64 & 0xffff);\n        if (pPVar27 != (Posf *)((uint)local_64 >> 0x10 ^ 0xffff)) {\n          pcVar8 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        piVar3->head = pPVar27;\n        piVar3->status = 0x3f42;\n        if (flush == 6) {\n          pPVar27 = (Posf *)0x0;\n          cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n          cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n          local_64 = (gz_headerp)0x0;\n          goto LAB_00017f32;\n        }\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\nLAB_00018557:\n        piVar3->status = 0x3f43;\nLAB_00018562:\n        if (pPVar27 == (Posf *)0x0) {\n          piVar3->status = 0x3f3f;\n          goto _L105;\n        }\n        if (local_6c <= pPVar27) {\n          pPVar27 = local_6c;\n        }\n        if (local_5c < pPVar27) {\n          pPVar27 = local_5c;\n        }\n        if (pPVar27 == (Posf *)0x0) goto LAB_00017f30;\n        memcpy(end,local_60,(size_t)pPVar27);\n        local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n        local_60 = local_60 + (int)pPVar27;\n        local_5c = (Posf *)((int)local_5c - (int)pPVar27);\n        piVar3->head = (Posf *)((int)piVar3->head - (int)pPVar27);\n        iVar6 = piVar3->status;\n        end = end + (int)pPVar27;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar7 = piVar3->pending;\n        if ((uVar7 & 0x400) == 0) goto LAB_000181ae;\n        if ((uint)cVar20 < 0x10) goto LAB_0001829d;\n        goto LAB_000182ea;\n      case 0x3f39:\n        uVar7 = piVar3->pending;\n        goto LAB_000181cb;\n      case 0x3f3a:\n        uVar7 = piVar3->pending;\n        goto LAB_0001832f;\n      case 0x3f3b:\n        uVar7 = piVar3->pending;\n        goto LAB_0001835c;\n      case 0x3f3c:\n        uVar7 = piVar3->pending;\n        goto LAB_00018382;\n      case 0x3f3d:\n        pgVar13 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto _L104;\n      case 0x3f3f:\n        goto _L105;\n      case 0x3f41:\n        goto _L107;\n      case 0x3f42:\n        pPVar27 = piVar3->head;\n        goto LAB_00018557;\n      case 0x3f43:\n        pPVar27 = piVar3->head;\n        goto LAB_00018562;\n      case 0x3f44:\n        goto _L110;\n      case 0x3f45:\n        uVar7 = piVar3->strstart;\n        uVar19 = piVar3->match_length;\n        if (uVar19 <= uVar7) goto LAB_00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        local_48 = piVar3->strstart;\n        goto LAB_000185db;\n      case 0x3f47:\n        goto _L113;\n      case 0x3f48:\n        goto _L114;\n      case 0x3f49:\n        cVar21 = (ct_data_s)piVar3->hash_size;\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto _L116;\n      case 0x3f4b:\n        cVar21 = (ct_data_s)piVar3->hash_size;\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto _L118;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\n_L120:\n        uVar7 = piVar3->pending_buf_size;\n        if (uVar7 == 0) goto LAB_00018e20;\n        if (0x1f < (uint)cVar20) goto LAB_00017996;\n        if (local_6c != (Posf *)0x0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar7 = piVar3->pending_buf_size;\n        goto LAB_000183ff;\n      case 0x3f50:\n        pPVar27 = (Posf *)0x1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto _L590;\n      case 0x3f52:\n        goto _L593;\n      }\n    }\n  }" if (parenthesized_expression "((((strm != (z_streamp)0x0) && (strm->zalloc != (alloc_func)0x0)) &&\n      (strm->zfree != (free_func)0x0)) &&\n     ((iVar6 = inflateStateCheck(strm), iVar6 == 0 && (end = strm->next_out, end != (Bytef *)0x0))))" ( (binary_expression "(((strm != (z_streamp)0x0) && (strm->zalloc != (alloc_func)0x0)) &&\n      (strm->zfree != (free_func)0x0)) &&\n     ((iVar6 = inflateStateCheck(strm), iVar6 == 0 && (end = strm->next_out, end != (Bytef *)0x0)))" (parenthesized_expression "(((strm != (z_streamp)0x0) && (strm->zalloc != (alloc_func)0x0)) &&\n      (strm->zfree != (free_func)0x0))" ( (binary_expression "((strm != (z_streamp)0x0) && (strm->zalloc != (alloc_func)0x0)) &&\n      (strm->zfree != (free_func)0x0)" (parenthesized_expression "((strm != (z_streamp)0x0) && (strm->zalloc != (alloc_func)0x0))" ( (binary_expression "(strm != (z_streamp)0x0) && (strm->zalloc != (alloc_func)0x0)" (parenthesized_expression "(strm != (z_streamp)0x0)" ( (binary_expression "strm != (z_streamp)0x0" identifier != (cast_expression "(z_streamp)0x0" ( (type_descriptor "z_streamp" type_identifier) ) number_literal)) )) && (parenthesized_expression "(strm->zalloc != (alloc_func)0x0)" ( (binary_expression "strm->zalloc != (alloc_func)0x0" (field_expression "strm->zalloc" identifier -> field_identifier) != (cast_expression "(alloc_func)0x0" ( (type_descriptor "alloc_func" type_identifier) ) number_literal)) ))) )) && (parenthesized_expression "(strm->zfree != (free_func)0x0)" ( (binary_expression "strm->zfree != (free_func)0x0" (field_expression "strm->zfree" identifier -> field_identifier) != (cast_expression "(free_func)0x0" ( (type_descriptor "free_func" type_identifier) ) number_literal)) ))) )) && (parenthesized_expression "((iVar6 = inflateStateCheck(strm), iVar6 == 0 && (end = strm->next_out, end != (Bytef *)0x0)))" ( (parenthesized_expression "(iVar6 = inflateStateCheck(strm), iVar6 == 0 && (end = strm->next_out, end != (Bytef *)0x0))" ( (comma_expression "iVar6 = inflateStateCheck(strm), iVar6 == 0 && (end = strm->next_out, end != (Bytef *)0x0)" (assignment_expression "iVar6 = inflateStateCheck(strm)" identifier = (call_expression "inflateStateCheck(strm)" identifier (argument_list "(strm)" ( identifier )))) , (binary_expression "iVar6 == 0 && (end = strm->next_out, end != (Bytef *)0x0)" (binary_expression "iVar6 == 0" identifier == number_literal) && (parenthesized_expression "(end = strm->next_out, end != (Bytef *)0x0)" ( (comma_expression "end = strm->next_out, end != (Bytef *)0x0" (assignment_expression "end = strm->next_out" identifier = (field_expression "strm->next_out" identifier -> field_identifier)) , (binary_expression "end != (Bytef *)0x0" identifier != (cast_expression "(Bytef *)0x0" ( (type_descriptor "Bytef *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )))) )) ))) )) (compound_statement "{\n    local_60 = strm->next_in;\n    pPVar2 = (Posf *)strm->avail_in;\n    if ((local_60 != (byte *)0x0) || (pPVar2 == (Posf *)0x0)) {\n      piVar3 = strm->state;\n      iVar6 = piVar3->status;\n      if (iVar6 == 0x3f3f) {\n        piVar3->status = 0x3f40;\n        iVar6 = 0x3f40;\n      }\n      local_50 = (Posf *)strm->avail_out;\n      local_64 = (gz_headerp)piVar3->window_size;\n      cVar20 = (ct_data_s)piVar3->prev;\n      local_6c = pPVar2;\n      local_5c = local_50;\nLAB_000178c9:\n      switch(iVar6) {\n      case 0x3f34:\n        uVar7 = piVar3->pending_buf_size;\n        if (uVar7 != 0) {\n          if (0xf < (uint)cVar20) goto LAB_00018ec6;\n          if (local_6c != (Posf *)0x0) goto LAB_00018ea0;\n          goto LAB_00017f30;\n        }\n        piVar3->status = 0x3f40;\n      case 0x3f40:\n_L106:\n        bVar16 = cVar20.fc;\n        if (piVar3->pending_buf != (Bytef *)0x0) {\n          cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8);\n          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 7));\n          piVar3->status = 0x3f4e;\n          goto _L120;\n        }\n        pPVar27 = (Posf *)0x0;\n        if ((uint)cVar20 < 3) {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n          local_6c = (Posf *)((int)local_6c - 1);\n          cVar20 = (ct_data_s)((int)cVar20 + 8);\n          bVar17 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = (gz_headerp)((int)&local_64->text + ((uint)bVar17 << (bVar16 & 0x1f)));\n        }\n        piVar3->pending_buf = (Bytef *)((uint)local_64 & 1);\n        uVar7 = (uint)local_64 >> 1 & 3;\n        if (uVar7 == 2) {\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          piVar3->status = 0x3f44;\n_L110:\n          for (; (uint)cVar20 < 0xe; cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n            local_6c = (Posf *)((int)local_6c - 1);\n            local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n            local_60 = local_60 + 1;\n          }\n          cVar20 = (ct_data_s)((int)cVar20 - 0xe);\n          uVar24 = ((uint)local_64 & 0x1f) + 0x101;\n          uVar7 = ((uint)local_64 >> 5 & 0x1f) + 1;\n          uVar19 = ((uint)local_64 >> 10 & 0xf) + 4;\n          local_64 = (gz_headerp)((uint)local_64 >> 0xe);\n          piVar3->prev_match = uVar24;\n          piVar3->match_available = uVar7;\n          piVar3->match_length = uVar19;\n          if ((uVar7 < 0x1f) && (uVar24 < 0x11f)) {\n            uVar7 = 0;\n            piVar3->strstart = 0;\n            piVar3->status = 0x3f45;\nLAB_000184b2:\n            uVar24 = uVar7 + 1;\n            do {\n              uVar7 = uVar24;\n              if ((uint)cVar20 < 3) {\n                if (local_6c == (Posf *)0x0) {\n                  pPVar27 = (Posf *)0x0;\n                  local_6c = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\n                local_6c = (Posf *)((int)local_6c - 1);\n                bVar16 = cVar20.fc;\n                cVar20 = (ct_data_s)((int)cVar20 + 8);\n                local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                ;\n                local_60 = local_60 + 1;\n              }\n              cVar20 = (ct_data_s)((int)cVar20 - 3);\n              piVar3->strstart = uVar7;\n              pgVar13 = (gz_headerp)((uint)local_64 >> 3);\n              *(ushort *)\n               ((int)(piVar3->dyn_ltree + -8) +\n               (uint)*(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe) * 2) = (ushort)local_64 & 7;\n              local_64 = pgVar13;\n              uVar24 = uVar7 + 1;\n            } while (uVar19 + 1 != uVar7 + 1);\nLAB_00019253:\n            if (uVar7 < 0x13) {\n              puVar15 = inflate::order + uVar7;\n              do {\n                uVar25 = *puVar15;\n                puVar15 = puVar15 + 1;\n                *(undefined2 *)((int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2) = 0;\n              } while (puVar15 != (ushort *)&UNK_000221e6);\n              piVar3->strstart = 0x13;\n            }\n            piVar3->hash_shift = 7;\n            piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n            piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n            iVar6 = inflate_table(CODES,(ushort *)&piVar3->lookahead,0x13,\n                                  (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                  (ushort *)(piVar3->dyn_ltree + 0x98));\n            if (iVar6 == 0) {\n              local_48 = 0;\n              piVar3->strstart = 0;\n              piVar3->status = 0x3f46;\nLAB_000185db:\n              uVar7 = piVar3->prev_match;\n              uVar19 = uVar7 + piVar3->match_available;\n              while (local_48 < uVar19) {\n                uVar24 = ~(-1 << ((byte)piVar3->hash_shift & 0x1f));\n                iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                cVar21._1_3_ = 0;\n                cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                uVar25 = *(ushort *)(iVar6 + 2);\n                if ((uint)cVar20 < (uint)cVar21) {\n                  if (local_6c != (Posf *)0x0) {\n                    while( true ) {\n                      pbVar26 = local_60 + 1;\n                      local_6c = (Posf *)((int)local_6c - 1);\n                      bVar16 = cVar20.fc;\n                      cVar20 = (ct_data_s)((int)cVar20 + 8);\n                      local_64 = (gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n                      iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                      cVar21._1_3_ = 0;\n                      cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                      uVar25 = *(ushort *)(iVar6 + 2);\n                      local_60 = pbVar26;\n                      if ((uint)cVar21 <= (uint)cVar20) break;\n                      if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  pPVar27 = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar16 = cVar21.fc;\n                if (uVar25 < 0x10) {\n                  local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                  cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                  piVar3->strstart = local_48 + 1;\n                  *(ushort *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2) = uVar25;\n                  local_48 = local_48 + 1;\n                }\n                else {\n                  if (uVar25 == 0x10) {\n                    if ((uint)cVar20 < (int)cVar21 + 2U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                    local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                    if (local_48 == 0) {\n                      strm->msg = "invalid bit length repeat";\n                      piVar3->status = 0x3f51;\n                      goto _L590;\n                    }\n                    uVar24 = (uint)local_64 & 3;\n                    local_64 = (gz_headerp)((uint)local_64 >> 2);\n                    cVar20 = (ct_data_s)((int)cVar20 - 2);\n                    uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22);\n                    iVar6 = uVar24 + 3;\n                  }\n                  else if (uVar25 == 0x11) {\n                    if ((uint)cVar20 < (int)cVar21 + 3U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);\n                    iVar6 = (uVar24 & 7) + 3;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 3);\n                  }\n                  else {\n                    if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);\n                    iVar6 = (uVar24 & 0x7f) + 0xb;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 7);\n                  }\n                  uVar24 = iVar6 + local_48;\n                  if (uVar19 < uVar24) {\n                    strm->msg = "invalid bit length repeat";\n                    piVar3->status = 0x3f51;\n                    goto _L590;\n                  }\n                  puVar23 = (undefined2 *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2);\n                  do {\n                    *puVar23 = uVar18;\n                    puVar23 = puVar23 + 1;\n                  } while (puVar23 != (undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2));\n                  piVar3->strstart = uVar24;\n                  local_48 = uVar24;\n                }\n              }\n              if (piVar3->status == 0x3f51) goto _L590;\n              if (piVar3->dyn_ltree[0x78].fc.freq != 0) {\n                piVar3->hash_shift = 9;\n                piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n                piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n                iVar6 = inflate_table(LENS,(ushort *)&piVar3->lookahead,uVar7,\n                                      (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                      (ushort *)(piVar3->dyn_ltree + 0x98));\n                if (iVar6 == 0) {\n                  piVar3->block_start = 6;\n                  piVar3->hash_mask = piVar3->match_start;\n                  iVar6 = inflate_table(DISTS,(ushort *)\n                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2),\n                                        piVar3->match_available,(code **)&piVar3->match_start,\n                                        (uint *)&piVar3->block_start,\n                                        (ushort *)(piVar3->dyn_ltree + 0x98));\n                  if (iVar6 == 0) {\n                    piVar3->status = 0x3f47;\n                    if (flush != 6) {\n_L113:\n                      do {\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    pPVar27 = (Posf *)0x0;\n                  }\n                  else {\n                    pPVar27 = (Posf *)0xfffffffd;\n                    strm->msg = "invalid distances set";\n                    piVar3->status = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar8 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              pPVar27 = (Posf *)0xfffffffd;\n              strm->msg = "invalid code -- missing end-of-block";\n              piVar3->status = 0x3f51;\n            }\n            else {\n              strm->msg = "invalid code lengths set";\n              piVar3->status = 0x3f51;\n              pPVar27 = (Posf *)0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar8 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar7 == 3) {\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          pPVar27 = (Posf *)0xfffffffd;\n          strm->msg = "invalid block type";\n          piVar3->status = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar7 == 1) {\n          piVar3->hash_shift = 9;\n          piVar3->block_start = 5;\n          piVar3->status = 0x3f47;\n          piVar3->hash_bits = (uInt)lenfix_3685;\n          piVar3->hash_mask = (uInt)distfix_3686;\n          if (flush != 6) {\n            local_64 = (gz_headerp)((uint)local_64 >> 3);\n            cVar20 = (ct_data_s)((int)cVar20 - 3);\n            goto _L113;\n          }\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          goto LAB_00017f32;\n        }\n        local_64 = (gz_headerp)((uint)local_64 >> 3);\n        piVar3->status = 0x3f41;\n        cVar20 = (ct_data_s)((int)cVar20 - 3);\n_L107:\n        local_64 = (gz_headerp)((uint)local_64 >> (cVar20.fc & 7));\n        for (cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8); (uint)cVar20 < 0x20;\n            cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n          local_6c = (Posf *)((int)local_6c - 1);\n          local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n          local_60 = local_60 + 1;\n        }\n        pPVar27 = (Posf *)((uint)local_64 & 0xffff);\n        if (pPVar27 != (Posf *)((uint)local_64 >> 0x10 ^ 0xffff)) {\n          pcVar8 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        piVar3->head = pPVar27;\n        piVar3->status = 0x3f42;\n        if (flush == 6) {\n          pPVar27 = (Posf *)0x0;\n          cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n          cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n          local_64 = (gz_headerp)0x0;\n          goto LAB_00017f32;\n        }\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\nLAB_00018557:\n        piVar3->status = 0x3f43;\nLAB_00018562:\n        if (pPVar27 == (Posf *)0x0) {\n          piVar3->status = 0x3f3f;\n          goto _L105;\n        }\n        if (local_6c <= pPVar27) {\n          pPVar27 = local_6c;\n        }\n        if (local_5c < pPVar27) {\n          pPVar27 = local_5c;\n        }\n        if (pPVar27 == (Posf *)0x0) goto LAB_00017f30;\n        memcpy(end,local_60,(size_t)pPVar27);\n        local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n        local_60 = local_60 + (int)pPVar27;\n        local_5c = (Posf *)((int)local_5c - (int)pPVar27);\n        piVar3->head = (Posf *)((int)piVar3->head - (int)pPVar27);\n        iVar6 = piVar3->status;\n        end = end + (int)pPVar27;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar7 = piVar3->pending;\n        if ((uVar7 & 0x400) == 0) goto LAB_000181ae;\n        if ((uint)cVar20 < 0x10) goto LAB_0001829d;\n        goto LAB_000182ea;\n      case 0x3f39:\n        uVar7 = piVar3->pending;\n        goto LAB_000181cb;\n      case 0x3f3a:\n        uVar7 = piVar3->pending;\n        goto LAB_0001832f;\n      case 0x3f3b:\n        uVar7 = piVar3->pending;\n        goto LAB_0001835c;\n      case 0x3f3c:\n        uVar7 = piVar3->pending;\n        goto LAB_00018382;\n      case 0x3f3d:\n        pgVar13 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto _L104;\n      case 0x3f3f:\n        goto _L105;\n      case 0x3f41:\n        goto _L107;\n      case 0x3f42:\n        pPVar27 = piVar3->head;\n        goto LAB_00018557;\n      case 0x3f43:\n        pPVar27 = piVar3->head;\n        goto LAB_00018562;\n      case 0x3f44:\n        goto _L110;\n      case 0x3f45:\n        uVar7 = piVar3->strstart;\n        uVar19 = piVar3->match_length;\n        if (uVar19 <= uVar7) goto LAB_00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        local_48 = piVar3->strstart;\n        goto LAB_000185db;\n      case 0x3f47:\n        goto _L113;\n      case 0x3f48:\n        goto _L114;\n      case 0x3f49:\n        cVar21 = (ct_data_s)piVar3->hash_size;\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto _L116;\n      case 0x3f4b:\n        cVar21 = (ct_data_s)piVar3->hash_size;\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto _L118;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\n_L120:\n        uVar7 = piVar3->pending_buf_size;\n        if (uVar7 == 0) goto LAB_00018e20;\n        if (0x1f < (uint)cVar20) goto LAB_00017996;\n        if (local_6c != (Posf *)0x0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar7 = piVar3->pending_buf_size;\n        goto LAB_000183ff;\n      case 0x3f50:\n        pPVar27 = (Posf *)0x1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto _L590;\n      case 0x3f52:\n        goto _L593;\n      }\n    }\n  }" { (expression_statement "local_60 = strm->next_in;" (assignment_expression "local_60 = strm->next_in" identifier = (field_expression "strm->next_in" identifier -> field_identifier)) ;) (expression_statement "pPVar2 = (Posf *)strm->avail_in;" (assignment_expression "pPVar2 = (Posf *)strm->avail_in" identifier = (cast_expression "(Posf *)strm->avail_in" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "strm->avail_in" identifier -> field_identifier))) ;) (if_statement "if ((local_60 != (byte *)0x0) || (pPVar2 == (Posf *)0x0)) {\n      piVar3 = strm->state;\n      iVar6 = piVar3->status;\n      if (iVar6 == 0x3f3f) {\n        piVar3->status = 0x3f40;\n        iVar6 = 0x3f40;\n      }\n      local_50 = (Posf *)strm->avail_out;\n      local_64 = (gz_headerp)piVar3->window_size;\n      cVar20 = (ct_data_s)piVar3->prev;\n      local_6c = pPVar2;\n      local_5c = local_50;\nLAB_000178c9:\n      switch(iVar6) {\n      case 0x3f34:\n        uVar7 = piVar3->pending_buf_size;\n        if (uVar7 != 0) {\n          if (0xf < (uint)cVar20) goto LAB_00018ec6;\n          if (local_6c != (Posf *)0x0) goto LAB_00018ea0;\n          goto LAB_00017f30;\n        }\n        piVar3->status = 0x3f40;\n      case 0x3f40:\n_L106:\n        bVar16 = cVar20.fc;\n        if (piVar3->pending_buf != (Bytef *)0x0) {\n          cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8);\n          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 7));\n          piVar3->status = 0x3f4e;\n          goto _L120;\n        }\n        pPVar27 = (Posf *)0x0;\n        if ((uint)cVar20 < 3) {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n          local_6c = (Posf *)((int)local_6c - 1);\n          cVar20 = (ct_data_s)((int)cVar20 + 8);\n          bVar17 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = (gz_headerp)((int)&local_64->text + ((uint)bVar17 << (bVar16 & 0x1f)));\n        }\n        piVar3->pending_buf = (Bytef *)((uint)local_64 & 1);\n        uVar7 = (uint)local_64 >> 1 & 3;\n        if (uVar7 == 2) {\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          piVar3->status = 0x3f44;\n_L110:\n          for (; (uint)cVar20 < 0xe; cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n            local_6c = (Posf *)((int)local_6c - 1);\n            local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n            local_60 = local_60 + 1;\n          }\n          cVar20 = (ct_data_s)((int)cVar20 - 0xe);\n          uVar24 = ((uint)local_64 & 0x1f) + 0x101;\n          uVar7 = ((uint)local_64 >> 5 & 0x1f) + 1;\n          uVar19 = ((uint)local_64 >> 10 & 0xf) + 4;\n          local_64 = (gz_headerp)((uint)local_64 >> 0xe);\n          piVar3->prev_match = uVar24;\n          piVar3->match_available = uVar7;\n          piVar3->match_length = uVar19;\n          if ((uVar7 < 0x1f) && (uVar24 < 0x11f)) {\n            uVar7 = 0;\n            piVar3->strstart = 0;\n            piVar3->status = 0x3f45;\nLAB_000184b2:\n            uVar24 = uVar7 + 1;\n            do {\n              uVar7 = uVar24;\n              if ((uint)cVar20 < 3) {\n                if (local_6c == (Posf *)0x0) {\n                  pPVar27 = (Posf *)0x0;\n                  local_6c = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\n                local_6c = (Posf *)((int)local_6c - 1);\n                bVar16 = cVar20.fc;\n                cVar20 = (ct_data_s)((int)cVar20 + 8);\n                local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                ;\n                local_60 = local_60 + 1;\n              }\n              cVar20 = (ct_data_s)((int)cVar20 - 3);\n              piVar3->strstart = uVar7;\n              pgVar13 = (gz_headerp)((uint)local_64 >> 3);\n              *(ushort *)\n               ((int)(piVar3->dyn_ltree + -8) +\n               (uint)*(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe) * 2) = (ushort)local_64 & 7;\n              local_64 = pgVar13;\n              uVar24 = uVar7 + 1;\n            } while (uVar19 + 1 != uVar7 + 1);\nLAB_00019253:\n            if (uVar7 < 0x13) {\n              puVar15 = inflate::order + uVar7;\n              do {\n                uVar25 = *puVar15;\n                puVar15 = puVar15 + 1;\n                *(undefined2 *)((int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2) = 0;\n              } while (puVar15 != (ushort *)&UNK_000221e6);\n              piVar3->strstart = 0x13;\n            }\n            piVar3->hash_shift = 7;\n            piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n            piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n            iVar6 = inflate_table(CODES,(ushort *)&piVar3->lookahead,0x13,\n                                  (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                  (ushort *)(piVar3->dyn_ltree + 0x98));\n            if (iVar6 == 0) {\n              local_48 = 0;\n              piVar3->strstart = 0;\n              piVar3->status = 0x3f46;\nLAB_000185db:\n              uVar7 = piVar3->prev_match;\n              uVar19 = uVar7 + piVar3->match_available;\n              while (local_48 < uVar19) {\n                uVar24 = ~(-1 << ((byte)piVar3->hash_shift & 0x1f));\n                iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                cVar21._1_3_ = 0;\n                cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                uVar25 = *(ushort *)(iVar6 + 2);\n                if ((uint)cVar20 < (uint)cVar21) {\n                  if (local_6c != (Posf *)0x0) {\n                    while( true ) {\n                      pbVar26 = local_60 + 1;\n                      local_6c = (Posf *)((int)local_6c - 1);\n                      bVar16 = cVar20.fc;\n                      cVar20 = (ct_data_s)((int)cVar20 + 8);\n                      local_64 = (gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n                      iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                      cVar21._1_3_ = 0;\n                      cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                      uVar25 = *(ushort *)(iVar6 + 2);\n                      local_60 = pbVar26;\n                      if ((uint)cVar21 <= (uint)cVar20) break;\n                      if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  pPVar27 = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar16 = cVar21.fc;\n                if (uVar25 < 0x10) {\n                  local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                  cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                  piVar3->strstart = local_48 + 1;\n                  *(ushort *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2) = uVar25;\n                  local_48 = local_48 + 1;\n                }\n                else {\n                  if (uVar25 == 0x10) {\n                    if ((uint)cVar20 < (int)cVar21 + 2U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                    local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                    if (local_48 == 0) {\n                      strm->msg = "invalid bit length repeat";\n                      piVar3->status = 0x3f51;\n                      goto _L590;\n                    }\n                    uVar24 = (uint)local_64 & 3;\n                    local_64 = (gz_headerp)((uint)local_64 >> 2);\n                    cVar20 = (ct_data_s)((int)cVar20 - 2);\n                    uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22);\n                    iVar6 = uVar24 + 3;\n                  }\n                  else if (uVar25 == 0x11) {\n                    if ((uint)cVar20 < (int)cVar21 + 3U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);\n                    iVar6 = (uVar24 & 7) + 3;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 3);\n                  }\n                  else {\n                    if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);\n                    iVar6 = (uVar24 & 0x7f) + 0xb;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 7);\n                  }\n                  uVar24 = iVar6 + local_48;\n                  if (uVar19 < uVar24) {\n                    strm->msg = "invalid bit length repeat";\n                    piVar3->status = 0x3f51;\n                    goto _L590;\n                  }\n                  puVar23 = (undefined2 *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2);\n                  do {\n                    *puVar23 = uVar18;\n                    puVar23 = puVar23 + 1;\n                  } while (puVar23 != (undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2));\n                  piVar3->strstart = uVar24;\n                  local_48 = uVar24;\n                }\n              }\n              if (piVar3->status == 0x3f51) goto _L590;\n              if (piVar3->dyn_ltree[0x78].fc.freq != 0) {\n                piVar3->hash_shift = 9;\n                piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n                piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n                iVar6 = inflate_table(LENS,(ushort *)&piVar3->lookahead,uVar7,\n                                      (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                      (ushort *)(piVar3->dyn_ltree + 0x98));\n                if (iVar6 == 0) {\n                  piVar3->block_start = 6;\n                  piVar3->hash_mask = piVar3->match_start;\n                  iVar6 = inflate_table(DISTS,(ushort *)\n                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2),\n                                        piVar3->match_available,(code **)&piVar3->match_start,\n                                        (uint *)&piVar3->block_start,\n                                        (ushort *)(piVar3->dyn_ltree + 0x98));\n                  if (iVar6 == 0) {\n                    piVar3->status = 0x3f47;\n                    if (flush != 6) {\n_L113:\n                      do {\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    pPVar27 = (Posf *)0x0;\n                  }\n                  else {\n                    pPVar27 = (Posf *)0xfffffffd;\n                    strm->msg = "invalid distances set";\n                    piVar3->status = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar8 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              pPVar27 = (Posf *)0xfffffffd;\n              strm->msg = "invalid code -- missing end-of-block";\n              piVar3->status = 0x3f51;\n            }\n            else {\n              strm->msg = "invalid code lengths set";\n              piVar3->status = 0x3f51;\n              pPVar27 = (Posf *)0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar8 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar7 == 3) {\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          pPVar27 = (Posf *)0xfffffffd;\n          strm->msg = "invalid block type";\n          piVar3->status = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar7 == 1) {\n          piVar3->hash_shift = 9;\n          piVar3->block_start = 5;\n          piVar3->status = 0x3f47;\n          piVar3->hash_bits = (uInt)lenfix_3685;\n          piVar3->hash_mask = (uInt)distfix_3686;\n          if (flush != 6) {\n            local_64 = (gz_headerp)((uint)local_64 >> 3);\n            cVar20 = (ct_data_s)((int)cVar20 - 3);\n            goto _L113;\n          }\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          goto LAB_00017f32;\n        }\n        local_64 = (gz_headerp)((uint)local_64 >> 3);\n        piVar3->status = 0x3f41;\n        cVar20 = (ct_data_s)((int)cVar20 - 3);\n_L107:\n        local_64 = (gz_headerp)((uint)local_64 >> (cVar20.fc & 7));\n        for (cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8); (uint)cVar20 < 0x20;\n            cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n          local_6c = (Posf *)((int)local_6c - 1);\n          local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n          local_60 = local_60 + 1;\n        }\n        pPVar27 = (Posf *)((uint)local_64 & 0xffff);\n        if (pPVar27 != (Posf *)((uint)local_64 >> 0x10 ^ 0xffff)) {\n          pcVar8 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        piVar3->head = pPVar27;\n        piVar3->status = 0x3f42;\n        if (flush == 6) {\n          pPVar27 = (Posf *)0x0;\n          cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n          cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n          local_64 = (gz_headerp)0x0;\n          goto LAB_00017f32;\n        }\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\nLAB_00018557:\n        piVar3->status = 0x3f43;\nLAB_00018562:\n        if (pPVar27 == (Posf *)0x0) {\n          piVar3->status = 0x3f3f;\n          goto _L105;\n        }\n        if (local_6c <= pPVar27) {\n          pPVar27 = local_6c;\n        }\n        if (local_5c < pPVar27) {\n          pPVar27 = local_5c;\n        }\n        if (pPVar27 == (Posf *)0x0) goto LAB_00017f30;\n        memcpy(end,local_60,(size_t)pPVar27);\n        local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n        local_60 = local_60 + (int)pPVar27;\n        local_5c = (Posf *)((int)local_5c - (int)pPVar27);\n        piVar3->head = (Posf *)((int)piVar3->head - (int)pPVar27);\n        iVar6 = piVar3->status;\n        end = end + (int)pPVar27;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar7 = piVar3->pending;\n        if ((uVar7 & 0x400) == 0) goto LAB_000181ae;\n        if ((uint)cVar20 < 0x10) goto LAB_0001829d;\n        goto LAB_000182ea;\n      case 0x3f39:\n        uVar7 = piVar3->pending;\n        goto LAB_000181cb;\n      case 0x3f3a:\n        uVar7 = piVar3->pending;\n        goto LAB_0001832f;\n      case 0x3f3b:\n        uVar7 = piVar3->pending;\n        goto LAB_0001835c;\n      case 0x3f3c:\n        uVar7 = piVar3->pending;\n        goto LAB_00018382;\n      case 0x3f3d:\n        pgVar13 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto _L104;\n      case 0x3f3f:\n        goto _L105;\n      case 0x3f41:\n        goto _L107;\n      case 0x3f42:\n        pPVar27 = piVar3->head;\n        goto LAB_00018557;\n      case 0x3f43:\n        pPVar27 = piVar3->head;\n        goto LAB_00018562;\n      case 0x3f44:\n        goto _L110;\n      case 0x3f45:\n        uVar7 = piVar3->strstart;\n        uVar19 = piVar3->match_length;\n        if (uVar19 <= uVar7) goto LAB_00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        local_48 = piVar3->strstart;\n        goto LAB_000185db;\n      case 0x3f47:\n        goto _L113;\n      case 0x3f48:\n        goto _L114;\n      case 0x3f49:\n        cVar21 = (ct_data_s)piVar3->hash_size;\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto _L116;\n      case 0x3f4b:\n        cVar21 = (ct_data_s)piVar3->hash_size;\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto _L118;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\n_L120:\n        uVar7 = piVar3->pending_buf_size;\n        if (uVar7 == 0) goto LAB_00018e20;\n        if (0x1f < (uint)cVar20) goto LAB_00017996;\n        if (local_6c != (Posf *)0x0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar7 = piVar3->pending_buf_size;\n        goto LAB_000183ff;\n      case 0x3f50:\n        pPVar27 = (Posf *)0x1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto _L590;\n      case 0x3f52:\n        goto _L593;\n      }\n    }" if (parenthesized_expression "((local_60 != (byte *)0x0) || (pPVar2 == (Posf *)0x0))" ( (binary_expression "(local_60 != (byte *)0x0) || (pPVar2 == (Posf *)0x0)" (parenthesized_expression "(local_60 != (byte *)0x0)" ( (binary_expression "local_60 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(pPVar2 == (Posf *)0x0)" ( (binary_expression "pPVar2 == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n      piVar3 = strm->state;\n      iVar6 = piVar3->status;\n      if (iVar6 == 0x3f3f) {\n        piVar3->status = 0x3f40;\n        iVar6 = 0x3f40;\n      }\n      local_50 = (Posf *)strm->avail_out;\n      local_64 = (gz_headerp)piVar3->window_size;\n      cVar20 = (ct_data_s)piVar3->prev;\n      local_6c = pPVar2;\n      local_5c = local_50;\nLAB_000178c9:\n      switch(iVar6) {\n      case 0x3f34:\n        uVar7 = piVar3->pending_buf_size;\n        if (uVar7 != 0) {\n          if (0xf < (uint)cVar20) goto LAB_00018ec6;\n          if (local_6c != (Posf *)0x0) goto LAB_00018ea0;\n          goto LAB_00017f30;\n        }\n        piVar3->status = 0x3f40;\n      case 0x3f40:\n_L106:\n        bVar16 = cVar20.fc;\n        if (piVar3->pending_buf != (Bytef *)0x0) {\n          cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8);\n          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 7));\n          piVar3->status = 0x3f4e;\n          goto _L120;\n        }\n        pPVar27 = (Posf *)0x0;\n        if ((uint)cVar20 < 3) {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n          local_6c = (Posf *)((int)local_6c - 1);\n          cVar20 = (ct_data_s)((int)cVar20 + 8);\n          bVar17 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = (gz_headerp)((int)&local_64->text + ((uint)bVar17 << (bVar16 & 0x1f)));\n        }\n        piVar3->pending_buf = (Bytef *)((uint)local_64 & 1);\n        uVar7 = (uint)local_64 >> 1 & 3;\n        if (uVar7 == 2) {\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          piVar3->status = 0x3f44;\n_L110:\n          for (; (uint)cVar20 < 0xe; cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n            local_6c = (Posf *)((int)local_6c - 1);\n            local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n            local_60 = local_60 + 1;\n          }\n          cVar20 = (ct_data_s)((int)cVar20 - 0xe);\n          uVar24 = ((uint)local_64 & 0x1f) + 0x101;\n          uVar7 = ((uint)local_64 >> 5 & 0x1f) + 1;\n          uVar19 = ((uint)local_64 >> 10 & 0xf) + 4;\n          local_64 = (gz_headerp)((uint)local_64 >> 0xe);\n          piVar3->prev_match = uVar24;\n          piVar3->match_available = uVar7;\n          piVar3->match_length = uVar19;\n          if ((uVar7 < 0x1f) && (uVar24 < 0x11f)) {\n            uVar7 = 0;\n            piVar3->strstart = 0;\n            piVar3->status = 0x3f45;\nLAB_000184b2:\n            uVar24 = uVar7 + 1;\n            do {\n              uVar7 = uVar24;\n              if ((uint)cVar20 < 3) {\n                if (local_6c == (Posf *)0x0) {\n                  pPVar27 = (Posf *)0x0;\n                  local_6c = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\n                local_6c = (Posf *)((int)local_6c - 1);\n                bVar16 = cVar20.fc;\n                cVar20 = (ct_data_s)((int)cVar20 + 8);\n                local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                ;\n                local_60 = local_60 + 1;\n              }\n              cVar20 = (ct_data_s)((int)cVar20 - 3);\n              piVar3->strstart = uVar7;\n              pgVar13 = (gz_headerp)((uint)local_64 >> 3);\n              *(ushort *)\n               ((int)(piVar3->dyn_ltree + -8) +\n               (uint)*(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe) * 2) = (ushort)local_64 & 7;\n              local_64 = pgVar13;\n              uVar24 = uVar7 + 1;\n            } while (uVar19 + 1 != uVar7 + 1);\nLAB_00019253:\n            if (uVar7 < 0x13) {\n              puVar15 = inflate::order + uVar7;\n              do {\n                uVar25 = *puVar15;\n                puVar15 = puVar15 + 1;\n                *(undefined2 *)((int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2) = 0;\n              } while (puVar15 != (ushort *)&UNK_000221e6);\n              piVar3->strstart = 0x13;\n            }\n            piVar3->hash_shift = 7;\n            piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n            piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n            iVar6 = inflate_table(CODES,(ushort *)&piVar3->lookahead,0x13,\n                                  (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                  (ushort *)(piVar3->dyn_ltree + 0x98));\n            if (iVar6 == 0) {\n              local_48 = 0;\n              piVar3->strstart = 0;\n              piVar3->status = 0x3f46;\nLAB_000185db:\n              uVar7 = piVar3->prev_match;\n              uVar19 = uVar7 + piVar3->match_available;\n              while (local_48 < uVar19) {\n                uVar24 = ~(-1 << ((byte)piVar3->hash_shift & 0x1f));\n                iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                cVar21._1_3_ = 0;\n                cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                uVar25 = *(ushort *)(iVar6 + 2);\n                if ((uint)cVar20 < (uint)cVar21) {\n                  if (local_6c != (Posf *)0x0) {\n                    while( true ) {\n                      pbVar26 = local_60 + 1;\n                      local_6c = (Posf *)((int)local_6c - 1);\n                      bVar16 = cVar20.fc;\n                      cVar20 = (ct_data_s)((int)cVar20 + 8);\n                      local_64 = (gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n                      iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                      cVar21._1_3_ = 0;\n                      cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                      uVar25 = *(ushort *)(iVar6 + 2);\n                      local_60 = pbVar26;\n                      if ((uint)cVar21 <= (uint)cVar20) break;\n                      if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  pPVar27 = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar16 = cVar21.fc;\n                if (uVar25 < 0x10) {\n                  local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                  cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                  piVar3->strstart = local_48 + 1;\n                  *(ushort *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2) = uVar25;\n                  local_48 = local_48 + 1;\n                }\n                else {\n                  if (uVar25 == 0x10) {\n                    if ((uint)cVar20 < (int)cVar21 + 2U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                    local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                    if (local_48 == 0) {\n                      strm->msg = "invalid bit length repeat";\n                      piVar3->status = 0x3f51;\n                      goto _L590;\n                    }\n                    uVar24 = (uint)local_64 & 3;\n                    local_64 = (gz_headerp)((uint)local_64 >> 2);\n                    cVar20 = (ct_data_s)((int)cVar20 - 2);\n                    uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22);\n                    iVar6 = uVar24 + 3;\n                  }\n                  else if (uVar25 == 0x11) {\n                    if ((uint)cVar20 < (int)cVar21 + 3U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);\n                    iVar6 = (uVar24 & 7) + 3;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 3);\n                  }\n                  else {\n                    if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);\n                    iVar6 = (uVar24 & 0x7f) + 0xb;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 7);\n                  }\n                  uVar24 = iVar6 + local_48;\n                  if (uVar19 < uVar24) {\n                    strm->msg = "invalid bit length repeat";\n                    piVar3->status = 0x3f51;\n                    goto _L590;\n                  }\n                  puVar23 = (undefined2 *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2);\n                  do {\n                    *puVar23 = uVar18;\n                    puVar23 = puVar23 + 1;\n                  } while (puVar23 != (undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2));\n                  piVar3->strstart = uVar24;\n                  local_48 = uVar24;\n                }\n              }\n              if (piVar3->status == 0x3f51) goto _L590;\n              if (piVar3->dyn_ltree[0x78].fc.freq != 0) {\n                piVar3->hash_shift = 9;\n                piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n                piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n                iVar6 = inflate_table(LENS,(ushort *)&piVar3->lookahead,uVar7,\n                                      (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                      (ushort *)(piVar3->dyn_ltree + 0x98));\n                if (iVar6 == 0) {\n                  piVar3->block_start = 6;\n                  piVar3->hash_mask = piVar3->match_start;\n                  iVar6 = inflate_table(DISTS,(ushort *)\n                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2),\n                                        piVar3->match_available,(code **)&piVar3->match_start,\n                                        (uint *)&piVar3->block_start,\n                                        (ushort *)(piVar3->dyn_ltree + 0x98));\n                  if (iVar6 == 0) {\n                    piVar3->status = 0x3f47;\n                    if (flush != 6) {\n_L113:\n                      do {\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    pPVar27 = (Posf *)0x0;\n                  }\n                  else {\n                    pPVar27 = (Posf *)0xfffffffd;\n                    strm->msg = "invalid distances set";\n                    piVar3->status = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar8 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              pPVar27 = (Posf *)0xfffffffd;\n              strm->msg = "invalid code -- missing end-of-block";\n              piVar3->status = 0x3f51;\n            }\n            else {\n              strm->msg = "invalid code lengths set";\n              piVar3->status = 0x3f51;\n              pPVar27 = (Posf *)0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar8 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar7 == 3) {\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          pPVar27 = (Posf *)0xfffffffd;\n          strm->msg = "invalid block type";\n          piVar3->status = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar7 == 1) {\n          piVar3->hash_shift = 9;\n          piVar3->block_start = 5;\n          piVar3->status = 0x3f47;\n          piVar3->hash_bits = (uInt)lenfix_3685;\n          piVar3->hash_mask = (uInt)distfix_3686;\n          if (flush != 6) {\n            local_64 = (gz_headerp)((uint)local_64 >> 3);\n            cVar20 = (ct_data_s)((int)cVar20 - 3);\n            goto _L113;\n          }\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          goto LAB_00017f32;\n        }\n        local_64 = (gz_headerp)((uint)local_64 >> 3);\n        piVar3->status = 0x3f41;\n        cVar20 = (ct_data_s)((int)cVar20 - 3);\n_L107:\n        local_64 = (gz_headerp)((uint)local_64 >> (cVar20.fc & 7));\n        for (cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8); (uint)cVar20 < 0x20;\n            cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n          local_6c = (Posf *)((int)local_6c - 1);\n          local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n          local_60 = local_60 + 1;\n        }\n        pPVar27 = (Posf *)((uint)local_64 & 0xffff);\n        if (pPVar27 != (Posf *)((uint)local_64 >> 0x10 ^ 0xffff)) {\n          pcVar8 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        piVar3->head = pPVar27;\n        piVar3->status = 0x3f42;\n        if (flush == 6) {\n          pPVar27 = (Posf *)0x0;\n          cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n          cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n          local_64 = (gz_headerp)0x0;\n          goto LAB_00017f32;\n        }\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\nLAB_00018557:\n        piVar3->status = 0x3f43;\nLAB_00018562:\n        if (pPVar27 == (Posf *)0x0) {\n          piVar3->status = 0x3f3f;\n          goto _L105;\n        }\n        if (local_6c <= pPVar27) {\n          pPVar27 = local_6c;\n        }\n        if (local_5c < pPVar27) {\n          pPVar27 = local_5c;\n        }\n        if (pPVar27 == (Posf *)0x0) goto LAB_00017f30;\n        memcpy(end,local_60,(size_t)pPVar27);\n        local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n        local_60 = local_60 + (int)pPVar27;\n        local_5c = (Posf *)((int)local_5c - (int)pPVar27);\n        piVar3->head = (Posf *)((int)piVar3->head - (int)pPVar27);\n        iVar6 = piVar3->status;\n        end = end + (int)pPVar27;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar7 = piVar3->pending;\n        if ((uVar7 & 0x400) == 0) goto LAB_000181ae;\n        if ((uint)cVar20 < 0x10) goto LAB_0001829d;\n        goto LAB_000182ea;\n      case 0x3f39:\n        uVar7 = piVar3->pending;\n        goto LAB_000181cb;\n      case 0x3f3a:\n        uVar7 = piVar3->pending;\n        goto LAB_0001832f;\n      case 0x3f3b:\n        uVar7 = piVar3->pending;\n        goto LAB_0001835c;\n      case 0x3f3c:\n        uVar7 = piVar3->pending;\n        goto LAB_00018382;\n      case 0x3f3d:\n        pgVar13 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto _L104;\n      case 0x3f3f:\n        goto _L105;\n      case 0x3f41:\n        goto _L107;\n      case 0x3f42:\n        pPVar27 = piVar3->head;\n        goto LAB_00018557;\n      case 0x3f43:\n        pPVar27 = piVar3->head;\n        goto LAB_00018562;\n      case 0x3f44:\n        goto _L110;\n      case 0x3f45:\n        uVar7 = piVar3->strstart;\n        uVar19 = piVar3->match_length;\n        if (uVar19 <= uVar7) goto LAB_00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        local_48 = piVar3->strstart;\n        goto LAB_000185db;\n      case 0x3f47:\n        goto _L113;\n      case 0x3f48:\n        goto _L114;\n      case 0x3f49:\n        cVar21 = (ct_data_s)piVar3->hash_size;\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto _L116;\n      case 0x3f4b:\n        cVar21 = (ct_data_s)piVar3->hash_size;\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto _L118;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\n_L120:\n        uVar7 = piVar3->pending_buf_size;\n        if (uVar7 == 0) goto LAB_00018e20;\n        if (0x1f < (uint)cVar20) goto LAB_00017996;\n        if (local_6c != (Posf *)0x0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar7 = piVar3->pending_buf_size;\n        goto LAB_000183ff;\n      case 0x3f50:\n        pPVar27 = (Posf *)0x1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto _L590;\n      case 0x3f52:\n        goto _L593;\n      }\n    }" { (expression_statement "piVar3 = strm->state;" (assignment_expression "piVar3 = strm->state" identifier = (field_expression "strm->state" identifier -> field_identifier)) ;) (expression_statement "iVar6 = piVar3->status;" (assignment_expression "iVar6 = piVar3->status" identifier = (field_expression "piVar3->status" identifier -> field_identifier)) ;) (if_statement "if (iVar6 == 0x3f3f) {\n        piVar3->status = 0x3f40;\n        iVar6 = 0x3f40;\n      }" if (parenthesized_expression "(iVar6 == 0x3f3f)" ( (binary_expression "iVar6 == 0x3f3f" identifier == number_literal) )) (compound_statement "{\n        piVar3->status = 0x3f40;\n        iVar6 = 0x3f40;\n      }" { (expression_statement "piVar3->status = 0x3f40;" (assignment_expression "piVar3->status = 0x3f40" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (expression_statement "iVar6 = 0x3f40;" (assignment_expression "iVar6 = 0x3f40" identifier = number_literal) ;) })) (expression_statement "local_50 = (Posf *)strm->avail_out;" (assignment_expression "local_50 = (Posf *)strm->avail_out" identifier = (cast_expression "(Posf *)strm->avail_out" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "strm->avail_out" identifier -> field_identifier))) ;) (expression_statement "local_64 = (gz_headerp)piVar3->window_size;" (assignment_expression "local_64 = (gz_headerp)piVar3->window_size" identifier = (cast_expression "(gz_headerp)piVar3->window_size" ( (type_descriptor "gz_headerp" type_identifier) ) (field_expression "piVar3->window_size" identifier -> field_identifier))) ;) (expression_statement "cVar20 = (ct_data_s)piVar3->prev;" (assignment_expression "cVar20 = (ct_data_s)piVar3->prev" identifier = (cast_expression "(ct_data_s)piVar3->prev" ( (type_descriptor "ct_data_s" type_identifier) ) (field_expression "piVar3->prev" identifier -> field_identifier))) ;) (expression_statement "local_6c = pPVar2;" (assignment_expression "local_6c = pPVar2" identifier = identifier) ;) (expression_statement "local_5c = local_50;" (assignment_expression "local_5c = local_50" identifier = identifier) ;) (labeled_statement "LAB_000178c9:\n      switch(iVar6) {\n      case 0x3f34:\n        uVar7 = piVar3->pending_buf_size;\n        if (uVar7 != 0) {\n          if (0xf < (uint)cVar20) goto LAB_00018ec6;\n          if (local_6c != (Posf *)0x0) goto LAB_00018ea0;\n          goto LAB_00017f30;\n        }\n        piVar3->status = 0x3f40;\n      case 0x3f40:\n_L106:\n        bVar16 = cVar20.fc;\n        if (piVar3->pending_buf != (Bytef *)0x0) {\n          cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8);\n          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 7));\n          piVar3->status = 0x3f4e;\n          goto _L120;\n        }\n        pPVar27 = (Posf *)0x0;\n        if ((uint)cVar20 < 3) {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n          local_6c = (Posf *)((int)local_6c - 1);\n          cVar20 = (ct_data_s)((int)cVar20 + 8);\n          bVar17 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = (gz_headerp)((int)&local_64->text + ((uint)bVar17 << (bVar16 & 0x1f)));\n        }\n        piVar3->pending_buf = (Bytef *)((uint)local_64 & 1);\n        uVar7 = (uint)local_64 >> 1 & 3;\n        if (uVar7 == 2) {\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          piVar3->status = 0x3f44;\n_L110:\n          for (; (uint)cVar20 < 0xe; cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n            local_6c = (Posf *)((int)local_6c - 1);\n            local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n            local_60 = local_60 + 1;\n          }\n          cVar20 = (ct_data_s)((int)cVar20 - 0xe);\n          uVar24 = ((uint)local_64 & 0x1f) + 0x101;\n          uVar7 = ((uint)local_64 >> 5 & 0x1f) + 1;\n          uVar19 = ((uint)local_64 >> 10 & 0xf) + 4;\n          local_64 = (gz_headerp)((uint)local_64 >> 0xe);\n          piVar3->prev_match = uVar24;\n          piVar3->match_available = uVar7;\n          piVar3->match_length = uVar19;\n          if ((uVar7 < 0x1f) && (uVar24 < 0x11f)) {\n            uVar7 = 0;\n            piVar3->strstart = 0;\n            piVar3->status = 0x3f45;\nLAB_000184b2:\n            uVar24 = uVar7 + 1;\n            do {\n              uVar7 = uVar24;\n              if ((uint)cVar20 < 3) {\n                if (local_6c == (Posf *)0x0) {\n                  pPVar27 = (Posf *)0x0;\n                  local_6c = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\n                local_6c = (Posf *)((int)local_6c - 1);\n                bVar16 = cVar20.fc;\n                cVar20 = (ct_data_s)((int)cVar20 + 8);\n                local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                ;\n                local_60 = local_60 + 1;\n              }\n              cVar20 = (ct_data_s)((int)cVar20 - 3);\n              piVar3->strstart = uVar7;\n              pgVar13 = (gz_headerp)((uint)local_64 >> 3);\n              *(ushort *)\n               ((int)(piVar3->dyn_ltree + -8) +\n               (uint)*(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe) * 2) = (ushort)local_64 & 7;\n              local_64 = pgVar13;\n              uVar24 = uVar7 + 1;\n            } while (uVar19 + 1 != uVar7 + 1);\nLAB_00019253:\n            if (uVar7 < 0x13) {\n              puVar15 = inflate::order + uVar7;\n              do {\n                uVar25 = *puVar15;\n                puVar15 = puVar15 + 1;\n                *(undefined2 *)((int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2) = 0;\n              } while (puVar15 != (ushort *)&UNK_000221e6);\n              piVar3->strstart = 0x13;\n            }\n            piVar3->hash_shift = 7;\n            piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n            piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n            iVar6 = inflate_table(CODES,(ushort *)&piVar3->lookahead,0x13,\n                                  (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                  (ushort *)(piVar3->dyn_ltree + 0x98));\n            if (iVar6 == 0) {\n              local_48 = 0;\n              piVar3->strstart = 0;\n              piVar3->status = 0x3f46;\nLAB_000185db:\n              uVar7 = piVar3->prev_match;\n              uVar19 = uVar7 + piVar3->match_available;\n              while (local_48 < uVar19) {\n                uVar24 = ~(-1 << ((byte)piVar3->hash_shift & 0x1f));\n                iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                cVar21._1_3_ = 0;\n                cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                uVar25 = *(ushort *)(iVar6 + 2);\n                if ((uint)cVar20 < (uint)cVar21) {\n                  if (local_6c != (Posf *)0x0) {\n                    while( true ) {\n                      pbVar26 = local_60 + 1;\n                      local_6c = (Posf *)((int)local_6c - 1);\n                      bVar16 = cVar20.fc;\n                      cVar20 = (ct_data_s)((int)cVar20 + 8);\n                      local_64 = (gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n                      iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                      cVar21._1_3_ = 0;\n                      cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                      uVar25 = *(ushort *)(iVar6 + 2);\n                      local_60 = pbVar26;\n                      if ((uint)cVar21 <= (uint)cVar20) break;\n                      if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  pPVar27 = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar16 = cVar21.fc;\n                if (uVar25 < 0x10) {\n                  local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                  cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                  piVar3->strstart = local_48 + 1;\n                  *(ushort *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2) = uVar25;\n                  local_48 = local_48 + 1;\n                }\n                else {\n                  if (uVar25 == 0x10) {\n                    if ((uint)cVar20 < (int)cVar21 + 2U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                    local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                    if (local_48 == 0) {\n                      strm->msg = "invalid bit length repeat";\n                      piVar3->status = 0x3f51;\n                      goto _L590;\n                    }\n                    uVar24 = (uint)local_64 & 3;\n                    local_64 = (gz_headerp)((uint)local_64 >> 2);\n                    cVar20 = (ct_data_s)((int)cVar20 - 2);\n                    uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22);\n                    iVar6 = uVar24 + 3;\n                  }\n                  else if (uVar25 == 0x11) {\n                    if ((uint)cVar20 < (int)cVar21 + 3U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);\n                    iVar6 = (uVar24 & 7) + 3;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 3);\n                  }\n                  else {\n                    if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);\n                    iVar6 = (uVar24 & 0x7f) + 0xb;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 7);\n                  }\n                  uVar24 = iVar6 + local_48;\n                  if (uVar19 < uVar24) {\n                    strm->msg = "invalid bit length repeat";\n                    piVar3->status = 0x3f51;\n                    goto _L590;\n                  }\n                  puVar23 = (undefined2 *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2);\n                  do {\n                    *puVar23 = uVar18;\n                    puVar23 = puVar23 + 1;\n                  } while (puVar23 != (undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2));\n                  piVar3->strstart = uVar24;\n                  local_48 = uVar24;\n                }\n              }\n              if (piVar3->status == 0x3f51) goto _L590;\n              if (piVar3->dyn_ltree[0x78].fc.freq != 0) {\n                piVar3->hash_shift = 9;\n                piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n                piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n                iVar6 = inflate_table(LENS,(ushort *)&piVar3->lookahead,uVar7,\n                                      (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                      (ushort *)(piVar3->dyn_ltree + 0x98));\n                if (iVar6 == 0) {\n                  piVar3->block_start = 6;\n                  piVar3->hash_mask = piVar3->match_start;\n                  iVar6 = inflate_table(DISTS,(ushort *)\n                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2),\n                                        piVar3->match_available,(code **)&piVar3->match_start,\n                                        (uint *)&piVar3->block_start,\n                                        (ushort *)(piVar3->dyn_ltree + 0x98));\n                  if (iVar6 == 0) {\n                    piVar3->status = 0x3f47;\n                    if (flush != 6) {\n_L113:\n                      do {\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    pPVar27 = (Posf *)0x0;\n                  }\n                  else {\n                    pPVar27 = (Posf *)0xfffffffd;\n                    strm->msg = "invalid distances set";\n                    piVar3->status = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar8 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              pPVar27 = (Posf *)0xfffffffd;\n              strm->msg = "invalid code -- missing end-of-block";\n              piVar3->status = 0x3f51;\n            }\n            else {\n              strm->msg = "invalid code lengths set";\n              piVar3->status = 0x3f51;\n              pPVar27 = (Posf *)0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar8 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar7 == 3) {\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          pPVar27 = (Posf *)0xfffffffd;\n          strm->msg = "invalid block type";\n          piVar3->status = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar7 == 1) {\n          piVar3->hash_shift = 9;\n          piVar3->block_start = 5;\n          piVar3->status = 0x3f47;\n          piVar3->hash_bits = (uInt)lenfix_3685;\n          piVar3->hash_mask = (uInt)distfix_3686;\n          if (flush != 6) {\n            local_64 = (gz_headerp)((uint)local_64 >> 3);\n            cVar20 = (ct_data_s)((int)cVar20 - 3);\n            goto _L113;\n          }\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          goto LAB_00017f32;\n        }\n        local_64 = (gz_headerp)((uint)local_64 >> 3);\n        piVar3->status = 0x3f41;\n        cVar20 = (ct_data_s)((int)cVar20 - 3);\n_L107:\n        local_64 = (gz_headerp)((uint)local_64 >> (cVar20.fc & 7));\n        for (cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8); (uint)cVar20 < 0x20;\n            cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n          local_6c = (Posf *)((int)local_6c - 1);\n          local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n          local_60 = local_60 + 1;\n        }\n        pPVar27 = (Posf *)((uint)local_64 & 0xffff);\n        if (pPVar27 != (Posf *)((uint)local_64 >> 0x10 ^ 0xffff)) {\n          pcVar8 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        piVar3->head = pPVar27;\n        piVar3->status = 0x3f42;\n        if (flush == 6) {\n          pPVar27 = (Posf *)0x0;\n          cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n          cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n          local_64 = (gz_headerp)0x0;\n          goto LAB_00017f32;\n        }\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\nLAB_00018557:\n        piVar3->status = 0x3f43;\nLAB_00018562:\n        if (pPVar27 == (Posf *)0x0) {\n          piVar3->status = 0x3f3f;\n          goto _L105;\n        }\n        if (local_6c <= pPVar27) {\n          pPVar27 = local_6c;\n        }\n        if (local_5c < pPVar27) {\n          pPVar27 = local_5c;\n        }\n        if (pPVar27 == (Posf *)0x0) goto LAB_00017f30;\n        memcpy(end,local_60,(size_t)pPVar27);\n        local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n        local_60 = local_60 + (int)pPVar27;\n        local_5c = (Posf *)((int)local_5c - (int)pPVar27);\n        piVar3->head = (Posf *)((int)piVar3->head - (int)pPVar27);\n        iVar6 = piVar3->status;\n        end = end + (int)pPVar27;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar7 = piVar3->pending;\n        if ((uVar7 & 0x400) == 0) goto LAB_000181ae;\n        if ((uint)cVar20 < 0x10) goto LAB_0001829d;\n        goto LAB_000182ea;\n      case 0x3f39:\n        uVar7 = piVar3->pending;\n        goto LAB_000181cb;\n      case 0x3f3a:\n        uVar7 = piVar3->pending;\n        goto LAB_0001832f;\n      case 0x3f3b:\n        uVar7 = piVar3->pending;\n        goto LAB_0001835c;\n      case 0x3f3c:\n        uVar7 = piVar3->pending;\n        goto LAB_00018382;\n      case 0x3f3d:\n        pgVar13 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto _L104;\n      case 0x3f3f:\n        goto _L105;\n      case 0x3f41:\n        goto _L107;\n      case 0x3f42:\n        pPVar27 = piVar3->head;\n        goto LAB_00018557;\n      case 0x3f43:\n        pPVar27 = piVar3->head;\n        goto LAB_00018562;\n      case 0x3f44:\n        goto _L110;\n      case 0x3f45:\n        uVar7 = piVar3->strstart;\n        uVar19 = piVar3->match_length;\n        if (uVar19 <= uVar7) goto LAB_00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        local_48 = piVar3->strstart;\n        goto LAB_000185db;\n      case 0x3f47:\n        goto _L113;\n      case 0x3f48:\n        goto _L114;\n      case 0x3f49:\n        cVar21 = (ct_data_s)piVar3->hash_size;\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto _L116;\n      case 0x3f4b:\n        cVar21 = (ct_data_s)piVar3->hash_size;\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto _L118;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\n_L120:\n        uVar7 = piVar3->pending_buf_size;\n        if (uVar7 == 0) goto LAB_00018e20;\n        if (0x1f < (uint)cVar20) goto LAB_00017996;\n        if (local_6c != (Posf *)0x0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar7 = piVar3->pending_buf_size;\n        goto LAB_000183ff;\n      case 0x3f50:\n        pPVar27 = (Posf *)0x1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto _L590;\n      case 0x3f52:\n        goto _L593;\n      }" statement_identifier : (switch_statement "switch(iVar6) {\n      case 0x3f34:\n        uVar7 = piVar3->pending_buf_size;\n        if (uVar7 != 0) {\n          if (0xf < (uint)cVar20) goto LAB_00018ec6;\n          if (local_6c != (Posf *)0x0) goto LAB_00018ea0;\n          goto LAB_00017f30;\n        }\n        piVar3->status = 0x3f40;\n      case 0x3f40:\n_L106:\n        bVar16 = cVar20.fc;\n        if (piVar3->pending_buf != (Bytef *)0x0) {\n          cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8);\n          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 7));\n          piVar3->status = 0x3f4e;\n          goto _L120;\n        }\n        pPVar27 = (Posf *)0x0;\n        if ((uint)cVar20 < 3) {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n          local_6c = (Posf *)((int)local_6c - 1);\n          cVar20 = (ct_data_s)((int)cVar20 + 8);\n          bVar17 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = (gz_headerp)((int)&local_64->text + ((uint)bVar17 << (bVar16 & 0x1f)));\n        }\n        piVar3->pending_buf = (Bytef *)((uint)local_64 & 1);\n        uVar7 = (uint)local_64 >> 1 & 3;\n        if (uVar7 == 2) {\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          piVar3->status = 0x3f44;\n_L110:\n          for (; (uint)cVar20 < 0xe; cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n            local_6c = (Posf *)((int)local_6c - 1);\n            local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n            local_60 = local_60 + 1;\n          }\n          cVar20 = (ct_data_s)((int)cVar20 - 0xe);\n          uVar24 = ((uint)local_64 & 0x1f) + 0x101;\n          uVar7 = ((uint)local_64 >> 5 & 0x1f) + 1;\n          uVar19 = ((uint)local_64 >> 10 & 0xf) + 4;\n          local_64 = (gz_headerp)((uint)local_64 >> 0xe);\n          piVar3->prev_match = uVar24;\n          piVar3->match_available = uVar7;\n          piVar3->match_length = uVar19;\n          if ((uVar7 < 0x1f) && (uVar24 < 0x11f)) {\n            uVar7 = 0;\n            piVar3->strstart = 0;\n            piVar3->status = 0x3f45;\nLAB_000184b2:\n            uVar24 = uVar7 + 1;\n            do {\n              uVar7 = uVar24;\n              if ((uint)cVar20 < 3) {\n                if (local_6c == (Posf *)0x0) {\n                  pPVar27 = (Posf *)0x0;\n                  local_6c = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\n                local_6c = (Posf *)((int)local_6c - 1);\n                bVar16 = cVar20.fc;\n                cVar20 = (ct_data_s)((int)cVar20 + 8);\n                local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                ;\n                local_60 = local_60 + 1;\n              }\n              cVar20 = (ct_data_s)((int)cVar20 - 3);\n              piVar3->strstart = uVar7;\n              pgVar13 = (gz_headerp)((uint)local_64 >> 3);\n              *(ushort *)\n               ((int)(piVar3->dyn_ltree + -8) +\n               (uint)*(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe) * 2) = (ushort)local_64 & 7;\n              local_64 = pgVar13;\n              uVar24 = uVar7 + 1;\n            } while (uVar19 + 1 != uVar7 + 1);\nLAB_00019253:\n            if (uVar7 < 0x13) {\n              puVar15 = inflate::order + uVar7;\n              do {\n                uVar25 = *puVar15;\n                puVar15 = puVar15 + 1;\n                *(undefined2 *)((int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2) = 0;\n              } while (puVar15 != (ushort *)&UNK_000221e6);\n              piVar3->strstart = 0x13;\n            }\n            piVar3->hash_shift = 7;\n            piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n            piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n            iVar6 = inflate_table(CODES,(ushort *)&piVar3->lookahead,0x13,\n                                  (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                  (ushort *)(piVar3->dyn_ltree + 0x98));\n            if (iVar6 == 0) {\n              local_48 = 0;\n              piVar3->strstart = 0;\n              piVar3->status = 0x3f46;\nLAB_000185db:\n              uVar7 = piVar3->prev_match;\n              uVar19 = uVar7 + piVar3->match_available;\n              while (local_48 < uVar19) {\n                uVar24 = ~(-1 << ((byte)piVar3->hash_shift & 0x1f));\n                iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                cVar21._1_3_ = 0;\n                cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                uVar25 = *(ushort *)(iVar6 + 2);\n                if ((uint)cVar20 < (uint)cVar21) {\n                  if (local_6c != (Posf *)0x0) {\n                    while( true ) {\n                      pbVar26 = local_60 + 1;\n                      local_6c = (Posf *)((int)local_6c - 1);\n                      bVar16 = cVar20.fc;\n                      cVar20 = (ct_data_s)((int)cVar20 + 8);\n                      local_64 = (gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n                      iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                      cVar21._1_3_ = 0;\n                      cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                      uVar25 = *(ushort *)(iVar6 + 2);\n                      local_60 = pbVar26;\n                      if ((uint)cVar21 <= (uint)cVar20) break;\n                      if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  pPVar27 = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar16 = cVar21.fc;\n                if (uVar25 < 0x10) {\n                  local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                  cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                  piVar3->strstart = local_48 + 1;\n                  *(ushort *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2) = uVar25;\n                  local_48 = local_48 + 1;\n                }\n                else {\n                  if (uVar25 == 0x10) {\n                    if ((uint)cVar20 < (int)cVar21 + 2U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                    local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                    if (local_48 == 0) {\n                      strm->msg = "invalid bit length repeat";\n                      piVar3->status = 0x3f51;\n                      goto _L590;\n                    }\n                    uVar24 = (uint)local_64 & 3;\n                    local_64 = (gz_headerp)((uint)local_64 >> 2);\n                    cVar20 = (ct_data_s)((int)cVar20 - 2);\n                    uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22);\n                    iVar6 = uVar24 + 3;\n                  }\n                  else if (uVar25 == 0x11) {\n                    if ((uint)cVar20 < (int)cVar21 + 3U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);\n                    iVar6 = (uVar24 & 7) + 3;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 3);\n                  }\n                  else {\n                    if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);\n                    iVar6 = (uVar24 & 0x7f) + 0xb;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 7);\n                  }\n                  uVar24 = iVar6 + local_48;\n                  if (uVar19 < uVar24) {\n                    strm->msg = "invalid bit length repeat";\n                    piVar3->status = 0x3f51;\n                    goto _L590;\n                  }\n                  puVar23 = (undefined2 *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2);\n                  do {\n                    *puVar23 = uVar18;\n                    puVar23 = puVar23 + 1;\n                  } while (puVar23 != (undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2));\n                  piVar3->strstart = uVar24;\n                  local_48 = uVar24;\n                }\n              }\n              if (piVar3->status == 0x3f51) goto _L590;\n              if (piVar3->dyn_ltree[0x78].fc.freq != 0) {\n                piVar3->hash_shift = 9;\n                piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n                piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n                iVar6 = inflate_table(LENS,(ushort *)&piVar3->lookahead,uVar7,\n                                      (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                      (ushort *)(piVar3->dyn_ltree + 0x98));\n                if (iVar6 == 0) {\n                  piVar3->block_start = 6;\n                  piVar3->hash_mask = piVar3->match_start;\n                  iVar6 = inflate_table(DISTS,(ushort *)\n                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2),\n                                        piVar3->match_available,(code **)&piVar3->match_start,\n                                        (uint *)&piVar3->block_start,\n                                        (ushort *)(piVar3->dyn_ltree + 0x98));\n                  if (iVar6 == 0) {\n                    piVar3->status = 0x3f47;\n                    if (flush != 6) {\n_L113:\n                      do {\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    pPVar27 = (Posf *)0x0;\n                  }\n                  else {\n                    pPVar27 = (Posf *)0xfffffffd;\n                    strm->msg = "invalid distances set";\n                    piVar3->status = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar8 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              pPVar27 = (Posf *)0xfffffffd;\n              strm->msg = "invalid code -- missing end-of-block";\n              piVar3->status = 0x3f51;\n            }\n            else {\n              strm->msg = "invalid code lengths set";\n              piVar3->status = 0x3f51;\n              pPVar27 = (Posf *)0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar8 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar7 == 3) {\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          pPVar27 = (Posf *)0xfffffffd;\n          strm->msg = "invalid block type";\n          piVar3->status = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar7 == 1) {\n          piVar3->hash_shift = 9;\n          piVar3->block_start = 5;\n          piVar3->status = 0x3f47;\n          piVar3->hash_bits = (uInt)lenfix_3685;\n          piVar3->hash_mask = (uInt)distfix_3686;\n          if (flush != 6) {\n            local_64 = (gz_headerp)((uint)local_64 >> 3);\n            cVar20 = (ct_data_s)((int)cVar20 - 3);\n            goto _L113;\n          }\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          goto LAB_00017f32;\n        }\n        local_64 = (gz_headerp)((uint)local_64 >> 3);\n        piVar3->status = 0x3f41;\n        cVar20 = (ct_data_s)((int)cVar20 - 3);\n_L107:\n        local_64 = (gz_headerp)((uint)local_64 >> (cVar20.fc & 7));\n        for (cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8); (uint)cVar20 < 0x20;\n            cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n          local_6c = (Posf *)((int)local_6c - 1);\n          local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n          local_60 = local_60 + 1;\n        }\n        pPVar27 = (Posf *)((uint)local_64 & 0xffff);\n        if (pPVar27 != (Posf *)((uint)local_64 >> 0x10 ^ 0xffff)) {\n          pcVar8 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        piVar3->head = pPVar27;\n        piVar3->status = 0x3f42;\n        if (flush == 6) {\n          pPVar27 = (Posf *)0x0;\n          cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n          cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n          local_64 = (gz_headerp)0x0;\n          goto LAB_00017f32;\n        }\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\nLAB_00018557:\n        piVar3->status = 0x3f43;\nLAB_00018562:\n        if (pPVar27 == (Posf *)0x0) {\n          piVar3->status = 0x3f3f;\n          goto _L105;\n        }\n        if (local_6c <= pPVar27) {\n          pPVar27 = local_6c;\n        }\n        if (local_5c < pPVar27) {\n          pPVar27 = local_5c;\n        }\n        if (pPVar27 == (Posf *)0x0) goto LAB_00017f30;\n        memcpy(end,local_60,(size_t)pPVar27);\n        local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n        local_60 = local_60 + (int)pPVar27;\n        local_5c = (Posf *)((int)local_5c - (int)pPVar27);\n        piVar3->head = (Posf *)((int)piVar3->head - (int)pPVar27);\n        iVar6 = piVar3->status;\n        end = end + (int)pPVar27;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar7 = piVar3->pending;\n        if ((uVar7 & 0x400) == 0) goto LAB_000181ae;\n        if ((uint)cVar20 < 0x10) goto LAB_0001829d;\n        goto LAB_000182ea;\n      case 0x3f39:\n        uVar7 = piVar3->pending;\n        goto LAB_000181cb;\n      case 0x3f3a:\n        uVar7 = piVar3->pending;\n        goto LAB_0001832f;\n      case 0x3f3b:\n        uVar7 = piVar3->pending;\n        goto LAB_0001835c;\n      case 0x3f3c:\n        uVar7 = piVar3->pending;\n        goto LAB_00018382;\n      case 0x3f3d:\n        pgVar13 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto _L104;\n      case 0x3f3f:\n        goto _L105;\n      case 0x3f41:\n        goto _L107;\n      case 0x3f42:\n        pPVar27 = piVar3->head;\n        goto LAB_00018557;\n      case 0x3f43:\n        pPVar27 = piVar3->head;\n        goto LAB_00018562;\n      case 0x3f44:\n        goto _L110;\n      case 0x3f45:\n        uVar7 = piVar3->strstart;\n        uVar19 = piVar3->match_length;\n        if (uVar19 <= uVar7) goto LAB_00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        local_48 = piVar3->strstart;\n        goto LAB_000185db;\n      case 0x3f47:\n        goto _L113;\n      case 0x3f48:\n        goto _L114;\n      case 0x3f49:\n        cVar21 = (ct_data_s)piVar3->hash_size;\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto _L116;\n      case 0x3f4b:\n        cVar21 = (ct_data_s)piVar3->hash_size;\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto _L118;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\n_L120:\n        uVar7 = piVar3->pending_buf_size;\n        if (uVar7 == 0) goto LAB_00018e20;\n        if (0x1f < (uint)cVar20) goto LAB_00017996;\n        if (local_6c != (Posf *)0x0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar7 = piVar3->pending_buf_size;\n        goto LAB_000183ff;\n      case 0x3f50:\n        pPVar27 = (Posf *)0x1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto _L590;\n      case 0x3f52:\n        goto _L593;\n      }" switch (parenthesized_expression "(iVar6)" ( identifier )) (compound_statement "{\n      case 0x3f34:\n        uVar7 = piVar3->pending_buf_size;\n        if (uVar7 != 0) {\n          if (0xf < (uint)cVar20) goto LAB_00018ec6;\n          if (local_6c != (Posf *)0x0) goto LAB_00018ea0;\n          goto LAB_00017f30;\n        }\n        piVar3->status = 0x3f40;\n      case 0x3f40:\n_L106:\n        bVar16 = cVar20.fc;\n        if (piVar3->pending_buf != (Bytef *)0x0) {\n          cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8);\n          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 7));\n          piVar3->status = 0x3f4e;\n          goto _L120;\n        }\n        pPVar27 = (Posf *)0x0;\n        if ((uint)cVar20 < 3) {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n          local_6c = (Posf *)((int)local_6c - 1);\n          cVar20 = (ct_data_s)((int)cVar20 + 8);\n          bVar17 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = (gz_headerp)((int)&local_64->text + ((uint)bVar17 << (bVar16 & 0x1f)));\n        }\n        piVar3->pending_buf = (Bytef *)((uint)local_64 & 1);\n        uVar7 = (uint)local_64 >> 1 & 3;\n        if (uVar7 == 2) {\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          piVar3->status = 0x3f44;\n_L110:\n          for (; (uint)cVar20 < 0xe; cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n            local_6c = (Posf *)((int)local_6c - 1);\n            local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n            local_60 = local_60 + 1;\n          }\n          cVar20 = (ct_data_s)((int)cVar20 - 0xe);\n          uVar24 = ((uint)local_64 & 0x1f) + 0x101;\n          uVar7 = ((uint)local_64 >> 5 & 0x1f) + 1;\n          uVar19 = ((uint)local_64 >> 10 & 0xf) + 4;\n          local_64 = (gz_headerp)((uint)local_64 >> 0xe);\n          piVar3->prev_match = uVar24;\n          piVar3->match_available = uVar7;\n          piVar3->match_length = uVar19;\n          if ((uVar7 < 0x1f) && (uVar24 < 0x11f)) {\n            uVar7 = 0;\n            piVar3->strstart = 0;\n            piVar3->status = 0x3f45;\nLAB_000184b2:\n            uVar24 = uVar7 + 1;\n            do {\n              uVar7 = uVar24;\n              if ((uint)cVar20 < 3) {\n                if (local_6c == (Posf *)0x0) {\n                  pPVar27 = (Posf *)0x0;\n                  local_6c = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\n                local_6c = (Posf *)((int)local_6c - 1);\n                bVar16 = cVar20.fc;\n                cVar20 = (ct_data_s)((int)cVar20 + 8);\n                local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                ;\n                local_60 = local_60 + 1;\n              }\n              cVar20 = (ct_data_s)((int)cVar20 - 3);\n              piVar3->strstart = uVar7;\n              pgVar13 = (gz_headerp)((uint)local_64 >> 3);\n              *(ushort *)\n               ((int)(piVar3->dyn_ltree + -8) +\n               (uint)*(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe) * 2) = (ushort)local_64 & 7;\n              local_64 = pgVar13;\n              uVar24 = uVar7 + 1;\n            } while (uVar19 + 1 != uVar7 + 1);\nLAB_00019253:\n            if (uVar7 < 0x13) {\n              puVar15 = inflate::order + uVar7;\n              do {\n                uVar25 = *puVar15;\n                puVar15 = puVar15 + 1;\n                *(undefined2 *)((int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2) = 0;\n              } while (puVar15 != (ushort *)&UNK_000221e6);\n              piVar3->strstart = 0x13;\n            }\n            piVar3->hash_shift = 7;\n            piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n            piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n            iVar6 = inflate_table(CODES,(ushort *)&piVar3->lookahead,0x13,\n                                  (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                  (ushort *)(piVar3->dyn_ltree + 0x98));\n            if (iVar6 == 0) {\n              local_48 = 0;\n              piVar3->strstart = 0;\n              piVar3->status = 0x3f46;\nLAB_000185db:\n              uVar7 = piVar3->prev_match;\n              uVar19 = uVar7 + piVar3->match_available;\n              while (local_48 < uVar19) {\n                uVar24 = ~(-1 << ((byte)piVar3->hash_shift & 0x1f));\n                iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                cVar21._1_3_ = 0;\n                cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                uVar25 = *(ushort *)(iVar6 + 2);\n                if ((uint)cVar20 < (uint)cVar21) {\n                  if (local_6c != (Posf *)0x0) {\n                    while( true ) {\n                      pbVar26 = local_60 + 1;\n                      local_6c = (Posf *)((int)local_6c - 1);\n                      bVar16 = cVar20.fc;\n                      cVar20 = (ct_data_s)((int)cVar20 + 8);\n                      local_64 = (gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n                      iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                      cVar21._1_3_ = 0;\n                      cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                      uVar25 = *(ushort *)(iVar6 + 2);\n                      local_60 = pbVar26;\n                      if ((uint)cVar21 <= (uint)cVar20) break;\n                      if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  pPVar27 = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar16 = cVar21.fc;\n                if (uVar25 < 0x10) {\n                  local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                  cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                  piVar3->strstart = local_48 + 1;\n                  *(ushort *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2) = uVar25;\n                  local_48 = local_48 + 1;\n                }\n                else {\n                  if (uVar25 == 0x10) {\n                    if ((uint)cVar20 < (int)cVar21 + 2U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                    local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                    if (local_48 == 0) {\n                      strm->msg = "invalid bit length repeat";\n                      piVar3->status = 0x3f51;\n                      goto _L590;\n                    }\n                    uVar24 = (uint)local_64 & 3;\n                    local_64 = (gz_headerp)((uint)local_64 >> 2);\n                    cVar20 = (ct_data_s)((int)cVar20 - 2);\n                    uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22);\n                    iVar6 = uVar24 + 3;\n                  }\n                  else if (uVar25 == 0x11) {\n                    if ((uint)cVar20 < (int)cVar21 + 3U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);\n                    iVar6 = (uVar24 & 7) + 3;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 3);\n                  }\n                  else {\n                    if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);\n                    iVar6 = (uVar24 & 0x7f) + 0xb;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 7);\n                  }\n                  uVar24 = iVar6 + local_48;\n                  if (uVar19 < uVar24) {\n                    strm->msg = "invalid bit length repeat";\n                    piVar3->status = 0x3f51;\n                    goto _L590;\n                  }\n                  puVar23 = (undefined2 *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2);\n                  do {\n                    *puVar23 = uVar18;\n                    puVar23 = puVar23 + 1;\n                  } while (puVar23 != (undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2));\n                  piVar3->strstart = uVar24;\n                  local_48 = uVar24;\n                }\n              }\n              if (piVar3->status == 0x3f51) goto _L590;\n              if (piVar3->dyn_ltree[0x78].fc.freq != 0) {\n                piVar3->hash_shift = 9;\n                piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n                piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n                iVar6 = inflate_table(LENS,(ushort *)&piVar3->lookahead,uVar7,\n                                      (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                      (ushort *)(piVar3->dyn_ltree + 0x98));\n                if (iVar6 == 0) {\n                  piVar3->block_start = 6;\n                  piVar3->hash_mask = piVar3->match_start;\n                  iVar6 = inflate_table(DISTS,(ushort *)\n                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2),\n                                        piVar3->match_available,(code **)&piVar3->match_start,\n                                        (uint *)&piVar3->block_start,\n                                        (ushort *)(piVar3->dyn_ltree + 0x98));\n                  if (iVar6 == 0) {\n                    piVar3->status = 0x3f47;\n                    if (flush != 6) {\n_L113:\n                      do {\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    pPVar27 = (Posf *)0x0;\n                  }\n                  else {\n                    pPVar27 = (Posf *)0xfffffffd;\n                    strm->msg = "invalid distances set";\n                    piVar3->status = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar8 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              pPVar27 = (Posf *)0xfffffffd;\n              strm->msg = "invalid code -- missing end-of-block";\n              piVar3->status = 0x3f51;\n            }\n            else {\n              strm->msg = "invalid code lengths set";\n              piVar3->status = 0x3f51;\n              pPVar27 = (Posf *)0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar8 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar7 == 3) {\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          pPVar27 = (Posf *)0xfffffffd;\n          strm->msg = "invalid block type";\n          piVar3->status = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar7 == 1) {\n          piVar3->hash_shift = 9;\n          piVar3->block_start = 5;\n          piVar3->status = 0x3f47;\n          piVar3->hash_bits = (uInt)lenfix_3685;\n          piVar3->hash_mask = (uInt)distfix_3686;\n          if (flush != 6) {\n            local_64 = (gz_headerp)((uint)local_64 >> 3);\n            cVar20 = (ct_data_s)((int)cVar20 - 3);\n            goto _L113;\n          }\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          goto LAB_00017f32;\n        }\n        local_64 = (gz_headerp)((uint)local_64 >> 3);\n        piVar3->status = 0x3f41;\n        cVar20 = (ct_data_s)((int)cVar20 - 3);\n_L107:\n        local_64 = (gz_headerp)((uint)local_64 >> (cVar20.fc & 7));\n        for (cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8); (uint)cVar20 < 0x20;\n            cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n          local_6c = (Posf *)((int)local_6c - 1);\n          local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n          local_60 = local_60 + 1;\n        }\n        pPVar27 = (Posf *)((uint)local_64 & 0xffff);\n        if (pPVar27 != (Posf *)((uint)local_64 >> 0x10 ^ 0xffff)) {\n          pcVar8 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        piVar3->head = pPVar27;\n        piVar3->status = 0x3f42;\n        if (flush == 6) {\n          pPVar27 = (Posf *)0x0;\n          cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n          cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n          local_64 = (gz_headerp)0x0;\n          goto LAB_00017f32;\n        }\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\nLAB_00018557:\n        piVar3->status = 0x3f43;\nLAB_00018562:\n        if (pPVar27 == (Posf *)0x0) {\n          piVar3->status = 0x3f3f;\n          goto _L105;\n        }\n        if (local_6c <= pPVar27) {\n          pPVar27 = local_6c;\n        }\n        if (local_5c < pPVar27) {\n          pPVar27 = local_5c;\n        }\n        if (pPVar27 == (Posf *)0x0) goto LAB_00017f30;\n        memcpy(end,local_60,(size_t)pPVar27);\n        local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n        local_60 = local_60 + (int)pPVar27;\n        local_5c = (Posf *)((int)local_5c - (int)pPVar27);\n        piVar3->head = (Posf *)((int)piVar3->head - (int)pPVar27);\n        iVar6 = piVar3->status;\n        end = end + (int)pPVar27;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar7 = piVar3->pending;\n        if ((uVar7 & 0x400) == 0) goto LAB_000181ae;\n        if ((uint)cVar20 < 0x10) goto LAB_0001829d;\n        goto LAB_000182ea;\n      case 0x3f39:\n        uVar7 = piVar3->pending;\n        goto LAB_000181cb;\n      case 0x3f3a:\n        uVar7 = piVar3->pending;\n        goto LAB_0001832f;\n      case 0x3f3b:\n        uVar7 = piVar3->pending;\n        goto LAB_0001835c;\n      case 0x3f3c:\n        uVar7 = piVar3->pending;\n        goto LAB_00018382;\n      case 0x3f3d:\n        pgVar13 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto _L104;\n      case 0x3f3f:\n        goto _L105;\n      case 0x3f41:\n        goto _L107;\n      case 0x3f42:\n        pPVar27 = piVar3->head;\n        goto LAB_00018557;\n      case 0x3f43:\n        pPVar27 = piVar3->head;\n        goto LAB_00018562;\n      case 0x3f44:\n        goto _L110;\n      case 0x3f45:\n        uVar7 = piVar3->strstart;\n        uVar19 = piVar3->match_length;\n        if (uVar19 <= uVar7) goto LAB_00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        local_48 = piVar3->strstart;\n        goto LAB_000185db;\n      case 0x3f47:\n        goto _L113;\n      case 0x3f48:\n        goto _L114;\n      case 0x3f49:\n        cVar21 = (ct_data_s)piVar3->hash_size;\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto _L116;\n      case 0x3f4b:\n        cVar21 = (ct_data_s)piVar3->hash_size;\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto _L118;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\n_L120:\n        uVar7 = piVar3->pending_buf_size;\n        if (uVar7 == 0) goto LAB_00018e20;\n        if (0x1f < (uint)cVar20) goto LAB_00017996;\n        if (local_6c != (Posf *)0x0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar7 = piVar3->pending_buf_size;\n        goto LAB_000183ff;\n      case 0x3f50:\n        pPVar27 = (Posf *)0x1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto _L590;\n      case 0x3f52:\n        goto _L593;\n      }" { (case_statement "case 0x3f34:\n        uVar7 = piVar3->pending_buf_size;\n        if (uVar7 != 0) {\n          if (0xf < (uint)cVar20) goto LAB_00018ec6;\n          if (local_6c != (Posf *)0x0) goto LAB_00018ea0;\n          goto LAB_00017f30;\n        }\n        piVar3->status = 0x3f40;" case number_literal : (expression_statement "uVar7 = piVar3->pending_buf_size;" (assignment_expression "uVar7 = piVar3->pending_buf_size" identifier = (field_expression "piVar3->pending_buf_size" identifier -> field_identifier)) ;) (if_statement "if (uVar7 != 0) {\n          if (0xf < (uint)cVar20) goto LAB_00018ec6;\n          if (local_6c != (Posf *)0x0) goto LAB_00018ea0;\n          goto LAB_00017f30;\n        }" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (compound_statement "{\n          if (0xf < (uint)cVar20) goto LAB_00018ec6;\n          if (local_6c != (Posf *)0x0) goto LAB_00018ea0;\n          goto LAB_00017f30;\n        }" { (if_statement "if (0xf < (uint)cVar20) goto LAB_00018ec6;" if (parenthesized_expression "(0xf < (uint)cVar20)" ( (binary_expression "0xf < (uint)cVar20" number_literal < (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (goto_statement "goto LAB_00018ec6;" goto statement_identifier ;)) (if_statement "if (local_6c != (Posf *)0x0) goto LAB_00018ea0;" if (parenthesized_expression "(local_6c != (Posf *)0x0)" ( (binary_expression "local_6c != (Posf *)0x0" identifier != (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00018ea0;" goto statement_identifier ;)) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;) })) (expression_statement "piVar3->status = 0x3f40;" (assignment_expression "piVar3->status = 0x3f40" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;)) (case_statement "case 0x3f40:\n_L106:\n        bVar16 = cVar20.fc;\n        if (piVar3->pending_buf != (Bytef *)0x0) {\n          cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8);\n          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 7));\n          piVar3->status = 0x3f4e;\n          goto _L120;\n        }\n        pPVar27 = (Posf *)0x0;\n        if ((uint)cVar20 < 3) {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n          local_6c = (Posf *)((int)local_6c - 1);\n          cVar20 = (ct_data_s)((int)cVar20 + 8);\n          bVar17 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = (gz_headerp)((int)&local_64->text + ((uint)bVar17 << (bVar16 & 0x1f)));\n        }\n        piVar3->pending_buf = (Bytef *)((uint)local_64 & 1);\n        uVar7 = (uint)local_64 >> 1 & 3;\n        if (uVar7 == 2) {\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          piVar3->status = 0x3f44;\n_L110:\n          for (; (uint)cVar20 < 0xe; cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n            local_6c = (Posf *)((int)local_6c - 1);\n            local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n            local_60 = local_60 + 1;\n          }\n          cVar20 = (ct_data_s)((int)cVar20 - 0xe);\n          uVar24 = ((uint)local_64 & 0x1f) + 0x101;\n          uVar7 = ((uint)local_64 >> 5 & 0x1f) + 1;\n          uVar19 = ((uint)local_64 >> 10 & 0xf) + 4;\n          local_64 = (gz_headerp)((uint)local_64 >> 0xe);\n          piVar3->prev_match = uVar24;\n          piVar3->match_available = uVar7;\n          piVar3->match_length = uVar19;\n          if ((uVar7 < 0x1f) && (uVar24 < 0x11f)) {\n            uVar7 = 0;\n            piVar3->strstart = 0;\n            piVar3->status = 0x3f45;\nLAB_000184b2:\n            uVar24 = uVar7 + 1;\n            do {\n              uVar7 = uVar24;\n              if ((uint)cVar20 < 3) {\n                if (local_6c == (Posf *)0x0) {\n                  pPVar27 = (Posf *)0x0;\n                  local_6c = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\n                local_6c = (Posf *)((int)local_6c - 1);\n                bVar16 = cVar20.fc;\n                cVar20 = (ct_data_s)((int)cVar20 + 8);\n                local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                ;\n                local_60 = local_60 + 1;\n              }\n              cVar20 = (ct_data_s)((int)cVar20 - 3);\n              piVar3->strstart = uVar7;\n              pgVar13 = (gz_headerp)((uint)local_64 >> 3);\n              *(ushort *)\n               ((int)(piVar3->dyn_ltree + -8) +\n               (uint)*(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe) * 2) = (ushort)local_64 & 7;\n              local_64 = pgVar13;\n              uVar24 = uVar7 + 1;\n            } while (uVar19 + 1 != uVar7 + 1);\nLAB_00019253:\n            if (uVar7 < 0x13) {\n              puVar15 = inflate::order + uVar7;\n              do {\n                uVar25 = *puVar15;\n                puVar15 = puVar15 + 1;\n                *(undefined2 *)((int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2) = 0;\n              } while (puVar15 != (ushort *)&UNK_000221e6);\n              piVar3->strstart = 0x13;\n            }\n            piVar3->hash_shift = 7;\n            piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n            piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n            iVar6 = inflate_table(CODES,(ushort *)&piVar3->lookahead,0x13,\n                                  (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                  (ushort *)(piVar3->dyn_ltree + 0x98));\n            if (iVar6 == 0) {\n              local_48 = 0;\n              piVar3->strstart = 0;\n              piVar3->status = 0x3f46;\nLAB_000185db:\n              uVar7 = piVar3->prev_match;\n              uVar19 = uVar7 + piVar3->match_available;\n              while (local_48 < uVar19) {\n                uVar24 = ~(-1 << ((byte)piVar3->hash_shift & 0x1f));\n                iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                cVar21._1_3_ = 0;\n                cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                uVar25 = *(ushort *)(iVar6 + 2);\n                if ((uint)cVar20 < (uint)cVar21) {\n                  if (local_6c != (Posf *)0x0) {\n                    while( true ) {\n                      pbVar26 = local_60 + 1;\n                      local_6c = (Posf *)((int)local_6c - 1);\n                      bVar16 = cVar20.fc;\n                      cVar20 = (ct_data_s)((int)cVar20 + 8);\n                      local_64 = (gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n                      iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                      cVar21._1_3_ = 0;\n                      cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                      uVar25 = *(ushort *)(iVar6 + 2);\n                      local_60 = pbVar26;\n                      if ((uint)cVar21 <= (uint)cVar20) break;\n                      if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  pPVar27 = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar16 = cVar21.fc;\n                if (uVar25 < 0x10) {\n                  local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                  cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                  piVar3->strstart = local_48 + 1;\n                  *(ushort *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2) = uVar25;\n                  local_48 = local_48 + 1;\n                }\n                else {\n                  if (uVar25 == 0x10) {\n                    if ((uint)cVar20 < (int)cVar21 + 2U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                    local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                    if (local_48 == 0) {\n                      strm->msg = "invalid bit length repeat";\n                      piVar3->status = 0x3f51;\n                      goto _L590;\n                    }\n                    uVar24 = (uint)local_64 & 3;\n                    local_64 = (gz_headerp)((uint)local_64 >> 2);\n                    cVar20 = (ct_data_s)((int)cVar20 - 2);\n                    uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22);\n                    iVar6 = uVar24 + 3;\n                  }\n                  else if (uVar25 == 0x11) {\n                    if ((uint)cVar20 < (int)cVar21 + 3U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);\n                    iVar6 = (uVar24 & 7) + 3;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 3);\n                  }\n                  else {\n                    if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);\n                    iVar6 = (uVar24 & 0x7f) + 0xb;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 7);\n                  }\n                  uVar24 = iVar6 + local_48;\n                  if (uVar19 < uVar24) {\n                    strm->msg = "invalid bit length repeat";\n                    piVar3->status = 0x3f51;\n                    goto _L590;\n                  }\n                  puVar23 = (undefined2 *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2);\n                  do {\n                    *puVar23 = uVar18;\n                    puVar23 = puVar23 + 1;\n                  } while (puVar23 != (undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2));\n                  piVar3->strstart = uVar24;\n                  local_48 = uVar24;\n                }\n              }\n              if (piVar3->status == 0x3f51) goto _L590;\n              if (piVar3->dyn_ltree[0x78].fc.freq != 0) {\n                piVar3->hash_shift = 9;\n                piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n                piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n                iVar6 = inflate_table(LENS,(ushort *)&piVar3->lookahead,uVar7,\n                                      (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                      (ushort *)(piVar3->dyn_ltree + 0x98));\n                if (iVar6 == 0) {\n                  piVar3->block_start = 6;\n                  piVar3->hash_mask = piVar3->match_start;\n                  iVar6 = inflate_table(DISTS,(ushort *)\n                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2),\n                                        piVar3->match_available,(code **)&piVar3->match_start,\n                                        (uint *)&piVar3->block_start,\n                                        (ushort *)(piVar3->dyn_ltree + 0x98));\n                  if (iVar6 == 0) {\n                    piVar3->status = 0x3f47;\n                    if (flush != 6) {\n_L113:\n                      do {\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    pPVar27 = (Posf *)0x0;\n                  }\n                  else {\n                    pPVar27 = (Posf *)0xfffffffd;\n                    strm->msg = "invalid distances set";\n                    piVar3->status = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar8 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              pPVar27 = (Posf *)0xfffffffd;\n              strm->msg = "invalid code -- missing end-of-block";\n              piVar3->status = 0x3f51;\n            }\n            else {\n              strm->msg = "invalid code lengths set";\n              piVar3->status = 0x3f51;\n              pPVar27 = (Posf *)0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar8 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar7 == 3) {\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          pPVar27 = (Posf *)0xfffffffd;\n          strm->msg = "invalid block type";\n          piVar3->status = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar7 == 1) {\n          piVar3->hash_shift = 9;\n          piVar3->block_start = 5;\n          piVar3->status = 0x3f47;\n          piVar3->hash_bits = (uInt)lenfix_3685;\n          piVar3->hash_mask = (uInt)distfix_3686;\n          if (flush != 6) {\n            local_64 = (gz_headerp)((uint)local_64 >> 3);\n            cVar20 = (ct_data_s)((int)cVar20 - 3);\n            goto _L113;\n          }\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          goto LAB_00017f32;\n        }\n        local_64 = (gz_headerp)((uint)local_64 >> 3);\n        piVar3->status = 0x3f41;\n        cVar20 = (ct_data_s)((int)cVar20 - 3);\n_L107:\n        local_64 = (gz_headerp)((uint)local_64 >> (cVar20.fc & 7));\n        for (cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8); (uint)cVar20 < 0x20;\n            cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n          local_6c = (Posf *)((int)local_6c - 1);\n          local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n          local_60 = local_60 + 1;\n        }\n        pPVar27 = (Posf *)((uint)local_64 & 0xffff);\n        if (pPVar27 != (Posf *)((uint)local_64 >> 0x10 ^ 0xffff)) {\n          pcVar8 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        piVar3->head = pPVar27;\n        piVar3->status = 0x3f42;\n        if (flush == 6) {\n          pPVar27 = (Posf *)0x0;\n          cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n          cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n          local_64 = (gz_headerp)0x0;\n          goto LAB_00017f32;\n        }\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\nLAB_00018557:\n        piVar3->status = 0x3f43;\nLAB_00018562:\n        if (pPVar27 == (Posf *)0x0) {\n          piVar3->status = 0x3f3f;\n          goto _L105;\n        }\n        if (local_6c <= pPVar27) {\n          pPVar27 = local_6c;\n        }\n        if (local_5c < pPVar27) {\n          pPVar27 = local_5c;\n        }\n        if (pPVar27 == (Posf *)0x0) goto LAB_00017f30;\n        memcpy(end,local_60,(size_t)pPVar27);\n        local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n        local_60 = local_60 + (int)pPVar27;\n        local_5c = (Posf *)((int)local_5c - (int)pPVar27);\n        piVar3->head = (Posf *)((int)piVar3->head - (int)pPVar27);\n        iVar6 = piVar3->status;\n        end = end + (int)pPVar27;\n        goto LAB_000178c9;" case number_literal : (labeled_statement "_L106:\n        bVar16 = cVar20.fc;" statement_identifier : (expression_statement "bVar16 = cVar20.fc;" (assignment_expression "bVar16 = cVar20.fc" identifier = (field_expression "cVar20.fc" identifier . field_identifier)) ;)) (if_statement "if (piVar3->pending_buf != (Bytef *)0x0) {\n          cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8);\n          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 7));\n          piVar3->status = 0x3f4e;\n          goto _L120;\n        }" if (parenthesized_expression "(piVar3->pending_buf != (Bytef *)0x0)" ( (binary_expression "piVar3->pending_buf != (Bytef *)0x0" (field_expression "piVar3->pending_buf" identifier -> field_identifier) != (cast_expression "(Bytef *)0x0" ( (type_descriptor "Bytef *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8);\n          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 7));\n          piVar3->status = 0x3f4e;\n          goto _L120;\n        }" { (expression_statement "cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8);" (assignment_expression "cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8)" identifier = (call_expression "(ct_data_s)((uint)cVar20 & 0xfffffff8)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((uint)cVar20 & 0xfffffff8)" ( (binary_expression "(uint)cVar20 & 0xfffffff8" (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 7));" (assignment_expression "local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 7))" identifier = (call_expression "(gz_headerp)((uint)local_64 >> (bVar16 & 7))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((uint)local_64 >> (bVar16 & 7))" ( (binary_expression "(uint)local_64 >> (bVar16 & 7)" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> (parenthesized_expression "(bVar16 & 7)" ( (binary_expression "bVar16 & 7" identifier & number_literal) ))) )))) ;) (expression_statement "piVar3->status = 0x3f4e;" (assignment_expression "piVar3->status = 0x3f4e" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (goto_statement "goto _L120;" goto statement_identifier ;) })) (expression_statement "pPVar27 = (Posf *)0x0;" (assignment_expression "pPVar27 = (Posf *)0x0" identifier = (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((uint)cVar20 < 3) {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n          local_6c = (Posf *)((int)local_6c - 1);\n          cVar20 = (ct_data_s)((int)cVar20 + 8);\n          bVar17 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = (gz_headerp)((int)&local_64->text + ((uint)bVar17 << (bVar16 & 0x1f)));\n        }" if (parenthesized_expression "((uint)cVar20 < 3)" ( (binary_expression "(uint)cVar20 < 3" (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) )) (compound_statement "{\n          if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n          local_6c = (Posf *)((int)local_6c - 1);\n          cVar20 = (ct_data_s)((int)cVar20 + 8);\n          bVar17 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = (gz_headerp)((int)&local_64->text + ((uint)bVar17 << (bVar16 & 0x1f)));\n        }" { (if_statement "if (local_6c == (Posf *)0x0) goto LAB_00017f32;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;)) (expression_statement "local_6c = (Posf *)((int)local_6c - 1);" (assignment_expression "local_6c = (Posf *)((int)local_6c - 1)" identifier = (cast_expression "(Posf *)((int)local_6c - 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - 1)" ( (binary_expression "(int)local_6c - 1" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 + 8);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 + 8)" identifier = (call_expression "(ct_data_s)((int)cVar20 + 8)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 + 8)" ( (binary_expression "(int)cVar20 + 8" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "bVar17 = *local_60;" (assignment_expression "bVar17 = *local_60" identifier = (pointer_expression "*local_60" * identifier)) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_64 = (gz_headerp)((int)&local_64->text + ((uint)bVar17 << (bVar16 & 0x1f)));" (assignment_expression "local_64 = (gz_headerp)((int)&local_64->text + ((uint)bVar17 << (bVar16 & 0x1f)))" identifier = (call_expression "(gz_headerp)((int)&local_64->text + ((uint)bVar17 << (bVar16 & 0x1f)))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((int)&local_64->text + ((uint)bVar17 << (bVar16 & 0x1f)))" ( (binary_expression "(int)&local_64->text + ((uint)bVar17 << (bVar16 & 0x1f))" (cast_expression "(int)&local_64->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_64->text" & (field_expression "local_64->text" identifier -> field_identifier))) + (parenthesized_expression "((uint)bVar17 << (bVar16 & 0x1f))" ( (binary_expression "(uint)bVar17 << (bVar16 & 0x1f)" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) << (parenthesized_expression "(bVar16 & 0x1f)" ( (binary_expression "bVar16 & 0x1f" identifier & number_literal) ))) ))) )))) ;) })) (expression_statement "piVar3->pending_buf = (Bytef *)((uint)local_64 & 1);" (assignment_expression "piVar3->pending_buf = (Bytef *)((uint)local_64 & 1)" (field_expression "piVar3->pending_buf" identifier -> field_identifier) = (cast_expression "(Bytef *)((uint)local_64 & 1)" ( (type_descriptor "Bytef *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)local_64 & 1)" ( (binary_expression "(uint)local_64 & 1" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar7 = (uint)local_64 >> 1 & 3;" (assignment_expression "uVar7 = (uint)local_64 >> 1 & 3" identifier = (binary_expression "(uint)local_64 >> 1 & 3" (binary_expression "(uint)local_64 >> 1" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) & number_literal)) ;) (if_statement "if (uVar7 == 2) {\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          piVar3->status = 0x3f44;\n_L110:\n          for (; (uint)cVar20 < 0xe; cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n            local_6c = (Posf *)((int)local_6c - 1);\n            local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n            local_60 = local_60 + 1;\n          }\n          cVar20 = (ct_data_s)((int)cVar20 - 0xe);\n          uVar24 = ((uint)local_64 & 0x1f) + 0x101;\n          uVar7 = ((uint)local_64 >> 5 & 0x1f) + 1;\n          uVar19 = ((uint)local_64 >> 10 & 0xf) + 4;\n          local_64 = (gz_headerp)((uint)local_64 >> 0xe);\n          piVar3->prev_match = uVar24;\n          piVar3->match_available = uVar7;\n          piVar3->match_length = uVar19;\n          if ((uVar7 < 0x1f) && (uVar24 < 0x11f)) {\n            uVar7 = 0;\n            piVar3->strstart = 0;\n            piVar3->status = 0x3f45;\nLAB_000184b2:\n            uVar24 = uVar7 + 1;\n            do {\n              uVar7 = uVar24;\n              if ((uint)cVar20 < 3) {\n                if (local_6c == (Posf *)0x0) {\n                  pPVar27 = (Posf *)0x0;\n                  local_6c = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\n                local_6c = (Posf *)((int)local_6c - 1);\n                bVar16 = cVar20.fc;\n                cVar20 = (ct_data_s)((int)cVar20 + 8);\n                local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                ;\n                local_60 = local_60 + 1;\n              }\n              cVar20 = (ct_data_s)((int)cVar20 - 3);\n              piVar3->strstart = uVar7;\n              pgVar13 = (gz_headerp)((uint)local_64 >> 3);\n              *(ushort *)\n               ((int)(piVar3->dyn_ltree + -8) +\n               (uint)*(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe) * 2) = (ushort)local_64 & 7;\n              local_64 = pgVar13;\n              uVar24 = uVar7 + 1;\n            } while (uVar19 + 1 != uVar7 + 1);\nLAB_00019253:\n            if (uVar7 < 0x13) {\n              puVar15 = inflate::order + uVar7;\n              do {\n                uVar25 = *puVar15;\n                puVar15 = puVar15 + 1;\n                *(undefined2 *)((int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2) = 0;\n              } while (puVar15 != (ushort *)&UNK_000221e6);\n              piVar3->strstart = 0x13;\n            }\n            piVar3->hash_shift = 7;\n            piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n            piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n            iVar6 = inflate_table(CODES,(ushort *)&piVar3->lookahead,0x13,\n                                  (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                  (ushort *)(piVar3->dyn_ltree + 0x98));\n            if (iVar6 == 0) {\n              local_48 = 0;\n              piVar3->strstart = 0;\n              piVar3->status = 0x3f46;\nLAB_000185db:\n              uVar7 = piVar3->prev_match;\n              uVar19 = uVar7 + piVar3->match_available;\n              while (local_48 < uVar19) {\n                uVar24 = ~(-1 << ((byte)piVar3->hash_shift & 0x1f));\n                iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                cVar21._1_3_ = 0;\n                cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                uVar25 = *(ushort *)(iVar6 + 2);\n                if ((uint)cVar20 < (uint)cVar21) {\n                  if (local_6c != (Posf *)0x0) {\n                    while( true ) {\n                      pbVar26 = local_60 + 1;\n                      local_6c = (Posf *)((int)local_6c - 1);\n                      bVar16 = cVar20.fc;\n                      cVar20 = (ct_data_s)((int)cVar20 + 8);\n                      local_64 = (gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n                      iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                      cVar21._1_3_ = 0;\n                      cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                      uVar25 = *(ushort *)(iVar6 + 2);\n                      local_60 = pbVar26;\n                      if ((uint)cVar21 <= (uint)cVar20) break;\n                      if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  pPVar27 = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar16 = cVar21.fc;\n                if (uVar25 < 0x10) {\n                  local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                  cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                  piVar3->strstart = local_48 + 1;\n                  *(ushort *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2) = uVar25;\n                  local_48 = local_48 + 1;\n                }\n                else {\n                  if (uVar25 == 0x10) {\n                    if ((uint)cVar20 < (int)cVar21 + 2U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                    local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                    if (local_48 == 0) {\n                      strm->msg = "invalid bit length repeat";\n                      piVar3->status = 0x3f51;\n                      goto _L590;\n                    }\n                    uVar24 = (uint)local_64 & 3;\n                    local_64 = (gz_headerp)((uint)local_64 >> 2);\n                    cVar20 = (ct_data_s)((int)cVar20 - 2);\n                    uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22);\n                    iVar6 = uVar24 + 3;\n                  }\n                  else if (uVar25 == 0x11) {\n                    if ((uint)cVar20 < (int)cVar21 + 3U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);\n                    iVar6 = (uVar24 & 7) + 3;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 3);\n                  }\n                  else {\n                    if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);\n                    iVar6 = (uVar24 & 0x7f) + 0xb;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 7);\n                  }\n                  uVar24 = iVar6 + local_48;\n                  if (uVar19 < uVar24) {\n                    strm->msg = "invalid bit length repeat";\n                    piVar3->status = 0x3f51;\n                    goto _L590;\n                  }\n                  puVar23 = (undefined2 *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2);\n                  do {\n                    *puVar23 = uVar18;\n                    puVar23 = puVar23 + 1;\n                  } while (puVar23 != (undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2));\n                  piVar3->strstart = uVar24;\n                  local_48 = uVar24;\n                }\n              }\n              if (piVar3->status == 0x3f51) goto _L590;\n              if (piVar3->dyn_ltree[0x78].fc.freq != 0) {\n                piVar3->hash_shift = 9;\n                piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n                piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n                iVar6 = inflate_table(LENS,(ushort *)&piVar3->lookahead,uVar7,\n                                      (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                      (ushort *)(piVar3->dyn_ltree + 0x98));\n                if (iVar6 == 0) {\n                  piVar3->block_start = 6;\n                  piVar3->hash_mask = piVar3->match_start;\n                  iVar6 = inflate_table(DISTS,(ushort *)\n                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2),\n                                        piVar3->match_available,(code **)&piVar3->match_start,\n                                        (uint *)&piVar3->block_start,\n                                        (ushort *)(piVar3->dyn_ltree + 0x98));\n                  if (iVar6 == 0) {\n                    piVar3->status = 0x3f47;\n                    if (flush != 6) {\n_L113:\n                      do {\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    pPVar27 = (Posf *)0x0;\n                  }\n                  else {\n                    pPVar27 = (Posf *)0xfffffffd;\n                    strm->msg = "invalid distances set";\n                    piVar3->status = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar8 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              pPVar27 = (Posf *)0xfffffffd;\n              strm->msg = "invalid code -- missing end-of-block";\n              piVar3->status = 0x3f51;\n            }\n            else {\n              strm->msg = "invalid code lengths set";\n              piVar3->status = 0x3f51;\n              pPVar27 = (Posf *)0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar8 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }" if (parenthesized_expression "(uVar7 == 2)" ( (binary_expression "uVar7 == 2" identifier == number_literal) )) (compound_statement "{\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          piVar3->status = 0x3f44;\n_L110:\n          for (; (uint)cVar20 < 0xe; cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n            local_6c = (Posf *)((int)local_6c - 1);\n            local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n            local_60 = local_60 + 1;\n          }\n          cVar20 = (ct_data_s)((int)cVar20 - 0xe);\n          uVar24 = ((uint)local_64 & 0x1f) + 0x101;\n          uVar7 = ((uint)local_64 >> 5 & 0x1f) + 1;\n          uVar19 = ((uint)local_64 >> 10 & 0xf) + 4;\n          local_64 = (gz_headerp)((uint)local_64 >> 0xe);\n          piVar3->prev_match = uVar24;\n          piVar3->match_available = uVar7;\n          piVar3->match_length = uVar19;\n          if ((uVar7 < 0x1f) && (uVar24 < 0x11f)) {\n            uVar7 = 0;\n            piVar3->strstart = 0;\n            piVar3->status = 0x3f45;\nLAB_000184b2:\n            uVar24 = uVar7 + 1;\n            do {\n              uVar7 = uVar24;\n              if ((uint)cVar20 < 3) {\n                if (local_6c == (Posf *)0x0) {\n                  pPVar27 = (Posf *)0x0;\n                  local_6c = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\n                local_6c = (Posf *)((int)local_6c - 1);\n                bVar16 = cVar20.fc;\n                cVar20 = (ct_data_s)((int)cVar20 + 8);\n                local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                ;\n                local_60 = local_60 + 1;\n              }\n              cVar20 = (ct_data_s)((int)cVar20 - 3);\n              piVar3->strstart = uVar7;\n              pgVar13 = (gz_headerp)((uint)local_64 >> 3);\n              *(ushort *)\n               ((int)(piVar3->dyn_ltree + -8) +\n               (uint)*(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe) * 2) = (ushort)local_64 & 7;\n              local_64 = pgVar13;\n              uVar24 = uVar7 + 1;\n            } while (uVar19 + 1 != uVar7 + 1);\nLAB_00019253:\n            if (uVar7 < 0x13) {\n              puVar15 = inflate::order + uVar7;\n              do {\n                uVar25 = *puVar15;\n                puVar15 = puVar15 + 1;\n                *(undefined2 *)((int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2) = 0;\n              } while (puVar15 != (ushort *)&UNK_000221e6);\n              piVar3->strstart = 0x13;\n            }\n            piVar3->hash_shift = 7;\n            piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n            piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n            iVar6 = inflate_table(CODES,(ushort *)&piVar3->lookahead,0x13,\n                                  (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                  (ushort *)(piVar3->dyn_ltree + 0x98));\n            if (iVar6 == 0) {\n              local_48 = 0;\n              piVar3->strstart = 0;\n              piVar3->status = 0x3f46;\nLAB_000185db:\n              uVar7 = piVar3->prev_match;\n              uVar19 = uVar7 + piVar3->match_available;\n              while (local_48 < uVar19) {\n                uVar24 = ~(-1 << ((byte)piVar3->hash_shift & 0x1f));\n                iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                cVar21._1_3_ = 0;\n                cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                uVar25 = *(ushort *)(iVar6 + 2);\n                if ((uint)cVar20 < (uint)cVar21) {\n                  if (local_6c != (Posf *)0x0) {\n                    while( true ) {\n                      pbVar26 = local_60 + 1;\n                      local_6c = (Posf *)((int)local_6c - 1);\n                      bVar16 = cVar20.fc;\n                      cVar20 = (ct_data_s)((int)cVar20 + 8);\n                      local_64 = (gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n                      iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                      cVar21._1_3_ = 0;\n                      cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                      uVar25 = *(ushort *)(iVar6 + 2);\n                      local_60 = pbVar26;\n                      if ((uint)cVar21 <= (uint)cVar20) break;\n                      if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  pPVar27 = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar16 = cVar21.fc;\n                if (uVar25 < 0x10) {\n                  local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                  cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                  piVar3->strstart = local_48 + 1;\n                  *(ushort *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2) = uVar25;\n                  local_48 = local_48 + 1;\n                }\n                else {\n                  if (uVar25 == 0x10) {\n                    if ((uint)cVar20 < (int)cVar21 + 2U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                    local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                    if (local_48 == 0) {\n                      strm->msg = "invalid bit length repeat";\n                      piVar3->status = 0x3f51;\n                      goto _L590;\n                    }\n                    uVar24 = (uint)local_64 & 3;\n                    local_64 = (gz_headerp)((uint)local_64 >> 2);\n                    cVar20 = (ct_data_s)((int)cVar20 - 2);\n                    uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22);\n                    iVar6 = uVar24 + 3;\n                  }\n                  else if (uVar25 == 0x11) {\n                    if ((uint)cVar20 < (int)cVar21 + 3U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);\n                    iVar6 = (uVar24 & 7) + 3;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 3);\n                  }\n                  else {\n                    if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);\n                    iVar6 = (uVar24 & 0x7f) + 0xb;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 7);\n                  }\n                  uVar24 = iVar6 + local_48;\n                  if (uVar19 < uVar24) {\n                    strm->msg = "invalid bit length repeat";\n                    piVar3->status = 0x3f51;\n                    goto _L590;\n                  }\n                  puVar23 = (undefined2 *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2);\n                  do {\n                    *puVar23 = uVar18;\n                    puVar23 = puVar23 + 1;\n                  } while (puVar23 != (undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2));\n                  piVar3->strstart = uVar24;\n                  local_48 = uVar24;\n                }\n              }\n              if (piVar3->status == 0x3f51) goto _L590;\n              if (piVar3->dyn_ltree[0x78].fc.freq != 0) {\n                piVar3->hash_shift = 9;\n                piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n                piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n                iVar6 = inflate_table(LENS,(ushort *)&piVar3->lookahead,uVar7,\n                                      (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                      (ushort *)(piVar3->dyn_ltree + 0x98));\n                if (iVar6 == 0) {\n                  piVar3->block_start = 6;\n                  piVar3->hash_mask = piVar3->match_start;\n                  iVar6 = inflate_table(DISTS,(ushort *)\n                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2),\n                                        piVar3->match_available,(code **)&piVar3->match_start,\n                                        (uint *)&piVar3->block_start,\n                                        (ushort *)(piVar3->dyn_ltree + 0x98));\n                  if (iVar6 == 0) {\n                    piVar3->status = 0x3f47;\n                    if (flush != 6) {\n_L113:\n                      do {\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    pPVar27 = (Posf *)0x0;\n                  }\n                  else {\n                    pPVar27 = (Posf *)0xfffffffd;\n                    strm->msg = "invalid distances set";\n                    piVar3->status = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar8 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              pPVar27 = (Posf *)0xfffffffd;\n              strm->msg = "invalid code -- missing end-of-block";\n              piVar3->status = 0x3f51;\n            }\n            else {\n              strm->msg = "invalid code lengths set";\n              piVar3->status = 0x3f51;\n              pPVar27 = (Posf *)0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar8 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }" { (expression_statement "local_64 = (gz_headerp)((uint)local_64 >> 3);" (assignment_expression "local_64 = (gz_headerp)((uint)local_64 >> 3)" identifier = (call_expression "(gz_headerp)((uint)local_64 >> 3)" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((uint)local_64 >> 3)" ( (binary_expression "(uint)local_64 >> 3" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 - 3);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 - 3)" identifier = (call_expression "(ct_data_s)((int)cVar20 - 3)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 - 3)" ( (binary_expression "(int)cVar20 - 3" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "piVar3->status = 0x3f44;" (assignment_expression "piVar3->status = 0x3f44" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (labeled_statement "_L110:\n          for (; (uint)cVar20 < 0xe; cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n            local_6c = (Posf *)((int)local_6c - 1);\n            local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n            local_60 = local_60 + 1;\n          }" statement_identifier : (for_statement "for (; (uint)cVar20 < 0xe; cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n            local_6c = (Posf *)((int)local_6c - 1);\n            local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n            local_60 = local_60 + 1;\n          }" for ( ; (binary_expression "(uint)cVar20 < 0xe" (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) ; (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 + 8)" identifier = (call_expression "(ct_data_s)((int)cVar20 + 8)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 + 8)" ( (binary_expression "(int)cVar20 + 8" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ) (compound_statement "{\n            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n            local_6c = (Posf *)((int)local_6c - 1);\n            local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n            local_60 = local_60 + 1;\n          }" { (if_statement "if (local_6c == (Posf *)0x0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "local_6c = (Posf *)((int)local_6c - 1);" (assignment_expression "local_6c = (Posf *)((int)local_6c - 1)" identifier = (cast_expression "(Posf *)((int)local_6c - 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - 1)" ( (binary_expression "(int)local_6c - 1" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));" (assignment_expression "local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)))" identifier = (call_expression "(gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)))" ( (binary_expression "(int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f))" (cast_expression "(int)&local_64->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_64->text" & (field_expression "local_64->text" identifier -> field_identifier))) + (parenthesized_expression "((uint)*local_60 << (cVar20.fc & 0x1f))" ( (binary_expression "(uint)*local_60 << (cVar20.fc & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(cVar20.fc & 0x1f)" ( (binary_expression "cVar20.fc & 0x1f" (field_expression "cVar20.fc" identifier . field_identifier) & number_literal) ))) ))) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) }))) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 - 0xe);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 - 0xe)" identifier = (call_expression "(ct_data_s)((int)cVar20 - 0xe)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 - 0xe)" ( (binary_expression "(int)cVar20 - 0xe" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "uVar24 = ((uint)local_64 & 0x1f) + 0x101;" (assignment_expression "uVar24 = ((uint)local_64 & 0x1f) + 0x101" identifier = (binary_expression "((uint)local_64 & 0x1f) + 0x101" (parenthesized_expression "((uint)local_64 & 0x1f)" ( (binary_expression "(uint)local_64 & 0x1f" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) + number_literal)) ;) (expression_statement "uVar7 = ((uint)local_64 >> 5 & 0x1f) + 1;" (assignment_expression "uVar7 = ((uint)local_64 >> 5 & 0x1f) + 1" identifier = (binary_expression "((uint)local_64 >> 5 & 0x1f) + 1" (parenthesized_expression "((uint)local_64 >> 5 & 0x1f)" ( (binary_expression "(uint)local_64 >> 5 & 0x1f" (binary_expression "(uint)local_64 >> 5" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) & number_literal) )) + number_literal)) ;) (expression_statement "uVar19 = ((uint)local_64 >> 10 & 0xf) + 4;" (assignment_expression "uVar19 = ((uint)local_64 >> 10 & 0xf) + 4" identifier = (binary_expression "((uint)local_64 >> 10 & 0xf) + 4" (parenthesized_expression "((uint)local_64 >> 10 & 0xf)" ( (binary_expression "(uint)local_64 >> 10 & 0xf" (binary_expression "(uint)local_64 >> 10" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) & number_literal) )) + number_literal)) ;) (expression_statement "local_64 = (gz_headerp)((uint)local_64 >> 0xe);" (assignment_expression "local_64 = (gz_headerp)((uint)local_64 >> 0xe)" identifier = (call_expression "(gz_headerp)((uint)local_64 >> 0xe)" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((uint)local_64 >> 0xe)" ( (binary_expression "(uint)local_64 >> 0xe" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar3->prev_match = uVar24;" (assignment_expression "piVar3->prev_match = uVar24" (field_expression "piVar3->prev_match" identifier -> field_identifier) = identifier) ;) (expression_statement "piVar3->match_available = uVar7;" (assignment_expression "piVar3->match_available = uVar7" (field_expression "piVar3->match_available" identifier -> field_identifier) = identifier) ;) (expression_statement "piVar3->match_length = uVar19;" (assignment_expression "piVar3->match_length = uVar19" (field_expression "piVar3->match_length" identifier -> field_identifier) = identifier) ;) (if_statement "if ((uVar7 < 0x1f) && (uVar24 < 0x11f)) {\n            uVar7 = 0;\n            piVar3->strstart = 0;\n            piVar3->status = 0x3f45;\nLAB_000184b2:\n            uVar24 = uVar7 + 1;\n            do {\n              uVar7 = uVar24;\n              if ((uint)cVar20 < 3) {\n                if (local_6c == (Posf *)0x0) {\n                  pPVar27 = (Posf *)0x0;\n                  local_6c = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\n                local_6c = (Posf *)((int)local_6c - 1);\n                bVar16 = cVar20.fc;\n                cVar20 = (ct_data_s)((int)cVar20 + 8);\n                local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                ;\n                local_60 = local_60 + 1;\n              }\n              cVar20 = (ct_data_s)((int)cVar20 - 3);\n              piVar3->strstart = uVar7;\n              pgVar13 = (gz_headerp)((uint)local_64 >> 3);\n              *(ushort *)\n               ((int)(piVar3->dyn_ltree + -8) +\n               (uint)*(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe) * 2) = (ushort)local_64 & 7;\n              local_64 = pgVar13;\n              uVar24 = uVar7 + 1;\n            } while (uVar19 + 1 != uVar7 + 1);\nLAB_00019253:\n            if (uVar7 < 0x13) {\n              puVar15 = inflate::order + uVar7;\n              do {\n                uVar25 = *puVar15;\n                puVar15 = puVar15 + 1;\n                *(undefined2 *)((int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2) = 0;\n              } while (puVar15 != (ushort *)&UNK_000221e6);\n              piVar3->strstart = 0x13;\n            }\n            piVar3->hash_shift = 7;\n            piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n            piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n            iVar6 = inflate_table(CODES,(ushort *)&piVar3->lookahead,0x13,\n                                  (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                  (ushort *)(piVar3->dyn_ltree + 0x98));\n            if (iVar6 == 0) {\n              local_48 = 0;\n              piVar3->strstart = 0;\n              piVar3->status = 0x3f46;\nLAB_000185db:\n              uVar7 = piVar3->prev_match;\n              uVar19 = uVar7 + piVar3->match_available;\n              while (local_48 < uVar19) {\n                uVar24 = ~(-1 << ((byte)piVar3->hash_shift & 0x1f));\n                iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                cVar21._1_3_ = 0;\n                cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                uVar25 = *(ushort *)(iVar6 + 2);\n                if ((uint)cVar20 < (uint)cVar21) {\n                  if (local_6c != (Posf *)0x0) {\n                    while( true ) {\n                      pbVar26 = local_60 + 1;\n                      local_6c = (Posf *)((int)local_6c - 1);\n                      bVar16 = cVar20.fc;\n                      cVar20 = (ct_data_s)((int)cVar20 + 8);\n                      local_64 = (gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n                      iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                      cVar21._1_3_ = 0;\n                      cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                      uVar25 = *(ushort *)(iVar6 + 2);\n                      local_60 = pbVar26;\n                      if ((uint)cVar21 <= (uint)cVar20) break;\n                      if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  pPVar27 = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar16 = cVar21.fc;\n                if (uVar25 < 0x10) {\n                  local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                  cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                  piVar3->strstart = local_48 + 1;\n                  *(ushort *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2) = uVar25;\n                  local_48 = local_48 + 1;\n                }\n                else {\n                  if (uVar25 == 0x10) {\n                    if ((uint)cVar20 < (int)cVar21 + 2U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                    local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                    if (local_48 == 0) {\n                      strm->msg = "invalid bit length repeat";\n                      piVar3->status = 0x3f51;\n                      goto _L590;\n                    }\n                    uVar24 = (uint)local_64 & 3;\n                    local_64 = (gz_headerp)((uint)local_64 >> 2);\n                    cVar20 = (ct_data_s)((int)cVar20 - 2);\n                    uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22);\n                    iVar6 = uVar24 + 3;\n                  }\n                  else if (uVar25 == 0x11) {\n                    if ((uint)cVar20 < (int)cVar21 + 3U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);\n                    iVar6 = (uVar24 & 7) + 3;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 3);\n                  }\n                  else {\n                    if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);\n                    iVar6 = (uVar24 & 0x7f) + 0xb;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 7);\n                  }\n                  uVar24 = iVar6 + local_48;\n                  if (uVar19 < uVar24) {\n                    strm->msg = "invalid bit length repeat";\n                    piVar3->status = 0x3f51;\n                    goto _L590;\n                  }\n                  puVar23 = (undefined2 *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2);\n                  do {\n                    *puVar23 = uVar18;\n                    puVar23 = puVar23 + 1;\n                  } while (puVar23 != (undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2));\n                  piVar3->strstart = uVar24;\n                  local_48 = uVar24;\n                }\n              }\n              if (piVar3->status == 0x3f51) goto _L590;\n              if (piVar3->dyn_ltree[0x78].fc.freq != 0) {\n                piVar3->hash_shift = 9;\n                piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n                piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n                iVar6 = inflate_table(LENS,(ushort *)&piVar3->lookahead,uVar7,\n                                      (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                      (ushort *)(piVar3->dyn_ltree + 0x98));\n                if (iVar6 == 0) {\n                  piVar3->block_start = 6;\n                  piVar3->hash_mask = piVar3->match_start;\n                  iVar6 = inflate_table(DISTS,(ushort *)\n                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2),\n                                        piVar3->match_available,(code **)&piVar3->match_start,\n                                        (uint *)&piVar3->block_start,\n                                        (ushort *)(piVar3->dyn_ltree + 0x98));\n                  if (iVar6 == 0) {\n                    piVar3->status = 0x3f47;\n                    if (flush != 6) {\n_L113:\n                      do {\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    pPVar27 = (Posf *)0x0;\n                  }\n                  else {\n                    pPVar27 = (Posf *)0xfffffffd;\n                    strm->msg = "invalid distances set";\n                    piVar3->status = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar8 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              pPVar27 = (Posf *)0xfffffffd;\n              strm->msg = "invalid code -- missing end-of-block";\n              piVar3->status = 0x3f51;\n            }\n            else {\n              strm->msg = "invalid code lengths set";\n              piVar3->status = 0x3f51;\n              pPVar27 = (Posf *)0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }" if (parenthesized_expression "((uVar7 < 0x1f) && (uVar24 < 0x11f))" ( (binary_expression "(uVar7 < 0x1f) && (uVar24 < 0x11f)" (parenthesized_expression "(uVar7 < 0x1f)" ( (binary_expression "uVar7 < 0x1f" identifier < number_literal) )) && (parenthesized_expression "(uVar24 < 0x11f)" ( (binary_expression "uVar24 < 0x11f" identifier < number_literal) ))) )) (compound_statement "{\n            uVar7 = 0;\n            piVar3->strstart = 0;\n            piVar3->status = 0x3f45;\nLAB_000184b2:\n            uVar24 = uVar7 + 1;\n            do {\n              uVar7 = uVar24;\n              if ((uint)cVar20 < 3) {\n                if (local_6c == (Posf *)0x0) {\n                  pPVar27 = (Posf *)0x0;\n                  local_6c = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\n                local_6c = (Posf *)((int)local_6c - 1);\n                bVar16 = cVar20.fc;\n                cVar20 = (ct_data_s)((int)cVar20 + 8);\n                local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                ;\n                local_60 = local_60 + 1;\n              }\n              cVar20 = (ct_data_s)((int)cVar20 - 3);\n              piVar3->strstart = uVar7;\n              pgVar13 = (gz_headerp)((uint)local_64 >> 3);\n              *(ushort *)\n               ((int)(piVar3->dyn_ltree + -8) +\n               (uint)*(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe) * 2) = (ushort)local_64 & 7;\n              local_64 = pgVar13;\n              uVar24 = uVar7 + 1;\n            } while (uVar19 + 1 != uVar7 + 1);\nLAB_00019253:\n            if (uVar7 < 0x13) {\n              puVar15 = inflate::order + uVar7;\n              do {\n                uVar25 = *puVar15;\n                puVar15 = puVar15 + 1;\n                *(undefined2 *)((int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2) = 0;\n              } while (puVar15 != (ushort *)&UNK_000221e6);\n              piVar3->strstart = 0x13;\n            }\n            piVar3->hash_shift = 7;\n            piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n            piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n            iVar6 = inflate_table(CODES,(ushort *)&piVar3->lookahead,0x13,\n                                  (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                  (ushort *)(piVar3->dyn_ltree + 0x98));\n            if (iVar6 == 0) {\n              local_48 = 0;\n              piVar3->strstart = 0;\n              piVar3->status = 0x3f46;\nLAB_000185db:\n              uVar7 = piVar3->prev_match;\n              uVar19 = uVar7 + piVar3->match_available;\n              while (local_48 < uVar19) {\n                uVar24 = ~(-1 << ((byte)piVar3->hash_shift & 0x1f));\n                iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                cVar21._1_3_ = 0;\n                cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                uVar25 = *(ushort *)(iVar6 + 2);\n                if ((uint)cVar20 < (uint)cVar21) {\n                  if (local_6c != (Posf *)0x0) {\n                    while( true ) {\n                      pbVar26 = local_60 + 1;\n                      local_6c = (Posf *)((int)local_6c - 1);\n                      bVar16 = cVar20.fc;\n                      cVar20 = (ct_data_s)((int)cVar20 + 8);\n                      local_64 = (gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n                      iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                      cVar21._1_3_ = 0;\n                      cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                      uVar25 = *(ushort *)(iVar6 + 2);\n                      local_60 = pbVar26;\n                      if ((uint)cVar21 <= (uint)cVar20) break;\n                      if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  pPVar27 = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar16 = cVar21.fc;\n                if (uVar25 < 0x10) {\n                  local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                  cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                  piVar3->strstart = local_48 + 1;\n                  *(ushort *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2) = uVar25;\n                  local_48 = local_48 + 1;\n                }\n                else {\n                  if (uVar25 == 0x10) {\n                    if ((uint)cVar20 < (int)cVar21 + 2U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                    local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                    if (local_48 == 0) {\n                      strm->msg = "invalid bit length repeat";\n                      piVar3->status = 0x3f51;\n                      goto _L590;\n                    }\n                    uVar24 = (uint)local_64 & 3;\n                    local_64 = (gz_headerp)((uint)local_64 >> 2);\n                    cVar20 = (ct_data_s)((int)cVar20 - 2);\n                    uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22);\n                    iVar6 = uVar24 + 3;\n                  }\n                  else if (uVar25 == 0x11) {\n                    if ((uint)cVar20 < (int)cVar21 + 3U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);\n                    iVar6 = (uVar24 & 7) + 3;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 3);\n                  }\n                  else {\n                    if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);\n                    iVar6 = (uVar24 & 0x7f) + 0xb;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 7);\n                  }\n                  uVar24 = iVar6 + local_48;\n                  if (uVar19 < uVar24) {\n                    strm->msg = "invalid bit length repeat";\n                    piVar3->status = 0x3f51;\n                    goto _L590;\n                  }\n                  puVar23 = (undefined2 *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2);\n                  do {\n                    *puVar23 = uVar18;\n                    puVar23 = puVar23 + 1;\n                  } while (puVar23 != (undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2));\n                  piVar3->strstart = uVar24;\n                  local_48 = uVar24;\n                }\n              }\n              if (piVar3->status == 0x3f51) goto _L590;\n              if (piVar3->dyn_ltree[0x78].fc.freq != 0) {\n                piVar3->hash_shift = 9;\n                piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n                piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n                iVar6 = inflate_table(LENS,(ushort *)&piVar3->lookahead,uVar7,\n                                      (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                      (ushort *)(piVar3->dyn_ltree + 0x98));\n                if (iVar6 == 0) {\n                  piVar3->block_start = 6;\n                  piVar3->hash_mask = piVar3->match_start;\n                  iVar6 = inflate_table(DISTS,(ushort *)\n                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2),\n                                        piVar3->match_available,(code **)&piVar3->match_start,\n                                        (uint *)&piVar3->block_start,\n                                        (ushort *)(piVar3->dyn_ltree + 0x98));\n                  if (iVar6 == 0) {\n                    piVar3->status = 0x3f47;\n                    if (flush != 6) {\n_L113:\n                      do {\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    pPVar27 = (Posf *)0x0;\n                  }\n                  else {\n                    pPVar27 = (Posf *)0xfffffffd;\n                    strm->msg = "invalid distances set";\n                    piVar3->status = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar8 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              pPVar27 = (Posf *)0xfffffffd;\n              strm->msg = "invalid code -- missing end-of-block";\n              piVar3->status = 0x3f51;\n            }\n            else {\n              strm->msg = "invalid code lengths set";\n              piVar3->status = 0x3f51;\n              pPVar27 = (Posf *)0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "piVar3->strstart = 0;" (assignment_expression "piVar3->strstart = 0" (field_expression "piVar3->strstart" identifier -> field_identifier) = number_literal) ;) (expression_statement "piVar3->status = 0x3f45;" (assignment_expression "piVar3->status = 0x3f45" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (labeled_statement "LAB_000184b2:\n            uVar24 = uVar7 + 1;" statement_identifier : (expression_statement "uVar24 = uVar7 + 1;" (assignment_expression "uVar24 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;)) (do_statement "do {\n              uVar7 = uVar24;\n              if ((uint)cVar20 < 3) {\n                if (local_6c == (Posf *)0x0) {\n                  pPVar27 = (Posf *)0x0;\n                  local_6c = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\n                local_6c = (Posf *)((int)local_6c - 1);\n                bVar16 = cVar20.fc;\n                cVar20 = (ct_data_s)((int)cVar20 + 8);\n                local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                ;\n                local_60 = local_60 + 1;\n              }\n              cVar20 = (ct_data_s)((int)cVar20 - 3);\n              piVar3->strstart = uVar7;\n              pgVar13 = (gz_headerp)((uint)local_64 >> 3);\n              *(ushort *)\n               ((int)(piVar3->dyn_ltree + -8) +\n               (uint)*(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe) * 2) = (ushort)local_64 & 7;\n              local_64 = pgVar13;\n              uVar24 = uVar7 + 1;\n            } while (uVar19 + 1 != uVar7 + 1);" do (compound_statement "{\n              uVar7 = uVar24;\n              if ((uint)cVar20 < 3) {\n                if (local_6c == (Posf *)0x0) {\n                  pPVar27 = (Posf *)0x0;\n                  local_6c = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\n                local_6c = (Posf *)((int)local_6c - 1);\n                bVar16 = cVar20.fc;\n                cVar20 = (ct_data_s)((int)cVar20 + 8);\n                local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                ;\n                local_60 = local_60 + 1;\n              }\n              cVar20 = (ct_data_s)((int)cVar20 - 3);\n              piVar3->strstart = uVar7;\n              pgVar13 = (gz_headerp)((uint)local_64 >> 3);\n              *(ushort *)\n               ((int)(piVar3->dyn_ltree + -8) +\n               (uint)*(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe) * 2) = (ushort)local_64 & 7;\n              local_64 = pgVar13;\n              uVar24 = uVar7 + 1;\n            }" { (expression_statement "uVar7 = uVar24;" (assignment_expression "uVar7 = uVar24" identifier = identifier) ;) (if_statement "if ((uint)cVar20 < 3) {\n                if (local_6c == (Posf *)0x0) {\n                  pPVar27 = (Posf *)0x0;\n                  local_6c = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\n                local_6c = (Posf *)((int)local_6c - 1);\n                bVar16 = cVar20.fc;\n                cVar20 = (ct_data_s)((int)cVar20 + 8);\n                local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                ;\n                local_60 = local_60 + 1;\n              }" if (parenthesized_expression "((uint)cVar20 < 3)" ( (binary_expression "(uint)cVar20 < 3" (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) )) (compound_statement "{\n                if (local_6c == (Posf *)0x0) {\n                  pPVar27 = (Posf *)0x0;\n                  local_6c = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\n                local_6c = (Posf *)((int)local_6c - 1);\n                bVar16 = cVar20.fc;\n                cVar20 = (ct_data_s)((int)cVar20 + 8);\n                local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                ;\n                local_60 = local_60 + 1;\n              }" { (if_statement "if (local_6c == (Posf *)0x0) {\n                  pPVar27 = (Posf *)0x0;\n                  local_6c = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  pPVar27 = (Posf *)0x0;\n                  local_6c = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }" { (expression_statement "pPVar27 = (Posf *)0x0;" (assignment_expression "pPVar27 = (Posf *)0x0" identifier = (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_6c = (Posf *)0x0;" (assignment_expression "local_6c = (Posf *)0x0" identifier = (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (expression_statement "local_6c = (Posf *)((int)local_6c - 1);" (assignment_expression "local_6c = (Posf *)((int)local_6c - 1)" identifier = (cast_expression "(Posf *)((int)local_6c - 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - 1)" ( (binary_expression "(int)local_6c - 1" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "bVar16 = cVar20.fc;" (assignment_expression "bVar16 = cVar20.fc" identifier = (field_expression "cVar20.fc" identifier . field_identifier)) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 + 8);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 + 8)" identifier = (call_expression "(ct_data_s)((int)cVar20 + 8)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 + 8)" ( (binary_expression "(int)cVar20 + 8" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                ;" (assignment_expression "local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" identifier = (call_expression "(gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" ( (binary_expression "(int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f))" (cast_expression "(int)&local_64->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_64->text" & (field_expression "local_64->text" identifier -> field_identifier))) + (parenthesized_expression "((uint)*local_60 << (bVar16 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar16 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar16 & 0x1f)" ( (binary_expression "bVar16 & 0x1f" identifier & number_literal) ))) ))) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) })) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 - 3);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 - 3)" identifier = (call_expression "(ct_data_s)((int)cVar20 - 3)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 - 3)" ( (binary_expression "(int)cVar20 - 3" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "piVar3->strstart = uVar7;" (assignment_expression "piVar3->strstart = uVar7" (field_expression "piVar3->strstart" identifier -> field_identifier) = identifier) ;) (expression_statement "pgVar13 = (gz_headerp)((uint)local_64 >> 3);" (assignment_expression "pgVar13 = (gz_headerp)((uint)local_64 >> 3)" identifier = (call_expression "(gz_headerp)((uint)local_64 >> 3)" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((uint)local_64 >> 3)" ( (binary_expression "(uint)local_64 >> 3" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*(ushort *)\n               ((int)(piVar3->dyn_ltree + -8) +\n               (uint)*(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe) * 2) = (ushort)local_64 & 7;" (assignment_expression "*(ushort *)\n               ((int)(piVar3->dyn_ltree + -8) +\n               (uint)*(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe) * 2) = (ushort)local_64 & 7" (pointer_expression "*(ushort *)\n               ((int)(piVar3->dyn_ltree + -8) +\n               (uint)*(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe) * 2)" * (cast_expression "(ushort *)\n               ((int)(piVar3->dyn_ltree + -8) +\n               (uint)*(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe) * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(piVar3->dyn_ltree + -8) +\n               (uint)*(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe) * 2)" ( (binary_expression "(int)(piVar3->dyn_ltree + -8) +\n               (uint)*(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe) * 2" (cast_expression "(int)(piVar3->dyn_ltree + -8)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar3->dyn_ltree + -8)" ( (binary_expression "piVar3->dyn_ltree + -8" (field_expression "piVar3->dyn_ltree" identifier -> field_identifier) + number_literal) ))) + (binary_expression "(uint)*(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe) * 2" (binary_expression "(uint)*(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lenfix_3685 + uVar7 * 2 + 0x7fe)" ( (binary_expression "lenfix_3685 + uVar7 * 2 + 0x7fe" (binary_expression "lenfix_3685 + uVar7 * 2" identifier + (binary_expression "uVar7 * 2" identifier * number_literal)) + number_literal) )))) * number_literal)) )))) = (binary_expression "(ushort)local_64 & 7" (cast_expression "(ushort)local_64" ( (type_descriptor "ushort" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "local_64 = pgVar13;" (assignment_expression "local_64 = pgVar13" identifier = identifier) ;) (expression_statement "uVar24 = uVar7 + 1;" (assignment_expression "uVar24 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar19 + 1 != uVar7 + 1)" ( (binary_expression "uVar19 + 1 != uVar7 + 1" (binary_expression "uVar19 + 1" identifier + number_literal) != (binary_expression "uVar7 + 1" identifier + number_literal)) )) ;) (labeled_statement "LAB_00019253:\n            if (uVar7 < 0x13) {\n              puVar15 = inflate::order + uVar7;\n              do {\n                uVar25 = *puVar15;\n                puVar15 = puVar15 + 1;\n                *(undefined2 *)((int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2) = 0;\n              } while (puVar15 != (ushort *)&UNK_000221e6);\n              piVar3->strstart = 0x13;\n            }" statement_identifier : (if_statement "if (uVar7 < 0x13) {\n              puVar15 = inflate::order + uVar7;\n              do {\n                uVar25 = *puVar15;\n                puVar15 = puVar15 + 1;\n                *(undefined2 *)((int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2) = 0;\n              } while (puVar15 != (ushort *)&UNK_000221e6);\n              piVar3->strstart = 0x13;\n            }" if (parenthesized_expression "(uVar7 < 0x13)" ( (binary_expression "uVar7 < 0x13" identifier < number_literal) )) (compound_statement "{\n              puVar15 = inflate::order + uVar7;\n              do {\n                uVar25 = *puVar15;\n                puVar15 = puVar15 + 1;\n                *(undefined2 *)((int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2) = 0;\n              } while (puVar15 != (ushort *)&UNK_000221e6);\n              piVar3->strstart = 0x13;\n            }" { (expression_statement "puVar15 = inflate::order + uVar7;" (binary_expression "puVar15 = inflate::order + uVar7" (assignment_expression "puVar15 = inflate" identifier = identifier) (ERROR "::order" : : identifier) + identifier) ;) (do_statement "do {\n                uVar25 = *puVar15;\n                puVar15 = puVar15 + 1;\n                *(undefined2 *)((int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2) = 0;\n              } while (puVar15 != (ushort *)&UNK_000221e6);" do (compound_statement "{\n                uVar25 = *puVar15;\n                puVar15 = puVar15 + 1;\n                *(undefined2 *)((int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2) = 0;\n              }" { (expression_statement "uVar25 = *puVar15;" (assignment_expression "uVar25 = *puVar15" identifier = (pointer_expression "*puVar15" * identifier)) ;) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined2 *)((int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2) = 0;" (assignment_expression "*(undefined2 *)((int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2) = 0" (pointer_expression "*(undefined2 *)((int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2)" * (cast_expression "(undefined2 *)((int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2)" ( (binary_expression "(int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2" (cast_expression "(int)(piVar3->dyn_ltree + -8)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar3->dyn_ltree + -8)" ( (binary_expression "piVar3->dyn_ltree + -8" (field_expression "piVar3->dyn_ltree" identifier -> field_identifier) + number_literal) ))) + (binary_expression "(uint)uVar25 * 2" (cast_expression "(uint)uVar25" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) = number_literal) ;) }) while (parenthesized_expression "(puVar15 != (ushort *)&UNK_000221e6)" ( (binary_expression "puVar15 != (ushort *)&UNK_000221e6" identifier != (cast_expression "(ushort *)&UNK_000221e6" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&UNK_000221e6" & identifier))) )) ;) (expression_statement "piVar3->strstart = 0x13;" (assignment_expression "piVar3->strstart = 0x13" (field_expression "piVar3->strstart" identifier -> field_identifier) = number_literal) ;) }))) (expression_statement "piVar3->hash_shift = 7;" (assignment_expression "piVar3->hash_shift = 7" (field_expression "piVar3->hash_shift" identifier -> field_identifier) = number_literal) ;) (expression_statement "piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);" (assignment_expression "piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128)" (field_expression "piVar3->match_start" identifier -> field_identifier) = (call_expression "(uInt)(piVar3->dyn_ltree + 0x128)" (parenthesized_expression "(uInt)" ( identifier )) (argument_list "(piVar3->dyn_ltree + 0x128)" ( (binary_expression "piVar3->dyn_ltree + 0x128" (field_expression "piVar3->dyn_ltree" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);" (assignment_expression "piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128)" (field_expression "piVar3->hash_bits" identifier -> field_identifier) = (call_expression "(uInt)(piVar3->dyn_ltree + 0x128)" (parenthesized_expression "(uInt)" ( identifier )) (argument_list "(piVar3->dyn_ltree + 0x128)" ( (binary_expression "piVar3->dyn_ltree + 0x128" (field_expression "piVar3->dyn_ltree" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "iVar6 = inflate_table(CODES,(ushort *)&piVar3->lookahead,0x13,\n                                  (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                  (ushort *)(piVar3->dyn_ltree + 0x98));" (assignment_expression "iVar6 = inflate_table(CODES,(ushort *)&piVar3->lookahead,0x13,\n                                  (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                  (ushort *)(piVar3->dyn_ltree + 0x98))" identifier = (call_expression "inflate_table(CODES,(ushort *)&piVar3->lookahead,0x13,\n                                  (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                  (ushort *)(piVar3->dyn_ltree + 0x98))" identifier (argument_list "(CODES,(ushort *)&piVar3->lookahead,0x13,\n                                  (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                  (ushort *)(piVar3->dyn_ltree + 0x98))" ( identifier , (cast_expression "(ushort *)&piVar3->lookahead" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&piVar3->lookahead" & (field_expression "piVar3->lookahead" identifier -> field_identifier))) , number_literal , (cast_expression "(code **)&piVar3->match_start" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&piVar3->match_start" & (field_expression "piVar3->match_start" identifier -> field_identifier))) , (pointer_expression "&piVar3->hash_shift" & (field_expression "piVar3->hash_shift" identifier -> field_identifier)) , (cast_expression "(ushort *)(piVar3->dyn_ltree + 0x98)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3->dyn_ltree + 0x98)" ( (binary_expression "piVar3->dyn_ltree + 0x98" (field_expression "piVar3->dyn_ltree" identifier -> field_identifier) + number_literal) ))) )))) ;) (if_statement "if (iVar6 == 0) {\n              local_48 = 0;\n              piVar3->strstart = 0;\n              piVar3->status = 0x3f46;\nLAB_000185db:\n              uVar7 = piVar3->prev_match;\n              uVar19 = uVar7 + piVar3->match_available;\n              while (local_48 < uVar19) {\n                uVar24 = ~(-1 << ((byte)piVar3->hash_shift & 0x1f));\n                iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                cVar21._1_3_ = 0;\n                cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                uVar25 = *(ushort *)(iVar6 + 2);\n                if ((uint)cVar20 < (uint)cVar21) {\n                  if (local_6c != (Posf *)0x0) {\n                    while( true ) {\n                      pbVar26 = local_60 + 1;\n                      local_6c = (Posf *)((int)local_6c - 1);\n                      bVar16 = cVar20.fc;\n                      cVar20 = (ct_data_s)((int)cVar20 + 8);\n                      local_64 = (gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n                      iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                      cVar21._1_3_ = 0;\n                      cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                      uVar25 = *(ushort *)(iVar6 + 2);\n                      local_60 = pbVar26;\n                      if ((uint)cVar21 <= (uint)cVar20) break;\n                      if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  pPVar27 = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar16 = cVar21.fc;\n                if (uVar25 < 0x10) {\n                  local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                  cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                  piVar3->strstart = local_48 + 1;\n                  *(ushort *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2) = uVar25;\n                  local_48 = local_48 + 1;\n                }\n                else {\n                  if (uVar25 == 0x10) {\n                    if ((uint)cVar20 < (int)cVar21 + 2U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                    local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                    if (local_48 == 0) {\n                      strm->msg = "invalid bit length repeat";\n                      piVar3->status = 0x3f51;\n                      goto _L590;\n                    }\n                    uVar24 = (uint)local_64 & 3;\n                    local_64 = (gz_headerp)((uint)local_64 >> 2);\n                    cVar20 = (ct_data_s)((int)cVar20 - 2);\n                    uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22);\n                    iVar6 = uVar24 + 3;\n                  }\n                  else if (uVar25 == 0x11) {\n                    if ((uint)cVar20 < (int)cVar21 + 3U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);\n                    iVar6 = (uVar24 & 7) + 3;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 3);\n                  }\n                  else {\n                    if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);\n                    iVar6 = (uVar24 & 0x7f) + 0xb;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 7);\n                  }\n                  uVar24 = iVar6 + local_48;\n                  if (uVar19 < uVar24) {\n                    strm->msg = "invalid bit length repeat";\n                    piVar3->status = 0x3f51;\n                    goto _L590;\n                  }\n                  puVar23 = (undefined2 *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2);\n                  do {\n                    *puVar23 = uVar18;\n                    puVar23 = puVar23 + 1;\n                  } while (puVar23 != (undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2));\n                  piVar3->strstart = uVar24;\n                  local_48 = uVar24;\n                }\n              }\n              if (piVar3->status == 0x3f51) goto _L590;\n              if (piVar3->dyn_ltree[0x78].fc.freq != 0) {\n                piVar3->hash_shift = 9;\n                piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n                piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n                iVar6 = inflate_table(LENS,(ushort *)&piVar3->lookahead,uVar7,\n                                      (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                      (ushort *)(piVar3->dyn_ltree + 0x98));\n                if (iVar6 == 0) {\n                  piVar3->block_start = 6;\n                  piVar3->hash_mask = piVar3->match_start;\n                  iVar6 = inflate_table(DISTS,(ushort *)\n                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2),\n                                        piVar3->match_available,(code **)&piVar3->match_start,\n                                        (uint *)&piVar3->block_start,\n                                        (ushort *)(piVar3->dyn_ltree + 0x98));\n                  if (iVar6 == 0) {\n                    piVar3->status = 0x3f47;\n                    if (flush != 6) {\n_L113:\n                      do {\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    pPVar27 = (Posf *)0x0;\n                  }\n                  else {\n                    pPVar27 = (Posf *)0xfffffffd;\n                    strm->msg = "invalid distances set";\n                    piVar3->status = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar8 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              pPVar27 = (Posf *)0xfffffffd;\n              strm->msg = "invalid code -- missing end-of-block";\n              piVar3->status = 0x3f51;\n            }\n            else {\n              strm->msg = "invalid code lengths set";\n              piVar3->status = 0x3f51;\n              pPVar27 = (Posf *)0xfffffffd;\n            }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n              local_48 = 0;\n              piVar3->strstart = 0;\n              piVar3->status = 0x3f46;\nLAB_000185db:\n              uVar7 = piVar3->prev_match;\n              uVar19 = uVar7 + piVar3->match_available;\n              while (local_48 < uVar19) {\n                uVar24 = ~(-1 << ((byte)piVar3->hash_shift & 0x1f));\n                iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                cVar21._1_3_ = 0;\n                cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                uVar25 = *(ushort *)(iVar6 + 2);\n                if ((uint)cVar20 < (uint)cVar21) {\n                  if (local_6c != (Posf *)0x0) {\n                    while( true ) {\n                      pbVar26 = local_60 + 1;\n                      local_6c = (Posf *)((int)local_6c - 1);\n                      bVar16 = cVar20.fc;\n                      cVar20 = (ct_data_s)((int)cVar20 + 8);\n                      local_64 = (gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n                      iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                      cVar21._1_3_ = 0;\n                      cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                      uVar25 = *(ushort *)(iVar6 + 2);\n                      local_60 = pbVar26;\n                      if ((uint)cVar21 <= (uint)cVar20) break;\n                      if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  pPVar27 = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar16 = cVar21.fc;\n                if (uVar25 < 0x10) {\n                  local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                  cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                  piVar3->strstart = local_48 + 1;\n                  *(ushort *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2) = uVar25;\n                  local_48 = local_48 + 1;\n                }\n                else {\n                  if (uVar25 == 0x10) {\n                    if ((uint)cVar20 < (int)cVar21 + 2U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                    local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                    if (local_48 == 0) {\n                      strm->msg = "invalid bit length repeat";\n                      piVar3->status = 0x3f51;\n                      goto _L590;\n                    }\n                    uVar24 = (uint)local_64 & 3;\n                    local_64 = (gz_headerp)((uint)local_64 >> 2);\n                    cVar20 = (ct_data_s)((int)cVar20 - 2);\n                    uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22);\n                    iVar6 = uVar24 + 3;\n                  }\n                  else if (uVar25 == 0x11) {\n                    if ((uint)cVar20 < (int)cVar21 + 3U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);\n                    iVar6 = (uVar24 & 7) + 3;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 3);\n                  }\n                  else {\n                    if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);\n                    iVar6 = (uVar24 & 0x7f) + 0xb;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 7);\n                  }\n                  uVar24 = iVar6 + local_48;\n                  if (uVar19 < uVar24) {\n                    strm->msg = "invalid bit length repeat";\n                    piVar3->status = 0x3f51;\n                    goto _L590;\n                  }\n                  puVar23 = (undefined2 *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2);\n                  do {\n                    *puVar23 = uVar18;\n                    puVar23 = puVar23 + 1;\n                  } while (puVar23 != (undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2));\n                  piVar3->strstart = uVar24;\n                  local_48 = uVar24;\n                }\n              }\n              if (piVar3->status == 0x3f51) goto _L590;\n              if (piVar3->dyn_ltree[0x78].fc.freq != 0) {\n                piVar3->hash_shift = 9;\n                piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n                piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n                iVar6 = inflate_table(LENS,(ushort *)&piVar3->lookahead,uVar7,\n                                      (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                      (ushort *)(piVar3->dyn_ltree + 0x98));\n                if (iVar6 == 0) {\n                  piVar3->block_start = 6;\n                  piVar3->hash_mask = piVar3->match_start;\n                  iVar6 = inflate_table(DISTS,(ushort *)\n                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2),\n                                        piVar3->match_available,(code **)&piVar3->match_start,\n                                        (uint *)&piVar3->block_start,\n                                        (ushort *)(piVar3->dyn_ltree + 0x98));\n                  if (iVar6 == 0) {\n                    piVar3->status = 0x3f47;\n                    if (flush != 6) {\n_L113:\n                      do {\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    pPVar27 = (Posf *)0x0;\n                  }\n                  else {\n                    pPVar27 = (Posf *)0xfffffffd;\n                    strm->msg = "invalid distances set";\n                    piVar3->status = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar8 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              pPVar27 = (Posf *)0xfffffffd;\n              strm->msg = "invalid code -- missing end-of-block";\n              piVar3->status = 0x3f51;\n            }" { (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "piVar3->strstart = 0;" (assignment_expression "piVar3->strstart = 0" (field_expression "piVar3->strstart" identifier -> field_identifier) = number_literal) ;) (expression_statement "piVar3->status = 0x3f46;" (assignment_expression "piVar3->status = 0x3f46" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (labeled_statement "LAB_000185db:\n              uVar7 = piVar3->prev_match;" statement_identifier : (expression_statement "uVar7 = piVar3->prev_match;" (assignment_expression "uVar7 = piVar3->prev_match" identifier = (field_expression "piVar3->prev_match" identifier -> field_identifier)) ;)) (expression_statement "uVar19 = uVar7 + piVar3->match_available;" (assignment_expression "uVar19 = uVar7 + piVar3->match_available" identifier = (binary_expression "uVar7 + piVar3->match_available" identifier + (field_expression "piVar3->match_available" identifier -> field_identifier))) ;) (while_statement "while (local_48 < uVar19) {\n                uVar24 = ~(-1 << ((byte)piVar3->hash_shift & 0x1f));\n                iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                cVar21._1_3_ = 0;\n                cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                uVar25 = *(ushort *)(iVar6 + 2);\n                if ((uint)cVar20 < (uint)cVar21) {\n                  if (local_6c != (Posf *)0x0) {\n                    while( true ) {\n                      pbVar26 = local_60 + 1;\n                      local_6c = (Posf *)((int)local_6c - 1);\n                      bVar16 = cVar20.fc;\n                      cVar20 = (ct_data_s)((int)cVar20 + 8);\n                      local_64 = (gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n                      iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                      cVar21._1_3_ = 0;\n                      cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                      uVar25 = *(ushort *)(iVar6 + 2);\n                      local_60 = pbVar26;\n                      if ((uint)cVar21 <= (uint)cVar20) break;\n                      if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  pPVar27 = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar16 = cVar21.fc;\n                if (uVar25 < 0x10) {\n                  local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                  cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                  piVar3->strstart = local_48 + 1;\n                  *(ushort *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2) = uVar25;\n                  local_48 = local_48 + 1;\n                }\n                else {\n                  if (uVar25 == 0x10) {\n                    if ((uint)cVar20 < (int)cVar21 + 2U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                    local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                    if (local_48 == 0) {\n                      strm->msg = "invalid bit length repeat";\n                      piVar3->status = 0x3f51;\n                      goto _L590;\n                    }\n                    uVar24 = (uint)local_64 & 3;\n                    local_64 = (gz_headerp)((uint)local_64 >> 2);\n                    cVar20 = (ct_data_s)((int)cVar20 - 2);\n                    uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22);\n                    iVar6 = uVar24 + 3;\n                  }\n                  else if (uVar25 == 0x11) {\n                    if ((uint)cVar20 < (int)cVar21 + 3U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);\n                    iVar6 = (uVar24 & 7) + 3;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 3);\n                  }\n                  else {\n                    if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);\n                    iVar6 = (uVar24 & 0x7f) + 0xb;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 7);\n                  }\n                  uVar24 = iVar6 + local_48;\n                  if (uVar19 < uVar24) {\n                    strm->msg = "invalid bit length repeat";\n                    piVar3->status = 0x3f51;\n                    goto _L590;\n                  }\n                  puVar23 = (undefined2 *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2);\n                  do {\n                    *puVar23 = uVar18;\n                    puVar23 = puVar23 + 1;\n                  } while (puVar23 != (undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2));\n                  piVar3->strstart = uVar24;\n                  local_48 = uVar24;\n                }\n              }" while (parenthesized_expression "(local_48 < uVar19)" ( (binary_expression "local_48 < uVar19" identifier < identifier) )) (compound_statement "{\n                uVar24 = ~(-1 << ((byte)piVar3->hash_shift & 0x1f));\n                iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                cVar21._1_3_ = 0;\n                cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                uVar25 = *(ushort *)(iVar6 + 2);\n                if ((uint)cVar20 < (uint)cVar21) {\n                  if (local_6c != (Posf *)0x0) {\n                    while( true ) {\n                      pbVar26 = local_60 + 1;\n                      local_6c = (Posf *)((int)local_6c - 1);\n                      bVar16 = cVar20.fc;\n                      cVar20 = (ct_data_s)((int)cVar20 + 8);\n                      local_64 = (gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n                      iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                      cVar21._1_3_ = 0;\n                      cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                      uVar25 = *(ushort *)(iVar6 + 2);\n                      local_60 = pbVar26;\n                      if ((uint)cVar21 <= (uint)cVar20) break;\n                      if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  pPVar27 = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar16 = cVar21.fc;\n                if (uVar25 < 0x10) {\n                  local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                  cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                  piVar3->strstart = local_48 + 1;\n                  *(ushort *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2) = uVar25;\n                  local_48 = local_48 + 1;\n                }\n                else {\n                  if (uVar25 == 0x10) {\n                    if ((uint)cVar20 < (int)cVar21 + 2U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                    local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                    if (local_48 == 0) {\n                      strm->msg = "invalid bit length repeat";\n                      piVar3->status = 0x3f51;\n                      goto _L590;\n                    }\n                    uVar24 = (uint)local_64 & 3;\n                    local_64 = (gz_headerp)((uint)local_64 >> 2);\n                    cVar20 = (ct_data_s)((int)cVar20 - 2);\n                    uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22);\n                    iVar6 = uVar24 + 3;\n                  }\n                  else if (uVar25 == 0x11) {\n                    if ((uint)cVar20 < (int)cVar21 + 3U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);\n                    iVar6 = (uVar24 & 7) + 3;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 3);\n                  }\n                  else {\n                    if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);\n                    iVar6 = (uVar24 & 0x7f) + 0xb;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 7);\n                  }\n                  uVar24 = iVar6 + local_48;\n                  if (uVar19 < uVar24) {\n                    strm->msg = "invalid bit length repeat";\n                    piVar3->status = 0x3f51;\n                    goto _L590;\n                  }\n                  puVar23 = (undefined2 *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2);\n                  do {\n                    *puVar23 = uVar18;\n                    puVar23 = puVar23 + 1;\n                  } while (puVar23 != (undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2));\n                  piVar3->strstart = uVar24;\n                  local_48 = uVar24;\n                }\n              }" { (expression_statement "uVar24 = ~(-1 << ((byte)piVar3->hash_shift & 0x1f));" (assignment_expression "uVar24 = ~(-1 << ((byte)piVar3->hash_shift & 0x1f))" identifier = (unary_expression "~(-1 << ((byte)piVar3->hash_shift & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)piVar3->hash_shift & 0x1f))" ( (binary_expression "-1 << ((byte)piVar3->hash_shift & 0x1f)" number_literal << (parenthesized_expression "((byte)piVar3->hash_shift & 0x1f)" ( (binary_expression "(byte)piVar3->hash_shift & 0x1f" (cast_expression "(byte)piVar3->hash_shift" ( (type_descriptor "byte" type_identifier) ) (field_expression "piVar3->hash_shift" identifier -> field_identifier)) & number_literal) ))) )))) ;) (expression_statement "iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;" (assignment_expression "iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4" identifier = (binary_expression "piVar3->hash_bits + (uVar24 & (uint)local_64) * 4" (field_expression "piVar3->hash_bits" identifier -> field_identifier) + (binary_expression "(uVar24 & (uint)local_64) * 4" (parenthesized_expression "(uVar24 & (uint)local_64)" ( (binary_expression "uVar24 & (uint)local_64" identifier & (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier)) )) * number_literal))) ;) (expression_statement "cVar21._1_3_ = 0;" (assignment_expression "cVar21._1_3_ = 0" (field_expression "cVar21._1_3_" identifier . field_identifier) = number_literal) ;) (expression_statement "cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);" (assignment_expression "cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1)" (field_expression "cVar21.fc.freq._0_1_" (field_expression "cVar21.fc.freq" (field_expression "cVar21.fc" identifier . field_identifier) . field_identifier) . field_identifier) = (pointer_expression "*(byte *)(iVar6 + 1)" * (cast_expression "(byte *)(iVar6 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 1)" ( (binary_expression "iVar6 + 1" identifier + number_literal) ))))) ;) (expression_statement "uVar25 = *(ushort *)(iVar6 + 2);" (assignment_expression "uVar25 = *(ushort *)(iVar6 + 2)" identifier = (pointer_expression "*(ushort *)(iVar6 + 2)" * (cast_expression "(ushort *)(iVar6 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 2)" ( (binary_expression "iVar6 + 2" identifier + number_literal) ))))) ;) (if_statement "if ((uint)cVar20 < (uint)cVar21) {\n                  if (local_6c != (Posf *)0x0) {\n                    while( true ) {\n                      pbVar26 = local_60 + 1;\n                      local_6c = (Posf *)((int)local_6c - 1);\n                      bVar16 = cVar20.fc;\n                      cVar20 = (ct_data_s)((int)cVar20 + 8);\n                      local_64 = (gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n                      iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                      cVar21._1_3_ = 0;\n                      cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                      uVar25 = *(ushort *)(iVar6 + 2);\n                      local_60 = pbVar26;\n                      if ((uint)cVar21 <= (uint)cVar20) break;\n                      if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  pPVar27 = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }" if (parenthesized_expression "((uint)cVar20 < (uint)cVar21)" ( (binary_expression "(uint)cVar20 < (uint)cVar21" (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier) < (cast_expression "(uint)cVar21" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (compound_statement "{\n                  if (local_6c != (Posf *)0x0) {\n                    while( true ) {\n                      pbVar26 = local_60 + 1;\n                      local_6c = (Posf *)((int)local_6c - 1);\n                      bVar16 = cVar20.fc;\n                      cVar20 = (ct_data_s)((int)cVar20 + 8);\n                      local_64 = (gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n                      iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                      cVar21._1_3_ = 0;\n                      cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                      uVar25 = *(ushort *)(iVar6 + 2);\n                      local_60 = pbVar26;\n                      if ((uint)cVar21 <= (uint)cVar20) break;\n                      if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  pPVar27 = (Posf *)0x0;\n                  goto LAB_00017f32;\n                }" { (if_statement "if (local_6c != (Posf *)0x0) {\n                    while( true ) {\n                      pbVar26 = local_60 + 1;\n                      local_6c = (Posf *)((int)local_6c - 1);\n                      bVar16 = cVar20.fc;\n                      cVar20 = (ct_data_s)((int)cVar20 + 8);\n                      local_64 = (gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n                      iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                      cVar21._1_3_ = 0;\n                      cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                      uVar25 = *(ushort *)(iVar6 + 2);\n                      local_60 = pbVar26;\n                      if ((uint)cVar21 <= (uint)cVar20) break;\n                      if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }" if (parenthesized_expression "(local_6c != (Posf *)0x0)" ( (binary_expression "local_6c != (Posf *)0x0" identifier != (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    while( true ) {\n                      pbVar26 = local_60 + 1;\n                      local_6c = (Posf *)((int)local_6c - 1);\n                      bVar16 = cVar20.fc;\n                      cVar20 = (ct_data_s)((int)cVar20 + 8);\n                      local_64 = (gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n                      iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                      cVar21._1_3_ = 0;\n                      cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                      uVar25 = *(ushort *)(iVar6 + 2);\n                      local_60 = pbVar26;\n                      if ((uint)cVar21 <= (uint)cVar20) break;\n                      if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }" { (while_statement "while( true ) {\n                      pbVar26 = local_60 + 1;\n                      local_6c = (Posf *)((int)local_6c - 1);\n                      bVar16 = cVar20.fc;\n                      cVar20 = (ct_data_s)((int)cVar20 + 8);\n                      local_64 = (gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n                      iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                      cVar21._1_3_ = 0;\n                      cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                      uVar25 = *(ushort *)(iVar6 + 2);\n                      local_60 = pbVar26;\n                      if ((uint)cVar21 <= (uint)cVar20) break;\n                      if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                      pbVar26 = local_60 + 1;\n                      local_6c = (Posf *)((int)local_6c - 1);\n                      bVar16 = cVar20.fc;\n                      cVar20 = (ct_data_s)((int)cVar20 + 8);\n                      local_64 = (gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n                      iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;\n                      cVar21._1_3_ = 0;\n                      cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);\n                      uVar25 = *(ushort *)(iVar6 + 2);\n                      local_60 = pbVar26;\n                      if ((uint)cVar21 <= (uint)cVar20) break;\n                      if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                    }" { (expression_statement "pbVar26 = local_60 + 1;" (assignment_expression "pbVar26 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = (Posf *)((int)local_6c - 1);" (assignment_expression "local_6c = (Posf *)((int)local_6c - 1)" identifier = (cast_expression "(Posf *)((int)local_6c - 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - 1)" ( (binary_expression "(int)local_6c - 1" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "bVar16 = cVar20.fc;" (assignment_expression "bVar16 = cVar20.fc" identifier = (field_expression "cVar20.fc" identifier . field_identifier)) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 + 8);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 + 8)" identifier = (call_expression "(ct_data_s)((int)cVar20 + 8)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 + 8)" ( (binary_expression "(int)cVar20 + 8" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_64 = (gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));" (assignment_expression "local_64 = (gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" identifier = (call_expression "(gz_headerp)\n                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" ( (binary_expression "(int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f))" (cast_expression "(int)&local_64->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_64->text" & (field_expression "local_64->text" identifier -> field_identifier))) + (parenthesized_expression "((uint)*local_60 << (bVar16 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar16 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar16 & 0x1f)" ( (binary_expression "bVar16 & 0x1f" identifier & number_literal) ))) ))) )))) ;) (expression_statement "iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;" (assignment_expression "iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4" identifier = (binary_expression "piVar3->hash_bits + (uVar24 & (uint)local_64) * 4" (field_expression "piVar3->hash_bits" identifier -> field_identifier) + (binary_expression "(uVar24 & (uint)local_64) * 4" (parenthesized_expression "(uVar24 & (uint)local_64)" ( (binary_expression "uVar24 & (uint)local_64" identifier & (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier)) )) * number_literal))) ;) (expression_statement "cVar21._1_3_ = 0;" (assignment_expression "cVar21._1_3_ = 0" (field_expression "cVar21._1_3_" identifier . field_identifier) = number_literal) ;) (expression_statement "cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);" (assignment_expression "cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1)" (field_expression "cVar21.fc.freq._0_1_" (field_expression "cVar21.fc.freq" (field_expression "cVar21.fc" identifier . field_identifier) . field_identifier) . field_identifier) = (pointer_expression "*(byte *)(iVar6 + 1)" * (cast_expression "(byte *)(iVar6 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 1)" ( (binary_expression "iVar6 + 1" identifier + number_literal) ))))) ;) (expression_statement "uVar25 = *(ushort *)(iVar6 + 2);" (assignment_expression "uVar25 = *(ushort *)(iVar6 + 2)" identifier = (pointer_expression "*(ushort *)(iVar6 + 2)" * (cast_expression "(ushort *)(iVar6 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 2)" ( (binary_expression "iVar6 + 2" identifier + number_literal) ))))) ;) (expression_statement "local_60 = pbVar26;" (assignment_expression "local_60 = pbVar26" identifier = identifier) ;) (if_statement "if ((uint)cVar21 <= (uint)cVar20) break;" if (parenthesized_expression "((uint)cVar21 <= (uint)cVar20)" ( (binary_expression "(uint)cVar21 <= (uint)cVar20" (cast_expression "(uint)cVar21" ( (type_descriptor "uint" type_identifier) ) identifier) <= (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (break_statement "break;" break ;)) (if_statement "if (local_6c == (Posf *)0x0) goto LAB_00018d40;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00018d40;" goto statement_identifier ;)) })) (goto_statement "goto LAB_00018694;" goto statement_identifier ;) })) (labeled_statement "LAB_000192ef:\n                  pPVar27 = (Posf *)0x0;" statement_identifier : (expression_statement "pPVar27 = (Posf *)0x0;" (assignment_expression "pPVar27 = (Posf *)0x0" identifier = (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (labeled_statement "LAB_00018694:\n                bVar16 = cVar21.fc;" statement_identifier : (expression_statement "bVar16 = cVar21.fc;" (assignment_expression "bVar16 = cVar21.fc" identifier = (field_expression "cVar21.fc" identifier . field_identifier)) ;)) (if_statement "if (uVar25 < 0x10) {\n                  local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                  cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                  piVar3->strstart = local_48 + 1;\n                  *(ushort *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2) = uVar25;\n                  local_48 = local_48 + 1;\n                }\n                else {\n                  if (uVar25 == 0x10) {\n                    if ((uint)cVar20 < (int)cVar21 + 2U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                    local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                    if (local_48 == 0) {\n                      strm->msg = "invalid bit length repeat";\n                      piVar3->status = 0x3f51;\n                      goto _L590;\n                    }\n                    uVar24 = (uint)local_64 & 3;\n                    local_64 = (gz_headerp)((uint)local_64 >> 2);\n                    cVar20 = (ct_data_s)((int)cVar20 - 2);\n                    uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22);\n                    iVar6 = uVar24 + 3;\n                  }\n                  else if (uVar25 == 0x11) {\n                    if ((uint)cVar20 < (int)cVar21 + 3U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);\n                    iVar6 = (uVar24 & 7) + 3;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 3);\n                  }\n                  else {\n                    if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);\n                    iVar6 = (uVar24 & 0x7f) + 0xb;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 7);\n                  }\n                  uVar24 = iVar6 + local_48;\n                  if (uVar19 < uVar24) {\n                    strm->msg = "invalid bit length repeat";\n                    piVar3->status = 0x3f51;\n                    goto _L590;\n                  }\n                  puVar23 = (undefined2 *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2);\n                  do {\n                    *puVar23 = uVar18;\n                    puVar23 = puVar23 + 1;\n                  } while (puVar23 != (undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2));\n                  piVar3->strstart = uVar24;\n                  local_48 = uVar24;\n                }" if (parenthesized_expression "(uVar25 < 0x10)" ( (binary_expression "uVar25 < 0x10" identifier < number_literal) )) (compound_statement "{\n                  local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                  cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                  piVar3->strstart = local_48 + 1;\n                  *(ushort *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2) = uVar25;\n                  local_48 = local_48 + 1;\n                }" { (expression_statement "local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));" (assignment_expression "local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f))" identifier = (call_expression "(gz_headerp)((uint)local_64 >> (bVar16 & 0x1f))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((uint)local_64 >> (bVar16 & 0x1f))" ( (binary_expression "(uint)local_64 >> (bVar16 & 0x1f)" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> (parenthesized_expression "(bVar16 & 0x1f)" ( (binary_expression "bVar16 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21)" identifier = (call_expression "(ct_data_s)((int)cVar20 - (int)cVar21)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 - (int)cVar21)" ( (binary_expression "(int)cVar20 - (int)cVar21" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)cVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "piVar3->strstart = local_48 + 1;" (assignment_expression "piVar3->strstart = local_48 + 1" (field_expression "piVar3->strstart" identifier -> field_identifier) = (binary_expression "local_48 + 1" identifier + number_literal)) ;) (expression_statement "*(ushort *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2) = uVar25;" (assignment_expression "*(ushort *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2) = uVar25" (pointer_expression "*(ushort *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2)" * (cast_expression "(ushort *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(piVar3->dyn_ltree + -8) + local_48 * 2)" ( (binary_expression "(int)(piVar3->dyn_ltree + -8) + local_48 * 2" (cast_expression "(int)(piVar3->dyn_ltree + -8)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar3->dyn_ltree + -8)" ( (binary_expression "piVar3->dyn_ltree + -8" (field_expression "piVar3->dyn_ltree" identifier -> field_identifier) + number_literal) ))) + (binary_expression "local_48 * 2" identifier * number_literal)) )))) = identifier) ;) (expression_statement "local_48 = local_48 + 1;" (assignment_expression "local_48 = local_48 + 1" identifier = (binary_expression "local_48 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n                  if (uVar25 == 0x10) {\n                    if ((uint)cVar20 < (int)cVar21 + 2U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                    local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                    if (local_48 == 0) {\n                      strm->msg = "invalid bit length repeat";\n                      piVar3->status = 0x3f51;\n                      goto _L590;\n                    }\n                    uVar24 = (uint)local_64 & 3;\n                    local_64 = (gz_headerp)((uint)local_64 >> 2);\n                    cVar20 = (ct_data_s)((int)cVar20 - 2);\n                    uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22);\n                    iVar6 = uVar24 + 3;\n                  }\n                  else if (uVar25 == 0x11) {\n                    if ((uint)cVar20 < (int)cVar21 + 3U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);\n                    iVar6 = (uVar24 & 7) + 3;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 3);\n                  }\n                  else {\n                    if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);\n                    iVar6 = (uVar24 & 0x7f) + 0xb;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 7);\n                  }\n                  uVar24 = iVar6 + local_48;\n                  if (uVar19 < uVar24) {\n                    strm->msg = "invalid bit length repeat";\n                    piVar3->status = 0x3f51;\n                    goto _L590;\n                  }\n                  puVar23 = (undefined2 *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2);\n                  do {\n                    *puVar23 = uVar18;\n                    puVar23 = puVar23 + 1;\n                  } while (puVar23 != (undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2));\n                  piVar3->strstart = uVar24;\n                  local_48 = uVar24;\n                }" else (compound_statement "{\n                  if (uVar25 == 0x10) {\n                    if ((uint)cVar20 < (int)cVar21 + 2U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                    local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                    if (local_48 == 0) {\n                      strm->msg = "invalid bit length repeat";\n                      piVar3->status = 0x3f51;\n                      goto _L590;\n                    }\n                    uVar24 = (uint)local_64 & 3;\n                    local_64 = (gz_headerp)((uint)local_64 >> 2);\n                    cVar20 = (ct_data_s)((int)cVar20 - 2);\n                    uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22);\n                    iVar6 = uVar24 + 3;\n                  }\n                  else if (uVar25 == 0x11) {\n                    if ((uint)cVar20 < (int)cVar21 + 3U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);\n                    iVar6 = (uVar24 & 7) + 3;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 3);\n                  }\n                  else {\n                    if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);\n                    iVar6 = (uVar24 & 0x7f) + 0xb;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 7);\n                  }\n                  uVar24 = iVar6 + local_48;\n                  if (uVar19 < uVar24) {\n                    strm->msg = "invalid bit length repeat";\n                    piVar3->status = 0x3f51;\n                    goto _L590;\n                  }\n                  puVar23 = (undefined2 *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2);\n                  do {\n                    *puVar23 = uVar18;\n                    puVar23 = puVar23 + 1;\n                  } while (puVar23 != (undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2));\n                  piVar3->strstart = uVar24;\n                  local_48 = uVar24;\n                }" { (if_statement "if (uVar25 == 0x10) {\n                    if ((uint)cVar20 < (int)cVar21 + 2U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                    local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                    if (local_48 == 0) {\n                      strm->msg = "invalid bit length repeat";\n                      piVar3->status = 0x3f51;\n                      goto _L590;\n                    }\n                    uVar24 = (uint)local_64 & 3;\n                    local_64 = (gz_headerp)((uint)local_64 >> 2);\n                    cVar20 = (ct_data_s)((int)cVar20 - 2);\n                    uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22);\n                    iVar6 = uVar24 + 3;\n                  }\n                  else if (uVar25 == 0x11) {\n                    if ((uint)cVar20 < (int)cVar21 + 3U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);\n                    iVar6 = (uVar24 & 7) + 3;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 3);\n                  }\n                  else {\n                    if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);\n                    iVar6 = (uVar24 & 0x7f) + 0xb;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 7);\n                  }" if (parenthesized_expression "(uVar25 == 0x10)" ( (binary_expression "uVar25 == 0x10" identifier == number_literal) )) (compound_statement "{\n                    if ((uint)cVar20 < (int)cVar21 + 2U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                    local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                    if (local_48 == 0) {\n                      strm->msg = "invalid bit length repeat";\n                      piVar3->status = 0x3f51;\n                      goto _L590;\n                    }\n                    uVar24 = (uint)local_64 & 3;\n                    local_64 = (gz_headerp)((uint)local_64 >> 2);\n                    cVar20 = (ct_data_s)((int)cVar20 - 2);\n                    uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22);\n                    iVar6 = uVar24 + 3;\n                  }" { (if_statement "if ((uint)cVar20 < (int)cVar21 + 2U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }" if (parenthesized_expression "((uint)cVar20 < (int)cVar21 + 2U)" ( (binary_expression "(uint)cVar20 < (int)cVar21 + 2U" (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier) < (binary_expression "(int)cVar21 + 2U" (cast_expression "(int)cVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) )) (compound_statement "{\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }" { (if_statement "if (local_6c == (Posf *)0x0) goto LAB_000192ef;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000192ef;" goto statement_identifier ;)) (while_statement "while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 2U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }" { (expression_statement "pbVar26 = local_60 + 1;" (assignment_expression "pbVar26 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = (Posf *)((int)local_6c - 1);" (assignment_expression "local_6c = (Posf *)((int)local_6c - 1)" identifier = (cast_expression "(Posf *)((int)local_6c - 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - 1)" ( (binary_expression "(int)local_6c - 1" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "bVar17 = cVar20.fc;" (assignment_expression "bVar17 = cVar20.fc" identifier = (field_expression "cVar20.fc" identifier . field_identifier)) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 + 8);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 + 8)" identifier = (call_expression "(ct_data_s)((int)cVar20 + 8)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 + 8)" ( (binary_expression "(int)cVar20 + 8" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));" (assignment_expression "local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)))" identifier = (call_expression "(gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)))" ( (binary_expression "(int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f))" (cast_expression "(int)&local_64->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_64->text" & (field_expression "local_64->text" identifier -> field_identifier))) + (parenthesized_expression "((uint)*local_60 << (bVar17 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar17 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar17 & 0x1f)" ( (binary_expression "bVar17 & 0x1f" identifier & number_literal) ))) ))) )))) ;) (expression_statement "local_60 = pbVar26;" (assignment_expression "local_60 = pbVar26" identifier = identifier) ;) (if_statement "if ((int)cVar21 + 2U <= (uint)cVar20) break;" if (parenthesized_expression "((int)cVar21 + 2U <= (uint)cVar20)" ( (binary_expression "(int)cVar21 + 2U <= (uint)cVar20" (binary_expression "(int)cVar21 + 2U" (cast_expression "(int)cVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) <= (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (break_statement "break;" break ;)) (if_statement "if (local_6c == (Posf *)0x0) goto LAB_00018d40;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00018d40;" goto statement_identifier ;)) })) })) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21)" identifier = (call_expression "(ct_data_s)((int)cVar20 - (int)cVar21)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 - (int)cVar21)" ( (binary_expression "(int)cVar20 - (int)cVar21" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)cVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));" (assignment_expression "local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f))" identifier = (call_expression "(gz_headerp)((uint)local_64 >> (bVar16 & 0x1f))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((uint)local_64 >> (bVar16 & 0x1f))" ( (binary_expression "(uint)local_64 >> (bVar16 & 0x1f)" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> (parenthesized_expression "(bVar16 & 0x1f)" ( (binary_expression "bVar16 & 0x1f" identifier & number_literal) ))) )))) ;) (if_statement "if (local_48 == 0) {\n                      strm->msg = "invalid bit length repeat";\n                      piVar3->status = 0x3f51;\n                      goto _L590;\n                    }" if (parenthesized_expression "(local_48 == 0)" ( (binary_expression "local_48 == 0" identifier == number_literal) )) (compound_statement "{\n                      strm->msg = "invalid bit length repeat";\n                      piVar3->status = 0x3f51;\n                      goto _L590;\n                    }" { (expression_statement "strm->msg = "invalid bit length repeat";" (assignment_expression "strm->msg = "invalid bit length repeat"" (field_expression "strm->msg" identifier -> field_identifier) = (string_literal ""invalid bit length repeat"" " string_content ")) ;) (expression_statement "piVar3->status = 0x3f51;" (assignment_expression "piVar3->status = 0x3f51" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (goto_statement "goto _L590;" goto statement_identifier ;) })) (expression_statement "uVar24 = (uint)local_64 & 3;" (assignment_expression "uVar24 = (uint)local_64 & 3" identifier = (binary_expression "(uint)local_64 & 3" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "local_64 = (gz_headerp)((uint)local_64 >> 2);" (assignment_expression "local_64 = (gz_headerp)((uint)local_64 >> 2)" identifier = (call_expression "(gz_headerp)((uint)local_64 >> 2)" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((uint)local_64 >> 2)" ( (binary_expression "(uint)local_64 >> 2" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 - 2);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 - 2)" identifier = (call_expression "(ct_data_s)((int)cVar20 - 2)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 - 2)" ( (binary_expression "(int)cVar20 - 2" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22);" (assignment_expression "uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22)" identifier = (pointer_expression "*(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22)" * (cast_expression "(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar3->dyn_ltree + local_48 * 2 + -0x22)" ( (binary_expression "(int)piVar3->dyn_ltree + local_48 * 2 + -0x22" (binary_expression "(int)piVar3->dyn_ltree + local_48 * 2" (cast_expression "(int)piVar3->dyn_ltree" ( (type_descriptor "int" primitive_type) ) (field_expression "piVar3->dyn_ltree" identifier -> field_identifier)) + (binary_expression "local_48 * 2" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "iVar6 = uVar24 + 3;" (assignment_expression "iVar6 = uVar24 + 3" identifier = (binary_expression "uVar24 + 3" identifier + number_literal)) ;) }) (else_clause "else if (uVar25 == 0x11) {\n                    if ((uint)cVar20 < (int)cVar21 + 3U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);\n                    iVar6 = (uVar24 & 7) + 3;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 3);\n                  }\n                  else {\n                    if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);\n                    iVar6 = (uVar24 & 0x7f) + 0xb;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 7);\n                  }" else (if_statement "if (uVar25 == 0x11) {\n                    if ((uint)cVar20 < (int)cVar21 + 3U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);\n                    iVar6 = (uVar24 & 7) + 3;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 3);\n                  }\n                  else {\n                    if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);\n                    iVar6 = (uVar24 & 0x7f) + 0xb;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 7);\n                  }" if (parenthesized_expression "(uVar25 == 0x11)" ( (binary_expression "uVar25 == 0x11" identifier == number_literal) )) (compound_statement "{\n                    if ((uint)cVar20 < (int)cVar21 + 3U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);\n                    iVar6 = (uVar24 & 7) + 3;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 3);\n                  }" { (if_statement "if ((uint)cVar20 < (int)cVar21 + 3U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }" if (parenthesized_expression "((uint)cVar20 < (int)cVar21 + 3U)" ( (binary_expression "(uint)cVar20 < (int)cVar21 + 3U" (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier) < (binary_expression "(int)cVar21 + 3U" (cast_expression "(int)cVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) )) (compound_statement "{\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }" { (if_statement "if (local_6c == (Posf *)0x0) goto LAB_000192ef;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000192ef;" goto statement_identifier ;)) (while_statement "while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 3U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }" { (expression_statement "pbVar26 = local_60 + 1;" (assignment_expression "pbVar26 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = (Posf *)((int)local_6c - 1);" (assignment_expression "local_6c = (Posf *)((int)local_6c - 1)" identifier = (cast_expression "(Posf *)((int)local_6c - 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - 1)" ( (binary_expression "(int)local_6c - 1" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "bVar17 = cVar20.fc;" (assignment_expression "bVar17 = cVar20.fc" identifier = (field_expression "cVar20.fc" identifier . field_identifier)) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 + 8);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 + 8)" identifier = (call_expression "(ct_data_s)((int)cVar20 + 8)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 + 8)" ( (binary_expression "(int)cVar20 + 8" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));" (assignment_expression "local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)))" identifier = (call_expression "(gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)))" ( (binary_expression "(int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f))" (cast_expression "(int)&local_64->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_64->text" & (field_expression "local_64->text" identifier -> field_identifier))) + (parenthesized_expression "((uint)*local_60 << (bVar17 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar17 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar17 & 0x1f)" ( (binary_expression "bVar17 & 0x1f" identifier & number_literal) ))) ))) )))) ;) (expression_statement "local_60 = pbVar26;" (assignment_expression "local_60 = pbVar26" identifier = identifier) ;) (if_statement "if ((int)cVar21 + 3U <= (uint)cVar20) break;" if (parenthesized_expression "((int)cVar21 + 3U <= (uint)cVar20)" ( (binary_expression "(int)cVar21 + 3U <= (uint)cVar20" (binary_expression "(int)cVar21 + 3U" (cast_expression "(int)cVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) <= (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (break_statement "break;" break ;)) (if_statement "if (local_6c == (Posf *)0x0) goto LAB_00018d40;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00018d40;" goto statement_identifier ;)) })) })) (expression_statement "uVar24 = (uint)local_64 >> (bVar16 & 0x1f);" (assignment_expression "uVar24 = (uint)local_64 >> (bVar16 & 0x1f)" identifier = (binary_expression "(uint)local_64 >> (bVar16 & 0x1f)" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> (parenthesized_expression "(bVar16 & 0x1f)" ( (binary_expression "bVar16 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);" (assignment_expression "cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3)" identifier = (call_expression "(ct_data_s)(((int)cVar20 - (int)cVar21) - 3)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "(((int)cVar20 - (int)cVar21) - 3)" ( (binary_expression "((int)cVar20 - (int)cVar21) - 3" (parenthesized_expression "((int)cVar20 - (int)cVar21)" ( (binary_expression "(int)cVar20 - (int)cVar21" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)cVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) - number_literal) )))) ;) (expression_statement "iVar6 = (uVar24 & 7) + 3;" (assignment_expression "iVar6 = (uVar24 & 7) + 3" identifier = (binary_expression "(uVar24 & 7) + 3" (parenthesized_expression "(uVar24 & 7)" ( (binary_expression "uVar24 & 7" identifier & number_literal) )) + number_literal)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "local_64 = (gz_headerp)(uVar24 >> 3);" (assignment_expression "local_64 = (gz_headerp)(uVar24 >> 3)" identifier = (call_expression "(gz_headerp)(uVar24 >> 3)" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "(uVar24 >> 3)" ( (binary_expression "uVar24 >> 3" identifier >> number_literal) )))) ;) }) (else_clause "else {\n                    if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);\n                    iVar6 = (uVar24 & 0x7f) + 0xb;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 7);\n                  }" else (compound_statement "{\n                    if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);\n                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);\n                    iVar6 = (uVar24 & 0x7f) + 0xb;\n                    uVar18 = 0;\n                    local_64 = (gz_headerp)(uVar24 >> 7);\n                  }" { (if_statement "if ((uint)cVar20 < (int)cVar21 + 7U) {\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }" if (parenthesized_expression "((uint)cVar20 < (int)cVar21 + 7U)" ( (binary_expression "(uint)cVar20 < (int)cVar21 + 7U" (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier) < (binary_expression "(int)cVar21 + 7U" (cast_expression "(int)cVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) )) (compound_statement "{\n                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }\n                    }" { (if_statement "if (local_6c == (Posf *)0x0) goto LAB_000192ef;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000192ef;" goto statement_identifier ;)) (while_statement "while( true ) {\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                        pbVar26 = local_60 + 1;\n                        local_6c = (Posf *)((int)local_6c - 1);\n                        bVar17 = cVar20.fc;\n                        cVar20 = (ct_data_s)((int)cVar20 + 8);\n                        local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));\n                        local_60 = pbVar26;\n                        if ((int)cVar21 + 7U <= (uint)cVar20) break;\n                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;\n                      }" { (expression_statement "pbVar26 = local_60 + 1;" (assignment_expression "pbVar26 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = (Posf *)((int)local_6c - 1);" (assignment_expression "local_6c = (Posf *)((int)local_6c - 1)" identifier = (cast_expression "(Posf *)((int)local_6c - 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - 1)" ( (binary_expression "(int)local_6c - 1" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "bVar17 = cVar20.fc;" (assignment_expression "bVar17 = cVar20.fc" identifier = (field_expression "cVar20.fc" identifier . field_identifier)) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 + 8);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 + 8)" identifier = (call_expression "(ct_data_s)((int)cVar20 + 8)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 + 8)" ( (binary_expression "(int)cVar20 + 8" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));" (assignment_expression "local_64 = (gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)))" identifier = (call_expression "(gz_headerp)\n                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)))" ( (binary_expression "(int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f))" (cast_expression "(int)&local_64->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_64->text" & (field_expression "local_64->text" identifier -> field_identifier))) + (parenthesized_expression "((uint)*local_60 << (bVar17 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar17 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar17 & 0x1f)" ( (binary_expression "bVar17 & 0x1f" identifier & number_literal) ))) ))) )))) ;) (expression_statement "local_60 = pbVar26;" (assignment_expression "local_60 = pbVar26" identifier = identifier) ;) (if_statement "if ((int)cVar21 + 7U <= (uint)cVar20) break;" if (parenthesized_expression "((int)cVar21 + 7U <= (uint)cVar20)" ( (binary_expression "(int)cVar21 + 7U <= (uint)cVar20" (binary_expression "(int)cVar21 + 7U" (cast_expression "(int)cVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) <= (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (break_statement "break;" break ;)) (if_statement "if (local_6c == (Posf *)0x0) goto LAB_00018d40;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00018d40;" goto statement_identifier ;)) })) })) (expression_statement "uVar24 = (uint)local_64 >> (bVar16 & 0x1f);" (assignment_expression "uVar24 = (uint)local_64 >> (bVar16 & 0x1f)" identifier = (binary_expression "(uint)local_64 >> (bVar16 & 0x1f)" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> (parenthesized_expression "(bVar16 & 0x1f)" ( (binary_expression "bVar16 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);" (assignment_expression "cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7)" identifier = (call_expression "(ct_data_s)(((int)cVar20 - (int)cVar21) - 7)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "(((int)cVar20 - (int)cVar21) - 7)" ( (binary_expression "((int)cVar20 - (int)cVar21) - 7" (parenthesized_expression "((int)cVar20 - (int)cVar21)" ( (binary_expression "(int)cVar20 - (int)cVar21" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)cVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) - number_literal) )))) ;) (expression_statement "iVar6 = (uVar24 & 0x7f) + 0xb;" (assignment_expression "iVar6 = (uVar24 & 0x7f) + 0xb" identifier = (binary_expression "(uVar24 & 0x7f) + 0xb" (parenthesized_expression "(uVar24 & 0x7f)" ( (binary_expression "uVar24 & 0x7f" identifier & number_literal) )) + number_literal)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "local_64 = (gz_headerp)(uVar24 >> 7);" (assignment_expression "local_64 = (gz_headerp)(uVar24 >> 7)" identifier = (call_expression "(gz_headerp)(uVar24 >> 7)" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "(uVar24 >> 7)" ( (binary_expression "uVar24 >> 7" identifier >> number_literal) )))) ;) }))))) (expression_statement "uVar24 = iVar6 + local_48;" (assignment_expression "uVar24 = iVar6 + local_48" identifier = (binary_expression "iVar6 + local_48" identifier + identifier)) ;) (if_statement "if (uVar19 < uVar24) {\n                    strm->msg = "invalid bit length repeat";\n                    piVar3->status = 0x3f51;\n                    goto _L590;\n                  }" if (parenthesized_expression "(uVar19 < uVar24)" ( (binary_expression "uVar19 < uVar24" identifier < identifier) )) (compound_statement "{\n                    strm->msg = "invalid bit length repeat";\n                    piVar3->status = 0x3f51;\n                    goto _L590;\n                  }" { (expression_statement "strm->msg = "invalid bit length repeat";" (assignment_expression "strm->msg = "invalid bit length repeat"" (field_expression "strm->msg" identifier -> field_identifier) = (string_literal ""invalid bit length repeat"" " string_content ")) ;) (expression_statement "piVar3->status = 0x3f51;" (assignment_expression "piVar3->status = 0x3f51" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (goto_statement "goto _L590;" goto statement_identifier ;) })) (expression_statement "puVar23 = (undefined2 *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2);" (assignment_expression "puVar23 = (undefined2 *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2)" identifier = (cast_expression "(undefined2 *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(piVar3->dyn_ltree + -8) + local_48 * 2)" ( (binary_expression "(int)(piVar3->dyn_ltree + -8) + local_48 * 2" (cast_expression "(int)(piVar3->dyn_ltree + -8)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar3->dyn_ltree + -8)" ( (binary_expression "piVar3->dyn_ltree + -8" (field_expression "piVar3->dyn_ltree" identifier -> field_identifier) + number_literal) ))) + (binary_expression "local_48 * 2" identifier * number_literal)) )))) ;) (do_statement "do {\n                    *puVar23 = uVar18;\n                    puVar23 = puVar23 + 1;\n                  } while (puVar23 != (undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2));" do (compound_statement "{\n                    *puVar23 = uVar18;\n                    puVar23 = puVar23 + 1;\n                  }" { (expression_statement "*puVar23 = uVar18;" (assignment_expression "*puVar23 = uVar18" (pointer_expression "*puVar23" * identifier) = identifier) ;) (expression_statement "puVar23 = puVar23 + 1;" (assignment_expression "puVar23 = puVar23 + 1" identifier = (binary_expression "puVar23 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar23 != (undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2))" ( (binary_expression "puVar23 != (undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2)" identifier != (cast_expression "(undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(piVar3->dyn_ltree + -8) + uVar24 * 2)" ( (binary_expression "(int)(piVar3->dyn_ltree + -8) + uVar24 * 2" (cast_expression "(int)(piVar3->dyn_ltree + -8)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar3->dyn_ltree + -8)" ( (binary_expression "piVar3->dyn_ltree + -8" (field_expression "piVar3->dyn_ltree" identifier -> field_identifier) + number_literal) ))) + (binary_expression "uVar24 * 2" identifier * number_literal)) )))) )) ;) (expression_statement "piVar3->strstart = uVar24;" (assignment_expression "piVar3->strstart = uVar24" (field_expression "piVar3->strstart" identifier -> field_identifier) = identifier) ;) (expression_statement "local_48 = uVar24;" (assignment_expression "local_48 = uVar24" identifier = identifier) ;) }))) })) (if_statement "if (piVar3->status == 0x3f51) goto _L590;" if (parenthesized_expression "(piVar3->status == 0x3f51)" ( (binary_expression "piVar3->status == 0x3f51" (field_expression "piVar3->status" identifier -> field_identifier) == number_literal) )) (goto_statement "goto _L590;" goto statement_identifier ;)) (if_statement "if (piVar3->dyn_ltree[0x78].fc.freq != 0) {\n                piVar3->hash_shift = 9;\n                piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n                piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n                iVar6 = inflate_table(LENS,(ushort *)&piVar3->lookahead,uVar7,\n                                      (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                      (ushort *)(piVar3->dyn_ltree + 0x98));\n                if (iVar6 == 0) {\n                  piVar3->block_start = 6;\n                  piVar3->hash_mask = piVar3->match_start;\n                  iVar6 = inflate_table(DISTS,(ushort *)\n                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2),\n                                        piVar3->match_available,(code **)&piVar3->match_start,\n                                        (uint *)&piVar3->block_start,\n                                        (ushort *)(piVar3->dyn_ltree + 0x98));\n                  if (iVar6 == 0) {\n                    piVar3->status = 0x3f47;\n                    if (flush != 6) {\n_L113:\n                      do {\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    pPVar27 = (Posf *)0x0;\n                  }\n                  else {\n                    pPVar27 = (Posf *)0xfffffffd;\n                    strm->msg = "invalid distances set";\n                    piVar3->status = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar8 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }" if (parenthesized_expression "(piVar3->dyn_ltree[0x78].fc.freq != 0)" ( (binary_expression "piVar3->dyn_ltree[0x78].fc.freq != 0" (field_expression "piVar3->dyn_ltree[0x78].fc.freq" (field_expression "piVar3->dyn_ltree[0x78].fc" (subscript_expression "piVar3->dyn_ltree[0x78]" (field_expression "piVar3->dyn_ltree" identifier -> field_identifier) [ number_literal ]) . field_identifier) . field_identifier) != number_literal) )) (compound_statement "{\n                piVar3->hash_shift = 9;\n                piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);\n                piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);\n                iVar6 = inflate_table(LENS,(ushort *)&piVar3->lookahead,uVar7,\n                                      (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                      (ushort *)(piVar3->dyn_ltree + 0x98));\n                if (iVar6 == 0) {\n                  piVar3->block_start = 6;\n                  piVar3->hash_mask = piVar3->match_start;\n                  iVar6 = inflate_table(DISTS,(ushort *)\n                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2),\n                                        piVar3->match_available,(code **)&piVar3->match_start,\n                                        (uint *)&piVar3->block_start,\n                                        (ushort *)(piVar3->dyn_ltree + 0x98));\n                  if (iVar6 == 0) {\n                    piVar3->status = 0x3f47;\n                    if (flush != 6) {\n_L113:\n                      do {\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    pPVar27 = (Posf *)0x0;\n                  }\n                  else {\n                    pPVar27 = (Posf *)0xfffffffd;\n                    strm->msg = "invalid distances set";\n                    piVar3->status = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar8 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }" { (expression_statement "piVar3->hash_shift = 9;" (assignment_expression "piVar3->hash_shift = 9" (field_expression "piVar3->hash_shift" identifier -> field_identifier) = number_literal) ;) (expression_statement "piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);" (assignment_expression "piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128)" (field_expression "piVar3->match_start" identifier -> field_identifier) = (call_expression "(uInt)(piVar3->dyn_ltree + 0x128)" (parenthesized_expression "(uInt)" ( identifier )) (argument_list "(piVar3->dyn_ltree + 0x128)" ( (binary_expression "piVar3->dyn_ltree + 0x128" (field_expression "piVar3->dyn_ltree" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);" (assignment_expression "piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128)" (field_expression "piVar3->hash_bits" identifier -> field_identifier) = (call_expression "(uInt)(piVar3->dyn_ltree + 0x128)" (parenthesized_expression "(uInt)" ( identifier )) (argument_list "(piVar3->dyn_ltree + 0x128)" ( (binary_expression "piVar3->dyn_ltree + 0x128" (field_expression "piVar3->dyn_ltree" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "iVar6 = inflate_table(LENS,(ushort *)&piVar3->lookahead,uVar7,\n                                      (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                      (ushort *)(piVar3->dyn_ltree + 0x98));" (assignment_expression "iVar6 = inflate_table(LENS,(ushort *)&piVar3->lookahead,uVar7,\n                                      (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                      (ushort *)(piVar3->dyn_ltree + 0x98))" identifier = (call_expression "inflate_table(LENS,(ushort *)&piVar3->lookahead,uVar7,\n                                      (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                      (ushort *)(piVar3->dyn_ltree + 0x98))" identifier (argument_list "(LENS,(ushort *)&piVar3->lookahead,uVar7,\n                                      (code **)&piVar3->match_start,&piVar3->hash_shift,\n                                      (ushort *)(piVar3->dyn_ltree + 0x98))" ( identifier , (cast_expression "(ushort *)&piVar3->lookahead" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&piVar3->lookahead" & (field_expression "piVar3->lookahead" identifier -> field_identifier))) , identifier , (cast_expression "(code **)&piVar3->match_start" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&piVar3->match_start" & (field_expression "piVar3->match_start" identifier -> field_identifier))) , (pointer_expression "&piVar3->hash_shift" & (field_expression "piVar3->hash_shift" identifier -> field_identifier)) , (cast_expression "(ushort *)(piVar3->dyn_ltree + 0x98)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3->dyn_ltree + 0x98)" ( (binary_expression "piVar3->dyn_ltree + 0x98" (field_expression "piVar3->dyn_ltree" identifier -> field_identifier) + number_literal) ))) )))) ;) (if_statement "if (iVar6 == 0) {\n                  piVar3->block_start = 6;\n                  piVar3->hash_mask = piVar3->match_start;\n                  iVar6 = inflate_table(DISTS,(ushort *)\n                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2),\n                                        piVar3->match_available,(code **)&piVar3->match_start,\n                                        (uint *)&piVar3->block_start,\n                                        (ushort *)(piVar3->dyn_ltree + 0x98));\n                  if (iVar6 == 0) {\n                    piVar3->status = 0x3f47;\n                    if (flush != 6) {\n_L113:\n                      do {\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    pPVar27 = (Posf *)0x0;\n                  }\n                  else {\n                    pPVar27 = (Posf *)0xfffffffd;\n                    strm->msg = "invalid distances set";\n                    piVar3->status = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n                  piVar3->block_start = 6;\n                  piVar3->hash_mask = piVar3->match_start;\n                  iVar6 = inflate_table(DISTS,(ushort *)\n                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2),\n                                        piVar3->match_available,(code **)&piVar3->match_start,\n                                        (uint *)&piVar3->block_start,\n                                        (ushort *)(piVar3->dyn_ltree + 0x98));\n                  if (iVar6 == 0) {\n                    piVar3->status = 0x3f47;\n                    if (flush != 6) {\n_L113:\n                      do {\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    pPVar27 = (Posf *)0x0;\n                  }\n                  else {\n                    pPVar27 = (Posf *)0xfffffffd;\n                    strm->msg = "invalid distances set";\n                    piVar3->status = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }" { (expression_statement "piVar3->block_start = 6;" (assignment_expression "piVar3->block_start = 6" (field_expression "piVar3->block_start" identifier -> field_identifier) = number_literal) ;) (expression_statement "piVar3->hash_mask = piVar3->match_start;" (assignment_expression "piVar3->hash_mask = piVar3->match_start" (field_expression "piVar3->hash_mask" identifier -> field_identifier) = (field_expression "piVar3->match_start" identifier -> field_identifier)) ;) (expression_statement "iVar6 = inflate_table(DISTS,(ushort *)\n                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2),\n                                        piVar3->match_available,(code **)&piVar3->match_start,\n                                        (uint *)&piVar3->block_start,\n                                        (ushort *)(piVar3->dyn_ltree + 0x98));" (assignment_expression "iVar6 = inflate_table(DISTS,(ushort *)\n                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2),\n                                        piVar3->match_available,(code **)&piVar3->match_start,\n                                        (uint *)&piVar3->block_start,\n                                        (ushort *)(piVar3->dyn_ltree + 0x98))" identifier = (call_expression "inflate_table(DISTS,(ushort *)\n                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2),\n                                        piVar3->match_available,(code **)&piVar3->match_start,\n                                        (uint *)&piVar3->block_start,\n                                        (ushort *)(piVar3->dyn_ltree + 0x98))" identifier (argument_list "(DISTS,(ushort *)\n                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2),\n                                        piVar3->match_available,(code **)&piVar3->match_start,\n                                        (uint *)&piVar3->block_start,\n                                        (ushort *)(piVar3->dyn_ltree + 0x98))" ( identifier , (cast_expression "(ushort *)\n                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&piVar3->lookahead + piVar3->prev_match * 2)" ( (binary_expression "(int)&piVar3->lookahead + piVar3->prev_match * 2" (cast_expression "(int)&piVar3->lookahead" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&piVar3->lookahead" & (field_expression "piVar3->lookahead" identifier -> field_identifier))) + (binary_expression "piVar3->prev_match * 2" (field_expression "piVar3->prev_match" identifier -> field_identifier) * number_literal)) ))) , (field_expression "piVar3->match_available" identifier -> field_identifier) , (cast_expression "(code **)&piVar3->match_start" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&piVar3->match_start" & (field_expression "piVar3->match_start" identifier -> field_identifier))) , (cast_expression "(uint *)&piVar3->block_start" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&piVar3->block_start" & (field_expression "piVar3->block_start" identifier -> field_identifier))) , (cast_expression "(ushort *)(piVar3->dyn_ltree + 0x98)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3->dyn_ltree + 0x98)" ( (binary_expression "piVar3->dyn_ltree + 0x98" (field_expression "piVar3->dyn_ltree" identifier -> field_identifier) + number_literal) ))) )))) ;) (if_statement "if (iVar6 == 0) {\n                    piVar3->status = 0x3f47;\n                    if (flush != 6) {\n_L113:\n                      do {\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    pPVar27 = (Posf *)0x0;\n                  }\n                  else {\n                    pPVar27 = (Posf *)0xfffffffd;\n                    strm->msg = "invalid distances set";\n                    piVar3->status = 0x3f51;\n                  }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n                    piVar3->status = 0x3f47;\n                    if (flush != 6) {\n_L113:\n                      do {\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    pPVar27 = (Posf *)0x0;\n                  }" { (expression_statement "piVar3->status = 0x3f47;" (assignment_expression "piVar3->status = 0x3f47" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (if_statement "if (flush != 6) {\n_L113:\n                      do {\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }" if (parenthesized_expression "(flush != 6)" ( (binary_expression "flush != 6" identifier != number_literal) )) (compound_statement "{\n_L113:\n                      do {\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }" { (labeled_statement "_L113:\n                      do {\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );" statement_identifier : (do_statement "do {\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );" do (compound_statement "{\n                        piVar3->status = 0x3f48;\n_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }\n                        uVar29 = piVar3->hash_shift;\n                        uVar4 = piVar3->hash_bits;\n                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));\n                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                        bVar16 = pbVar26[1];\n                        cVar22._1_3_ = 0;\n                        cVar22.fc.freq._0_1_ = bVar16;\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        pPVar27 = (Posf *)(uint)uVar25;\n                        if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }\n                        bVar16 = cVar22.fc;\n                        if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                        piVar3[1].dyn_ltree[0x11c] = cVar22;\n                        piVar3->head = pPVar27;\nLAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f49;\nLAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }\n                        piVar3[1].dyn_ltree[0x11d] = cVar22;\n                        piVar3->status = 0x3f4a;\n_L116:\n                        uVar29 = piVar3->hash_mask;\n                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));\n                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);\n                        bVar16 = pbVar26[1];\n                        bVar17 = *pbVar26;\n                        uVar25 = *(ushort *)(pbVar26 + 2);\n                        cVar10._1_3_ = 0;\n                        cVar10.fc.freq._0_1_ = bVar16;\n                        cVar21 = cVar20;\n                        if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        local_48 = (uInt)uVar25;\n                        if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }\n                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));\n                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);\n                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);\n                        if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        cVar21 = (ct_data_s)(bVar17 & 0xf);\n                        piVar3->hash_size = (uInt)cVar21;\n                        piVar3->status = 0x3f4b;\n                        piVar3->ins_h = local_48;\nLAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }\n                        piVar3->status = 0x3f4c;\n_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                        uVar7 = piVar3->ins_h;\n                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }\n                        if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }\n                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);\n                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);\n                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);\n                        pBVar30 = end;\n                        do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);\n                        if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }\n                      }" { (expression_statement "piVar3->status = 0x3f48;" (assignment_expression "piVar3->status = 0x3f48" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (labeled_statement "_L114:\n                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }" statement_identifier : (if_statement "if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }" if (parenthesized_expression "(((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c))" ( (binary_expression "((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)" (parenthesized_expression "((Posf *)0x5 < local_6c)" ( (binary_expression "(Posf *)0x5 < local_6c" (cast_expression "(Posf *)0x5" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) )) && (parenthesized_expression "((Posf *)0x101 < local_5c)" ( (binary_expression "(Posf *)0x101 < local_5c" (cast_expression "(Posf *)0x101" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) ))) )) (compound_statement "{\n                          strm->next_out = end;\n                          strm->avail_out = (uInt)local_5c;\n                          strm->avail_in = (uInt)local_6c;\n                          strm->next_in = local_60;\n                          piVar3->prev = (Posf *)cVar20;\n                          piVar3->window_size = (ulg)local_64;\n                          inflate_fast(strm,(uint)local_50);\n                          end = strm->next_out;\n                          local_5c = (Posf *)strm->avail_out;\n                          cVar20 = (ct_data_s)piVar3->prev;\n                          local_60 = strm->next_in;\n                          local_6c = (Posf *)strm->avail_in;\n                          local_64 = (gz_headerp)piVar3->window_size;\n                          iVar6 = piVar3->status;\n                          if (iVar6 != 0x3f3f) goto LAB_000178c9;\n                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n                          goto _L105;\n                        }" { (expression_statement "strm->next_out = end;" (assignment_expression "strm->next_out = end" (field_expression "strm->next_out" identifier -> field_identifier) = identifier) ;) (expression_statement "strm->avail_out = (uInt)local_5c;" (assignment_expression "strm->avail_out = (uInt)local_5c" (field_expression "strm->avail_out" identifier -> field_identifier) = (cast_expression "(uInt)local_5c" ( (type_descriptor "uInt" type_identifier) ) identifier)) ;) (expression_statement "strm->avail_in = (uInt)local_6c;" (assignment_expression "strm->avail_in = (uInt)local_6c" (field_expression "strm->avail_in" identifier -> field_identifier) = (cast_expression "(uInt)local_6c" ( (type_descriptor "uInt" type_identifier) ) identifier)) ;) (expression_statement "strm->next_in = local_60;" (assignment_expression "strm->next_in = local_60" (field_expression "strm->next_in" identifier -> field_identifier) = identifier) ;) (expression_statement "piVar3->prev = (Posf *)cVar20;" (assignment_expression "piVar3->prev = (Posf *)cVar20" (field_expression "piVar3->prev" identifier -> field_identifier) = (cast_expression "(Posf *)cVar20" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "piVar3->window_size = (ulg)local_64;" (assignment_expression "piVar3->window_size = (ulg)local_64" (field_expression "piVar3->window_size" identifier -> field_identifier) = (cast_expression "(ulg)local_64" ( (type_descriptor "ulg" type_identifier) ) identifier)) ;) (expression_statement "inflate_fast(strm,(uint)local_50);" (call_expression "inflate_fast(strm,(uint)local_50)" identifier (argument_list "(strm,(uint)local_50)" ( identifier , (cast_expression "(uint)local_50" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;) (expression_statement "end = strm->next_out;" (assignment_expression "end = strm->next_out" identifier = (field_expression "strm->next_out" identifier -> field_identifier)) ;) (expression_statement "local_5c = (Posf *)strm->avail_out;" (assignment_expression "local_5c = (Posf *)strm->avail_out" identifier = (cast_expression "(Posf *)strm->avail_out" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "strm->avail_out" identifier -> field_identifier))) ;) (expression_statement "cVar20 = (ct_data_s)piVar3->prev;" (assignment_expression "cVar20 = (ct_data_s)piVar3->prev" identifier = (cast_expression "(ct_data_s)piVar3->prev" ( (type_descriptor "ct_data_s" type_identifier) ) (field_expression "piVar3->prev" identifier -> field_identifier))) ;) (expression_statement "local_60 = strm->next_in;" (assignment_expression "local_60 = strm->next_in" identifier = (field_expression "strm->next_in" identifier -> field_identifier)) ;) (expression_statement "local_6c = (Posf *)strm->avail_in;" (assignment_expression "local_6c = (Posf *)strm->avail_in" identifier = (cast_expression "(Posf *)strm->avail_in" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "strm->avail_in" identifier -> field_identifier))) ;) (expression_statement "local_64 = (gz_headerp)piVar3->window_size;" (assignment_expression "local_64 = (gz_headerp)piVar3->window_size" identifier = (cast_expression "(gz_headerp)piVar3->window_size" ( (type_descriptor "gz_headerp" type_identifier) ) (field_expression "piVar3->window_size" identifier -> field_identifier))) ;) (expression_statement "iVar6 = piVar3->status;" (assignment_expression "iVar6 = piVar3->status" identifier = (field_expression "piVar3->status" identifier -> field_identifier)) ;) (if_statement "if (iVar6 != 0x3f3f) goto LAB_000178c9;" if (parenthesized_expression "(iVar6 != 0x3f3f)" ( (binary_expression "iVar6 != 0x3f3f" identifier != number_literal) )) (goto_statement "goto LAB_000178c9;" goto statement_identifier ;)) (expression_statement "piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;" (assignment_expression "piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff" (field_expression "piVar3[1].dyn_ltree[0x11c].fc" (subscript_expression "piVar3[1].dyn_ltree[0x11c]" (field_expression "piVar3[1].dyn_ltree" (subscript_expression "piVar3[1]" identifier [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) = (cast_expression "(anon_union_2_2_314cc5cc_for_fc)0xffff" ( (type_descriptor "anon_union_2_2_314cc5cc_for_fc" type_identifier) ) number_literal)) ;) (expression_statement "piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;" (assignment_expression "piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff" (field_expression "piVar3[1].dyn_ltree[0x11c].dl" (subscript_expression "piVar3[1].dyn_ltree[0x11c]" (field_expression "piVar3[1].dyn_ltree" (subscript_expression "piVar3[1]" identifier [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) = (cast_expression "(anon_union_2_2_43a7fb4f_for_dl)0xffff" ( (type_descriptor "anon_union_2_2_43a7fb4f_for_dl" type_identifier) ) number_literal)) ;) (goto_statement "goto _L105;" goto statement_identifier ;) }))) (expression_statement "uVar29 = piVar3->hash_shift;" (assignment_expression "uVar29 = piVar3->hash_shift" identifier = (field_expression "piVar3->hash_shift" identifier -> field_identifier)) ;) (expression_statement "uVar4 = piVar3->hash_bits;" (assignment_expression "uVar4 = piVar3->hash_bits" identifier = (field_expression "piVar3->hash_bits" identifier -> field_identifier)) ;) (expression_statement "piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;" (assignment_expression "piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0" (field_expression "piVar3[1].dyn_ltree[0x11c].fc" (subscript_expression "piVar3[1].dyn_ltree[0x11c]" (field_expression "piVar3[1].dyn_ltree" (subscript_expression "piVar3[1]" identifier [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) = (cast_expression "(anon_union_2_2_314cc5cc_for_fc)0x0" ( (type_descriptor "anon_union_2_2_314cc5cc_for_fc" type_identifier) ) number_literal)) ;) (expression_statement "piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;" (assignment_expression "piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0" (field_expression "piVar3[1].dyn_ltree[0x11c].dl" (subscript_expression "piVar3[1].dyn_ltree[0x11c]" (field_expression "piVar3[1].dyn_ltree" (subscript_expression "piVar3[1]" identifier [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) = (cast_expression "(anon_union_2_2_43a7fb4f_for_dl)0x0" ( (type_descriptor "anon_union_2_2_43a7fb4f_for_dl" type_identifier) ) number_literal)) ;) (expression_statement "uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));" (assignment_expression "uVar7 = ~(-1 << ((byte)uVar29 & 0x1f))" identifier = (unary_expression "~(-1 << ((byte)uVar29 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar29 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar29 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar29 & 0x1f)" ( (binary_expression "(byte)uVar29 & 0x1f" (cast_expression "(byte)uVar29" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (expression_statement "pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);" (assignment_expression "pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4)" identifier = (cast_expression "(byte *)(uVar4 + (uVar7 & (uint)local_64) * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + (uVar7 & (uint)local_64) * 4)" ( (binary_expression "uVar4 + (uVar7 & (uint)local_64) * 4" identifier + (binary_expression "(uVar7 & (uint)local_64) * 4" (parenthesized_expression "(uVar7 & (uint)local_64)" ( (binary_expression "uVar7 & (uint)local_64" identifier & (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier)) )) * number_literal)) )))) ;) (expression_statement "bVar16 = pbVar26[1];" (assignment_expression "bVar16 = pbVar26[1]" identifier = (subscript_expression "pbVar26[1]" identifier [ number_literal ])) ;) (expression_statement "cVar22._1_3_ = 0;" (assignment_expression "cVar22._1_3_ = 0" (field_expression "cVar22._1_3_" identifier . field_identifier) = number_literal) ;) (expression_statement "cVar22.fc.freq._0_1_ = bVar16;" (assignment_expression "cVar22.fc.freq._0_1_ = bVar16" (field_expression "cVar22.fc.freq._0_1_" (field_expression "cVar22.fc.freq" (field_expression "cVar22.fc" identifier . field_identifier) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "bVar17 = *pbVar26;" (assignment_expression "bVar17 = *pbVar26" identifier = (pointer_expression "*pbVar26" * identifier)) ;) (expression_statement "uVar25 = *(ushort *)(pbVar26 + 2);" (assignment_expression "uVar25 = *(ushort *)(pbVar26 + 2)" identifier = (pointer_expression "*(ushort *)(pbVar26 + 2)" * (cast_expression "(ushort *)(pbVar26 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 2)" ( (binary_expression "pbVar26 + 2" identifier + number_literal) ))))) ;) (expression_statement "cVar21 = cVar20;" (assignment_expression "cVar21 = cVar20" identifier = identifier) ;) (if_statement "if ((uint)cVar20 < (uint)cVar22) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }" if (parenthesized_expression "((uint)cVar20 < (uint)cVar22)" ( (binary_expression "(uint)cVar20 < (uint)cVar22" (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier) < (cast_expression "(uint)cVar22" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (compound_statement "{\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }" { (if_statement "if (local_6c == (Posf *)0x0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (while_statement "while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            cVar22._1_3_ = 0;\n                            cVar22.fc.freq._0_1_ = bVar16;\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar22 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }" { (expression_statement "pbVar31 = local_60 + 1;" (assignment_expression "pbVar31 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = (Posf *)((int)local_6c - 1);" (assignment_expression "local_6c = (Posf *)((int)local_6c - 1)" identifier = (cast_expression "(Posf *)((int)local_6c - 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - 1)" ( (binary_expression "(int)local_6c - 1" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "bVar16 = cVar20.fc;" (assignment_expression "bVar16 = cVar20.fc" identifier = (field_expression "cVar20.fc" identifier . field_identifier)) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 + 8);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 + 8)" identifier = (call_expression "(ct_data_s)((int)cVar20 + 8)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 + 8)" ( (binary_expression "(int)cVar20 + 8" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;" (assignment_expression "local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" identifier = (call_expression "(gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" ( (binary_expression "(int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f))" (cast_expression "(int)&local_64->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_64->text" & (field_expression "local_64->text" identifier -> field_identifier))) + (parenthesized_expression "((uint)*local_60 << (bVar16 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar16 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar16 & 0x1f)" ( (binary_expression "bVar16 & 0x1f" identifier & number_literal) ))) ))) )))) ;) (expression_statement "pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);" (assignment_expression "pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4)" identifier = (cast_expression "(byte *)(uVar4 + (uVar7 & (uint)local_64) * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + (uVar7 & (uint)local_64) * 4)" ( (binary_expression "uVar4 + (uVar7 & (uint)local_64) * 4" identifier + (binary_expression "(uVar7 & (uint)local_64) * 4" (parenthesized_expression "(uVar7 & (uint)local_64)" ( (binary_expression "uVar7 & (uint)local_64" identifier & (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier)) )) * number_literal)) )))) ;) (expression_statement "bVar16 = pbVar26[1];" (assignment_expression "bVar16 = pbVar26[1]" identifier = (subscript_expression "pbVar26[1]" identifier [ number_literal ])) ;) (expression_statement "cVar22._1_3_ = 0;" (assignment_expression "cVar22._1_3_ = 0" (field_expression "cVar22._1_3_" identifier . field_identifier) = number_literal) ;) (expression_statement "cVar22.fc.freq._0_1_ = bVar16;" (assignment_expression "cVar22.fc.freq._0_1_ = bVar16" (field_expression "cVar22.fc.freq._0_1_" (field_expression "cVar22.fc.freq" (field_expression "cVar22.fc" identifier . field_identifier) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "bVar17 = *pbVar26;" (assignment_expression "bVar17 = *pbVar26" identifier = (pointer_expression "*pbVar26" * identifier)) ;) (expression_statement "uVar25 = *(ushort *)(pbVar26 + 2);" (assignment_expression "uVar25 = *(ushort *)(pbVar26 + 2)" identifier = (pointer_expression "*(ushort *)(pbVar26 + 2)" * (cast_expression "(ushort *)(pbVar26 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 2)" ( (binary_expression "pbVar26 + 2" identifier + number_literal) ))))) ;) (expression_statement "cVar21 = cVar20;" (assignment_expression "cVar21 = cVar20" identifier = identifier) ;) (expression_statement "local_60 = pbVar31;" (assignment_expression "local_60 = pbVar31" identifier = identifier) ;) (if_statement "if ((uint)cVar22 <= (uint)cVar20) break;" if (parenthesized_expression "((uint)cVar22 <= (uint)cVar20)" ( (binary_expression "(uint)cVar22 <= (uint)cVar20" (cast_expression "(uint)cVar22" ( (type_descriptor "uint" type_identifier) ) identifier) <= (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (break_statement "break;" break ;)) (if_statement "if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }" { (expression_statement "pPVar27 = (Posf *)0x0;" (assignment_expression "pPVar27 = (Posf *)0x0" identifier = (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) })) })) (expression_statement "pPVar27 = (Posf *)(uint)uVar25;" (assignment_expression "pPVar27 = (Posf *)(uint)uVar25" identifier = (cast_expression "(Posf *)(uint)uVar25" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)uVar25" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (if_statement "if (bVar17 == 0) {\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }" if (parenthesized_expression "(bVar17 == 0)" ( (binary_expression "bVar17 == 0" identifier == number_literal) )) (compound_statement "{\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));\n                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);\n                          piVar3[1].dyn_ltree[0x11c] = cVar22;\n                          piVar3->head = pPVar27;\nLAB_000191a7:\n                          piVar3->status = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;\n                          local_5c = (Posf *)((int)local_5c - 1);\n                          *end = (Bytef)piVar3->head;\n                          piVar3->status = 0x3f48;\n                          end = end + 1;\n                          goto _L114;\n                        }" { (expression_statement "local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));" (assignment_expression "local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f))" identifier = (call_expression "(gz_headerp)((uint)local_64 >> (bVar16 & 0x1f))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((uint)local_64 >> (bVar16 & 0x1f))" ( (binary_expression "(uint)local_64 >> (bVar16 & 0x1f)" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> (parenthesized_expression "(bVar16 & 0x1f)" ( (binary_expression "bVar16 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22)" identifier = (call_expression "(ct_data_s)((int)cVar21 - (int)cVar22)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar21 - (int)cVar22)" ( (binary_expression "(int)cVar21 - (int)cVar22" (cast_expression "(int)cVar21" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)cVar22" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "piVar3[1].dyn_ltree[0x11c] = cVar22;" (assignment_expression "piVar3[1].dyn_ltree[0x11c] = cVar22" (subscript_expression "piVar3[1].dyn_ltree[0x11c]" (field_expression "piVar3[1].dyn_ltree" (subscript_expression "piVar3[1]" identifier [ number_literal ]) . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "piVar3->head = pPVar27;" (assignment_expression "piVar3->head = pPVar27" (field_expression "piVar3->head" identifier -> field_identifier) = identifier) ;) (labeled_statement "LAB_000191a7:\n                          piVar3->status = 0x3f4d;" statement_identifier : (expression_statement "piVar3->status = 0x3f4d;" (assignment_expression "piVar3->status = 0x3f4d" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;)) (labeled_statement "LAB_00017b6a:\n                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;" statement_identifier : (if_statement "if (local_5c == (Posf *)0x0) goto LAB_00017f30;" if (parenthesized_expression "(local_5c == (Posf *)0x0)" ( (binary_expression "local_5c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;))) (expression_statement "local_5c = (Posf *)((int)local_5c - 1);" (assignment_expression "local_5c = (Posf *)((int)local_5c - 1)" identifier = (cast_expression "(Posf *)((int)local_5c - 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_5c - 1)" ( (binary_expression "(int)local_5c - 1" (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "*end = (Bytef)piVar3->head;" (assignment_expression "*end = (Bytef)piVar3->head" (pointer_expression "*end" * identifier) = (cast_expression "(Bytef)piVar3->head" ( (type_descriptor "Bytef" type_identifier) ) (field_expression "piVar3->head" identifier -> field_identifier))) ;) (expression_statement "piVar3->status = 0x3f48;" (assignment_expression "piVar3->status = 0x3f48" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (expression_statement "end = end + 1;" (assignment_expression "end = end + 1" identifier = (binary_expression "end + 1" identifier + number_literal)) ;) (goto_statement "goto _L114;" goto statement_identifier ;) })) (expression_statement "bVar16 = cVar22.fc;" (assignment_expression "bVar16 = cVar22.fc" identifier = (field_expression "cVar22.fc" identifier . field_identifier)) ;) (if_statement "if ((bVar17 & 0xf0) == 0) {\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }" if (parenthesized_expression "((bVar17 & 0xf0) == 0)" ( (binary_expression "(bVar17 & 0xf0) == 0" (parenthesized_expression "(bVar17 & 0xf0)" ( (binary_expression "bVar17 & 0xf0" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));\n                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          uVar7 = (uint)pbVar26[1];\n                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_40 = (Posf *)(uint)uVar25;\n                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);\n                          local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));\n                          piVar3[1].dyn_ltree[0x11c] = local_38;\n                          piVar3->head = local_40;\n                          if (bVar17 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }" { (expression_statement "uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));" (assignment_expression "uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f))" identifier = (unary_expression "~(-1 << (bVar17 + bVar16 & 0x1f))" ~ (parenthesized_expression "(-1 << (bVar17 + bVar16 & 0x1f))" ( (binary_expression "-1 << (bVar17 + bVar16 & 0x1f)" number_literal << (parenthesized_expression "(bVar17 + bVar16 & 0x1f)" ( (binary_expression "bVar17 + bVar16 & 0x1f" (binary_expression "bVar17 + bVar16" identifier + identifier) & number_literal) ))) )))) ;) (expression_statement "pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4);" (assignment_expression "pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4)" identifier = (cast_expression "(byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4)" ( (binary_expression "uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4" identifier + (binary_expression "(((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27) * 4" (parenthesized_expression "(((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27)" ( (binary_expression "((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                     + (int)pPVar27" (parenthesized_expression "((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))" ( (binary_expression "(uVar19 & (uint)local_64) >> (bVar16 & 0x1f)" (parenthesized_expression "(uVar19 & (uint)local_64)" ( (binary_expression "uVar19 & (uint)local_64" identifier & (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier)) )) >> (parenthesized_expression "(bVar16 & 0x1f)" ( (binary_expression "bVar16 & 0x1f" identifier & number_literal) ))) )) + (cast_expression "(int)pPVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )) * number_literal)) )))) ;) (expression_statement "uVar25 = *(ushort *)(pbVar26 + 2);" (assignment_expression "uVar25 = *(ushort *)(pbVar26 + 2)" identifier = (pointer_expression "*(ushort *)(pbVar26 + 2)" * (cast_expression "(ushort *)(pbVar26 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 2)" ( (binary_expression "pbVar26 + 2" identifier + number_literal) ))))) ;) (expression_statement "bVar17 = *pbVar26;" (assignment_expression "bVar17 = *pbVar26" identifier = (pointer_expression "*pbVar26" * identifier)) ;) (expression_statement "uVar7 = (uint)pbVar26[1];" (assignment_expression "uVar7 = (uint)pbVar26[1]" identifier = (cast_expression "(uint)pbVar26[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar26[1]" identifier [ number_literal ]))) ;) (expression_statement "local_38 = (ct_data_s)(uVar7 + (int)cVar22);" (assignment_expression "local_38 = (ct_data_s)(uVar7 + (int)cVar22)" identifier = (call_expression "(ct_data_s)(uVar7 + (int)cVar22)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "(uVar7 + (int)cVar22)" ( (binary_expression "uVar7 + (int)cVar22" identifier + (cast_expression "(int)cVar22" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "cVar20 = cVar21;" (assignment_expression "cVar20 = cVar21" identifier = identifier) ;) (if_statement "if ((uint)cVar21 < (uint)local_38) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }" if (parenthesized_expression "((uint)cVar21 < (uint)local_38)" ( (binary_expression "(uint)cVar21 < (uint)local_38" (cast_expression "(uint)cVar21" ( (type_descriptor "uint" type_identifier) ) identifier) < (cast_expression "(uint)local_38" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (compound_statement "{\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }" { (if_statement "if (local_6c == (Posf *)0x0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (while_statement "while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              bVar17 = *pbVar26;\n                              uVar7 = (uint)pbVar26[1];\n                              local_38 = (ct_data_s)((int)cVar22 + uVar7);\n                              local_60 = pbVar31;\n                              if ((uint)local_38 <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }" { (expression_statement "pbVar31 = local_60 + 1;" (assignment_expression "pbVar31 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar21 + 8);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar21 + 8)" identifier = (call_expression "(ct_data_s)((int)cVar21 + 8)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar21 + 8)" ( (binary_expression "(int)cVar21 + 8" (cast_expression "(int)cVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_6c = (Posf *)((int)local_6c - 1);" (assignment_expression "local_6c = (Posf *)((int)local_6c - 1)" identifier = (cast_expression "(Posf *)((int)local_6c - 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - 1)" ( (binary_expression "(int)local_6c - 1" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));" (assignment_expression "local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)))" identifier = (call_expression "(gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)))" ( (binary_expression "(int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f))" (cast_expression "(int)&local_64->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_64->text" & (field_expression "local_64->text" identifier -> field_identifier))) + (parenthesized_expression "((uint)*local_60 << (cVar21.fc & 0x1f))" ( (binary_expression "(uint)*local_60 << (cVar21.fc & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(cVar21.fc & 0x1f)" ( (binary_expression "cVar21.fc & 0x1f" (field_expression "cVar21.fc" identifier . field_identifier) & number_literal) ))) ))) )))) ;) (expression_statement "pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);" (assignment_expression "pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4)" identifier = (cast_expression "(byte *)(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4)" ( (binary_expression "uVar4 + (((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4" identifier + (binary_expression "(((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4" (parenthesized_expression "(((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27)" ( (binary_expression "((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)) + (int)pPVar27" (parenthesized_expression "((uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f))" ( (binary_expression "(uVar19 & (uint)local_64) >>\n                                                          (bVar16 & 0x1f)" (parenthesized_expression "(uVar19 & (uint)local_64)" ( (binary_expression "uVar19 & (uint)local_64" identifier & (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier)) )) >> (parenthesized_expression "(bVar16 & 0x1f)" ( (binary_expression "bVar16 & 0x1f" identifier & number_literal) ))) )) + (cast_expression "(int)pPVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )) * number_literal)) )))) ;) (expression_statement "uVar25 = *(ushort *)(pbVar26 + 2);" (assignment_expression "uVar25 = *(ushort *)(pbVar26 + 2)" identifier = (pointer_expression "*(ushort *)(pbVar26 + 2)" * (cast_expression "(ushort *)(pbVar26 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 2)" ( (binary_expression "pbVar26 + 2" identifier + number_literal) ))))) ;) (expression_statement "bVar17 = *pbVar26;" (assignment_expression "bVar17 = *pbVar26" identifier = (pointer_expression "*pbVar26" * identifier)) ;) (expression_statement "uVar7 = (uint)pbVar26[1];" (assignment_expression "uVar7 = (uint)pbVar26[1]" identifier = (cast_expression "(uint)pbVar26[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar26[1]" identifier [ number_literal ]))) ;) (expression_statement "local_38 = (ct_data_s)((int)cVar22 + uVar7);" (assignment_expression "local_38 = (ct_data_s)((int)cVar22 + uVar7)" identifier = (call_expression "(ct_data_s)((int)cVar22 + uVar7)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar22 + uVar7)" ( (binary_expression "(int)cVar22 + uVar7" (cast_expression "(int)cVar22" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "local_60 = pbVar31;" (assignment_expression "local_60 = pbVar31" identifier = identifier) ;) (if_statement "if ((uint)local_38 <= (uint)cVar20) break;" if (parenthesized_expression "((uint)local_38 <= (uint)cVar20)" ( (binary_expression "(uint)local_38 <= (uint)cVar20" (cast_expression "(uint)local_38" ( (type_descriptor "uint" type_identifier) ) identifier) <= (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (break_statement "break;" break ;)) (expression_statement "cVar21 = cVar20;" (assignment_expression "cVar21 = cVar20" identifier = identifier) ;) (if_statement "if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }" { (expression_statement "pPVar27 = (Posf *)0x0;" (assignment_expression "pPVar27 = (Posf *)0x0" identifier = (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) })) })) (expression_statement "local_40 = (Posf *)(uint)uVar25;" (assignment_expression "local_40 = (Posf *)(uint)uVar25" identifier = (cast_expression "(Posf *)(uint)uVar25" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)uVar25" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);" (assignment_expression "cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7)" identifier = (call_expression "(ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "(((int)cVar20 - (int)cVar22) - uVar7)" ( (binary_expression "((int)cVar20 - (int)cVar22) - uVar7" (parenthesized_expression "((int)cVar20 - (int)cVar22)" ( (binary_expression "(int)cVar20 - (int)cVar22" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)cVar22" ( (type_descriptor "int" primitive_type) ) identifier)) )) - identifier) )))) ;) (expression_statement "local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));" (assignment_expression "local_64 = (gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f))" identifier = (call_expression "(gz_headerp)\n                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "(((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f))" ( (binary_expression "((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f)" (parenthesized_expression "((uint)local_64 >> (bVar16 & 0x1f))" ( (binary_expression "(uint)local_64 >> (bVar16 & 0x1f)" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> (parenthesized_expression "(bVar16 & 0x1f)" ( (binary_expression "bVar16 & 0x1f" identifier & number_literal) ))) )) >> (parenthesized_expression "((byte)uVar7 & 0x1f)" ( (binary_expression "(byte)uVar7 & 0x1f" (cast_expression "(byte)uVar7" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (expression_statement "piVar3[1].dyn_ltree[0x11c] = local_38;" (assignment_expression "piVar3[1].dyn_ltree[0x11c] = local_38" (subscript_expression "piVar3[1].dyn_ltree[0x11c]" (field_expression "piVar3[1].dyn_ltree" (subscript_expression "piVar3[1]" identifier [ number_literal ]) . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "piVar3->head = local_40;" (assignment_expression "piVar3->head = local_40" (field_expression "piVar3->head" identifier -> field_identifier) = identifier) ;) (if_statement "if (bVar17 != 0) goto LAB_00018d16;" if (parenthesized_expression "(bVar17 != 0)" ( (binary_expression "bVar17 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00018d16;" goto statement_identifier ;)) (goto_statement "goto LAB_000191a7;" goto statement_identifier ;) })) (expression_statement "local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));" (assignment_expression "local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f))" identifier = (call_expression "(gz_headerp)((uint)local_64 >> (bVar16 & 0x1f))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((uint)local_64 >> (bVar16 & 0x1f))" ( (binary_expression "(uint)local_64 >> (bVar16 & 0x1f)" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> (parenthesized_expression "(bVar16 & 0x1f)" ( (binary_expression "bVar16 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22)" identifier = (call_expression "(ct_data_s)((int)cVar21 - (int)cVar22)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar21 - (int)cVar22)" ( (binary_expression "(int)cVar21 - (int)cVar22" (cast_expression "(int)cVar21" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)cVar22" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "piVar3[1].dyn_ltree[0x11c] = cVar22;" (assignment_expression "piVar3[1].dyn_ltree[0x11c] = cVar22" (subscript_expression "piVar3[1].dyn_ltree[0x11c]" (field_expression "piVar3[1].dyn_ltree" (subscript_expression "piVar3[1]" identifier [ number_literal ]) . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "piVar3->head = pPVar27;" (assignment_expression "piVar3->head = pPVar27" (field_expression "piVar3->head" identifier -> field_identifier) = identifier) ;) (labeled_statement "LAB_00018d16:\n                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;" statement_identifier : (if_statement "if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;" if (parenthesized_expression "((bVar17 & 0x20) != 0)" ( (binary_expression "(bVar17 & 0x20) != 0" (parenthesized_expression "(bVar17 & 0x20)" ( (binary_expression "bVar17 & 0x20" identifier & number_literal) )) != number_literal) )) (goto_statement "goto code_r0x00018d1f;" goto statement_identifier ;))) (if_statement "if ((bVar17 & 0x40) != 0) {\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }" if (parenthesized_expression "((bVar17 & 0x40) != 0)" ( (binary_expression "(bVar17 & 0x40) != 0" (parenthesized_expression "(bVar17 & 0x40)" ( (binary_expression "bVar17 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                          pcVar8 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }" { (expression_statement "pcVar8 = "invalid literal/length code";" (assignment_expression "pcVar8 = "invalid literal/length code"" identifier = (string_literal ""invalid literal/length code"" " string_content ")) ;) (goto_statement "goto LAB_000188eb;" goto statement_identifier ;) })) (expression_statement "cVar21 = (ct_data_s)(bVar17 & 0xf);" (assignment_expression "cVar21 = (ct_data_s)(bVar17 & 0xf)" identifier = (call_expression "(ct_data_s)(bVar17 & 0xf)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "(bVar17 & 0xf)" ( (binary_expression "bVar17 & 0xf" identifier & number_literal) )))) ;) (expression_statement "piVar3->hash_size = (uInt)cVar21;" (assignment_expression "piVar3->hash_size = (uInt)cVar21" (field_expression "piVar3->hash_size" identifier -> field_identifier) = (cast_expression "(uInt)cVar21" ( (type_descriptor "uInt" type_identifier) ) identifier)) ;) (expression_statement "piVar3->status = 0x3f49;" (assignment_expression "piVar3->status = 0x3f49" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (labeled_statement "LAB_00017d07:\n                        if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }" statement_identifier : (if_statement "if (cVar21 == (ct_data_s)0x0) {\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }\n                        else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }" if (parenthesized_expression "(cVar21 == (ct_data_s)0x0)" ( (binary_expression "cVar21 == (ct_data_s)0x0" identifier == (cast_expression "(ct_data_s)0x0" ( (type_descriptor "ct_data_s" type_identifier) ) number_literal)) )) (compound_statement "{\n                          cVar22 = (ct_data_s)piVar3->head;\n                        }" { (expression_statement "cVar22 = (ct_data_s)piVar3->head;" (assignment_expression "cVar22 = (ct_data_s)piVar3->head" identifier = (cast_expression "(ct_data_s)piVar3->head" ( (type_descriptor "ct_data_s" type_identifier) ) (field_expression "piVar3->head" identifier -> field_identifier))) ;) }) (else_clause "else {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }" else (compound_statement "{\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                          cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->head = (Posf *)cVar22;\n                        }" { (if_statement "if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }" if (parenthesized_expression "((uint)cVar20 < (uint)cVar21)" ( (binary_expression "(uint)cVar20 < (uint)cVar21" (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier) < (cast_expression "(uint)cVar21" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (compound_statement "{\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }\n                          }" { (if_statement "if (local_6c == (Posf *)0x0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (while_statement "while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;\n                            }" { (expression_statement "pbVar26 = local_60 + 1;" (assignment_expression "pbVar26 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = (Posf *)((int)local_6c - 1);" (assignment_expression "local_6c = (Posf *)((int)local_6c - 1)" identifier = (cast_expression "(Posf *)((int)local_6c - 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - 1)" ( (binary_expression "(int)local_6c - 1" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "bVar16 = cVar20.fc;" (assignment_expression "bVar16 = cVar20.fc" identifier = (field_expression "cVar20.fc" identifier . field_identifier)) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 + 8);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 + 8)" identifier = (call_expression "(ct_data_s)((int)cVar20 + 8)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 + 8)" ( (binary_expression "(int)cVar20 + 8" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));" (assignment_expression "local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)))" identifier = (call_expression "(gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)))" ( (binary_expression "(int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f))" (cast_expression "(int)&local_64->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_64->text" & (field_expression "local_64->text" identifier -> field_identifier))) + (parenthesized_expression "((uint)*local_60 << (bVar16 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar16 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar16 & 0x1f)" ( (binary_expression "bVar16 & 0x1f" identifier & number_literal) ))) ))) )))) ;) (expression_statement "local_60 = pbVar26;" (assignment_expression "local_60 = pbVar26" identifier = identifier) ;) (if_statement "if ((uint)cVar21 <= (uint)cVar20) break;" if (parenthesized_expression "((uint)cVar21 <= (uint)cVar20)" ( (binary_expression "(uint)cVar21 <= (uint)cVar20" (cast_expression "(uint)cVar21" ( (type_descriptor "uint" type_identifier) ) identifier) <= (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (break_statement "break;" break ;)) (if_statement "if (local_6c == (Posf *)0x0) goto LAB_000190a2;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000190a2;" goto statement_identifier ;)) })) })) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21)" identifier = (call_expression "(ct_data_s)((int)cVar20 - (int)cVar21)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 - (int)cVar21)" ( (binary_expression "(int)cVar20 - (int)cVar21" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)cVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);" (assignment_expression "piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21)" (subscript_expression "piVar3[1].dyn_ltree[0x11c]" (field_expression "piVar3[1].dyn_ltree" (subscript_expression "piVar3[1]" identifier [ number_literal ]) . field_identifier) [ number_literal ]) = (call_expression "(ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21)" ( (binary_expression "(int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21" (cast_expression "(int)piVar3[1].dyn_ltree[0x11c]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "piVar3[1].dyn_ltree[0x11c]" (field_expression "piVar3[1].dyn_ltree" (subscript_expression "piVar3[1]" identifier [ number_literal ]) . field_identifier) [ number_literal ])) + (cast_expression "(int)cVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head);" (assignment_expression "cVar22 = (ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head)" identifier = (call_expression "(ct_data_s)\n                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head)" ( (binary_expression "(~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +\n                                   (int)piVar3->head" (parenthesized_expression "(~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64)" ( (binary_expression "~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64" (unary_expression "~(-1 << (cVar21.fc & 0x1f))" ~ (parenthesized_expression "(-1 << (cVar21.fc & 0x1f))" ( (binary_expression "-1 << (cVar21.fc & 0x1f)" number_literal << (parenthesized_expression "(cVar21.fc & 0x1f)" ( (binary_expression "cVar21.fc & 0x1f" (field_expression "cVar21.fc" identifier . field_identifier) & number_literal) ))) ))) & (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier)) )) + (cast_expression "(int)piVar3->head" ( (type_descriptor "int" primitive_type) ) (field_expression "piVar3->head" identifier -> field_identifier))) )))) ;) (expression_statement "local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));" (assignment_expression "local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f))" identifier = (call_expression "(gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((uint)local_64 >> (cVar21.fc & 0x1f))" ( (binary_expression "(uint)local_64 >> (cVar21.fc & 0x1f)" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> (parenthesized_expression "(cVar21.fc & 0x1f)" ( (binary_expression "cVar21.fc & 0x1f" (field_expression "cVar21.fc" identifier . field_identifier) & number_literal) ))) )))) ;) (expression_statement "piVar3->head = (Posf *)cVar22;" (assignment_expression "piVar3->head = (Posf *)cVar22" (field_expression "piVar3->head" identifier -> field_identifier) = (cast_expression "(Posf *)cVar22" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) })))) (expression_statement "piVar3[1].dyn_ltree[0x11d] = cVar22;" (assignment_expression "piVar3[1].dyn_ltree[0x11d] = cVar22" (subscript_expression "piVar3[1].dyn_ltree[0x11d]" (field_expression "piVar3[1].dyn_ltree" (subscript_expression "piVar3[1]" identifier [ number_literal ]) . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "piVar3->status = 0x3f4a;" (assignment_expression "piVar3->status = 0x3f4a" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (labeled_statement "_L116:\n                        uVar29 = piVar3->hash_mask;" statement_identifier : (expression_statement "uVar29 = piVar3->hash_mask;" (assignment_expression "uVar29 = piVar3->hash_mask" identifier = (field_expression "piVar3->hash_mask" identifier -> field_identifier)) ;)) (expression_statement "uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));" (assignment_expression "uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f))" identifier = (unary_expression "~(-1 << ((byte)piVar3->block_start & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)piVar3->block_start & 0x1f))" ( (binary_expression "-1 << ((byte)piVar3->block_start & 0x1f)" number_literal << (parenthesized_expression "((byte)piVar3->block_start & 0x1f)" ( (binary_expression "(byte)piVar3->block_start & 0x1f" (cast_expression "(byte)piVar3->block_start" ( (type_descriptor "byte" type_identifier) ) (field_expression "piVar3->block_start" identifier -> field_identifier)) & number_literal) ))) )))) ;) (expression_statement "pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);" (assignment_expression "pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4)" identifier = (cast_expression "(byte *)(uVar29 + ((uint)local_64 & uVar7) * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar29 + ((uint)local_64 & uVar7) * 4)" ( (binary_expression "uVar29 + ((uint)local_64 & uVar7) * 4" identifier + (binary_expression "((uint)local_64 & uVar7) * 4" (parenthesized_expression "((uint)local_64 & uVar7)" ( (binary_expression "(uint)local_64 & uVar7" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) & identifier) )) * number_literal)) )))) ;) (expression_statement "bVar16 = pbVar26[1];" (assignment_expression "bVar16 = pbVar26[1]" identifier = (subscript_expression "pbVar26[1]" identifier [ number_literal ])) ;) (expression_statement "bVar17 = *pbVar26;" (assignment_expression "bVar17 = *pbVar26" identifier = (pointer_expression "*pbVar26" * identifier)) ;) (expression_statement "uVar25 = *(ushort *)(pbVar26 + 2);" (assignment_expression "uVar25 = *(ushort *)(pbVar26 + 2)" identifier = (pointer_expression "*(ushort *)(pbVar26 + 2)" * (cast_expression "(ushort *)(pbVar26 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 2)" ( (binary_expression "pbVar26 + 2" identifier + number_literal) ))))) ;) (expression_statement "cVar10._1_3_ = 0;" (assignment_expression "cVar10._1_3_ = 0" (field_expression "cVar10._1_3_" identifier . field_identifier) = number_literal) ;) (expression_statement "cVar10.fc.freq._0_1_ = bVar16;" (assignment_expression "cVar10.fc.freq._0_1_ = bVar16" (field_expression "cVar10.fc.freq._0_1_" (field_expression "cVar10.fc.freq" (field_expression "cVar10.fc" identifier . field_identifier) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "cVar21 = cVar20;" (assignment_expression "cVar21 = cVar20" identifier = identifier) ;) (if_statement "if ((uint)cVar20 < (uint)cVar10) {\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }" if (parenthesized_expression "((uint)cVar20 < (uint)cVar10)" ( (binary_expression "(uint)cVar20 < (uint)cVar10" (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier) < (cast_expression "(uint)cVar10" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (compound_statement "{\n                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }" { (if_statement "if (local_6c == (Posf *)0x0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (while_statement "while( true ) {\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                            pbVar31 = local_60 + 1;\n                            local_6c = (Posf *)((int)local_6c - 1);\n                            bVar16 = cVar20.fc;\n                            cVar20 = (ct_data_s)((int)cVar20 + 8);\n                            local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;\n                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);\n                            bVar16 = pbVar26[1];\n                            bVar17 = *pbVar26;\n                            uVar25 = *(ushort *)(pbVar26 + 2);\n                            cVar10._1_3_ = 0;\n                            cVar10.fc.freq._0_1_ = bVar16;\n                            cVar21 = cVar20;\n                            local_60 = pbVar31;\n                            if ((uint)cVar10 <= (uint)cVar20) break;\n                            if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }\n                          }" { (expression_statement "pbVar31 = local_60 + 1;" (assignment_expression "pbVar31 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = (Posf *)((int)local_6c - 1);" (assignment_expression "local_6c = (Posf *)((int)local_6c - 1)" identifier = (cast_expression "(Posf *)((int)local_6c - 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - 1)" ( (binary_expression "(int)local_6c - 1" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "bVar16 = cVar20.fc;" (assignment_expression "bVar16 = cVar20.fc" identifier = (field_expression "cVar20.fc" identifier . field_identifier)) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 + 8);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 + 8)" identifier = (call_expression "(ct_data_s)((int)cVar20 + 8)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 + 8)" ( (binary_expression "(int)cVar20 + 8" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))\n                            ;" (assignment_expression "local_64 = (gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" identifier = (call_expression "(gz_headerp)\n                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" ( (binary_expression "(int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f))" (cast_expression "(int)&local_64->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_64->text" & (field_expression "local_64->text" identifier -> field_identifier))) + (parenthesized_expression "((uint)*local_60 << (bVar16 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar16 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar16 & 0x1f)" ( (binary_expression "bVar16 & 0x1f" identifier & number_literal) ))) ))) )))) ;) (expression_statement "pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);" (assignment_expression "pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4)" identifier = (cast_expression "(byte *)(uVar29 + (uVar7 & (uint)local_64) * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar29 + (uVar7 & (uint)local_64) * 4)" ( (binary_expression "uVar29 + (uVar7 & (uint)local_64) * 4" identifier + (binary_expression "(uVar7 & (uint)local_64) * 4" (parenthesized_expression "(uVar7 & (uint)local_64)" ( (binary_expression "uVar7 & (uint)local_64" identifier & (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier)) )) * number_literal)) )))) ;) (expression_statement "bVar16 = pbVar26[1];" (assignment_expression "bVar16 = pbVar26[1]" identifier = (subscript_expression "pbVar26[1]" identifier [ number_literal ])) ;) (expression_statement "bVar17 = *pbVar26;" (assignment_expression "bVar17 = *pbVar26" identifier = (pointer_expression "*pbVar26" * identifier)) ;) (expression_statement "uVar25 = *(ushort *)(pbVar26 + 2);" (assignment_expression "uVar25 = *(ushort *)(pbVar26 + 2)" identifier = (pointer_expression "*(ushort *)(pbVar26 + 2)" * (cast_expression "(ushort *)(pbVar26 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 2)" ( (binary_expression "pbVar26 + 2" identifier + number_literal) ))))) ;) (expression_statement "cVar10._1_3_ = 0;" (assignment_expression "cVar10._1_3_ = 0" (field_expression "cVar10._1_3_" identifier . field_identifier) = number_literal) ;) (expression_statement "cVar10.fc.freq._0_1_ = bVar16;" (assignment_expression "cVar10.fc.freq._0_1_ = bVar16" (field_expression "cVar10.fc.freq._0_1_" (field_expression "cVar10.fc.freq" (field_expression "cVar10.fc" identifier . field_identifier) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "cVar21 = cVar20;" (assignment_expression "cVar21 = cVar20" identifier = identifier) ;) (expression_statement "local_60 = pbVar31;" (assignment_expression "local_60 = pbVar31" identifier = identifier) ;) (if_statement "if ((uint)cVar10 <= (uint)cVar20) break;" if (parenthesized_expression "((uint)cVar10 <= (uint)cVar20)" ( (binary_expression "(uint)cVar10 <= (uint)cVar20" (cast_expression "(uint)cVar10" ( (type_descriptor "uint" type_identifier) ) identifier) <= (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (break_statement "break;" break ;)) (if_statement "if (local_6c == (Posf *)0x0) {\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                              pPVar27 = (Posf *)0x0;\n                              goto LAB_00017f32;\n                            }" { (expression_statement "pPVar27 = (Posf *)0x0;" (assignment_expression "pPVar27 = (Posf *)0x0" identifier = (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) })) })) (expression_statement "local_48 = (uInt)uVar25;" (assignment_expression "local_48 = (uInt)uVar25" identifier = (cast_expression "(uInt)uVar25" ( (type_descriptor "uInt" type_identifier) ) identifier)) ;) (if_statement "if ((bVar17 & 0xf0) == 0) {\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }\n                        else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }" if (parenthesized_expression "((bVar17 & 0xf0) == 0)" ( (binary_expression "(bVar17 & 0xf0) == 0" (parenthesized_expression "(bVar17 & 0xf0)" ( (binary_expression "bVar17 & 0xf0" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                          bVar5 = cVar10.fc;\n                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));\n                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);\n                          uVar25 = *(ushort *)(pbVar26 + 2);\n                          bVar17 = *pbVar26;\n                          cVar14._1_3_ = 0;\n                          cVar14.fc.freq._0_1_ = pbVar26[1];\n                          cVar20 = cVar21;\n                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          local_48 = (uInt)uVar25;\n                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);\n                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));\n                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);\n                        }" { (expression_statement "bVar5 = cVar10.fc;" (assignment_expression "bVar5 = cVar10.fc" identifier = (field_expression "cVar10.fc" identifier . field_identifier)) ;) (expression_statement "uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));" (assignment_expression "uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f))" identifier = (unary_expression "~(-1 << (bVar17 + bVar5 & 0x1f))" ~ (parenthesized_expression "(-1 << (bVar17 + bVar5 & 0x1f))" ( (binary_expression "-1 << (bVar17 + bVar5 & 0x1f)" number_literal << (parenthesized_expression "(bVar17 + bVar5 & 0x1f)" ( (binary_expression "bVar17 + bVar5 & 0x1f" (binary_expression "bVar17 + bVar5" identifier + identifier) & number_literal) ))) )))) ;) (expression_statement "pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4);" (assignment_expression "pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4)" identifier = (cast_expression "(byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4)" ( (binary_expression "uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4" identifier + (binary_expression "(((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48) * 4" (parenthesized_expression "(((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48)" ( (binary_expression "((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))\n                                                      + local_48" (parenthesized_expression "((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))" ( (binary_expression "(uVar7 & (uint)local_64) >> (bVar16 & 0x1f)" (parenthesized_expression "(uVar7 & (uint)local_64)" ( (binary_expression "uVar7 & (uint)local_64" identifier & (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier)) )) >> (parenthesized_expression "(bVar16 & 0x1f)" ( (binary_expression "bVar16 & 0x1f" identifier & number_literal) ))) )) + identifier) )) * number_literal)) )))) ;) (expression_statement "uVar25 = *(ushort *)(pbVar26 + 2);" (assignment_expression "uVar25 = *(ushort *)(pbVar26 + 2)" identifier = (pointer_expression "*(ushort *)(pbVar26 + 2)" * (cast_expression "(ushort *)(pbVar26 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 2)" ( (binary_expression "pbVar26 + 2" identifier + number_literal) ))))) ;) (expression_statement "bVar17 = *pbVar26;" (assignment_expression "bVar17 = *pbVar26" identifier = (pointer_expression "*pbVar26" * identifier)) ;) (expression_statement "cVar14._1_3_ = 0;" (assignment_expression "cVar14._1_3_ = 0" (field_expression "cVar14._1_3_" identifier . field_identifier) = number_literal) ;) (expression_statement "cVar14.fc.freq._0_1_ = pbVar26[1];" (assignment_expression "cVar14.fc.freq._0_1_ = pbVar26[1]" (field_expression "cVar14.fc.freq._0_1_" (field_expression "cVar14.fc.freq" (field_expression "cVar14.fc" identifier . field_identifier) . field_identifier) . field_identifier) = (subscript_expression "pbVar26[1]" identifier [ number_literal ])) ;) (expression_statement "cVar20 = cVar21;" (assignment_expression "cVar20 = cVar21" identifier = identifier) ;) (if_statement "if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }" if (parenthesized_expression "((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10))" ( (binary_expression "(uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)" (cast_expression "(uint)cVar21" ( (type_descriptor "uint" type_identifier) ) identifier) < (call_expression "(uint)((int)cVar14 + (int)cVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)cVar14 + (int)cVar10)" ( (binary_expression "(int)cVar14 + (int)cVar10" (cast_expression "(int)cVar14" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)cVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) (compound_statement "{\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }" { (if_statement "if (local_6c == (Posf *)0x0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (while_statement "while( true ) {\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                              pbVar31 = local_60 + 1;\n                              cVar20 = (ct_data_s)((int)cVar21 + 8);\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));\n                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);\n                              bVar17 = *pbVar26;\n                              uVar25 = *(ushort *)(pbVar26 + 2);\n                              cVar14._1_3_ = 0;\n                              cVar14.fc.freq._0_1_ = pbVar26[1];\n                              local_60 = pbVar31;\n                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;\n                              cVar21 = cVar20;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }" { (expression_statement "pbVar31 = local_60 + 1;" (assignment_expression "pbVar31 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar21 + 8);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar21 + 8)" identifier = (call_expression "(ct_data_s)((int)cVar21 + 8)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar21 + 8)" ( (binary_expression "(int)cVar21 + 8" (cast_expression "(int)cVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_6c = (Posf *)((int)local_6c - 1);" (assignment_expression "local_6c = (Posf *)((int)local_6c - 1)" identifier = (cast_expression "(Posf *)((int)local_6c - 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - 1)" ( (binary_expression "(int)local_6c - 1" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));" (assignment_expression "local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)))" identifier = (call_expression "(gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f)))" ( (binary_expression "(int)&local_64->text +\n                                         ((uint)*local_60 << (cVar21.fc & 0x1f))" (cast_expression "(int)&local_64->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_64->text" & (field_expression "local_64->text" identifier -> field_identifier))) + (parenthesized_expression "((uint)*local_60 << (cVar21.fc & 0x1f))" ( (binary_expression "(uint)*local_60 << (cVar21.fc & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(cVar21.fc & 0x1f)" ( (binary_expression "cVar21.fc & 0x1f" (field_expression "cVar21.fc" identifier . field_identifier) & number_literal) ))) ))) )))) ;) (expression_statement "pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4);" (assignment_expression "pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4)" identifier = (cast_expression "(byte *)(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4)" ( (binary_expression "uVar29 + (((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4" identifier + (binary_expression "(((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48) * 4" (parenthesized_expression "(((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48)" ( (binary_expression "((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)) + local_48" (parenthesized_expression "((uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f))" ( (binary_expression "(uVar7 & (uint)local_64) >>\n                                                           (bVar5 & 0x1f)" (parenthesized_expression "(uVar7 & (uint)local_64)" ( (binary_expression "uVar7 & (uint)local_64" identifier & (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier)) )) >> (parenthesized_expression "(bVar5 & 0x1f)" ( (binary_expression "bVar5 & 0x1f" identifier & number_literal) ))) )) + identifier) )) * number_literal)) )))) ;) (expression_statement "bVar17 = *pbVar26;" (assignment_expression "bVar17 = *pbVar26" identifier = (pointer_expression "*pbVar26" * identifier)) ;) (expression_statement "uVar25 = *(ushort *)(pbVar26 + 2);" (assignment_expression "uVar25 = *(ushort *)(pbVar26 + 2)" identifier = (pointer_expression "*(ushort *)(pbVar26 + 2)" * (cast_expression "(ushort *)(pbVar26 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 2)" ( (binary_expression "pbVar26 + 2" identifier + number_literal) ))))) ;) (expression_statement "cVar14._1_3_ = 0;" (assignment_expression "cVar14._1_3_ = 0" (field_expression "cVar14._1_3_" identifier . field_identifier) = number_literal) ;) (expression_statement "cVar14.fc.freq._0_1_ = pbVar26[1];" (assignment_expression "cVar14.fc.freq._0_1_ = pbVar26[1]" (field_expression "cVar14.fc.freq._0_1_" (field_expression "cVar14.fc.freq" (field_expression "cVar14.fc" identifier . field_identifier) . field_identifier) . field_identifier) = (subscript_expression "pbVar26[1]" identifier [ number_literal ])) ;) (expression_statement "local_60 = pbVar31;" (assignment_expression "local_60 = pbVar31" identifier = identifier) ;) (if_statement "if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;" if (parenthesized_expression "((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20)" ( (binary_expression "(uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20" (call_expression "(uint)((int)cVar14 + (int)cVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)cVar14 + (int)cVar10)" ( (binary_expression "(int)cVar14 + (int)cVar10" (cast_expression "(int)cVar14" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)cVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (break_statement "break;" break ;)) (expression_statement "cVar21 = cVar20;" (assignment_expression "cVar21 = cVar20" identifier = identifier) ;) (if_statement "if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }" { (expression_statement "pPVar27 = (Posf *)0x0;" (assignment_expression "pPVar27 = (Posf *)0x0" identifier = (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) })) })) (expression_statement "local_48 = (uInt)uVar25;" (assignment_expression "local_48 = (uInt)uVar25" identifier = (cast_expression "(uInt)uVar25" ( (type_descriptor "uInt" type_identifier) ) identifier)) ;) (expression_statement "cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);" (assignment_expression "cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10)" identifier = (call_expression "(ct_data_s)((int)cVar20 - (int)cVar10)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 - (int)cVar10)" ( (binary_expression "(int)cVar20 - (int)cVar10" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)cVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));" (assignment_expression "local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f))" identifier = (call_expression "(gz_headerp)((uint)local_64 >> (bVar5 & 0x1f))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((uint)local_64 >> (bVar5 & 0x1f))" ( (binary_expression "(uint)local_64 >> (bVar5 & 0x1f)" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> (parenthesized_expression "(bVar5 & 0x1f)" ( (binary_expression "bVar5 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);" (assignment_expression "cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c])" identifier = (call_expression "(ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c])" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c])" ( (binary_expression "(int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]" (cast_expression "(int)cVar10" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)piVar3[1].dyn_ltree[0x11c]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "piVar3[1].dyn_ltree[0x11c]" (field_expression "piVar3[1].dyn_ltree" (subscript_expression "piVar3[1]" identifier [ number_literal ]) . field_identifier) [ number_literal ]))) )))) ;) }) (else_clause "else {\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }" else (compound_statement "{\n                          cVar22 = piVar3[1].dyn_ltree[0x11c];\n                          cVar14 = cVar10;\n                        }" { (expression_statement "cVar22 = piVar3[1].dyn_ltree[0x11c];" (assignment_expression "cVar22 = piVar3[1].dyn_ltree[0x11c]" identifier = (subscript_expression "piVar3[1].dyn_ltree[0x11c]" (field_expression "piVar3[1].dyn_ltree" (subscript_expression "piVar3[1]" identifier [ number_literal ]) . field_identifier) [ number_literal ])) ;) (expression_statement "cVar14 = cVar10;" (assignment_expression "cVar14 = cVar10" identifier = identifier) ;) }))) (expression_statement "local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));" (assignment_expression "local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f))" identifier = (call_expression "(gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((uint)local_64 >> (cVar14.fc & 0x1f))" ( (binary_expression "(uint)local_64 >> (cVar14.fc & 0x1f)" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> (parenthesized_expression "(cVar14.fc & 0x1f)" ( (binary_expression "cVar14.fc & 0x1f" (field_expression "cVar14.fc" identifier . field_identifier) & number_literal) ))) )))) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14)" identifier = (call_expression "(ct_data_s)((int)cVar21 - (int)cVar14)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar21 - (int)cVar14)" ( (binary_expression "(int)cVar21 - (int)cVar14" (cast_expression "(int)cVar21" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)cVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);" (assignment_expression "piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22)" (subscript_expression "piVar3[1].dyn_ltree[0x11c]" (field_expression "piVar3[1].dyn_ltree" (subscript_expression "piVar3[1]" identifier [ number_literal ]) . field_identifier) [ number_literal ]) = (call_expression "(ct_data_s)((int)cVar14 + (int)cVar22)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar14 + (int)cVar22)" ( (binary_expression "(int)cVar14 + (int)cVar22" (cast_expression "(int)cVar14" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)cVar22" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if ((bVar17 & 0x40) != 0) {\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }" if (parenthesized_expression "((bVar17 & 0x40) != 0)" ( (binary_expression "(bVar17 & 0x40) != 0" (parenthesized_expression "(bVar17 & 0x40)" ( (binary_expression "bVar17 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                          strm->msg = "invalid distance code";\n                          piVar3->status = 0x3f51;\n                          pPVar27 = (Posf *)0xfffffffd;\n                          goto LAB_00017f32;\n                        }" { (expression_statement "strm->msg = "invalid distance code";" (assignment_expression "strm->msg = "invalid distance code"" (field_expression "strm->msg" identifier -> field_identifier) = (string_literal ""invalid distance code"" " string_content ")) ;) (expression_statement "piVar3->status = 0x3f51;" (assignment_expression "piVar3->status = 0x3f51" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (expression_statement "pPVar27 = (Posf *)0xfffffffd;" (assignment_expression "pPVar27 = (Posf *)0xfffffffd" identifier = (cast_expression "(Posf *)0xfffffffd" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (expression_statement "cVar21 = (ct_data_s)(bVar17 & 0xf);" (assignment_expression "cVar21 = (ct_data_s)(bVar17 & 0xf)" identifier = (call_expression "(ct_data_s)(bVar17 & 0xf)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "(bVar17 & 0xf)" ( (binary_expression "bVar17 & 0xf" identifier & number_literal) )))) ;) (expression_statement "piVar3->hash_size = (uInt)cVar21;" (assignment_expression "piVar3->hash_size = (uInt)cVar21" (field_expression "piVar3->hash_size" identifier -> field_identifier) = (cast_expression "(uInt)cVar21" ( (type_descriptor "uInt" type_identifier) ) identifier)) ;) (expression_statement "piVar3->status = 0x3f4b;" (assignment_expression "piVar3->status = 0x3f4b" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (expression_statement "piVar3->ins_h = local_48;" (assignment_expression "piVar3->ins_h = local_48" (field_expression "piVar3->ins_h" identifier -> field_identifier) = identifier) ;) (labeled_statement "LAB_00017c87:\n                        if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }" statement_identifier : (if_statement "if (cVar21 != (ct_data_s)0x0) {\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }" if (parenthesized_expression "(cVar21 != (ct_data_s)0x0)" ( (binary_expression "cVar21 != (ct_data_s)0x0" identifier != (cast_expression "(ct_data_s)0x0" ( (type_descriptor "ct_data_s" type_identifier) ) number_literal)) )) (compound_statement "{\n                          if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);\n                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;\n                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));\n                          piVar3->ins_h = piVar3->ins_h + uVar7;\n                          piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);\n                        }" { (if_statement "if ((uint)cVar20 < (uint)cVar21) {\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }" if (parenthesized_expression "((uint)cVar20 < (uint)cVar21)" ( (binary_expression "(uint)cVar20 < (uint)cVar21" (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier) < (cast_expression "(uint)cVar21" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (compound_statement "{\n                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }" { (if_statement "if (local_6c == (Posf *)0x0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (while_statement "while( true ) {\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                              pbVar26 = local_60 + 1;\n                              local_6c = (Posf *)((int)local_6c - 1);\n                              bVar16 = cVar20.fc;\n                              cVar20 = (ct_data_s)((int)cVar20 + 8);\n                              local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));\n                              local_60 = pbVar26;\n                              if ((uint)cVar21 <= (uint)cVar20) break;\n                              if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }\n                            }" { (expression_statement "pbVar26 = local_60 + 1;" (assignment_expression "pbVar26 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = (Posf *)((int)local_6c - 1);" (assignment_expression "local_6c = (Posf *)((int)local_6c - 1)" identifier = (cast_expression "(Posf *)((int)local_6c - 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - 1)" ( (binary_expression "(int)local_6c - 1" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "bVar16 = cVar20.fc;" (assignment_expression "bVar16 = cVar20.fc" identifier = (field_expression "cVar20.fc" identifier . field_identifier)) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 + 8);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 + 8)" identifier = (call_expression "(ct_data_s)((int)cVar20 + 8)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 + 8)" ( (binary_expression "(int)cVar20 + 8" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)));" (assignment_expression "local_64 = (gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)))" identifier = (call_expression "(gz_headerp)\n                                         ((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f)))" ( (binary_expression "(int)&local_64->text +\n                                         ((uint)*local_60 << (bVar16 & 0x1f))" (cast_expression "(int)&local_64->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_64->text" & (field_expression "local_64->text" identifier -> field_identifier))) + (parenthesized_expression "((uint)*local_60 << (bVar16 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar16 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar16 & 0x1f)" ( (binary_expression "bVar16 & 0x1f" identifier & number_literal) ))) ))) )))) ;) (expression_statement "local_60 = pbVar26;" (assignment_expression "local_60 = pbVar26" identifier = identifier) ;) (if_statement "if ((uint)cVar21 <= (uint)cVar20) break;" if (parenthesized_expression "((uint)cVar21 <= (uint)cVar20)" ( (binary_expression "(uint)cVar21 <= (uint)cVar20" (cast_expression "(uint)cVar21" ( (type_descriptor "uint" type_identifier) ) identifier) <= (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (break_statement "break;" break ;)) (if_statement "if (local_6c == (Posf *)0x0) {\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                                pPVar27 = (Posf *)0x0;\n                                goto LAB_00017f32;\n                              }" { (expression_statement "pPVar27 = (Posf *)0x0;" (assignment_expression "pPVar27 = (Posf *)0x0" identifier = (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) })) })) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21)" identifier = (call_expression "(ct_data_s)((int)cVar20 - (int)cVar21)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 - (int)cVar21)" ( (binary_expression "(int)cVar20 - (int)cVar21" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)cVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;" (assignment_expression "uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64" identifier = (binary_expression "~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64" (unary_expression "~(-1 << (cVar21.fc & 0x1f))" ~ (parenthesized_expression "(-1 << (cVar21.fc & 0x1f))" ( (binary_expression "-1 << (cVar21.fc & 0x1f)" number_literal << (parenthesized_expression "(cVar21.fc & 0x1f)" ( (binary_expression "cVar21.fc & 0x1f" (field_expression "cVar21.fc" identifier . field_identifier) & number_literal) ))) ))) & (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));" (assignment_expression "local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f))" identifier = (call_expression "(gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((uint)local_64 >> (cVar21.fc & 0x1f))" ( (binary_expression "(uint)local_64 >> (cVar21.fc & 0x1f)" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> (parenthesized_expression "(cVar21.fc & 0x1f)" ( (binary_expression "cVar21.fc & 0x1f" (field_expression "cVar21.fc" identifier . field_identifier) & number_literal) ))) )))) ;) (expression_statement "piVar3->ins_h = piVar3->ins_h + uVar7;" (assignment_expression "piVar3->ins_h = piVar3->ins_h + uVar7" (field_expression "piVar3->ins_h" identifier -> field_identifier) = (binary_expression "piVar3->ins_h + uVar7" (field_expression "piVar3->ins_h" identifier -> field_identifier) + identifier)) ;) (expression_statement "piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);" (assignment_expression "piVar3[1].dyn_ltree[0x11c] =\n                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21)" (subscript_expression "piVar3[1].dyn_ltree[0x11c]" (field_expression "piVar3[1].dyn_ltree" (subscript_expression "piVar3[1]" identifier [ number_literal ]) . field_identifier) [ number_literal ]) = (call_expression "(ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21)" ( (binary_expression "(int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21" (cast_expression "(int)piVar3[1].dyn_ltree[0x11c]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "piVar3[1].dyn_ltree[0x11c]" (field_expression "piVar3[1].dyn_ltree" (subscript_expression "piVar3[1]" identifier [ number_literal ]) . field_identifier) [ number_literal ])) + (cast_expression "(int)cVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) }))) (expression_statement "piVar3->status = 0x3f4c;" (assignment_expression "piVar3->status = 0x3f4c" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (labeled_statement "_L118:\n                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;" statement_identifier : (if_statement "if (local_5c == (Posf *)0x0) goto LAB_00017f30;" if (parenthesized_expression "(local_5c == (Posf *)0x0)" ( (binary_expression "local_5c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;))) (expression_statement "uVar7 = piVar3->ins_h;" (assignment_expression "uVar7 = piVar3->ins_h" identifier = (field_expression "piVar3->ins_h" identifier -> field_identifier)) ;) (if_statement "if ((uint)((int)local_50 - (int)local_5c) < uVar7) {\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }\n                        else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }" if (parenthesized_expression "((uint)((int)local_50 - (int)local_5c) < uVar7)" ( (binary_expression "(uint)((int)local_50 - (int)local_5c) < uVar7" (call_expression "(uint)((int)local_50 - (int)local_5c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)local_50 - (int)local_5c)" ( (binary_expression "(int)local_50 - (int)local_5c" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier)) ))) < identifier) )) (compound_statement "{\n                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));\n                          if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          pPVar27 = (Posf *)piVar3->w_mask;\n                          if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }\n                          pBVar28 = piVar3->window + iVar6;\n                          pPVar27 = piVar3->head;\n                          if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }\n                        }" { (expression_statement "pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));" (assignment_expression "pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c))" identifier = (cast_expression "(Posf *)(uVar7 - ((int)local_50 - (int)local_5c))" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 - ((int)local_50 - (int)local_5c))" ( (binary_expression "uVar7 - ((int)local_50 - (int)local_5c)" identifier - (parenthesized_expression "((int)local_50 - (int)local_5c)" ( (binary_expression "(int)local_50 - (int)local_5c" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (if_statement "if (((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }" if (parenthesized_expression "(((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0))" ( (binary_expression "((Posf *)piVar3->w_bits < pPVar9) &&\n                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)" (parenthesized_expression "((Posf *)piVar3->w_bits < pPVar9)" ( (binary_expression "(Posf *)piVar3->w_bits < pPVar9" (cast_expression "(Posf *)piVar3->w_bits" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "piVar3->w_bits" identifier -> field_identifier)) < identifier) )) && (parenthesized_expression "(piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)" ( (binary_expression "piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0" (subscript_expression "piVar3[1].dyn_ltree[0x11b]" (field_expression "piVar3[1].dyn_ltree" (subscript_expression "piVar3[1]" identifier [ number_literal ]) . field_identifier) [ number_literal ]) != (cast_expression "(ct_data_s)0x0" ( (type_descriptor "ct_data_s" type_identifier) ) number_literal)) ))) )) (compound_statement "{\n                            strm->msg = "invalid distance too far back";\n                            piVar3->status = 0x3f51;\n                            pPVar27 = (Posf *)0xfffffffd;\n                            goto LAB_00017f32;\n                          }" { (expression_statement "strm->msg = "invalid distance too far back";" (assignment_expression "strm->msg = "invalid distance too far back"" (field_expression "strm->msg" identifier -> field_identifier) = (string_literal ""invalid distance too far back"" " string_content ")) ;) (expression_statement "piVar3->status = 0x3f51;" (assignment_expression "piVar3->status = 0x3f51" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (expression_statement "pPVar27 = (Posf *)0xfffffffd;" (assignment_expression "pPVar27 = (Posf *)0xfffffffd" identifier = (cast_expression "(Posf *)0xfffffffd" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (expression_statement "pPVar27 = (Posf *)piVar3->w_mask;" (assignment_expression "pPVar27 = (Posf *)piVar3->w_mask" identifier = (cast_expression "(Posf *)piVar3->w_mask" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "piVar3->w_mask" identifier -> field_identifier))) ;) (if_statement "if (pPVar27 < pPVar9) {\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }\n                          else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }" if (parenthesized_expression "(pPVar27 < pPVar9)" ( (binary_expression "pPVar27 < pPVar9" identifier < identifier) )) (compound_statement "{\n                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);\n                            iVar6 = piVar3->w_size - (int)pPVar9;\n                          }" { (expression_statement "pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);" (assignment_expression "pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27)" identifier = (cast_expression "(Posf *)((int)pPVar9 - (int)pPVar27)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pPVar9 - (int)pPVar27)" ( (binary_expression "(int)pPVar9 - (int)pPVar27" (cast_expression "(int)pPVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pPVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "iVar6 = piVar3->w_size - (int)pPVar9;" (assignment_expression "iVar6 = piVar3->w_size - (int)pPVar9" identifier = (binary_expression "piVar3->w_size - (int)pPVar9" (field_expression "piVar3->w_size" identifier -> field_identifier) - (cast_expression "(int)pPVar9" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) (else_clause "else {\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }" else (compound_statement "{\n                            iVar6 = (int)pPVar27 - (int)pPVar9;\n                          }" { (expression_statement "iVar6 = (int)pPVar27 - (int)pPVar9;" (assignment_expression "iVar6 = (int)pPVar27 - (int)pPVar9" identifier = (binary_expression "(int)pPVar27 - (int)pPVar9" (cast_expression "(int)pPVar27" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pPVar9" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))) (expression_statement "pBVar28 = piVar3->window + iVar6;" (assignment_expression "pBVar28 = piVar3->window + iVar6" identifier = (binary_expression "piVar3->window + iVar6" (field_expression "piVar3->window" identifier -> field_identifier) + identifier)) ;) (expression_statement "pPVar27 = piVar3->head;" (assignment_expression "pPVar27 = piVar3->head" identifier = (field_expression "piVar3->head" identifier -> field_identifier)) ;) (if_statement "if (pPVar27 <= pPVar9) {\n                            pPVar9 = pPVar27;\n                          }" if (parenthesized_expression "(pPVar27 <= pPVar9)" ( (binary_expression "pPVar27 <= pPVar9" identifier <= identifier) )) (compound_statement "{\n                            pPVar9 = pPVar27;\n                          }" { (expression_statement "pPVar9 = pPVar27;" (assignment_expression "pPVar9 = pPVar27" identifier = identifier) ;) })) }) (else_clause "else {\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }" else (compound_statement "{\n                          pBVar28 = end + -uVar7;\n                          pPVar9 = piVar3->head;\n                          pPVar27 = pPVar9;\n                        }" { (expression_statement "pBVar28 = end + -uVar7;" (assignment_expression "pBVar28 = end + -uVar7" identifier = (binary_expression "end + -uVar7" identifier + (unary_expression "-uVar7" - identifier))) ;) (expression_statement "pPVar9 = piVar3->head;" (assignment_expression "pPVar9 = piVar3->head" identifier = (field_expression "piVar3->head" identifier -> field_identifier)) ;) (expression_statement "pPVar27 = pPVar9;" (assignment_expression "pPVar27 = pPVar9" identifier = identifier) ;) }))) (if_statement "if (local_5c < pPVar9) {\n                          pPVar9 = local_5c;\n                        }" if (parenthesized_expression "(local_5c < pPVar9)" ( (binary_expression "local_5c < pPVar9" identifier < identifier) )) (compound_statement "{\n                          pPVar9 = local_5c;\n                        }" { (expression_statement "pPVar9 = local_5c;" (assignment_expression "pPVar9 = local_5c" identifier = identifier) ;) })) (expression_statement "local_5c = (Posf *)((int)local_5c - (int)pPVar9);" (assignment_expression "local_5c = (Posf *)((int)local_5c - (int)pPVar9)" identifier = (cast_expression "(Posf *)((int)local_5c - (int)pPVar9)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_5c - (int)pPVar9)" ( (binary_expression "(int)local_5c - (int)pPVar9" (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pPVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "pBVar12 = (Bytef *)((int)pPVar9 + (int)end);" (assignment_expression "pBVar12 = (Bytef *)((int)pPVar9 + (int)end)" identifier = (cast_expression "(Bytef *)((int)pPVar9 + (int)end)" ( (type_descriptor "Bytef *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pPVar9 + (int)end)" ( (binary_expression "(int)pPVar9 + (int)end" (cast_expression "(int)pPVar9" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)end" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);" (assignment_expression "piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9)" (field_expression "piVar3->head" identifier -> field_identifier) = (cast_expression "(Posf *)((int)pPVar27 - (int)pPVar9)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pPVar27 - (int)pPVar9)" ( (binary_expression "(int)pPVar27 - (int)pPVar9" (cast_expression "(int)pPVar27" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pPVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "pBVar30 = end;" (assignment_expression "pBVar30 = end" identifier = identifier) ;) (do_statement "do {\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        } while (end != pBVar12);" do (compound_statement "{\n                          end = pBVar30 + (uint)bVar32 * -2 + 1;\n                          *pBVar30 = *pBVar28;\n                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;\n                          pBVar30 = end;\n                        }" { (expression_statement "end = pBVar30 + (uint)bVar32 * -2 + 1;" (assignment_expression "end = pBVar30 + (uint)bVar32 * -2 + 1" identifier = (binary_expression "pBVar30 + (uint)bVar32 * -2 + 1" (binary_expression "pBVar30 + (uint)bVar32 * -2" identifier + (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "*pBVar30 = *pBVar28;" (assignment_expression "*pBVar30 = *pBVar28" (pointer_expression "*pBVar30" * identifier) = (pointer_expression "*pBVar28" * identifier)) ;) (expression_statement "pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;" (assignment_expression "pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1" identifier = (binary_expression "pBVar28 + (uint)bVar32 * -2 + 1" (binary_expression "pBVar28 + (uint)bVar32 * -2" identifier + (binary_expression "(uint)bVar32 * -2" (cast_expression "(uint)bVar32" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pBVar30 = end;" (assignment_expression "pBVar30 = end" identifier = identifier) ;) }) while (parenthesized_expression "(end != pBVar12)" ( (binary_expression "end != pBVar12" identifier != identifier) )) ;) (if_statement "if (piVar3->head != (Posf *)0x0) {\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }" if (parenthesized_expression "(piVar3->head != (Posf *)0x0)" ( (binary_expression "piVar3->head != (Posf *)0x0" (field_expression "piVar3->head" identifier -> field_identifier) != (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                          iVar6 = piVar3->status;\n                          goto LAB_000178c9;\n                        }" { (expression_statement "iVar6 = piVar3->status;" (assignment_expression "iVar6 = piVar3->status" identifier = (field_expression "piVar3->status" identifier -> field_identifier)) ;) (goto_statement "goto LAB_000178c9;" goto statement_identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (expression_statement "pPVar27 = (Posf *)0x0;" (assignment_expression "pPVar27 = (Posf *)0x0" identifier = (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n                    pPVar27 = (Posf *)0xfffffffd;\n                    strm->msg = "invalid distances set";\n                    piVar3->status = 0x3f51;\n                  }" else (compound_statement "{\n                    pPVar27 = (Posf *)0xfffffffd;\n                    strm->msg = "invalid distances set";\n                    piVar3->status = 0x3f51;\n                  }" { (expression_statement "pPVar27 = (Posf *)0xfffffffd;" (assignment_expression "pPVar27 = (Posf *)0xfffffffd" identifier = (cast_expression "(Posf *)0xfffffffd" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "strm->msg = "invalid distances set";" (assignment_expression "strm->msg = "invalid distances set"" (field_expression "strm->msg" identifier -> field_identifier) = (string_literal ""invalid distances set"" " string_content ")) ;) (expression_statement "piVar3->status = 0x3f51;" (assignment_expression "piVar3->status = 0x3f51" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) }))) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (expression_statement "pcVar8 = "invalid literal/lengths set";" (assignment_expression "pcVar8 = "invalid literal/lengths set"" identifier = (string_literal ""invalid literal/lengths set"" " string_content ")) ;) (goto_statement "goto LAB_00017b45;" goto statement_identifier ;) })) (expression_statement "pPVar27 = (Posf *)0xfffffffd;" (assignment_expression "pPVar27 = (Posf *)0xfffffffd" identifier = (cast_expression "(Posf *)0xfffffffd" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "strm->msg = "invalid code -- missing end-of-block";" (assignment_expression "strm->msg = "invalid code -- missing end-of-block"" (field_expression "strm->msg" identifier -> field_identifier) = (string_literal ""invalid code -- missing end-of-block"" " string_content ")) ;) (expression_statement "piVar3->status = 0x3f51;" (assignment_expression "piVar3->status = 0x3f51" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else {\n              strm->msg = "invalid code lengths set";\n              piVar3->status = 0x3f51;\n              pPVar27 = (Posf *)0xfffffffd;\n            }" else (compound_statement "{\n              strm->msg = "invalid code lengths set";\n              piVar3->status = 0x3f51;\n              pPVar27 = (Posf *)0xfffffffd;\n            }" { (expression_statement "strm->msg = "invalid code lengths set";" (assignment_expression "strm->msg = "invalid code lengths set"" (field_expression "strm->msg" identifier -> field_identifier) = (string_literal ""invalid code lengths set"" " string_content ")) ;) (expression_statement "piVar3->status = 0x3f51;" (assignment_expression "piVar3->status = 0x3f51" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (expression_statement "pPVar27 = (Posf *)0xfffffffd;" (assignment_expression "pPVar27 = (Posf *)0xfffffffd" identifier = (cast_expression "(Posf *)0xfffffffd" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (expression_statement "pcVar8 = "too many length or distance symbols";" (assignment_expression "pcVar8 = "too many length or distance symbols"" identifier = (string_literal ""too many length or distance symbols"" " string_content ")) ;) (goto_statement "goto LAB_000188eb;" goto statement_identifier ;) })) (if_statement "if (uVar7 == 3) {\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          pPVar27 = (Posf *)0xfffffffd;\n          strm->msg = "invalid block type";\n          piVar3->status = 0x3f51;\n          goto LAB_00017f32;\n        }" if (parenthesized_expression "(uVar7 == 3)" ( (binary_expression "uVar7 == 3" identifier == number_literal) )) (compound_statement "{\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          pPVar27 = (Posf *)0xfffffffd;\n          strm->msg = "invalid block type";\n          piVar3->status = 0x3f51;\n          goto LAB_00017f32;\n        }" { (expression_statement "cVar20 = (ct_data_s)((int)cVar20 - 3);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 - 3)" identifier = (call_expression "(ct_data_s)((int)cVar20 - 3)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 - 3)" ( (binary_expression "(int)cVar20 - 3" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "local_64 = (gz_headerp)((uint)local_64 >> 3);" (assignment_expression "local_64 = (gz_headerp)((uint)local_64 >> 3)" identifier = (call_expression "(gz_headerp)((uint)local_64 >> 3)" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((uint)local_64 >> 3)" ( (binary_expression "(uint)local_64 >> 3" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "pPVar27 = (Posf *)0xfffffffd;" (assignment_expression "pPVar27 = (Posf *)0xfffffffd" identifier = (cast_expression "(Posf *)0xfffffffd" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "strm->msg = "invalid block type";" (assignment_expression "strm->msg = "invalid block type"" (field_expression "strm->msg" identifier -> field_identifier) = (string_literal ""invalid block type"" " string_content ")) ;) (expression_statement "piVar3->status = 0x3f51;" (assignment_expression "piVar3->status = 0x3f51" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (if_statement "if (uVar7 == 1) {\n          piVar3->hash_shift = 9;\n          piVar3->block_start = 5;\n          piVar3->status = 0x3f47;\n          piVar3->hash_bits = (uInt)lenfix_3685;\n          piVar3->hash_mask = (uInt)distfix_3686;\n          if (flush != 6) {\n            local_64 = (gz_headerp)((uint)local_64 >> 3);\n            cVar20 = (ct_data_s)((int)cVar20 - 3);\n            goto _L113;\n          }\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          goto LAB_00017f32;\n        }" if (parenthesized_expression "(uVar7 == 1)" ( (binary_expression "uVar7 == 1" identifier == number_literal) )) (compound_statement "{\n          piVar3->hash_shift = 9;\n          piVar3->block_start = 5;\n          piVar3->status = 0x3f47;\n          piVar3->hash_bits = (uInt)lenfix_3685;\n          piVar3->hash_mask = (uInt)distfix_3686;\n          if (flush != 6) {\n            local_64 = (gz_headerp)((uint)local_64 >> 3);\n            cVar20 = (ct_data_s)((int)cVar20 - 3);\n            goto _L113;\n          }\n          local_64 = (gz_headerp)((uint)local_64 >> 3);\n          cVar20 = (ct_data_s)((int)cVar20 - 3);\n          goto LAB_00017f32;\n        }" { (expression_statement "piVar3->hash_shift = 9;" (assignment_expression "piVar3->hash_shift = 9" (field_expression "piVar3->hash_shift" identifier -> field_identifier) = number_literal) ;) (expression_statement "piVar3->block_start = 5;" (assignment_expression "piVar3->block_start = 5" (field_expression "piVar3->block_start" identifier -> field_identifier) = number_literal) ;) (expression_statement "piVar3->status = 0x3f47;" (assignment_expression "piVar3->status = 0x3f47" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (expression_statement "piVar3->hash_bits = (uInt)lenfix_3685;" (assignment_expression "piVar3->hash_bits = (uInt)lenfix_3685" (field_expression "piVar3->hash_bits" identifier -> field_identifier) = (cast_expression "(uInt)lenfix_3685" ( (type_descriptor "uInt" type_identifier) ) identifier)) ;) (expression_statement "piVar3->hash_mask = (uInt)distfix_3686;" (assignment_expression "piVar3->hash_mask = (uInt)distfix_3686" (field_expression "piVar3->hash_mask" identifier -> field_identifier) = (cast_expression "(uInt)distfix_3686" ( (type_descriptor "uInt" type_identifier) ) identifier)) ;) (if_statement "if (flush != 6) {\n            local_64 = (gz_headerp)((uint)local_64 >> 3);\n            cVar20 = (ct_data_s)((int)cVar20 - 3);\n            goto _L113;\n          }" if (parenthesized_expression "(flush != 6)" ( (binary_expression "flush != 6" identifier != number_literal) )) (compound_statement "{\n            local_64 = (gz_headerp)((uint)local_64 >> 3);\n            cVar20 = (ct_data_s)((int)cVar20 - 3);\n            goto _L113;\n          }" { (expression_statement "local_64 = (gz_headerp)((uint)local_64 >> 3);" (assignment_expression "local_64 = (gz_headerp)((uint)local_64 >> 3)" identifier = (call_expression "(gz_headerp)((uint)local_64 >> 3)" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((uint)local_64 >> 3)" ( (binary_expression "(uint)local_64 >> 3" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 - 3);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 - 3)" identifier = (call_expression "(ct_data_s)((int)cVar20 - 3)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 - 3)" ( (binary_expression "(int)cVar20 - 3" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (goto_statement "goto _L113;" goto statement_identifier ;) })) (expression_statement "local_64 = (gz_headerp)((uint)local_64 >> 3);" (assignment_expression "local_64 = (gz_headerp)((uint)local_64 >> 3)" identifier = (call_expression "(gz_headerp)((uint)local_64 >> 3)" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((uint)local_64 >> 3)" ( (binary_expression "(uint)local_64 >> 3" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 - 3);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 - 3)" identifier = (call_expression "(ct_data_s)((int)cVar20 - 3)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 - 3)" ( (binary_expression "(int)cVar20 - 3" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (expression_statement "local_64 = (gz_headerp)((uint)local_64 >> 3);" (assignment_expression "local_64 = (gz_headerp)((uint)local_64 >> 3)" identifier = (call_expression "(gz_headerp)((uint)local_64 >> 3)" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((uint)local_64 >> 3)" ( (binary_expression "(uint)local_64 >> 3" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar3->status = 0x3f41;" (assignment_expression "piVar3->status = 0x3f41" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 - 3);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 - 3)" identifier = (call_expression "(ct_data_s)((int)cVar20 - 3)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 - 3)" ( (binary_expression "(int)cVar20 - 3" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (labeled_statement "_L107:\n        local_64 = (gz_headerp)((uint)local_64 >> (cVar20.fc & 7));" statement_identifier : (expression_statement "local_64 = (gz_headerp)((uint)local_64 >> (cVar20.fc & 7));" (assignment_expression "local_64 = (gz_headerp)((uint)local_64 >> (cVar20.fc & 7))" identifier = (call_expression "(gz_headerp)((uint)local_64 >> (cVar20.fc & 7))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((uint)local_64 >> (cVar20.fc & 7))" ( (binary_expression "(uint)local_64 >> (cVar20.fc & 7)" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> (parenthesized_expression "(cVar20.fc & 7)" ( (binary_expression "cVar20.fc & 7" (field_expression "cVar20.fc" identifier . field_identifier) & number_literal) ))) )))) ;)) (for_statement "for (cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8); (uint)cVar20 < 0x20;\n            cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n          local_6c = (Posf *)((int)local_6c - 1);\n          local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n          local_60 = local_60 + 1;\n        }" for ( (assignment_expression "cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8)" identifier = (call_expression "(ct_data_s)((uint)cVar20 & 0xfffffff8)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((uint)cVar20 & 0xfffffff8)" ( (binary_expression "(uint)cVar20 & 0xfffffff8" (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ; (binary_expression "(uint)cVar20 < 0x20" (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) ; (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 + 8)" identifier = (call_expression "(ct_data_s)((int)cVar20 + 8)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 + 8)" ( (binary_expression "(int)cVar20 + 8" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ) (compound_statement "{\n          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n          local_6c = (Posf *)((int)local_6c - 1);\n          local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n          local_60 = local_60 + 1;\n        }" { (if_statement "if (local_6c == (Posf *)0x0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "local_6c = (Posf *)((int)local_6c - 1);" (assignment_expression "local_6c = (Posf *)((int)local_6c - 1)" identifier = (cast_expression "(Posf *)((int)local_6c - 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - 1)" ( (binary_expression "(int)local_6c - 1" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));" (assignment_expression "local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)))" identifier = (call_expression "(gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)))" ( (binary_expression "(int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f))" (cast_expression "(int)&local_64->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_64->text" & (field_expression "local_64->text" identifier -> field_identifier))) + (parenthesized_expression "((uint)*local_60 << (cVar20.fc & 0x1f))" ( (binary_expression "(uint)*local_60 << (cVar20.fc & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(cVar20.fc & 0x1f)" ( (binary_expression "cVar20.fc & 0x1f" (field_expression "cVar20.fc" identifier . field_identifier) & number_literal) ))) ))) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) })) (expression_statement "pPVar27 = (Posf *)((uint)local_64 & 0xffff);" (assignment_expression "pPVar27 = (Posf *)((uint)local_64 & 0xffff)" identifier = (cast_expression "(Posf *)((uint)local_64 & 0xffff)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)local_64 & 0xffff)" ( (binary_expression "(uint)local_64 & 0xffff" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (if_statement "if (pPVar27 != (Posf *)((uint)local_64 >> 0x10 ^ 0xffff)) {\n          pcVar8 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }" if (parenthesized_expression "(pPVar27 != (Posf *)((uint)local_64 >> 0x10 ^ 0xffff))" ( (binary_expression "pPVar27 != (Posf *)((uint)local_64 >> 0x10 ^ 0xffff)" identifier != (cast_expression "(Posf *)((uint)local_64 >> 0x10 ^ 0xffff)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)local_64 >> 0x10 ^ 0xffff)" ( (binary_expression "(uint)local_64 >> 0x10 ^ 0xffff" (binary_expression "(uint)local_64 >> 0x10" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ^ number_literal) )))) )) (compound_statement "{\n          pcVar8 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }" { (expression_statement "pcVar8 = "invalid stored block lengths";" (assignment_expression "pcVar8 = "invalid stored block lengths"" identifier = (string_literal ""invalid stored block lengths"" " string_content ")) ;) (goto_statement "goto LAB_00017b45;" goto statement_identifier ;) })) (expression_statement "piVar3->head = pPVar27;" (assignment_expression "piVar3->head = pPVar27" (field_expression "piVar3->head" identifier -> field_identifier) = identifier) ;) (expression_statement "piVar3->status = 0x3f42;" (assignment_expression "piVar3->status = 0x3f42" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (if_statement "if (flush == 6) {\n          pPVar27 = (Posf *)0x0;\n          cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n          cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n          local_64 = (gz_headerp)0x0;\n          goto LAB_00017f32;\n        }" if (parenthesized_expression "(flush == 6)" ( (binary_expression "flush == 6" identifier == number_literal) )) (compound_statement "{\n          pPVar27 = (Posf *)0x0;\n          cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n          cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n          local_64 = (gz_headerp)0x0;\n          goto LAB_00017f32;\n        }" { (expression_statement "pPVar27 = (Posf *)0x0;" (assignment_expression "pPVar27 = (Posf *)0x0" identifier = (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;" (assignment_expression "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0" (field_expression "cVar20.fc" identifier . field_identifier) = (cast_expression "(anon_union_2_2_314cc5cc_for_fc)0x0" ( (type_descriptor "anon_union_2_2_314cc5cc_for_fc" type_identifier) ) number_literal)) ;) (expression_statement "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;" (assignment_expression "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0" (field_expression "cVar20.dl" identifier . field_identifier) = (cast_expression "(anon_union_2_2_43a7fb4f_for_dl)0x0" ( (type_descriptor "anon_union_2_2_43a7fb4f_for_dl" type_identifier) ) number_literal)) ;) (expression_statement "local_64 = (gz_headerp)0x0;" (assignment_expression "local_64 = (gz_headerp)0x0" identifier = (cast_expression "(gz_headerp)0x0" ( (type_descriptor "gz_headerp" type_identifier) ) number_literal)) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (expression_statement "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;" (assignment_expression "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0" (field_expression "cVar20.fc" identifier . field_identifier) = (cast_expression "(anon_union_2_2_314cc5cc_for_fc)0x0" ( (type_descriptor "anon_union_2_2_314cc5cc_for_fc" type_identifier) ) number_literal)) ;) (expression_statement "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;" (assignment_expression "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0" (field_expression "cVar20.dl" identifier . field_identifier) = (cast_expression "(anon_union_2_2_43a7fb4f_for_dl)0x0" ( (type_descriptor "anon_union_2_2_43a7fb4f_for_dl" type_identifier) ) number_literal)) ;) (expression_statement "local_64 = (gz_headerp)0x0;" (assignment_expression "local_64 = (gz_headerp)0x0" identifier = (cast_expression "(gz_headerp)0x0" ( (type_descriptor "gz_headerp" type_identifier) ) number_literal)) ;) (labeled_statement "LAB_00018557:\n        piVar3->status = 0x3f43;" statement_identifier : (expression_statement "piVar3->status = 0x3f43;" (assignment_expression "piVar3->status = 0x3f43" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;)) (labeled_statement "LAB_00018562:\n        if (pPVar27 == (Posf *)0x0) {\n          piVar3->status = 0x3f3f;\n          goto _L105;\n        }" statement_identifier : (if_statement "if (pPVar27 == (Posf *)0x0) {\n          piVar3->status = 0x3f3f;\n          goto _L105;\n        }" if (parenthesized_expression "(pPVar27 == (Posf *)0x0)" ( (binary_expression "pPVar27 == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          piVar3->status = 0x3f3f;\n          goto _L105;\n        }" { (expression_statement "piVar3->status = 0x3f3f;" (assignment_expression "piVar3->status = 0x3f3f" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (goto_statement "goto _L105;" goto statement_identifier ;) }))) (if_statement "if (local_6c <= pPVar27) {\n          pPVar27 = local_6c;\n        }" if (parenthesized_expression "(local_6c <= pPVar27)" ( (binary_expression "local_6c <= pPVar27" identifier <= identifier) )) (compound_statement "{\n          pPVar27 = local_6c;\n        }" { (expression_statement "pPVar27 = local_6c;" (assignment_expression "pPVar27 = local_6c" identifier = identifier) ;) })) (if_statement "if (local_5c < pPVar27) {\n          pPVar27 = local_5c;\n        }" if (parenthesized_expression "(local_5c < pPVar27)" ( (binary_expression "local_5c < pPVar27" identifier < identifier) )) (compound_statement "{\n          pPVar27 = local_5c;\n        }" { (expression_statement "pPVar27 = local_5c;" (assignment_expression "pPVar27 = local_5c" identifier = identifier) ;) })) (if_statement "if (pPVar27 == (Posf *)0x0) goto LAB_00017f30;" if (parenthesized_expression "(pPVar27 == (Posf *)0x0)" ( (binary_expression "pPVar27 == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "memcpy(end,local_60,(size_t)pPVar27);" (call_expression "memcpy(end,local_60,(size_t)pPVar27)" identifier (argument_list "(end,local_60,(size_t)pPVar27)" ( identifier , identifier , (cast_expression "(size_t)pPVar27" ( (type_descriptor "size_t" primitive_type) ) identifier) ))) ;) (expression_statement "local_6c = (Posf *)((int)local_6c - (int)pPVar27);" (assignment_expression "local_6c = (Posf *)((int)local_6c - (int)pPVar27)" identifier = (cast_expression "(Posf *)((int)local_6c - (int)pPVar27)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - (int)pPVar27)" ( (binary_expression "(int)local_6c - (int)pPVar27" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pPVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "local_60 = local_60 + (int)pPVar27;" (assignment_expression "local_60 = local_60 + (int)pPVar27" identifier = (binary_expression "local_60 + (int)pPVar27" identifier + (cast_expression "(int)pPVar27" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_5c = (Posf *)((int)local_5c - (int)pPVar27);" (assignment_expression "local_5c = (Posf *)((int)local_5c - (int)pPVar27)" identifier = (cast_expression "(Posf *)((int)local_5c - (int)pPVar27)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_5c - (int)pPVar27)" ( (binary_expression "(int)local_5c - (int)pPVar27" (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pPVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "piVar3->head = (Posf *)((int)piVar3->head - (int)pPVar27);" (assignment_expression "piVar3->head = (Posf *)((int)piVar3->head - (int)pPVar27)" (field_expression "piVar3->head" identifier -> field_identifier) = (cast_expression "(Posf *)((int)piVar3->head - (int)pPVar27)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar3->head - (int)pPVar27)" ( (binary_expression "(int)piVar3->head - (int)pPVar27" (cast_expression "(int)piVar3->head" ( (type_descriptor "int" primitive_type) ) (field_expression "piVar3->head" identifier -> field_identifier)) - (cast_expression "(int)pPVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "iVar6 = piVar3->status;" (assignment_expression "iVar6 = piVar3->status" identifier = (field_expression "piVar3->status" identifier -> field_identifier)) ;) (expression_statement "end = end + (int)pPVar27;" (assignment_expression "end = end + (int)pPVar27" identifier = (binary_expression "end + (int)pPVar27" identifier + (cast_expression "(int)pPVar27" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto LAB_000178c9;" goto statement_identifier ;)) (case_statement "case 0x3f35:\n        goto joined_r0x0001879b;" case number_literal : (goto_statement "goto joined_r0x0001879b;" goto statement_identifier ;)) (case_statement "case 0x3f36:\n        goto joined_r0x00018053;" case number_literal : (goto_statement "goto joined_r0x00018053;" goto statement_identifier ;)) (case_statement "case 0x3f37:\n        goto joined_r0x000180e3;" case number_literal : (goto_statement "goto joined_r0x000180e3;" goto statement_identifier ;)) (case_statement "case 0x3f38:\n        uVar7 = piVar3->pending;\n        if ((uVar7 & 0x400) == 0) goto LAB_000181ae;\n        if ((uint)cVar20 < 0x10) goto LAB_0001829d;\n        goto LAB_000182ea;" case number_literal : (expression_statement "uVar7 = piVar3->pending;" (assignment_expression "uVar7 = piVar3->pending" identifier = (field_expression "piVar3->pending" identifier -> field_identifier)) ;) (if_statement "if ((uVar7 & 0x400) == 0) goto LAB_000181ae;" if (parenthesized_expression "((uVar7 & 0x400) == 0)" ( (binary_expression "(uVar7 & 0x400) == 0" (parenthesized_expression "(uVar7 & 0x400)" ( (binary_expression "uVar7 & 0x400" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000181ae;" goto statement_identifier ;)) (if_statement "if ((uint)cVar20 < 0x10) goto LAB_0001829d;" if (parenthesized_expression "((uint)cVar20 < 0x10)" ( (binary_expression "(uint)cVar20 < 0x10" (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) )) (goto_statement "goto LAB_0001829d;" goto statement_identifier ;)) (goto_statement "goto LAB_000182ea;" goto statement_identifier ;)) (case_statement "case 0x3f39:\n        uVar7 = piVar3->pending;\n        goto LAB_000181cb;" case number_literal : (expression_statement "uVar7 = piVar3->pending;" (assignment_expression "uVar7 = piVar3->pending" identifier = (field_expression "piVar3->pending" identifier -> field_identifier)) ;) (goto_statement "goto LAB_000181cb;" goto statement_identifier ;)) (case_statement "case 0x3f3a:\n        uVar7 = piVar3->pending;\n        goto LAB_0001832f;" case number_literal : (expression_statement "uVar7 = piVar3->pending;" (assignment_expression "uVar7 = piVar3->pending" identifier = (field_expression "piVar3->pending" identifier -> field_identifier)) ;) (goto_statement "goto LAB_0001832f;" goto statement_identifier ;)) (case_statement "case 0x3f3b:\n        uVar7 = piVar3->pending;\n        goto LAB_0001835c;" case number_literal : (expression_statement "uVar7 = piVar3->pending;" (assignment_expression "uVar7 = piVar3->pending" identifier = (field_expression "piVar3->pending" identifier -> field_identifier)) ;) (goto_statement "goto LAB_0001835c;" goto statement_identifier ;)) (case_statement "case 0x3f3c:\n        uVar7 = piVar3->pending;\n        goto LAB_00018382;" case number_literal : (expression_statement "uVar7 = piVar3->pending;" (assignment_expression "uVar7 = piVar3->pending" identifier = (field_expression "piVar3->pending" identifier -> field_identifier)) ;) (goto_statement "goto LAB_00018382;" goto statement_identifier ;)) (case_statement "case 0x3f3d:\n        pgVar13 = local_64;\n        goto joined_r0x00017e43;" case number_literal : (expression_statement "pgVar13 = local_64;" (assignment_expression "pgVar13 = local_64" identifier = identifier) ;) (goto_statement "goto joined_r0x00017e43;" goto statement_identifier ;)) (case_statement "case 0x3f3e:\n        goto _L104;" case number_literal : (goto_statement "goto _L104;" goto statement_identifier ;)) (case_statement "case 0x3f3f:\n        goto _L105;" case number_literal : (goto_statement "goto _L105;" goto statement_identifier ;)) (case_statement "case 0x3f41:\n        goto _L107;" case number_literal : (goto_statement "goto _L107;" goto statement_identifier ;)) (case_statement "case 0x3f42:\n        pPVar27 = piVar3->head;\n        goto LAB_00018557;" case number_literal : (expression_statement "pPVar27 = piVar3->head;" (assignment_expression "pPVar27 = piVar3->head" identifier = (field_expression "piVar3->head" identifier -> field_identifier)) ;) (goto_statement "goto LAB_00018557;" goto statement_identifier ;)) (case_statement "case 0x3f43:\n        pPVar27 = piVar3->head;\n        goto LAB_00018562;" case number_literal : (expression_statement "pPVar27 = piVar3->head;" (assignment_expression "pPVar27 = piVar3->head" identifier = (field_expression "piVar3->head" identifier -> field_identifier)) ;) (goto_statement "goto LAB_00018562;" goto statement_identifier ;)) (case_statement "case 0x3f44:\n        goto _L110;" case number_literal : (goto_statement "goto _L110;" goto statement_identifier ;)) (case_statement "case 0x3f45:\n        uVar7 = piVar3->strstart;\n        uVar19 = piVar3->match_length;\n        if (uVar19 <= uVar7) goto LAB_00019253;\n        goto LAB_000184b2;" case number_literal : (expression_statement "uVar7 = piVar3->strstart;" (assignment_expression "uVar7 = piVar3->strstart" identifier = (field_expression "piVar3->strstart" identifier -> field_identifier)) ;) (expression_statement "uVar19 = piVar3->match_length;" (assignment_expression "uVar19 = piVar3->match_length" identifier = (field_expression "piVar3->match_length" identifier -> field_identifier)) ;) (if_statement "if (uVar19 <= uVar7) goto LAB_00019253;" if (parenthesized_expression "(uVar19 <= uVar7)" ( (binary_expression "uVar19 <= uVar7" identifier <= identifier) )) (goto_statement "goto LAB_00019253;" goto statement_identifier ;)) (goto_statement "goto LAB_000184b2;" goto statement_identifier ;)) (case_statement "case 0x3f46:\n        local_48 = piVar3->strstart;\n        goto LAB_000185db;" case number_literal : (expression_statement "local_48 = piVar3->strstart;" (assignment_expression "local_48 = piVar3->strstart" identifier = (field_expression "piVar3->strstart" identifier -> field_identifier)) ;) (goto_statement "goto LAB_000185db;" goto statement_identifier ;)) (case_statement "case 0x3f47:\n        goto _L113;" case number_literal : (goto_statement "goto _L113;" goto statement_identifier ;)) (case_statement "case 0x3f48:\n        goto _L114;" case number_literal : (goto_statement "goto _L114;" goto statement_identifier ;)) (case_statement "case 0x3f49:\n        cVar21 = (ct_data_s)piVar3->hash_size;\n        goto LAB_00017d07;" case number_literal : (expression_statement "cVar21 = (ct_data_s)piVar3->hash_size;" (assignment_expression "cVar21 = (ct_data_s)piVar3->hash_size" identifier = (cast_expression "(ct_data_s)piVar3->hash_size" ( (type_descriptor "ct_data_s" type_identifier) ) (field_expression "piVar3->hash_size" identifier -> field_identifier))) ;) (goto_statement "goto LAB_00017d07;" goto statement_identifier ;)) (case_statement "case 0x3f4a:\n        goto _L116;" case number_literal : (goto_statement "goto _L116;" goto statement_identifier ;)) (case_statement "case 0x3f4b:\n        cVar21 = (ct_data_s)piVar3->hash_size;\n        goto LAB_00017c87;" case number_literal : (expression_statement "cVar21 = (ct_data_s)piVar3->hash_size;" (assignment_expression "cVar21 = (ct_data_s)piVar3->hash_size" identifier = (cast_expression "(ct_data_s)piVar3->hash_size" ( (type_descriptor "ct_data_s" type_identifier) ) (field_expression "piVar3->hash_size" identifier -> field_identifier))) ;) (goto_statement "goto LAB_00017c87;" goto statement_identifier ;)) (case_statement "case 0x3f4c:\n        goto _L118;" case number_literal : (goto_statement "goto _L118;" goto statement_identifier ;)) (case_statement "case 0x3f4d:\n        goto LAB_00017b6a;" case number_literal : (goto_statement "goto LAB_00017b6a;" goto statement_identifier ;)) (case_statement "case 0x3f4e:\n_L120:\n        uVar7 = piVar3->pending_buf_size;\n        if (uVar7 == 0) goto LAB_00018e20;\n        if (0x1f < (uint)cVar20) goto LAB_00017996;\n        if (local_6c != (Posf *)0x0) goto LAB_00017970;\n        goto LAB_00017f30;" case number_literal : (labeled_statement "_L120:\n        uVar7 = piVar3->pending_buf_size;" statement_identifier : (expression_statement "uVar7 = piVar3->pending_buf_size;" (assignment_expression "uVar7 = piVar3->pending_buf_size" identifier = (field_expression "piVar3->pending_buf_size" identifier -> field_identifier)) ;)) (if_statement "if (uVar7 == 0) goto LAB_00018e20;" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00018e20;" goto statement_identifier ;)) (if_statement "if (0x1f < (uint)cVar20) goto LAB_00017996;" if (parenthesized_expression "(0x1f < (uint)cVar20)" ( (binary_expression "0x1f < (uint)cVar20" number_literal < (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (goto_statement "goto LAB_00017996;" goto statement_identifier ;)) (if_statement "if (local_6c != (Posf *)0x0) goto LAB_00017970;" if (parenthesized_expression "(local_6c != (Posf *)0x0)" ( (binary_expression "local_6c != (Posf *)0x0" identifier != (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00017970;" goto statement_identifier ;)) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (case_statement "case 0x3f4f:\n        uVar7 = piVar3->pending_buf_size;\n        goto LAB_000183ff;" case number_literal : (expression_statement "uVar7 = piVar3->pending_buf_size;" (assignment_expression "uVar7 = piVar3->pending_buf_size" identifier = (field_expression "piVar3->pending_buf_size" identifier -> field_identifier)) ;) (goto_statement "goto LAB_000183ff;" goto statement_identifier ;)) (case_statement "case 0x3f50:\n        pPVar27 = (Posf *)0x1;\n        goto LAB_00017f32;" case number_literal : (expression_statement "pPVar27 = (Posf *)0x1;" (assignment_expression "pPVar27 = (Posf *)0x1" identifier = (cast_expression "(Posf *)0x1" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;)) (case_statement "case 0x3f51:\n        goto _L590;" case number_literal : (goto_statement "goto _L590;" goto statement_identifier ;)) (case_statement "case 0x3f52:\n        goto _L593;" case number_literal : (goto_statement "goto _L593;" goto statement_identifier ;)) }))) })) })) (expression_statement "pPVar27 = (Posf *)0xfffffffe;" (assignment_expression "pPVar27 = (Posf *)0xfffffffe" identifier = (cast_expression "(Posf *)0xfffffffe" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00018778;" goto statement_identifier ;) (while_statement "while (local_6c != (Posf *)0x0) {\nLAB_00018ea0:\n    pbVar26 = local_60 + 1;\n    local_6c = (Posf *)((int)local_6c - 1);\n    bVar16 = cVar20.fc;\n    cVar20 = (ct_data_s)((int)cVar20 + 8);\n    local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n    local_60 = pbVar26;\n    if (0xf < (uint)cVar20) goto LAB_00018ec6;\n  }" while (parenthesized_expression "(local_6c != (Posf *)0x0)" ( (binary_expression "local_6c != (Posf *)0x0" identifier != (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00018ea0:\n    pbVar26 = local_60 + 1;\n    local_6c = (Posf *)((int)local_6c - 1);\n    bVar16 = cVar20.fc;\n    cVar20 = (ct_data_s)((int)cVar20 + 8);\n    local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n    local_60 = pbVar26;\n    if (0xf < (uint)cVar20) goto LAB_00018ec6;\n  }" { (labeled_statement "LAB_00018ea0:\n    pbVar26 = local_60 + 1;" statement_identifier : (expression_statement "pbVar26 = local_60 + 1;" (assignment_expression "pbVar26 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;)) (expression_statement "local_6c = (Posf *)((int)local_6c - 1);" (assignment_expression "local_6c = (Posf *)((int)local_6c - 1)" identifier = (cast_expression "(Posf *)((int)local_6c - 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - 1)" ( (binary_expression "(int)local_6c - 1" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "bVar16 = cVar20.fc;" (assignment_expression "bVar16 = cVar20.fc" identifier = (field_expression "cVar20.fc" identifier . field_identifier)) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 + 8);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 + 8)" identifier = (call_expression "(ct_data_s)((int)cVar20 + 8)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 + 8)" ( (binary_expression "(int)cVar20 + 8" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));" (assignment_expression "local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" identifier = (call_expression "(gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" ( (binary_expression "(int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f))" (cast_expression "(int)&local_64->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_64->text" & (field_expression "local_64->text" identifier -> field_identifier))) + (parenthesized_expression "((uint)*local_60 << (bVar16 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar16 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar16 & 0x1f)" ( (binary_expression "bVar16 & 0x1f" identifier & number_literal) ))) ))) )))) ;) (expression_statement "local_60 = pbVar26;" (assignment_expression "local_60 = pbVar26" identifier = identifier) ;) (if_statement "if (0xf < (uint)cVar20) goto LAB_00018ec6;" if (parenthesized_expression "(0xf < (uint)cVar20)" ( (binary_expression "0xf < (uint)cVar20" number_literal < (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (goto_statement "goto LAB_00018ec6;" goto statement_identifier ;)) })) (goto_statement "goto LAB_000190a2;" goto statement_identifier ;) identifier : if (parenthesized_expression "(((uVar7 & 2) == 0) || (local_64 != (gz_headerp)0x8b1f))" ( (binary_expression "((uVar7 & 2) == 0) || (local_64 != (gz_headerp)0x8b1f)" (parenthesized_expression "((uVar7 & 2) == 0)" ( (binary_expression "(uVar7 & 2) == 0" (parenthesized_expression "(uVar7 & 2)" ( (binary_expression "uVar7 & 2" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(local_64 != (gz_headerp)0x8b1f)" ( (binary_expression "local_64 != (gz_headerp)0x8b1f" identifier != (cast_expression "(gz_headerp)0x8b1f" ( (type_descriptor "gz_headerp" type_identifier) ) number_literal)) ))) )) (compound_statement "{\n    piVar3->pending = 0;\n    if (*(int *)&piVar3->method != 0) {\n      *(undefined4 *)(*(int *)&piVar3->method + 0x30) = 0xffffffff;\n    }\n    if (((uVar7 & 1) == 0) ||\n       (uVar7 = ((uint)local_64 & 0xff) * 0x100 + ((uint)local_64 >> 8),\n       uVar7 != (uVar7 / 0x1f) * 0x1f)) {\n      pcVar8 = "incorrect header check";\nLAB_000188eb:\n      pPVar27 = (Posf *)0xfffffffd;\n      strm->msg = pcVar8;\n      piVar3->status = 0x3f51;\n    }\n    else {\n      if (((uint)local_64 & 0xf) == 8) {\n        local_64 = (gz_headerp)((uint)local_64 >> 4);\n        cVar20 = (ct_data_s)((int)cVar20 - 4);\n        uVar7 = ((uint)local_64 & 0xf) + 8;\n        if (piVar3->last_flush == 0) {\n          piVar3->last_flush = uVar7;\n          if (0xf < uVar7) {\nLAB_00019879:\n            pcVar8 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar7) || ((uint)piVar3->last_flush < uVar7)) goto LAB_00019879;\n        piVar3->wrap = 1 << (sbyte)uVar7;\n        pgVar13 = (gz_headerp)adler32(0,(Bytef *)0x0,0);\n        piVar3->gzhead = pgVar13;\n        strm->adler = (uLong)pgVar13;\n        if (((uint)local_64 & 0x200) == 0) {\n          piVar3->status = 0x3f3f;\n          cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n          cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n          local_64 = (gz_headerp)0x0;\n          goto _L105;\n        }\n        local_64 = (gz_headerp)0x0;\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        piVar3->status = 0x3f3d;\n        do {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n          local_6c = (Posf *)((int)local_6c - 1);\n          bVar16 = cVar20.fc;\n          cVar20 = (ct_data_s)((int)cVar20 + 8);\n          pgVar13 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = pgVar13;\n        } while ((uint)cVar20 < 0x20);\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\n        pgVar13 = (gz_headerp)\n                  (((uint)pgVar13 & 0xff00) * 0x100 +\n                  (int)pgVar13 * 0x1000000 + ((uint)pgVar13 >> 0x18) + ((uint)pgVar13 >> 8 & 0xff00)\n                  );\n        piVar3->gzhead = pgVar13;\n        strm->adler = (uLong)pgVar13;\n        piVar3->status = 0x3f3e;\n_L104:\n        if (piVar3->pending_out != (Bytef *)0x0) {\n          pgVar13 = (gz_headerp)adler32(0,(Bytef *)0x0,0);\n          piVar3->gzhead = pgVar13;\n          strm->adler = (uLong)pgVar13;\n          piVar3->status = 0x3f3f;\n          goto _L105;\n        }\n        pPVar27 = (Posf *)0x2;\n        strm->next_out = end;\n        strm->avail_out = (uInt)local_5c;\n        strm->next_in = local_60;\n        strm->avail_in = (uInt)local_6c;\n        piVar3->prev = (Posf *)cVar20;\n        piVar3->window_size = (ulg)local_64;\n        goto LAB_00018778;\n      }\n      pcVar8 = "unknown compression method";\nLAB_00017b45:\n      pPVar27 = (Posf *)0xfffffffd;\n      strm->msg = pcVar8;\n      piVar3->status = 0x3f51;\n    }\n  }" { (expression_statement "piVar3->pending = 0;" (assignment_expression "piVar3->pending = 0" (field_expression "piVar3->pending" identifier -> field_identifier) = number_literal) ;) (if_statement "if (*(int *)&piVar3->method != 0) {\n      *(undefined4 *)(*(int *)&piVar3->method + 0x30) = 0xffffffff;\n    }" if (parenthesized_expression "(*(int *)&piVar3->method != 0)" ( (binary_expression "*(int *)&piVar3->method != 0" (pointer_expression "*(int *)&piVar3->method" * (cast_expression "(int *)&piVar3->method" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&piVar3->method" & (field_expression "piVar3->method" identifier -> field_identifier)))) != number_literal) )) (compound_statement "{\n      *(undefined4 *)(*(int *)&piVar3->method + 0x30) = 0xffffffff;\n    }" { (expression_statement "*(undefined4 *)(*(int *)&piVar3->method + 0x30) = 0xffffffff;" (assignment_expression "*(undefined4 *)(*(int *)&piVar3->method + 0x30) = 0xffffffff" (pointer_expression "*(undefined4 *)(*(int *)&piVar3->method + 0x30)" * (cast_expression "(undefined4 *)(*(int *)&piVar3->method + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)&piVar3->method + 0x30)" ( (binary_expression "*(int *)&piVar3->method + 0x30" (pointer_expression "*(int *)&piVar3->method" * (cast_expression "(int *)&piVar3->method" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&piVar3->method" & (field_expression "piVar3->method" identifier -> field_identifier)))) + number_literal) )))) = number_literal) ;) })) (if_statement "if (((uVar7 & 1) == 0) ||\n       (uVar7 = ((uint)local_64 & 0xff) * 0x100 + ((uint)local_64 >> 8),\n       uVar7 != (uVar7 / 0x1f) * 0x1f)) {\n      pcVar8 = "incorrect header check";\nLAB_000188eb:\n      pPVar27 = (Posf *)0xfffffffd;\n      strm->msg = pcVar8;\n      piVar3->status = 0x3f51;\n    }\n    else {\n      if (((uint)local_64 & 0xf) == 8) {\n        local_64 = (gz_headerp)((uint)local_64 >> 4);\n        cVar20 = (ct_data_s)((int)cVar20 - 4);\n        uVar7 = ((uint)local_64 & 0xf) + 8;\n        if (piVar3->last_flush == 0) {\n          piVar3->last_flush = uVar7;\n          if (0xf < uVar7) {\nLAB_00019879:\n            pcVar8 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar7) || ((uint)piVar3->last_flush < uVar7)) goto LAB_00019879;\n        piVar3->wrap = 1 << (sbyte)uVar7;\n        pgVar13 = (gz_headerp)adler32(0,(Bytef *)0x0,0);\n        piVar3->gzhead = pgVar13;\n        strm->adler = (uLong)pgVar13;\n        if (((uint)local_64 & 0x200) == 0) {\n          piVar3->status = 0x3f3f;\n          cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n          cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n          local_64 = (gz_headerp)0x0;\n          goto _L105;\n        }\n        local_64 = (gz_headerp)0x0;\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        piVar3->status = 0x3f3d;\n        do {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n          local_6c = (Posf *)((int)local_6c - 1);\n          bVar16 = cVar20.fc;\n          cVar20 = (ct_data_s)((int)cVar20 + 8);\n          pgVar13 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = pgVar13;\n        } while ((uint)cVar20 < 0x20);\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\n        pgVar13 = (gz_headerp)\n                  (((uint)pgVar13 & 0xff00) * 0x100 +\n                  (int)pgVar13 * 0x1000000 + ((uint)pgVar13 >> 0x18) + ((uint)pgVar13 >> 8 & 0xff00)\n                  );\n        piVar3->gzhead = pgVar13;\n        strm->adler = (uLong)pgVar13;\n        piVar3->status = 0x3f3e;\n_L104:\n        if (piVar3->pending_out != (Bytef *)0x0) {\n          pgVar13 = (gz_headerp)adler32(0,(Bytef *)0x0,0);\n          piVar3->gzhead = pgVar13;\n          strm->adler = (uLong)pgVar13;\n          piVar3->status = 0x3f3f;\n          goto _L105;\n        }\n        pPVar27 = (Posf *)0x2;\n        strm->next_out = end;\n        strm->avail_out = (uInt)local_5c;\n        strm->next_in = local_60;\n        strm->avail_in = (uInt)local_6c;\n        piVar3->prev = (Posf *)cVar20;\n        piVar3->window_size = (ulg)local_64;\n        goto LAB_00018778;\n      }\n      pcVar8 = "unknown compression method";\nLAB_00017b45:\n      pPVar27 = (Posf *)0xfffffffd;\n      strm->msg = pcVar8;\n      piVar3->status = 0x3f51;\n    }" if (parenthesized_expression "(((uVar7 & 1) == 0) ||\n       (uVar7 = ((uint)local_64 & 0xff) * 0x100 + ((uint)local_64 >> 8),\n       uVar7 != (uVar7 / 0x1f) * 0x1f))" ( (binary_expression "((uVar7 & 1) == 0) ||\n       (uVar7 = ((uint)local_64 & 0xff) * 0x100 + ((uint)local_64 >> 8),\n       uVar7 != (uVar7 / 0x1f) * 0x1f)" (parenthesized_expression "((uVar7 & 1) == 0)" ( (binary_expression "(uVar7 & 1) == 0" (parenthesized_expression "(uVar7 & 1)" ( (binary_expression "uVar7 & 1" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(uVar7 = ((uint)local_64 & 0xff) * 0x100 + ((uint)local_64 >> 8),\n       uVar7 != (uVar7 / 0x1f) * 0x1f)" ( (comma_expression "uVar7 = ((uint)local_64 & 0xff) * 0x100 + ((uint)local_64 >> 8),\n       uVar7 != (uVar7 / 0x1f) * 0x1f" (assignment_expression "uVar7 = ((uint)local_64 & 0xff) * 0x100 + ((uint)local_64 >> 8)" identifier = (binary_expression "((uint)local_64 & 0xff) * 0x100 + ((uint)local_64 >> 8)" (binary_expression "((uint)local_64 & 0xff) * 0x100" (parenthesized_expression "((uint)local_64 & 0xff)" ( (binary_expression "(uint)local_64 & 0xff" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) * number_literal) + (parenthesized_expression "((uint)local_64 >> 8)" ( (binary_expression "(uint)local_64 >> 8" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) , (binary_expression "uVar7 != (uVar7 / 0x1f) * 0x1f" identifier != (binary_expression "(uVar7 / 0x1f) * 0x1f" (parenthesized_expression "(uVar7 / 0x1f)" ( (binary_expression "uVar7 / 0x1f" identifier / number_literal) )) * number_literal))) ))) )) (compound_statement "{\n      pcVar8 = "incorrect header check";\nLAB_000188eb:\n      pPVar27 = (Posf *)0xfffffffd;\n      strm->msg = pcVar8;\n      piVar3->status = 0x3f51;\n    }" { (expression_statement "pcVar8 = "incorrect header check";" (assignment_expression "pcVar8 = "incorrect header check"" identifier = (string_literal ""incorrect header check"" " string_content ")) ;) (labeled_statement "LAB_000188eb:\n      pPVar27 = (Posf *)0xfffffffd;" statement_identifier : (expression_statement "pPVar27 = (Posf *)0xfffffffd;" (assignment_expression "pPVar27 = (Posf *)0xfffffffd" identifier = (cast_expression "(Posf *)0xfffffffd" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "strm->msg = pcVar8;" (assignment_expression "strm->msg = pcVar8" (field_expression "strm->msg" identifier -> field_identifier) = identifier) ;) (expression_statement "piVar3->status = 0x3f51;" (assignment_expression "piVar3->status = 0x3f51" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else {\n      if (((uint)local_64 & 0xf) == 8) {\n        local_64 = (gz_headerp)((uint)local_64 >> 4);\n        cVar20 = (ct_data_s)((int)cVar20 - 4);\n        uVar7 = ((uint)local_64 & 0xf) + 8;\n        if (piVar3->last_flush == 0) {\n          piVar3->last_flush = uVar7;\n          if (0xf < uVar7) {\nLAB_00019879:\n            pcVar8 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar7) || ((uint)piVar3->last_flush < uVar7)) goto LAB_00019879;\n        piVar3->wrap = 1 << (sbyte)uVar7;\n        pgVar13 = (gz_headerp)adler32(0,(Bytef *)0x0,0);\n        piVar3->gzhead = pgVar13;\n        strm->adler = (uLong)pgVar13;\n        if (((uint)local_64 & 0x200) == 0) {\n          piVar3->status = 0x3f3f;\n          cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n          cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n          local_64 = (gz_headerp)0x0;\n          goto _L105;\n        }\n        local_64 = (gz_headerp)0x0;\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        piVar3->status = 0x3f3d;\n        do {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n          local_6c = (Posf *)((int)local_6c - 1);\n          bVar16 = cVar20.fc;\n          cVar20 = (ct_data_s)((int)cVar20 + 8);\n          pgVar13 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = pgVar13;\n        } while ((uint)cVar20 < 0x20);\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\n        pgVar13 = (gz_headerp)\n                  (((uint)pgVar13 & 0xff00) * 0x100 +\n                  (int)pgVar13 * 0x1000000 + ((uint)pgVar13 >> 0x18) + ((uint)pgVar13 >> 8 & 0xff00)\n                  );\n        piVar3->gzhead = pgVar13;\n        strm->adler = (uLong)pgVar13;\n        piVar3->status = 0x3f3e;\n_L104:\n        if (piVar3->pending_out != (Bytef *)0x0) {\n          pgVar13 = (gz_headerp)adler32(0,(Bytef *)0x0,0);\n          piVar3->gzhead = pgVar13;\n          strm->adler = (uLong)pgVar13;\n          piVar3->status = 0x3f3f;\n          goto _L105;\n        }\n        pPVar27 = (Posf *)0x2;\n        strm->next_out = end;\n        strm->avail_out = (uInt)local_5c;\n        strm->next_in = local_60;\n        strm->avail_in = (uInt)local_6c;\n        piVar3->prev = (Posf *)cVar20;\n        piVar3->window_size = (ulg)local_64;\n        goto LAB_00018778;\n      }\n      pcVar8 = "unknown compression method";\nLAB_00017b45:\n      pPVar27 = (Posf *)0xfffffffd;\n      strm->msg = pcVar8;\n      piVar3->status = 0x3f51;\n    }" else (compound_statement "{\n      if (((uint)local_64 & 0xf) == 8) {\n        local_64 = (gz_headerp)((uint)local_64 >> 4);\n        cVar20 = (ct_data_s)((int)cVar20 - 4);\n        uVar7 = ((uint)local_64 & 0xf) + 8;\n        if (piVar3->last_flush == 0) {\n          piVar3->last_flush = uVar7;\n          if (0xf < uVar7) {\nLAB_00019879:\n            pcVar8 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar7) || ((uint)piVar3->last_flush < uVar7)) goto LAB_00019879;\n        piVar3->wrap = 1 << (sbyte)uVar7;\n        pgVar13 = (gz_headerp)adler32(0,(Bytef *)0x0,0);\n        piVar3->gzhead = pgVar13;\n        strm->adler = (uLong)pgVar13;\n        if (((uint)local_64 & 0x200) == 0) {\n          piVar3->status = 0x3f3f;\n          cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n          cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n          local_64 = (gz_headerp)0x0;\n          goto _L105;\n        }\n        local_64 = (gz_headerp)0x0;\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        piVar3->status = 0x3f3d;\n        do {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n          local_6c = (Posf *)((int)local_6c - 1);\n          bVar16 = cVar20.fc;\n          cVar20 = (ct_data_s)((int)cVar20 + 8);\n          pgVar13 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = pgVar13;\n        } while ((uint)cVar20 < 0x20);\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\n        pgVar13 = (gz_headerp)\n                  (((uint)pgVar13 & 0xff00) * 0x100 +\n                  (int)pgVar13 * 0x1000000 + ((uint)pgVar13 >> 0x18) + ((uint)pgVar13 >> 8 & 0xff00)\n                  );\n        piVar3->gzhead = pgVar13;\n        strm->adler = (uLong)pgVar13;\n        piVar3->status = 0x3f3e;\n_L104:\n        if (piVar3->pending_out != (Bytef *)0x0) {\n          pgVar13 = (gz_headerp)adler32(0,(Bytef *)0x0,0);\n          piVar3->gzhead = pgVar13;\n          strm->adler = (uLong)pgVar13;\n          piVar3->status = 0x3f3f;\n          goto _L105;\n        }\n        pPVar27 = (Posf *)0x2;\n        strm->next_out = end;\n        strm->avail_out = (uInt)local_5c;\n        strm->next_in = local_60;\n        strm->avail_in = (uInt)local_6c;\n        piVar3->prev = (Posf *)cVar20;\n        piVar3->window_size = (ulg)local_64;\n        goto LAB_00018778;\n      }\n      pcVar8 = "unknown compression method";\nLAB_00017b45:\n      pPVar27 = (Posf *)0xfffffffd;\n      strm->msg = pcVar8;\n      piVar3->status = 0x3f51;\n    }" { (if_statement "if (((uint)local_64 & 0xf) == 8) {\n        local_64 = (gz_headerp)((uint)local_64 >> 4);\n        cVar20 = (ct_data_s)((int)cVar20 - 4);\n        uVar7 = ((uint)local_64 & 0xf) + 8;\n        if (piVar3->last_flush == 0) {\n          piVar3->last_flush = uVar7;\n          if (0xf < uVar7) {\nLAB_00019879:\n            pcVar8 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar7) || ((uint)piVar3->last_flush < uVar7)) goto LAB_00019879;\n        piVar3->wrap = 1 << (sbyte)uVar7;\n        pgVar13 = (gz_headerp)adler32(0,(Bytef *)0x0,0);\n        piVar3->gzhead = pgVar13;\n        strm->adler = (uLong)pgVar13;\n        if (((uint)local_64 & 0x200) == 0) {\n          piVar3->status = 0x3f3f;\n          cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n          cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n          local_64 = (gz_headerp)0x0;\n          goto _L105;\n        }\n        local_64 = (gz_headerp)0x0;\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        piVar3->status = 0x3f3d;\n        do {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n          local_6c = (Posf *)((int)local_6c - 1);\n          bVar16 = cVar20.fc;\n          cVar20 = (ct_data_s)((int)cVar20 + 8);\n          pgVar13 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = pgVar13;\n        } while ((uint)cVar20 < 0x20);\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\n        pgVar13 = (gz_headerp)\n                  (((uint)pgVar13 & 0xff00) * 0x100 +\n                  (int)pgVar13 * 0x1000000 + ((uint)pgVar13 >> 0x18) + ((uint)pgVar13 >> 8 & 0xff00)\n                  );\n        piVar3->gzhead = pgVar13;\n        strm->adler = (uLong)pgVar13;\n        piVar3->status = 0x3f3e;\n_L104:\n        if (piVar3->pending_out != (Bytef *)0x0) {\n          pgVar13 = (gz_headerp)adler32(0,(Bytef *)0x0,0);\n          piVar3->gzhead = pgVar13;\n          strm->adler = (uLong)pgVar13;\n          piVar3->status = 0x3f3f;\n          goto _L105;\n        }\n        pPVar27 = (Posf *)0x2;\n        strm->next_out = end;\n        strm->avail_out = (uInt)local_5c;\n        strm->next_in = local_60;\n        strm->avail_in = (uInt)local_6c;\n        piVar3->prev = (Posf *)cVar20;\n        piVar3->window_size = (ulg)local_64;\n        goto LAB_00018778;\n      }" if (parenthesized_expression "(((uint)local_64 & 0xf) == 8)" ( (binary_expression "((uint)local_64 & 0xf) == 8" (parenthesized_expression "((uint)local_64 & 0xf)" ( (binary_expression "(uint)local_64 & 0xf" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n        local_64 = (gz_headerp)((uint)local_64 >> 4);\n        cVar20 = (ct_data_s)((int)cVar20 - 4);\n        uVar7 = ((uint)local_64 & 0xf) + 8;\n        if (piVar3->last_flush == 0) {\n          piVar3->last_flush = uVar7;\n          if (0xf < uVar7) {\nLAB_00019879:\n            pcVar8 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar7) || ((uint)piVar3->last_flush < uVar7)) goto LAB_00019879;\n        piVar3->wrap = 1 << (sbyte)uVar7;\n        pgVar13 = (gz_headerp)adler32(0,(Bytef *)0x0,0);\n        piVar3->gzhead = pgVar13;\n        strm->adler = (uLong)pgVar13;\n        if (((uint)local_64 & 0x200) == 0) {\n          piVar3->status = 0x3f3f;\n          cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n          cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n          local_64 = (gz_headerp)0x0;\n          goto _L105;\n        }\n        local_64 = (gz_headerp)0x0;\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        piVar3->status = 0x3f3d;\n        do {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n          local_6c = (Posf *)((int)local_6c - 1);\n          bVar16 = cVar20.fc;\n          cVar20 = (ct_data_s)((int)cVar20 + 8);\n          pgVar13 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = pgVar13;\n        } while ((uint)cVar20 < 0x20);\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\n        pgVar13 = (gz_headerp)\n                  (((uint)pgVar13 & 0xff00) * 0x100 +\n                  (int)pgVar13 * 0x1000000 + ((uint)pgVar13 >> 0x18) + ((uint)pgVar13 >> 8 & 0xff00)\n                  );\n        piVar3->gzhead = pgVar13;\n        strm->adler = (uLong)pgVar13;\n        piVar3->status = 0x3f3e;\n_L104:\n        if (piVar3->pending_out != (Bytef *)0x0) {\n          pgVar13 = (gz_headerp)adler32(0,(Bytef *)0x0,0);\n          piVar3->gzhead = pgVar13;\n          strm->adler = (uLong)pgVar13;\n          piVar3->status = 0x3f3f;\n          goto _L105;\n        }\n        pPVar27 = (Posf *)0x2;\n        strm->next_out = end;\n        strm->avail_out = (uInt)local_5c;\n        strm->next_in = local_60;\n        strm->avail_in = (uInt)local_6c;\n        piVar3->prev = (Posf *)cVar20;\n        piVar3->window_size = (ulg)local_64;\n        goto LAB_00018778;\n      }" { (expression_statement "local_64 = (gz_headerp)((uint)local_64 >> 4);" (assignment_expression "local_64 = (gz_headerp)((uint)local_64 >> 4)" identifier = (call_expression "(gz_headerp)((uint)local_64 >> 4)" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((uint)local_64 >> 4)" ( (binary_expression "(uint)local_64 >> 4" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 - 4);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 - 4)" identifier = (call_expression "(ct_data_s)((int)cVar20 - 4)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 - 4)" ( (binary_expression "(int)cVar20 - 4" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "uVar7 = ((uint)local_64 & 0xf) + 8;" (assignment_expression "uVar7 = ((uint)local_64 & 0xf) + 8" identifier = (binary_expression "((uint)local_64 & 0xf) + 8" (parenthesized_expression "((uint)local_64 & 0xf)" ( (binary_expression "(uint)local_64 & 0xf" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) + number_literal)) ;) (if_statement "if (piVar3->last_flush == 0) {\n          piVar3->last_flush = uVar7;\n          if (0xf < uVar7) {\nLAB_00019879:\n            pcVar8 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar7) || ((uint)piVar3->last_flush < uVar7)) goto LAB_00019879;" if (parenthesized_expression "(piVar3->last_flush == 0)" ( (binary_expression "piVar3->last_flush == 0" (field_expression "piVar3->last_flush" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n          piVar3->last_flush = uVar7;\n          if (0xf < uVar7) {\nLAB_00019879:\n            pcVar8 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }" { (expression_statement "piVar3->last_flush = uVar7;" (assignment_expression "piVar3->last_flush = uVar7" (field_expression "piVar3->last_flush" identifier -> field_identifier) = identifier) ;) (if_statement "if (0xf < uVar7) {\nLAB_00019879:\n            pcVar8 = "invalid window size";\n            goto LAB_00017b45;\n          }" if (parenthesized_expression "(0xf < uVar7)" ( (binary_expression "0xf < uVar7" number_literal < identifier) )) (compound_statement "{\nLAB_00019879:\n            pcVar8 = "invalid window size";\n            goto LAB_00017b45;\n          }" { (labeled_statement "LAB_00019879:\n            pcVar8 = "invalid window size";" statement_identifier : (expression_statement "pcVar8 = "invalid window size";" (assignment_expression "pcVar8 = "invalid window size"" identifier = (string_literal ""invalid window size"" " string_content ")) ;)) (goto_statement "goto LAB_00017b45;" goto statement_identifier ;) })) }) (else_clause "else if ((0xf < uVar7) || ((uint)piVar3->last_flush < uVar7)) goto LAB_00019879;" else (if_statement "if ((0xf < uVar7) || ((uint)piVar3->last_flush < uVar7)) goto LAB_00019879;" if (parenthesized_expression "((0xf < uVar7) || ((uint)piVar3->last_flush < uVar7))" ( (binary_expression "(0xf < uVar7) || ((uint)piVar3->last_flush < uVar7)" (parenthesized_expression "(0xf < uVar7)" ( (binary_expression "0xf < uVar7" number_literal < identifier) )) || (parenthesized_expression "((uint)piVar3->last_flush < uVar7)" ( (binary_expression "(uint)piVar3->last_flush < uVar7" (cast_expression "(uint)piVar3->last_flush" ( (type_descriptor "uint" type_identifier) ) (field_expression "piVar3->last_flush" identifier -> field_identifier)) < identifier) ))) )) (goto_statement "goto LAB_00019879;" goto statement_identifier ;)))) (expression_statement "piVar3->wrap = 1 << (sbyte)uVar7;" (assignment_expression "piVar3->wrap = 1 << (sbyte)uVar7" (field_expression "piVar3->wrap" identifier -> field_identifier) = (binary_expression "1 << (sbyte)uVar7" number_literal << (cast_expression "(sbyte)uVar7" ( (type_descriptor "sbyte" type_identifier) ) identifier))) ;) (expression_statement "pgVar13 = (gz_headerp)adler32(0,(Bytef *)0x0,0);" (assignment_expression "pgVar13 = (gz_headerp)adler32(0,(Bytef *)0x0,0)" identifier = (cast_expression "(gz_headerp)adler32(0,(Bytef *)0x0,0)" ( (type_descriptor "gz_headerp" type_identifier) ) (call_expression "adler32(0,(Bytef *)0x0,0)" identifier (argument_list "(0,(Bytef *)0x0,0)" ( number_literal , (cast_expression "(Bytef *)0x0" ( (type_descriptor "Bytef *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))))) ;) (expression_statement "piVar3->gzhead = pgVar13;" (assignment_expression "piVar3->gzhead = pgVar13" (field_expression "piVar3->gzhead" identifier -> field_identifier) = identifier) ;) (expression_statement "strm->adler = (uLong)pgVar13;" (assignment_expression "strm->adler = (uLong)pgVar13" (field_expression "strm->adler" identifier -> field_identifier) = (cast_expression "(uLong)pgVar13" ( (type_descriptor "uLong" type_identifier) ) identifier)) ;) (if_statement "if (((uint)local_64 & 0x200) == 0) {\n          piVar3->status = 0x3f3f;\n          cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n          cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n          local_64 = (gz_headerp)0x0;\n          goto _L105;\n        }" if (parenthesized_expression "(((uint)local_64 & 0x200) == 0)" ( (binary_expression "((uint)local_64 & 0x200) == 0" (parenthesized_expression "((uint)local_64 & 0x200)" ( (binary_expression "(uint)local_64 & 0x200" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n          piVar3->status = 0x3f3f;\n          cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n          cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n          local_64 = (gz_headerp)0x0;\n          goto _L105;\n        }" { (expression_statement "piVar3->status = 0x3f3f;" (assignment_expression "piVar3->status = 0x3f3f" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (expression_statement "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;" (assignment_expression "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0" (field_expression "cVar20.fc" identifier . field_identifier) = (cast_expression "(anon_union_2_2_314cc5cc_for_fc)0x0" ( (type_descriptor "anon_union_2_2_314cc5cc_for_fc" type_identifier) ) number_literal)) ;) (expression_statement "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;" (assignment_expression "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0" (field_expression "cVar20.dl" identifier . field_identifier) = (cast_expression "(anon_union_2_2_43a7fb4f_for_dl)0x0" ( (type_descriptor "anon_union_2_2_43a7fb4f_for_dl" type_identifier) ) number_literal)) ;) (expression_statement "local_64 = (gz_headerp)0x0;" (assignment_expression "local_64 = (gz_headerp)0x0" identifier = (cast_expression "(gz_headerp)0x0" ( (type_descriptor "gz_headerp" type_identifier) ) number_literal)) ;) (goto_statement "goto _L105;" goto statement_identifier ;) })) (expression_statement "local_64 = (gz_headerp)0x0;" (assignment_expression "local_64 = (gz_headerp)0x0" identifier = (cast_expression "(gz_headerp)0x0" ( (type_descriptor "gz_headerp" type_identifier) ) number_literal)) ;) (expression_statement "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;" (assignment_expression "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0" (field_expression "cVar20.fc" identifier . field_identifier) = (cast_expression "(anon_union_2_2_314cc5cc_for_fc)0x0" ( (type_descriptor "anon_union_2_2_314cc5cc_for_fc" type_identifier) ) number_literal)) ;) (expression_statement "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;" (assignment_expression "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0" (field_expression "cVar20.dl" identifier . field_identifier) = (cast_expression "(anon_union_2_2_43a7fb4f_for_dl)0x0" ( (type_descriptor "anon_union_2_2_43a7fb4f_for_dl" type_identifier) ) number_literal)) ;) (expression_statement "piVar3->status = 0x3f3d;" (assignment_expression "piVar3->status = 0x3f3d" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (do_statement "do {\n          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n          local_6c = (Posf *)((int)local_6c - 1);\n          bVar16 = cVar20.fc;\n          cVar20 = (ct_data_s)((int)cVar20 + 8);\n          pgVar13 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = pgVar13;\n        } while ((uint)cVar20 < 0x20);" do (compound_statement "{\n          if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n          local_6c = (Posf *)((int)local_6c - 1);\n          bVar16 = cVar20.fc;\n          cVar20 = (ct_data_s)((int)cVar20 + 8);\n          pgVar13 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = pgVar13;\n        }" { (if_statement "if (local_6c == (Posf *)0x0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "local_6c = (Posf *)((int)local_6c - 1);" (assignment_expression "local_6c = (Posf *)((int)local_6c - 1)" identifier = (cast_expression "(Posf *)((int)local_6c - 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - 1)" ( (binary_expression "(int)local_6c - 1" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "bVar16 = cVar20.fc;" (assignment_expression "bVar16 = cVar20.fc" identifier = (field_expression "cVar20.fc" identifier . field_identifier)) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 + 8);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 + 8)" identifier = (call_expression "(ct_data_s)((int)cVar20 + 8)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 + 8)" ( (binary_expression "(int)cVar20 + 8" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pgVar13 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));" (assignment_expression "pgVar13 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" identifier = (call_expression "(gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" ( (binary_expression "(int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f))" (cast_expression "(int)&local_64->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_64->text" & (field_expression "local_64->text" identifier -> field_identifier))) + (parenthesized_expression "((uint)*local_60 << (bVar16 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar16 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar16 & 0x1f)" ( (binary_expression "bVar16 & 0x1f" identifier & number_literal) ))) ))) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (labeled_statement "joined_r0x00017e43:\n          local_64 = pgVar13;" statement_identifier : (expression_statement "local_64 = pgVar13;" (assignment_expression "local_64 = pgVar13" identifier = identifier) ;)) }) while (parenthesized_expression "((uint)cVar20 < 0x20)" ( (binary_expression "(uint)cVar20 < 0x20" (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) )) ;) (expression_statement "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;" (assignment_expression "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0" (field_expression "cVar20.fc" identifier . field_identifier) = (cast_expression "(anon_union_2_2_314cc5cc_for_fc)0x0" ( (type_descriptor "anon_union_2_2_314cc5cc_for_fc" type_identifier) ) number_literal)) ;) (expression_statement "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;" (assignment_expression "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0" (field_expression "cVar20.dl" identifier . field_identifier) = (cast_expression "(anon_union_2_2_43a7fb4f_for_dl)0x0" ( (type_descriptor "anon_union_2_2_43a7fb4f_for_dl" type_identifier) ) number_literal)) ;) (expression_statement "local_64 = (gz_headerp)0x0;" (assignment_expression "local_64 = (gz_headerp)0x0" identifier = (cast_expression "(gz_headerp)0x0" ( (type_descriptor "gz_headerp" type_identifier) ) number_literal)) ;) (expression_statement "pgVar13 = (gz_headerp)\n                  (((uint)pgVar13 & 0xff00) * 0x100 +\n                  (int)pgVar13 * 0x1000000 + ((uint)pgVar13 >> 0x18) + ((uint)pgVar13 >> 8 & 0xff00)\n                  );" (assignment_expression "pgVar13 = (gz_headerp)\n                  (((uint)pgVar13 & 0xff00) * 0x100 +\n                  (int)pgVar13 * 0x1000000 + ((uint)pgVar13 >> 0x18) + ((uint)pgVar13 >> 8 & 0xff00)\n                  )" identifier = (call_expression "(gz_headerp)\n                  (((uint)pgVar13 & 0xff00) * 0x100 +\n                  (int)pgVar13 * 0x1000000 + ((uint)pgVar13 >> 0x18) + ((uint)pgVar13 >> 8 & 0xff00)\n                  )" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "(((uint)pgVar13 & 0xff00) * 0x100 +\n                  (int)pgVar13 * 0x1000000 + ((uint)pgVar13 >> 0x18) + ((uint)pgVar13 >> 8 & 0xff00)\n                  )" ( (binary_expression "((uint)pgVar13 & 0xff00) * 0x100 +\n                  (int)pgVar13 * 0x1000000 + ((uint)pgVar13 >> 0x18) + ((uint)pgVar13 >> 8 & 0xff00)" (binary_expression "((uint)pgVar13 & 0xff00) * 0x100 +\n                  (int)pgVar13 * 0x1000000 + ((uint)pgVar13 >> 0x18)" (binary_expression "((uint)pgVar13 & 0xff00) * 0x100 +\n                  (int)pgVar13 * 0x1000000" (binary_expression "((uint)pgVar13 & 0xff00) * 0x100" (parenthesized_expression "((uint)pgVar13 & 0xff00)" ( (binary_expression "(uint)pgVar13 & 0xff00" (cast_expression "(uint)pgVar13" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) * number_literal) + (binary_expression "(int)pgVar13 * 0x1000000" (cast_expression "(int)pgVar13" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + (parenthesized_expression "((uint)pgVar13 >> 0x18)" ( (binary_expression "(uint)pgVar13 >> 0x18" (cast_expression "(uint)pgVar13" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) + (parenthesized_expression "((uint)pgVar13 >> 8 & 0xff00)" ( (binary_expression "(uint)pgVar13 >> 8 & 0xff00" (binary_expression "(uint)pgVar13 >> 8" (cast_expression "(uint)pgVar13" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) & number_literal) ))) )))) ;) (expression_statement "piVar3->gzhead = pgVar13;" (assignment_expression "piVar3->gzhead = pgVar13" (field_expression "piVar3->gzhead" identifier -> field_identifier) = identifier) ;) (expression_statement "strm->adler = (uLong)pgVar13;" (assignment_expression "strm->adler = (uLong)pgVar13" (field_expression "strm->adler" identifier -> field_identifier) = (cast_expression "(uLong)pgVar13" ( (type_descriptor "uLong" type_identifier) ) identifier)) ;) (expression_statement "piVar3->status = 0x3f3e;" (assignment_expression "piVar3->status = 0x3f3e" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (labeled_statement "_L104:\n        if (piVar3->pending_out != (Bytef *)0x0) {\n          pgVar13 = (gz_headerp)adler32(0,(Bytef *)0x0,0);\n          piVar3->gzhead = pgVar13;\n          strm->adler = (uLong)pgVar13;\n          piVar3->status = 0x3f3f;\n          goto _L105;\n        }" statement_identifier : (if_statement "if (piVar3->pending_out != (Bytef *)0x0) {\n          pgVar13 = (gz_headerp)adler32(0,(Bytef *)0x0,0);\n          piVar3->gzhead = pgVar13;\n          strm->adler = (uLong)pgVar13;\n          piVar3->status = 0x3f3f;\n          goto _L105;\n        }" if (parenthesized_expression "(piVar3->pending_out != (Bytef *)0x0)" ( (binary_expression "piVar3->pending_out != (Bytef *)0x0" (field_expression "piVar3->pending_out" identifier -> field_identifier) != (cast_expression "(Bytef *)0x0" ( (type_descriptor "Bytef *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pgVar13 = (gz_headerp)adler32(0,(Bytef *)0x0,0);\n          piVar3->gzhead = pgVar13;\n          strm->adler = (uLong)pgVar13;\n          piVar3->status = 0x3f3f;\n          goto _L105;\n        }" { (expression_statement "pgVar13 = (gz_headerp)adler32(0,(Bytef *)0x0,0);" (assignment_expression "pgVar13 = (gz_headerp)adler32(0,(Bytef *)0x0,0)" identifier = (cast_expression "(gz_headerp)adler32(0,(Bytef *)0x0,0)" ( (type_descriptor "gz_headerp" type_identifier) ) (call_expression "adler32(0,(Bytef *)0x0,0)" identifier (argument_list "(0,(Bytef *)0x0,0)" ( number_literal , (cast_expression "(Bytef *)0x0" ( (type_descriptor "Bytef *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))))) ;) (expression_statement "piVar3->gzhead = pgVar13;" (assignment_expression "piVar3->gzhead = pgVar13" (field_expression "piVar3->gzhead" identifier -> field_identifier) = identifier) ;) (expression_statement "strm->adler = (uLong)pgVar13;" (assignment_expression "strm->adler = (uLong)pgVar13" (field_expression "strm->adler" identifier -> field_identifier) = (cast_expression "(uLong)pgVar13" ( (type_descriptor "uLong" type_identifier) ) identifier)) ;) (expression_statement "piVar3->status = 0x3f3f;" (assignment_expression "piVar3->status = 0x3f3f" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (goto_statement "goto _L105;" goto statement_identifier ;) }))) (expression_statement "pPVar27 = (Posf *)0x2;" (assignment_expression "pPVar27 = (Posf *)0x2" identifier = (cast_expression "(Posf *)0x2" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "strm->next_out = end;" (assignment_expression "strm->next_out = end" (field_expression "strm->next_out" identifier -> field_identifier) = identifier) ;) (expression_statement "strm->avail_out = (uInt)local_5c;" (assignment_expression "strm->avail_out = (uInt)local_5c" (field_expression "strm->avail_out" identifier -> field_identifier) = (cast_expression "(uInt)local_5c" ( (type_descriptor "uInt" type_identifier) ) identifier)) ;) (expression_statement "strm->next_in = local_60;" (assignment_expression "strm->next_in = local_60" (field_expression "strm->next_in" identifier -> field_identifier) = identifier) ;) (expression_statement "strm->avail_in = (uInt)local_6c;" (assignment_expression "strm->avail_in = (uInt)local_6c" (field_expression "strm->avail_in" identifier -> field_identifier) = (cast_expression "(uInt)local_6c" ( (type_descriptor "uInt" type_identifier) ) identifier)) ;) (expression_statement "piVar3->prev = (Posf *)cVar20;" (assignment_expression "piVar3->prev = (Posf *)cVar20" (field_expression "piVar3->prev" identifier -> field_identifier) = (cast_expression "(Posf *)cVar20" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "piVar3->window_size = (ulg)local_64;" (assignment_expression "piVar3->window_size = (ulg)local_64" (field_expression "piVar3->window_size" identifier -> field_identifier) = (cast_expression "(ulg)local_64" ( (type_descriptor "ulg" type_identifier) ) identifier)) ;) (goto_statement "goto LAB_00018778;" goto statement_identifier ;) })) (expression_statement "pcVar8 = "unknown compression method";" (assignment_expression "pcVar8 = "unknown compression method"" identifier = (string_literal ""unknown compression method"" " string_content ")) ;) (labeled_statement "LAB_00017b45:\n      pPVar27 = (Posf *)0xfffffffd;" statement_identifier : (expression_statement "pPVar27 = (Posf *)0xfffffffd;" (assignment_expression "pPVar27 = (Posf *)0xfffffffd" identifier = (cast_expression "(Posf *)0xfffffffd" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "strm->msg = pcVar8;" (assignment_expression "strm->msg = pcVar8" (field_expression "strm->msg" identifier -> field_identifier) = identifier) ;) (expression_statement "piVar3->status = 0x3f51;" (assignment_expression "piVar3->status = 0x3f51" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) }))) }) else { (if_statement "if (piVar3->last_flush == 0) {\n      piVar3->last_flush = 0xf;\n    }" if (parenthesized_expression "(piVar3->last_flush == 0)" ( (binary_expression "piVar3->last_flush == 0" (field_expression "piVar3->last_flush" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n      piVar3->last_flush = 0xf;\n    }" { (expression_statement "piVar3->last_flush = 0xf;" (assignment_expression "piVar3->last_flush = 0xf" (field_expression "piVar3->last_flush" identifier -> field_identifier) = number_literal) ;) })) (expression_statement "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;" (assignment_expression "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0" (field_expression "cVar20.fc" identifier . field_identifier) = (cast_expression "(anon_union_2_2_314cc5cc_for_fc)0x0" ( (type_descriptor "anon_union_2_2_314cc5cc_for_fc" type_identifier) ) number_literal)) ;) (expression_statement "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;" (assignment_expression "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0" (field_expression "cVar20.dl" identifier . field_identifier) = (cast_expression "(anon_union_2_2_43a7fb4f_for_dl)0x0" ( (type_descriptor "anon_union_2_2_43a7fb4f_for_dl" type_identifier) ) number_literal)) ;) (expression_statement "pgVar13 = (gz_headerp)crc32(0,(uchar *)0x0,0);" (assignment_expression "pgVar13 = (gz_headerp)crc32(0,(uchar *)0x0,0)" identifier = (cast_expression "(gz_headerp)crc32(0,(uchar *)0x0,0)" ( (type_descriptor "gz_headerp" type_identifier) ) (call_expression "crc32(0,(uchar *)0x0,0)" identifier (argument_list "(0,(uchar *)0x0,0)" ( number_literal , (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))))) ;) (expression_statement "hbuf[0] = '\x1f';" (assignment_expression "hbuf[0] = '\x1f'" (subscript_expression "hbuf[0]" identifier [ number_literal ]) = (char_literal "'\x1f'" ' escape_sequence ')) ;) (expression_statement "hbuf[1] = 0x8b;" (assignment_expression "hbuf[1] = 0x8b" (subscript_expression "hbuf[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar3->gzhead = pgVar13;" (assignment_expression "piVar3->gzhead = pgVar13" (field_expression "piVar3->gzhead" identifier -> field_identifier) = identifier) ;) (expression_statement "pgVar13 = (gz_headerp)crc32((ulong)pgVar13,hbuf,2);" (assignment_expression "pgVar13 = (gz_headerp)crc32((ulong)pgVar13,hbuf,2)" identifier = (cast_expression "(gz_headerp)crc32((ulong)pgVar13,hbuf,2)" ( (type_descriptor "gz_headerp" type_identifier) ) (call_expression "crc32((ulong)pgVar13,hbuf,2)" identifier (argument_list "((ulong)pgVar13,hbuf,2)" ( (cast_expression "(ulong)pgVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) , identifier , number_literal ))))) ;) (expression_statement "piVar3->gzhead = pgVar13;" (assignment_expression "piVar3->gzhead = pgVar13" (field_expression "piVar3->gzhead" identifier -> field_identifier) = identifier) ;) (expression_statement "piVar3->status = 0x3f35;" (assignment_expression "piVar3->status = 0x3f35" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (expression_statement "local_64 = (gz_headerp)0x0;" (assignment_expression "local_64 = (gz_headerp)0x0" identifier = (cast_expression "(gz_headerp)0x0" ( (type_descriptor "gz_headerp" type_identifier) ) number_literal)) ;) do { (if_statement "if (local_6c == (Posf *)0x0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "local_6c = (Posf *)((int)local_6c - 1);" (assignment_expression "local_6c = (Posf *)((int)local_6c - 1)" identifier = (cast_expression "(Posf *)((int)local_6c - 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - 1)" ( (binary_expression "(int)local_6c - 1" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "bVar16 = cVar20.fc;" (assignment_expression "bVar16 = cVar20.fc" identifier = (field_expression "cVar20.fc" identifier . field_identifier)) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 + 8);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 + 8)" identifier = (call_expression "(ct_data_s)((int)cVar20 + 8)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 + 8)" ( (binary_expression "(int)cVar20 + 8" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));" (assignment_expression "local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" identifier = (call_expression "(gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" ( (binary_expression "(int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f))" (cast_expression "(int)&local_64->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_64->text" & (field_expression "local_64->text" identifier -> field_identifier))) + (parenthesized_expression "((uint)*local_60 << (bVar16 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar16 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar16 & 0x1f)" ( (binary_expression "bVar16 & 0x1f" identifier & number_literal) ))) ))) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (labeled_statement "joined_r0x0001879b:\n    } while ((uint)cVar20 < 0x10);" statement_identifier : (ERROR "}" }) (while_statement "while ((uint)cVar20 < 0x10);" while (parenthesized_expression "((uint)cVar20 < 0x10)" ( (binary_expression "(uint)cVar20 < 0x10" (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) )) (expression_statement ";" ;))) (expression_statement "piVar3->pending = (ulg)local_64;" (assignment_expression "piVar3->pending = (ulg)local_64" (field_expression "piVar3->pending" identifier -> field_identifier) = (cast_expression "(ulg)local_64" ( (type_descriptor "ulg" type_identifier) ) identifier)) ;) if (parenthesized_expression "((char)local_64 == '\b')" ( (binary_expression "(char)local_64 == '\b'" (cast_expression "(char)local_64" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\b'" ' escape_sequence ')) )) { (if_statement "if (((uint)local_64 & 0xe000) != 0) {\n        pcVar8 = "unknown header flags set";\n        goto LAB_000188eb;\n      }" if (parenthesized_expression "(((uint)local_64 & 0xe000) != 0)" ( (binary_expression "((uint)local_64 & 0xe000) != 0" (parenthesized_expression "((uint)local_64 & 0xe000)" ( (binary_expression "(uint)local_64 & 0xe000" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        pcVar8 = "unknown header flags set";\n        goto LAB_000188eb;\n      }" { (expression_statement "pcVar8 = "unknown header flags set";" (assignment_expression "pcVar8 = "unknown header flags set"" identifier = (string_literal ""unknown header flags set"" " string_content ")) ;) (goto_statement "goto LAB_000188eb;" goto statement_identifier ;) })) (if_statement "if (*(uint **)&piVar3->method != (uint *)0x0) {\n        **(uint **)&piVar3->method = (uint)local_64 >> 8 & 1;\n      }" if (parenthesized_expression "(*(uint **)&piVar3->method != (uint *)0x0)" ( (binary_expression "*(uint **)&piVar3->method != (uint *)0x0" (pointer_expression "*(uint **)&piVar3->method" * (cast_expression "(uint **)&piVar3->method" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&piVar3->method" & (field_expression "piVar3->method" identifier -> field_identifier)))) != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        **(uint **)&piVar3->method = (uint)local_64 >> 8 & 1;\n      }" { (expression_statement "**(uint **)&piVar3->method = (uint)local_64 >> 8 & 1;" (assignment_expression "**(uint **)&piVar3->method = (uint)local_64 >> 8 & 1" (pointer_expression "**(uint **)&piVar3->method" * (pointer_expression "*(uint **)&piVar3->method" * (cast_expression "(uint **)&piVar3->method" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&piVar3->method" & (field_expression "piVar3->method" identifier -> field_identifier))))) = (binary_expression "(uint)local_64 >> 8 & 1" (binary_expression "(uint)local_64 >> 8" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) & number_literal)) ;) })) (if_statement "if ((((uint)local_64 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        hbuf._0_2_ = SUB42(local_64,0);\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2);\n        piVar3->gzhead = pgVar13;\n      }" if (parenthesized_expression "((((uint)local_64 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0))" ( (binary_expression "(((uint)local_64 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)" (parenthesized_expression "(((uint)local_64 & 0x200) != 0)" ( (binary_expression "((uint)local_64 & 0x200) != 0" (parenthesized_expression "((uint)local_64 & 0x200)" ( (binary_expression "(uint)local_64 & 0x200" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "((piVar3->pending_buf_size & 4) != 0)" ( (binary_expression "(piVar3->pending_buf_size & 4) != 0" (parenthesized_expression "(piVar3->pending_buf_size & 4)" ( (binary_expression "piVar3->pending_buf_size & 4" (field_expression "piVar3->pending_buf_size" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        hbuf._0_2_ = SUB42(local_64,0);\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2);\n        piVar3->gzhead = pgVar13;\n      }" { (expression_statement "hbuf._0_2_ = SUB42(local_64,0);" (assignment_expression "hbuf._0_2_ = SUB42(local_64,0)" (field_expression "hbuf._0_2_" identifier . field_identifier) = (call_expression "SUB42(local_64,0)" identifier (argument_list "(local_64,0)" ( identifier , number_literal )))) ;) (expression_statement "pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2);" (assignment_expression "pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2)" identifier = (cast_expression "(gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2)" ( (type_descriptor "gz_headerp" type_identifier) ) (call_expression "crc32((ulong)piVar3->gzhead,hbuf,2)" identifier (argument_list "((ulong)piVar3->gzhead,hbuf,2)" ( (cast_expression "(ulong)piVar3->gzhead" ( (type_descriptor "ulong" type_identifier) ) (field_expression "piVar3->gzhead" identifier -> field_identifier)) , identifier , number_literal ))))) ;) (expression_statement "piVar3->gzhead = pgVar13;" (assignment_expression "piVar3->gzhead = pgVar13" (field_expression "piVar3->gzhead" identifier -> field_identifier) = identifier) ;) })) (expression_statement "local_64 = (gz_headerp)0x0;" (assignment_expression "local_64 = (gz_headerp)0x0" identifier = (cast_expression "(gz_headerp)0x0" ( (type_descriptor "gz_headerp" type_identifier) ) number_literal)) ;) (expression_statement "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;" (assignment_expression "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0" (field_expression "cVar20.fc" identifier . field_identifier) = (cast_expression "(anon_union_2_2_314cc5cc_for_fc)0x0" ( (type_descriptor "anon_union_2_2_314cc5cc_for_fc" type_identifier) ) number_literal)) ;) (expression_statement "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;" (assignment_expression "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0" (field_expression "cVar20.dl" identifier . field_identifier) = (cast_expression "(anon_union_2_2_43a7fb4f_for_dl)0x0" ( (type_descriptor "anon_union_2_2_43a7fb4f_for_dl" type_identifier) ) number_literal)) ;) (expression_statement "piVar3->status = 0x3f36;" (assignment_expression "piVar3->status = 0x3f36" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) do { (if_statement "if (local_6c == (Posf *)0x0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "local_6c = (Posf *)((int)local_6c - 1);" (assignment_expression "local_6c = (Posf *)((int)local_6c - 1)" identifier = (cast_expression "(Posf *)((int)local_6c - 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - 1)" ( (binary_expression "(int)local_6c - 1" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "bVar16 = cVar20.fc;" (assignment_expression "bVar16 = cVar20.fc" identifier = (field_expression "cVar20.fc" identifier . field_identifier)) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 + 8);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 + 8)" identifier = (call_expression "(ct_data_s)((int)cVar20 + 8)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 + 8)" ( (binary_expression "(int)cVar20 + 8" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));" (assignment_expression "local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" identifier = (call_expression "(gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" ( (binary_expression "(int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f))" (cast_expression "(int)&local_64->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_64->text" & (field_expression "local_64->text" identifier -> field_identifier))) + (parenthesized_expression "((uint)*local_60 << (bVar16 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar16 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar16 & 0x1f)" ( (binary_expression "bVar16 & 0x1f" identifier & number_literal) ))) ))) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (labeled_statement "joined_r0x00018053:\n      } while ((uint)cVar20 < 0x20);" statement_identifier : (ERROR "}" }) (while_statement "while ((uint)cVar20 < 0x20);" while (parenthesized_expression "((uint)cVar20 < 0x20)" ( (binary_expression "(uint)cVar20 < 0x20" (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) )) (expression_statement ";" ;))) (if_statement "if (*(int *)&piVar3->method != 0) {\n        *(gz_headerp *)(*(int *)&piVar3->method + 4) = local_64;\n      }" if (parenthesized_expression "(*(int *)&piVar3->method != 0)" ( (binary_expression "*(int *)&piVar3->method != 0" (pointer_expression "*(int *)&piVar3->method" * (cast_expression "(int *)&piVar3->method" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&piVar3->method" & (field_expression "piVar3->method" identifier -> field_identifier)))) != number_literal) )) (compound_statement "{\n        *(gz_headerp *)(*(int *)&piVar3->method + 4) = local_64;\n      }" { (expression_statement "*(gz_headerp *)(*(int *)&piVar3->method + 4) = local_64;" (assignment_expression "*(gz_headerp *)(*(int *)&piVar3->method + 4) = local_64" (pointer_expression "*(gz_headerp *)(*(int *)&piVar3->method + 4)" * (cast_expression "(gz_headerp *)(*(int *)&piVar3->method + 4)" ( (type_descriptor "gz_headerp *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)&piVar3->method + 4)" ( (binary_expression "*(int *)&piVar3->method + 4" (pointer_expression "*(int *)&piVar3->method" * (cast_expression "(int *)&piVar3->method" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&piVar3->method" & (field_expression "piVar3->method" identifier -> field_identifier)))) + number_literal) )))) = identifier) ;) })) (if_statement "if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        hbuf._0_2_ = SUB42(local_64,0);\n        hbuf[2] = (uchar)((uint)local_64 >> 0x10);\n        hbuf[3] = (uchar)((uint)local_64 >> 0x18);\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,4);\n        piVar3->gzhead = pgVar13;\n      }" if (parenthesized_expression "(((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0))" ( (binary_expression "((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)" (parenthesized_expression "((piVar3->pending & 0x200) != 0)" ( (binary_expression "(piVar3->pending & 0x200) != 0" (parenthesized_expression "(piVar3->pending & 0x200)" ( (binary_expression "piVar3->pending & 0x200" (field_expression "piVar3->pending" identifier -> field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "((piVar3->pending_buf_size & 4) != 0)" ( (binary_expression "(piVar3->pending_buf_size & 4) != 0" (parenthesized_expression "(piVar3->pending_buf_size & 4)" ( (binary_expression "piVar3->pending_buf_size & 4" (field_expression "piVar3->pending_buf_size" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        hbuf._0_2_ = SUB42(local_64,0);\n        hbuf[2] = (uchar)((uint)local_64 >> 0x10);\n        hbuf[3] = (uchar)((uint)local_64 >> 0x18);\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,4);\n        piVar3->gzhead = pgVar13;\n      }" { (expression_statement "hbuf._0_2_ = SUB42(local_64,0);" (assignment_expression "hbuf._0_2_ = SUB42(local_64,0)" (field_expression "hbuf._0_2_" identifier . field_identifier) = (call_expression "SUB42(local_64,0)" identifier (argument_list "(local_64,0)" ( identifier , number_literal )))) ;) (expression_statement "hbuf[2] = (uchar)((uint)local_64 >> 0x10);" (assignment_expression "hbuf[2] = (uchar)((uint)local_64 >> 0x10)" (subscript_expression "hbuf[2]" identifier [ number_literal ]) = (call_expression "(uchar)((uint)local_64 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)local_64 >> 0x10)" ( (binary_expression "(uint)local_64 >> 0x10" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "hbuf[3] = (uchar)((uint)local_64 >> 0x18);" (assignment_expression "hbuf[3] = (uchar)((uint)local_64 >> 0x18)" (subscript_expression "hbuf[3]" identifier [ number_literal ]) = (call_expression "(uchar)((uint)local_64 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)local_64 >> 0x18)" ( (binary_expression "(uint)local_64 >> 0x18" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,4);" (assignment_expression "pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,4)" identifier = (cast_expression "(gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,4)" ( (type_descriptor "gz_headerp" type_identifier) ) (call_expression "crc32((ulong)piVar3->gzhead,hbuf,4)" identifier (argument_list "((ulong)piVar3->gzhead,hbuf,4)" ( (cast_expression "(ulong)piVar3->gzhead" ( (type_descriptor "ulong" type_identifier) ) (field_expression "piVar3->gzhead" identifier -> field_identifier)) , identifier , number_literal ))))) ;) (expression_statement "piVar3->gzhead = pgVar13;" (assignment_expression "piVar3->gzhead = pgVar13" (field_expression "piVar3->gzhead" identifier -> field_identifier) = identifier) ;) })) (expression_statement "local_64 = (gz_headerp)0x0;" (assignment_expression "local_64 = (gz_headerp)0x0" identifier = (cast_expression "(gz_headerp)0x0" ( (type_descriptor "gz_headerp" type_identifier) ) number_literal)) ;) (expression_statement "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;" (assignment_expression "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0" (field_expression "cVar20.fc" identifier . field_identifier) = (cast_expression "(anon_union_2_2_314cc5cc_for_fc)0x0" ( (type_descriptor "anon_union_2_2_314cc5cc_for_fc" type_identifier) ) number_literal)) ;) (expression_statement "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;" (assignment_expression "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0" (field_expression "cVar20.dl" identifier . field_identifier) = (cast_expression "(anon_union_2_2_43a7fb4f_for_dl)0x0" ( (type_descriptor "anon_union_2_2_43a7fb4f_for_dl" type_identifier) ) number_literal)) ;) (expression_statement "piVar3->status = 0x3f37;" (assignment_expression "piVar3->status = 0x3f37" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) do (ERROR "{\n        if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n        local_6c = (Posf *)((int)local_6c - 1);\n        bVar16 = cVar20.fc;\n        cVar20 = (ct_data_s)((int)cVar20 + 8);\n        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n        local_60 = local_60 + 1;\njoined_r0x000180e3:\n      } while ((uint)cVar20 < 0x10);\n      iVar6 = *(int *)&piVar3->method;\n      if (iVar6 != 0) {\n        *(uint *)(iVar6 + 8) = (uint)local_64 & 0xff;\n        *(uint *)(iVar6 + 0xc) = (uint)local_64 >> 8;\n      }\n      uVar7 = piVar3->pending;\n      if (((uVar7 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        hbuf._0_2_ = SUB42(local_64,0);\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2);\n        piVar3->gzhead = pgVar13;\n        uVar7 = piVar3->pending;\n      }\n      piVar3->status = 0x3f38;\n      if ((uVar7 & 0x400) == 0) {\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\nLAB_000181ae:\n        if (*(int *)&piVar3->method != 0) {\n          *(undefined4 *)(*(int *)&piVar3->method + 0x10) = 0;\n        }\n        goto LAB_000181c0;\n      }\n      local_64 = (gz_headerp)0x0;\n      cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n      cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\nLAB_0001829d:\n      if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n      do {\n        pbVar26 = local_60 + 1;\n        local_6c = (Posf *)((int)local_6c - 1);\n        bVar16 = cVar20.fc;\n        cVar20 = (ct_data_s)((int)cVar20 + 8);\n        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n        local_60 = pbVar26;\n        if (0xf < (uint)cVar20) goto LAB_000182ea;\n      } while (local_6c != (Posf *)0x0);\n      pPVar27 = (Posf *)0x0;\n    }\n    else {\n      strm->msg = "unknown compression method";\n      piVar3->status = 0x3f51;\n_L590:\n      pPVar27 = (Posf *)0xfffffffd;\n    }\n  }\n  goto LAB_00017f32;\nLAB_000182ea:\n  piVar3->head = (Posf *)local_64;\n  if (*(int *)&piVar3->method != 0) {\n    *(gz_headerp *)(*(int *)&piVar3->method + 0x14) = local_64;\n  }\n  if (((uVar7 & 0x200) == 0) || ((piVar3->pending_buf_size & 4) == 0)) {\n    cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n    cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n    local_64 = (gz_headerp)0x0;\n  }\n  else {\n    cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n    cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n    hbuf._0_2_ = SUB42(local_64,0);\n    pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2);\n    piVar3->gzhead = pgVar13;\n    local_64 = (gz_headerp)0x0;\n    uVar7 = piVar3->pending;\n  }\nLAB_000181c0:\n  piVar3->status = 0x3f39;\nLAB_000181cb:\n  if ((uVar7 & 0x400) == 0) {\nLAB_0001826a:\n    piVar3->head = (Posf *)0x0;\n    piVar3->status = 0x3f3a;\nLAB_0001832f:\n    if ((uVar7 & 0x800) == 0) {\n      if (*(int *)&piVar3->method != 0) {\n        *(undefined4 *)(*(int *)&piVar3->method + 0x1c) = 0;\n      }\n    }\n    else {\n      pPVar27 = (Posf *)0x0;\n      if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n      do {\n        iVar6 = *(int *)&piVar3->method;\n        pPVar27 = (Posf *)((int)pPVar27 + 1);\n        bVar16 = (local_60 + -1)[(int)pPVar27];\n        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x1c), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x20))) {\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }\n      } while ((bVar16 != 0) && (pPVar27 < local_6c));\n      if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);\n        piVar3->gzhead = pgVar13;\n      }\n      local_60 = local_60 + (int)pPVar27;\n      local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n      if (bVar16 != 0) goto LAB_00017f30;\n      uVar7 = piVar3->pending;\n    }\n    piVar3->head = (Posf *)0x0;\n    piVar3->status = 0x3f3b;\nLAB_0001835c:\n    if ((uVar7 & 0x1000) == 0) {\n      if (*(int *)&piVar3->method != 0) {\n        *(undefined4 *)(*(int *)&piVar3->method + 0x24) = 0;\n      }\n    }\n    else {\n      pPVar27 = (Posf *)0x0;\n      if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n      do {\n        iVar6 = *(int *)&piVar3->method;\n        pPVar27 = (Posf *)((int)pPVar27 + 1);\n        bVar16 = (local_60 + -1)[(int)pPVar27];\n        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x24), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x28))) {\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }\n      } while ((bVar16 != 0) && (pPVar27 < local_6c));\n      if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);\n        piVar3->gzhead = pgVar13;\n      }\n      local_60 = local_60 + (int)pPVar27;\n      local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n      if (bVar16 != 0) goto LAB_00017f30;\n      uVar7 = piVar3->pending;\n    }\n    piVar3->status = 0x3f3c;\nLAB_00018382:\n    if ((uVar7 & 0x200) == 0) {\nLAB_0001838b:\n      iVar6 = *(int *)&piVar3->method;\n      if (iVar6 != 0) {\n        *(undefined4 *)(iVar6 + 0x30) = 1;\n        *(uint *)(iVar6 + 0x2c) = (int)uVar7 >> 9 & 1;\n      }\n      pgVar13 = (gz_headerp)crc32(0,(uchar *)0x0,0);\n      piVar3->gzhead = pgVar13;\n      strm->adler = (uLong)pgVar13;\n      piVar3->status = 0x3f3f;\n      goto _L105;\n    }\n    if ((uint)cVar20 < 0x10) {\n      if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n      do {\n        pbVar26 = local_60 + 1;\n        local_6c = (Posf *)((int)local_6c - 1);\n        bVar16 = cVar20.fc;\n        cVar20 = (ct_data_s)((int)cVar20 + 8);\n        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n        local_60 = pbVar26;\n        if (0xf < (uint)cVar20) goto LAB_00018a2e;\n      } while (local_6c != (Posf *)0x0);\n      pPVar27 = (Posf *)0x0;\n    }\n    else {\nLAB_00018a2e:\n      if (((piVar3->pending_buf_size & 4) == 0) ||\n         ((gz_headerp)(uint)*(ushort *)&piVar3->gzhead == local_64)) {\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\n        goto LAB_0001838b;\n      }\n      strm->msg = "header crc mismatch";\n      piVar3->status = 0x3f51;\n      pPVar27 = (Posf *)0xfffffffd;\n    }\n  }\n  else {\n    pPVar27 = piVar3->head;\n    pPVar9 = local_6c;\n    if (pPVar27 < local_6c) {\n      pPVar9 = pPVar27;\n    }\n    if (pPVar9 != (Posf *)0x0) {\n      iVar6 = *(int *)&piVar3->method;\n      if ((iVar6 != 0) && (*(int *)(iVar6 + 0x10) != 0)) {\n        iVar11 = *(int *)(iVar6 + 0x14) - (int)pPVar27;\n        pPVar27 = (Posf *)(*(uint *)(iVar6 + 0x18) - iVar11);\n        if ((uint)((int)pPVar9 + iVar11) <= *(uint *)(iVar6 + 0x18)) {\n          pPVar27 = pPVar9;\n        }\n        memcpy((void *)(iVar11 + *(int *)(iVar6 + 0x10)),local_60,(size_t)pPVar27);\n        uVar7 = piVar3->pending;\n      }\n      if (((uVar7 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar9);\n        piVar3->gzhead = pgVar13;\n      }\n      local_6c = (Posf *)((int)local_6c - (int)pPVar9);\n      local_60 = local_60 + (int)pPVar9;\n      pPVar27 = (Posf *)((int)piVar3->head - (int)pPVar9);\n      piVar3->head = pPVar27;\n    }\n    if (pPVar27 == (Posf *)0x0) {\n      uVar7 = piVar3->pending;\n      goto LAB_0001826a;\n    }\nLAB_00017f30:\n    pPVar27 = (Posf *)0x0;\n  }\n  goto LAB_00017f32;\nLAB_00017996:\n  uVar29 = (int)local_50 - (int)local_5c;\n  strm->total_out = strm->total_out + uVar29;\n  piVar3->gzindex = piVar3->gzindex + uVar29;\n  uVar19 = uVar7 & 4;\n  if ((uVar19 != 0) && (uVar29 != 0)) {\n    if (piVar3->pending == 0) {\n      pgVar13 = (gz_headerp)adler32((uLong)piVar3->gzhead,end + -uVar29,uVar29);\n    }\n    else {\n      pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,end + -uVar29,uVar29);\n    }\n    piVar3->gzhead = pgVar13;\n    strm->adler = (uLong)pgVar13;\n    uVar7 = piVar3->pending_buf_size;\n    uVar19 = uVar7 & 4;\n  }\n  if (uVar19 != 0) {\n    pgVar13 = local_64;\n    if (piVar3->pending == 0) {\n      pgVar13 = (gz_headerp)\n                (((uint)local_64 >> 0x18) + (int)local_64 * 0x1000000 +\n                 ((uint)local_64 >> 8 & 0xff00) + ((uint)local_64 & 0xff00) * 0x100);\n    }\n    if (piVar3->gzhead != pgVar13) {\n      strm->msg = "incorrect data check";\n      piVar3->status = 0x3f51;\n      pPVar27 = (Posf *)0xfffffffd;\n      local_50 = local_5c;\n      goto LAB_00017f32;\n    }\n  }\n  cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n  cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n  local_64 = (gz_headerp)0x0;\n  local_50 = local_5c;\nLAB_00018e20:\n  piVar3->status = 0x3f4f;\nLAB_000183ff:\n  if ((uVar7 != 0) && (piVar3->pending != 0)) {\n    for (; (uint)cVar20 < 0x20; cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n      if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n      local_6c = (Posf *)((int)local_6c - 1);\n      local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n      local_60 = local_60 + 1;\n    }\n    if ((gz_headerp)piVar3->gzindex != local_64) {\n      strm->msg = "incorrect length check";\n      piVar3->status = 0x3f51;\n      pPVar27 = (Posf *)0xfffffffd;\n      goto LAB_00017f32;\n    }\n    cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n    cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n    local_64 = (gz_headerp)0x0;\n  }\n  pPVar27 = (Posf *)0x1;\n  piVar3->status = 0x3f50;\n  goto LAB_00017f32;\nLAB_00018d40:\n  pPVar27 = (Posf *)0x0;\n  local_60 = pbVar26;\n  goto LAB_00017f32;\ncode_r0x00018d1f:\n  piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;\n  piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;\n  piVar3->status = 0x3f3f;\n_L105:\n  if (flush - 5U < 2) goto LAB_00017f30;\n  goto _L106;\n  while (local_6c != (Posf *)0x0) {\nLAB_00017970:\n    pbVar26 = local_60 + 1;\n    local_6c = (Posf *)((int)local_6c - 1);\n    bVar32 = cVar20.fc;\n    cVar20 = (ct_data_s)((int)cVar20 + 8);\n    local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar32 & 0x1f)));\n    local_60 = pbVar26;\n    if (0x1f < (uint)cVar20) goto LAB_00017996;\n  }\nLAB_000190a2:\n  pPVar27 = (Posf *)0x0;\n  local_60 = pbVar26;\nLAB_00017f32:\n  strm->next_in = local_60;\n  strm->next_out = end;\n  strm->avail_in = (uInt)local_6c;\n  strm->avail_out = (uInt)local_5c;\n  piVar3->window_size = (ulg)local_64;\n  piVar3->prev = (Posf *)cVar20;\n  if ((piVar3->w_size != 0) ||\n     (((local_5c != local_50 && ((uint)piVar3->status < 0x3f51)) &&\n      (((uint)piVar3->status < 0x3f4e || (flush != 4)))))) {\n    iVar6 = updatewindow(strm,end,(int)local_50 - (int)local_5c);\n    if (iVar6 != 0) {\n      piVar3->status = 0x3f52;\n_L593:\n      pPVar27 = (Posf *)0xfffffffc;\n      goto LAB_00018778;\n    }\n    local_6c = (Posf *)strm->avail_in;\n    local_5c = (Posf *)strm->avail_out;\n  }\n  uVar29 = (int)local_50 - (int)local_5c;\n  strm->total_in = strm->total_in + ((int)pPVar2 - (int)local_6c);\n  strm->total_out = strm->total_out + uVar29;\n  piVar3->gzindex = piVar3->gzindex + uVar29;\n  if (((piVar3->pending_buf_size & 4) != 0) && (uVar29 != 0)) {\n    if (piVar3->pending == 0) {\n      pgVar13 = (gz_headerp)adler32((uLong)piVar3->gzhead,strm->next_out + -uVar29,uVar29);\n    }\n    else {\n      pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,strm->next_out + -uVar29,uVar29);\n    }\n    piVar3->gzhead = pgVar13;\n    strm->adler = (uLong)pgVar13;\n  }\n  pPVar9 = piVar3->prev;\n  if (piVar3->pending_buf != (Bytef *)0x0) {\n    pPVar9 = pPVar9 + 0x20;\n  }\n  iVar6 = piVar3->status;\n  local_4c = 0;\n  if (iVar6 == 0x3f3f) {\n    pPVar9 = pPVar9 + 0x40;\n  }\n  else if ((iVar6 == 0x3f47) || (iVar6 == 0x3f42)) {\n    local_4c = 0x100;\n  }\n  strm->data_type = (int)pPVar9 + local_4c;\n  if ((((int)pPVar2 - (int)local_6c == 0 && uVar29 == 0) || (flush == 4)) &&\n     (pPVar27 == (Posf *)0x0)) {\n    pPVar27 = (Posf *)0xfffffffb;\n  }\nLAB_00018778:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (int)pPVar27;\n  }" (compound_statement "{\n        if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n        local_6c = (Posf *)((int)local_6c - 1);\n        bVar16 = cVar20.fc;\n        cVar20 = (ct_data_s)((int)cVar20 + 8);\n        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n        local_60 = local_60 + 1;\njoined_r0x000180e3:\n      } while ((uint)cVar20 < 0x10);\n      iVar6 = *(int *)&piVar3->method;\n      if (iVar6 != 0) {\n        *(uint *)(iVar6 + 8) = (uint)local_64 & 0xff;\n        *(uint *)(iVar6 + 0xc) = (uint)local_64 >> 8;\n      }\n      uVar7 = piVar3->pending;\n      if (((uVar7 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        hbuf._0_2_ = SUB42(local_64,0);\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2);\n        piVar3->gzhead = pgVar13;\n        uVar7 = piVar3->pending;\n      }\n      piVar3->status = 0x3f38;\n      if ((uVar7 & 0x400) == 0) {\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\nLAB_000181ae:\n        if (*(int *)&piVar3->method != 0) {\n          *(undefined4 *)(*(int *)&piVar3->method + 0x10) = 0;\n        }\n        goto LAB_000181c0;\n      }\n      local_64 = (gz_headerp)0x0;\n      cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n      cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\nLAB_0001829d:\n      if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n      do {\n        pbVar26 = local_60 + 1;\n        local_6c = (Posf *)((int)local_6c - 1);\n        bVar16 = cVar20.fc;\n        cVar20 = (ct_data_s)((int)cVar20 + 8);\n        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n        local_60 = pbVar26;\n        if (0xf < (uint)cVar20) goto LAB_000182ea;\n      } while (local_6c != (Posf *)0x0);\n      pPVar27 = (Posf *)0x0;\n    }" { (if_statement "if (local_6c == (Posf *)0x0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "local_6c = (Posf *)((int)local_6c - 1);" (assignment_expression "local_6c = (Posf *)((int)local_6c - 1)" identifier = (cast_expression "(Posf *)((int)local_6c - 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - 1)" ( (binary_expression "(int)local_6c - 1" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "bVar16 = cVar20.fc;" (assignment_expression "bVar16 = cVar20.fc" identifier = (field_expression "cVar20.fc" identifier . field_identifier)) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 + 8);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 + 8)" identifier = (call_expression "(ct_data_s)((int)cVar20 + 8)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 + 8)" ( (binary_expression "(int)cVar20 + 8" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));" (assignment_expression "local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" identifier = (call_expression "(gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" ( (binary_expression "(int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f))" (cast_expression "(int)&local_64->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_64->text" & (field_expression "local_64->text" identifier -> field_identifier))) + (parenthesized_expression "((uint)*local_60 << (bVar16 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar16 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar16 & 0x1f)" ( (binary_expression "bVar16 & 0x1f" identifier & number_literal) ))) ))) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (labeled_statement "joined_r0x000180e3:\n      } while ((uint)cVar20 < 0x10);" statement_identifier : (ERROR "}" }) (while_statement "while ((uint)cVar20 < 0x10);" while (parenthesized_expression "((uint)cVar20 < 0x10)" ( (binary_expression "(uint)cVar20 < 0x10" (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) )) (expression_statement ";" ;))) (expression_statement "iVar6 = *(int *)&piVar3->method;" (assignment_expression "iVar6 = *(int *)&piVar3->method" identifier = (pointer_expression "*(int *)&piVar3->method" * (cast_expression "(int *)&piVar3->method" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&piVar3->method" & (field_expression "piVar3->method" identifier -> field_identifier))))) ;) (if_statement "if (iVar6 != 0) {\n        *(uint *)(iVar6 + 8) = (uint)local_64 & 0xff;\n        *(uint *)(iVar6 + 0xc) = (uint)local_64 >> 8;\n      }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n        *(uint *)(iVar6 + 8) = (uint)local_64 & 0xff;\n        *(uint *)(iVar6 + 0xc) = (uint)local_64 >> 8;\n      }" { (expression_statement "*(uint *)(iVar6 + 8) = (uint)local_64 & 0xff;" (assignment_expression "*(uint *)(iVar6 + 8) = (uint)local_64 & 0xff" (pointer_expression "*(uint *)(iVar6 + 8)" * (cast_expression "(uint *)(iVar6 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) )))) = (binary_expression "(uint)local_64 & 0xff" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "*(uint *)(iVar6 + 0xc) = (uint)local_64 >> 8;" (assignment_expression "*(uint *)(iVar6 + 0xc) = (uint)local_64 >> 8" (pointer_expression "*(uint *)(iVar6 + 0xc)" * (cast_expression "(uint *)(iVar6 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) = (binary_expression "(uint)local_64 >> 8" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal)) ;) })) (expression_statement "uVar7 = piVar3->pending;" (assignment_expression "uVar7 = piVar3->pending" identifier = (field_expression "piVar3->pending" identifier -> field_identifier)) ;) (if_statement "if (((uVar7 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        hbuf._0_2_ = SUB42(local_64,0);\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2);\n        piVar3->gzhead = pgVar13;\n        uVar7 = piVar3->pending;\n      }" if (parenthesized_expression "(((uVar7 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0))" ( (binary_expression "((uVar7 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)" (parenthesized_expression "((uVar7 & 0x200) != 0)" ( (binary_expression "(uVar7 & 0x200) != 0" (parenthesized_expression "(uVar7 & 0x200)" ( (binary_expression "uVar7 & 0x200" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "((piVar3->pending_buf_size & 4) != 0)" ( (binary_expression "(piVar3->pending_buf_size & 4) != 0" (parenthesized_expression "(piVar3->pending_buf_size & 4)" ( (binary_expression "piVar3->pending_buf_size & 4" (field_expression "piVar3->pending_buf_size" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        hbuf._0_2_ = SUB42(local_64,0);\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2);\n        piVar3->gzhead = pgVar13;\n        uVar7 = piVar3->pending;\n      }" { (expression_statement "hbuf._0_2_ = SUB42(local_64,0);" (assignment_expression "hbuf._0_2_ = SUB42(local_64,0)" (field_expression "hbuf._0_2_" identifier . field_identifier) = (call_expression "SUB42(local_64,0)" identifier (argument_list "(local_64,0)" ( identifier , number_literal )))) ;) (expression_statement "pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2);" (assignment_expression "pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2)" identifier = (cast_expression "(gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2)" ( (type_descriptor "gz_headerp" type_identifier) ) (call_expression "crc32((ulong)piVar3->gzhead,hbuf,2)" identifier (argument_list "((ulong)piVar3->gzhead,hbuf,2)" ( (cast_expression "(ulong)piVar3->gzhead" ( (type_descriptor "ulong" type_identifier) ) (field_expression "piVar3->gzhead" identifier -> field_identifier)) , identifier , number_literal ))))) ;) (expression_statement "piVar3->gzhead = pgVar13;" (assignment_expression "piVar3->gzhead = pgVar13" (field_expression "piVar3->gzhead" identifier -> field_identifier) = identifier) ;) (expression_statement "uVar7 = piVar3->pending;" (assignment_expression "uVar7 = piVar3->pending" identifier = (field_expression "piVar3->pending" identifier -> field_identifier)) ;) })) (expression_statement "piVar3->status = 0x3f38;" (assignment_expression "piVar3->status = 0x3f38" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (if_statement "if ((uVar7 & 0x400) == 0) {\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\nLAB_000181ae:\n        if (*(int *)&piVar3->method != 0) {\n          *(undefined4 *)(*(int *)&piVar3->method + 0x10) = 0;\n        }\n        goto LAB_000181c0;\n      }" if (parenthesized_expression "((uVar7 & 0x400) == 0)" ( (binary_expression "(uVar7 & 0x400) == 0" (parenthesized_expression "(uVar7 & 0x400)" ( (binary_expression "uVar7 & 0x400" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\nLAB_000181ae:\n        if (*(int *)&piVar3->method != 0) {\n          *(undefined4 *)(*(int *)&piVar3->method + 0x10) = 0;\n        }\n        goto LAB_000181c0;\n      }" { (expression_statement "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;" (assignment_expression "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0" (field_expression "cVar20.fc" identifier . field_identifier) = (cast_expression "(anon_union_2_2_314cc5cc_for_fc)0x0" ( (type_descriptor "anon_union_2_2_314cc5cc_for_fc" type_identifier) ) number_literal)) ;) (expression_statement "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;" (assignment_expression "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0" (field_expression "cVar20.dl" identifier . field_identifier) = (cast_expression "(anon_union_2_2_43a7fb4f_for_dl)0x0" ( (type_descriptor "anon_union_2_2_43a7fb4f_for_dl" type_identifier) ) number_literal)) ;) (expression_statement "local_64 = (gz_headerp)0x0;" (assignment_expression "local_64 = (gz_headerp)0x0" identifier = (cast_expression "(gz_headerp)0x0" ( (type_descriptor "gz_headerp" type_identifier) ) number_literal)) ;) (labeled_statement "LAB_000181ae:\n        if (*(int *)&piVar3->method != 0) {\n          *(undefined4 *)(*(int *)&piVar3->method + 0x10) = 0;\n        }" statement_identifier : (if_statement "if (*(int *)&piVar3->method != 0) {\n          *(undefined4 *)(*(int *)&piVar3->method + 0x10) = 0;\n        }" if (parenthesized_expression "(*(int *)&piVar3->method != 0)" ( (binary_expression "*(int *)&piVar3->method != 0" (pointer_expression "*(int *)&piVar3->method" * (cast_expression "(int *)&piVar3->method" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&piVar3->method" & (field_expression "piVar3->method" identifier -> field_identifier)))) != number_literal) )) (compound_statement "{\n          *(undefined4 *)(*(int *)&piVar3->method + 0x10) = 0;\n        }" { (expression_statement "*(undefined4 *)(*(int *)&piVar3->method + 0x10) = 0;" (assignment_expression "*(undefined4 *)(*(int *)&piVar3->method + 0x10) = 0" (pointer_expression "*(undefined4 *)(*(int *)&piVar3->method + 0x10)" * (cast_expression "(undefined4 *)(*(int *)&piVar3->method + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)&piVar3->method + 0x10)" ( (binary_expression "*(int *)&piVar3->method + 0x10" (pointer_expression "*(int *)&piVar3->method" * (cast_expression "(int *)&piVar3->method" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&piVar3->method" & (field_expression "piVar3->method" identifier -> field_identifier)))) + number_literal) )))) = number_literal) ;) }))) (goto_statement "goto LAB_000181c0;" goto statement_identifier ;) })) (expression_statement "local_64 = (gz_headerp)0x0;" (assignment_expression "local_64 = (gz_headerp)0x0" identifier = (cast_expression "(gz_headerp)0x0" ( (type_descriptor "gz_headerp" type_identifier) ) number_literal)) ;) (expression_statement "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;" (assignment_expression "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0" (field_expression "cVar20.fc" identifier . field_identifier) = (cast_expression "(anon_union_2_2_314cc5cc_for_fc)0x0" ( (type_descriptor "anon_union_2_2_314cc5cc_for_fc" type_identifier) ) number_literal)) ;) (expression_statement "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;" (assignment_expression "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0" (field_expression "cVar20.dl" identifier . field_identifier) = (cast_expression "(anon_union_2_2_43a7fb4f_for_dl)0x0" ( (type_descriptor "anon_union_2_2_43a7fb4f_for_dl" type_identifier) ) number_literal)) ;) (labeled_statement "LAB_0001829d:\n      if (local_6c == (Posf *)0x0) goto LAB_00017f30;" statement_identifier : (if_statement "if (local_6c == (Posf *)0x0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;))) (do_statement "do {\n        pbVar26 = local_60 + 1;\n        local_6c = (Posf *)((int)local_6c - 1);\n        bVar16 = cVar20.fc;\n        cVar20 = (ct_data_s)((int)cVar20 + 8);\n        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n        local_60 = pbVar26;\n        if (0xf < (uint)cVar20) goto LAB_000182ea;\n      } while (local_6c != (Posf *)0x0);" do (compound_statement "{\n        pbVar26 = local_60 + 1;\n        local_6c = (Posf *)((int)local_6c - 1);\n        bVar16 = cVar20.fc;\n        cVar20 = (ct_data_s)((int)cVar20 + 8);\n        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n        local_60 = pbVar26;\n        if (0xf < (uint)cVar20) goto LAB_000182ea;\n      }" { (expression_statement "pbVar26 = local_60 + 1;" (assignment_expression "pbVar26 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = (Posf *)((int)local_6c - 1);" (assignment_expression "local_6c = (Posf *)((int)local_6c - 1)" identifier = (cast_expression "(Posf *)((int)local_6c - 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - 1)" ( (binary_expression "(int)local_6c - 1" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "bVar16 = cVar20.fc;" (assignment_expression "bVar16 = cVar20.fc" identifier = (field_expression "cVar20.fc" identifier . field_identifier)) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 + 8);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 + 8)" identifier = (call_expression "(ct_data_s)((int)cVar20 + 8)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 + 8)" ( (binary_expression "(int)cVar20 + 8" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));" (assignment_expression "local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" identifier = (call_expression "(gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" ( (binary_expression "(int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f))" (cast_expression "(int)&local_64->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_64->text" & (field_expression "local_64->text" identifier -> field_identifier))) + (parenthesized_expression "((uint)*local_60 << (bVar16 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar16 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar16 & 0x1f)" ( (binary_expression "bVar16 & 0x1f" identifier & number_literal) ))) ))) )))) ;) (expression_statement "local_60 = pbVar26;" (assignment_expression "local_60 = pbVar26" identifier = identifier) ;) (if_statement "if (0xf < (uint)cVar20) goto LAB_000182ea;" if (parenthesized_expression "(0xf < (uint)cVar20)" ( (binary_expression "0xf < (uint)cVar20" number_literal < (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (goto_statement "goto LAB_000182ea;" goto statement_identifier ;)) }) while (parenthesized_expression "(local_6c != (Posf *)0x0)" ( (binary_expression "local_6c != (Posf *)0x0" identifier != (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "pPVar27 = (Posf *)0x0;" (assignment_expression "pPVar27 = (Posf *)0x0" identifier = (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) else { identifier -> identifier = " identifier identifier identifier " ; identifier -> identifier = number_literal ; identifier : identifier = ( identifier * ) number_literal ; } } goto identifier ; identifier : identifier -> identifier = ( identifier * ) identifier ; (if_statement "if (*(int *)&piVar3->method != 0) {\n    *(gz_headerp *)(*(int *)&piVar3->method + 0x14) = local_64;\n  }" if (parenthesized_expression "(*(int *)&piVar3->method != 0)" ( (binary_expression "*(int *)&piVar3->method != 0" (pointer_expression "*(int *)&piVar3->method" * (cast_expression "(int *)&piVar3->method" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&piVar3->method" & (field_expression "piVar3->method" identifier -> field_identifier)))) != number_literal) )) (compound_statement "{\n    *(gz_headerp *)(*(int *)&piVar3->method + 0x14) = local_64;\n  }" { (expression_statement "*(gz_headerp *)(*(int *)&piVar3->method + 0x14) = local_64;" (assignment_expression "*(gz_headerp *)(*(int *)&piVar3->method + 0x14) = local_64" (pointer_expression "*(gz_headerp *)(*(int *)&piVar3->method + 0x14)" * (cast_expression "(gz_headerp *)(*(int *)&piVar3->method + 0x14)" ( (type_descriptor "gz_headerp *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)&piVar3->method + 0x14)" ( (binary_expression "*(int *)&piVar3->method + 0x14" (pointer_expression "*(int *)&piVar3->method" * (cast_expression "(int *)&piVar3->method" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&piVar3->method" & (field_expression "piVar3->method" identifier -> field_identifier)))) + number_literal) )))) = identifier) ;) })) (if_statement "if (((uVar7 & 0x200) == 0) || ((piVar3->pending_buf_size & 4) == 0)) {\n    cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n    cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n    local_64 = (gz_headerp)0x0;\n  }\n  else {\n    cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n    cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n    hbuf._0_2_ = SUB42(local_64,0);\n    pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2);\n    piVar3->gzhead = pgVar13;\n    local_64 = (gz_headerp)0x0;\n    uVar7 = piVar3->pending;\n  }" if (parenthesized_expression "(((uVar7 & 0x200) == 0) || ((piVar3->pending_buf_size & 4) == 0))" ( (binary_expression "((uVar7 & 0x200) == 0) || ((piVar3->pending_buf_size & 4) == 0)" (parenthesized_expression "((uVar7 & 0x200) == 0)" ( (binary_expression "(uVar7 & 0x200) == 0" (parenthesized_expression "(uVar7 & 0x200)" ( (binary_expression "uVar7 & 0x200" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "((piVar3->pending_buf_size & 4) == 0)" ( (binary_expression "(piVar3->pending_buf_size & 4) == 0" (parenthesized_expression "(piVar3->pending_buf_size & 4)" ( (binary_expression "piVar3->pending_buf_size & 4" (field_expression "piVar3->pending_buf_size" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n    cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n    local_64 = (gz_headerp)0x0;\n  }" { (expression_statement "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;" (assignment_expression "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0" (field_expression "cVar20.fc" identifier . field_identifier) = (cast_expression "(anon_union_2_2_314cc5cc_for_fc)0x0" ( (type_descriptor "anon_union_2_2_314cc5cc_for_fc" type_identifier) ) number_literal)) ;) (expression_statement "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;" (assignment_expression "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0" (field_expression "cVar20.dl" identifier . field_identifier) = (cast_expression "(anon_union_2_2_43a7fb4f_for_dl)0x0" ( (type_descriptor "anon_union_2_2_43a7fb4f_for_dl" type_identifier) ) number_literal)) ;) (expression_statement "local_64 = (gz_headerp)0x0;" (assignment_expression "local_64 = (gz_headerp)0x0" identifier = (cast_expression "(gz_headerp)0x0" ( (type_descriptor "gz_headerp" type_identifier) ) number_literal)) ;) }) (else_clause "else {\n    cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n    cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n    hbuf._0_2_ = SUB42(local_64,0);\n    pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2);\n    piVar3->gzhead = pgVar13;\n    local_64 = (gz_headerp)0x0;\n    uVar7 = piVar3->pending;\n  }" else (compound_statement "{\n    cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n    cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n    hbuf._0_2_ = SUB42(local_64,0);\n    pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2);\n    piVar3->gzhead = pgVar13;\n    local_64 = (gz_headerp)0x0;\n    uVar7 = piVar3->pending;\n  }" { (expression_statement "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;" (assignment_expression "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0" (field_expression "cVar20.fc" identifier . field_identifier) = (cast_expression "(anon_union_2_2_314cc5cc_for_fc)0x0" ( (type_descriptor "anon_union_2_2_314cc5cc_for_fc" type_identifier) ) number_literal)) ;) (expression_statement "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;" (assignment_expression "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0" (field_expression "cVar20.dl" identifier . field_identifier) = (cast_expression "(anon_union_2_2_43a7fb4f_for_dl)0x0" ( (type_descriptor "anon_union_2_2_43a7fb4f_for_dl" type_identifier) ) number_literal)) ;) (expression_statement "hbuf._0_2_ = SUB42(local_64,0);" (assignment_expression "hbuf._0_2_ = SUB42(local_64,0)" (field_expression "hbuf._0_2_" identifier . field_identifier) = (call_expression "SUB42(local_64,0)" identifier (argument_list "(local_64,0)" ( identifier , number_literal )))) ;) (expression_statement "pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2);" (assignment_expression "pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2)" identifier = (cast_expression "(gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2)" ( (type_descriptor "gz_headerp" type_identifier) ) (call_expression "crc32((ulong)piVar3->gzhead,hbuf,2)" identifier (argument_list "((ulong)piVar3->gzhead,hbuf,2)" ( (cast_expression "(ulong)piVar3->gzhead" ( (type_descriptor "ulong" type_identifier) ) (field_expression "piVar3->gzhead" identifier -> field_identifier)) , identifier , number_literal ))))) ;) (expression_statement "piVar3->gzhead = pgVar13;" (assignment_expression "piVar3->gzhead = pgVar13" (field_expression "piVar3->gzhead" identifier -> field_identifier) = identifier) ;) (expression_statement "local_64 = (gz_headerp)0x0;" (assignment_expression "local_64 = (gz_headerp)0x0" identifier = (cast_expression "(gz_headerp)0x0" ( (type_descriptor "gz_headerp" type_identifier) ) number_literal)) ;) (expression_statement "uVar7 = piVar3->pending;" (assignment_expression "uVar7 = piVar3->pending" identifier = (field_expression "piVar3->pending" identifier -> field_identifier)) ;) }))) (labeled_statement "LAB_000181c0:\n  piVar3->status = 0x3f39;" statement_identifier : (expression_statement "piVar3->status = 0x3f39;" (assignment_expression "piVar3->status = 0x3f39" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;)) (labeled_statement "LAB_000181cb:\n  if ((uVar7 & 0x400) == 0) {\nLAB_0001826a:\n    piVar3->head = (Posf *)0x0;\n    piVar3->status = 0x3f3a;\nLAB_0001832f:\n    if ((uVar7 & 0x800) == 0) {\n      if (*(int *)&piVar3->method != 0) {\n        *(undefined4 *)(*(int *)&piVar3->method + 0x1c) = 0;\n      }\n    }\n    else {\n      pPVar27 = (Posf *)0x0;\n      if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n      do {\n        iVar6 = *(int *)&piVar3->method;\n        pPVar27 = (Posf *)((int)pPVar27 + 1);\n        bVar16 = (local_60 + -1)[(int)pPVar27];\n        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x1c), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x20))) {\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }\n      } while ((bVar16 != 0) && (pPVar27 < local_6c));\n      if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);\n        piVar3->gzhead = pgVar13;\n      }\n      local_60 = local_60 + (int)pPVar27;\n      local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n      if (bVar16 != 0) goto LAB_00017f30;\n      uVar7 = piVar3->pending;\n    }\n    piVar3->head = (Posf *)0x0;\n    piVar3->status = 0x3f3b;\nLAB_0001835c:\n    if ((uVar7 & 0x1000) == 0) {\n      if (*(int *)&piVar3->method != 0) {\n        *(undefined4 *)(*(int *)&piVar3->method + 0x24) = 0;\n      }\n    }\n    else {\n      pPVar27 = (Posf *)0x0;\n      if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n      do {\n        iVar6 = *(int *)&piVar3->method;\n        pPVar27 = (Posf *)((int)pPVar27 + 1);\n        bVar16 = (local_60 + -1)[(int)pPVar27];\n        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x24), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x28))) {\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }\n      } while ((bVar16 != 0) && (pPVar27 < local_6c));\n      if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);\n        piVar3->gzhead = pgVar13;\n      }\n      local_60 = local_60 + (int)pPVar27;\n      local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n      if (bVar16 != 0) goto LAB_00017f30;\n      uVar7 = piVar3->pending;\n    }\n    piVar3->status = 0x3f3c;\nLAB_00018382:\n    if ((uVar7 & 0x200) == 0) {\nLAB_0001838b:\n      iVar6 = *(int *)&piVar3->method;\n      if (iVar6 != 0) {\n        *(undefined4 *)(iVar6 + 0x30) = 1;\n        *(uint *)(iVar6 + 0x2c) = (int)uVar7 >> 9 & 1;\n      }\n      pgVar13 = (gz_headerp)crc32(0,(uchar *)0x0,0);\n      piVar3->gzhead = pgVar13;\n      strm->adler = (uLong)pgVar13;\n      piVar3->status = 0x3f3f;\n      goto _L105;\n    }\n    if ((uint)cVar20 < 0x10) {\n      if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n      do {\n        pbVar26 = local_60 + 1;\n        local_6c = (Posf *)((int)local_6c - 1);\n        bVar16 = cVar20.fc;\n        cVar20 = (ct_data_s)((int)cVar20 + 8);\n        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n        local_60 = pbVar26;\n        if (0xf < (uint)cVar20) goto LAB_00018a2e;\n      } while (local_6c != (Posf *)0x0);\n      pPVar27 = (Posf *)0x0;\n    }\n    else {\nLAB_00018a2e:\n      if (((piVar3->pending_buf_size & 4) == 0) ||\n         ((gz_headerp)(uint)*(ushort *)&piVar3->gzhead == local_64)) {\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\n        goto LAB_0001838b;\n      }\n      strm->msg = "header crc mismatch";\n      piVar3->status = 0x3f51;\n      pPVar27 = (Posf *)0xfffffffd;\n    }\n  }\n  else {\n    pPVar27 = piVar3->head;\n    pPVar9 = local_6c;\n    if (pPVar27 < local_6c) {\n      pPVar9 = pPVar27;\n    }\n    if (pPVar9 != (Posf *)0x0) {\n      iVar6 = *(int *)&piVar3->method;\n      if ((iVar6 != 0) && (*(int *)(iVar6 + 0x10) != 0)) {\n        iVar11 = *(int *)(iVar6 + 0x14) - (int)pPVar27;\n        pPVar27 = (Posf *)(*(uint *)(iVar6 + 0x18) - iVar11);\n        if ((uint)((int)pPVar9 + iVar11) <= *(uint *)(iVar6 + 0x18)) {\n          pPVar27 = pPVar9;\n        }\n        memcpy((void *)(iVar11 + *(int *)(iVar6 + 0x10)),local_60,(size_t)pPVar27);\n        uVar7 = piVar3->pending;\n      }\n      if (((uVar7 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar9);\n        piVar3->gzhead = pgVar13;\n      }\n      local_6c = (Posf *)((int)local_6c - (int)pPVar9);\n      local_60 = local_60 + (int)pPVar9;\n      pPVar27 = (Posf *)((int)piVar3->head - (int)pPVar9);\n      piVar3->head = pPVar27;\n    }\n    if (pPVar27 == (Posf *)0x0) {\n      uVar7 = piVar3->pending;\n      goto LAB_0001826a;\n    }\nLAB_00017f30:\n    pPVar27 = (Posf *)0x0;\n  }" statement_identifier : (if_statement "if ((uVar7 & 0x400) == 0) {\nLAB_0001826a:\n    piVar3->head = (Posf *)0x0;\n    piVar3->status = 0x3f3a;\nLAB_0001832f:\n    if ((uVar7 & 0x800) == 0) {\n      if (*(int *)&piVar3->method != 0) {\n        *(undefined4 *)(*(int *)&piVar3->method + 0x1c) = 0;\n      }\n    }\n    else {\n      pPVar27 = (Posf *)0x0;\n      if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n      do {\n        iVar6 = *(int *)&piVar3->method;\n        pPVar27 = (Posf *)((int)pPVar27 + 1);\n        bVar16 = (local_60 + -1)[(int)pPVar27];\n        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x1c), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x20))) {\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }\n      } while ((bVar16 != 0) && (pPVar27 < local_6c));\n      if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);\n        piVar3->gzhead = pgVar13;\n      }\n      local_60 = local_60 + (int)pPVar27;\n      local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n      if (bVar16 != 0) goto LAB_00017f30;\n      uVar7 = piVar3->pending;\n    }\n    piVar3->head = (Posf *)0x0;\n    piVar3->status = 0x3f3b;\nLAB_0001835c:\n    if ((uVar7 & 0x1000) == 0) {\n      if (*(int *)&piVar3->method != 0) {\n        *(undefined4 *)(*(int *)&piVar3->method + 0x24) = 0;\n      }\n    }\n    else {\n      pPVar27 = (Posf *)0x0;\n      if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n      do {\n        iVar6 = *(int *)&piVar3->method;\n        pPVar27 = (Posf *)((int)pPVar27 + 1);\n        bVar16 = (local_60 + -1)[(int)pPVar27];\n        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x24), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x28))) {\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }\n      } while ((bVar16 != 0) && (pPVar27 < local_6c));\n      if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);\n        piVar3->gzhead = pgVar13;\n      }\n      local_60 = local_60 + (int)pPVar27;\n      local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n      if (bVar16 != 0) goto LAB_00017f30;\n      uVar7 = piVar3->pending;\n    }\n    piVar3->status = 0x3f3c;\nLAB_00018382:\n    if ((uVar7 & 0x200) == 0) {\nLAB_0001838b:\n      iVar6 = *(int *)&piVar3->method;\n      if (iVar6 != 0) {\n        *(undefined4 *)(iVar6 + 0x30) = 1;\n        *(uint *)(iVar6 + 0x2c) = (int)uVar7 >> 9 & 1;\n      }\n      pgVar13 = (gz_headerp)crc32(0,(uchar *)0x0,0);\n      piVar3->gzhead = pgVar13;\n      strm->adler = (uLong)pgVar13;\n      piVar3->status = 0x3f3f;\n      goto _L105;\n    }\n    if ((uint)cVar20 < 0x10) {\n      if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n      do {\n        pbVar26 = local_60 + 1;\n        local_6c = (Posf *)((int)local_6c - 1);\n        bVar16 = cVar20.fc;\n        cVar20 = (ct_data_s)((int)cVar20 + 8);\n        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n        local_60 = pbVar26;\n        if (0xf < (uint)cVar20) goto LAB_00018a2e;\n      } while (local_6c != (Posf *)0x0);\n      pPVar27 = (Posf *)0x0;\n    }\n    else {\nLAB_00018a2e:\n      if (((piVar3->pending_buf_size & 4) == 0) ||\n         ((gz_headerp)(uint)*(ushort *)&piVar3->gzhead == local_64)) {\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\n        goto LAB_0001838b;\n      }\n      strm->msg = "header crc mismatch";\n      piVar3->status = 0x3f51;\n      pPVar27 = (Posf *)0xfffffffd;\n    }\n  }\n  else {\n    pPVar27 = piVar3->head;\n    pPVar9 = local_6c;\n    if (pPVar27 < local_6c) {\n      pPVar9 = pPVar27;\n    }\n    if (pPVar9 != (Posf *)0x0) {\n      iVar6 = *(int *)&piVar3->method;\n      if ((iVar6 != 0) && (*(int *)(iVar6 + 0x10) != 0)) {\n        iVar11 = *(int *)(iVar6 + 0x14) - (int)pPVar27;\n        pPVar27 = (Posf *)(*(uint *)(iVar6 + 0x18) - iVar11);\n        if ((uint)((int)pPVar9 + iVar11) <= *(uint *)(iVar6 + 0x18)) {\n          pPVar27 = pPVar9;\n        }\n        memcpy((void *)(iVar11 + *(int *)(iVar6 + 0x10)),local_60,(size_t)pPVar27);\n        uVar7 = piVar3->pending;\n      }\n      if (((uVar7 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar9);\n        piVar3->gzhead = pgVar13;\n      }\n      local_6c = (Posf *)((int)local_6c - (int)pPVar9);\n      local_60 = local_60 + (int)pPVar9;\n      pPVar27 = (Posf *)((int)piVar3->head - (int)pPVar9);\n      piVar3->head = pPVar27;\n    }\n    if (pPVar27 == (Posf *)0x0) {\n      uVar7 = piVar3->pending;\n      goto LAB_0001826a;\n    }\nLAB_00017f30:\n    pPVar27 = (Posf *)0x0;\n  }" if (parenthesized_expression "((uVar7 & 0x400) == 0)" ( (binary_expression "(uVar7 & 0x400) == 0" (parenthesized_expression "(uVar7 & 0x400)" ( (binary_expression "uVar7 & 0x400" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0001826a:\n    piVar3->head = (Posf *)0x0;\n    piVar3->status = 0x3f3a;\nLAB_0001832f:\n    if ((uVar7 & 0x800) == 0) {\n      if (*(int *)&piVar3->method != 0) {\n        *(undefined4 *)(*(int *)&piVar3->method + 0x1c) = 0;\n      }\n    }\n    else {\n      pPVar27 = (Posf *)0x0;\n      if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n      do {\n        iVar6 = *(int *)&piVar3->method;\n        pPVar27 = (Posf *)((int)pPVar27 + 1);\n        bVar16 = (local_60 + -1)[(int)pPVar27];\n        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x1c), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x20))) {\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }\n      } while ((bVar16 != 0) && (pPVar27 < local_6c));\n      if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);\n        piVar3->gzhead = pgVar13;\n      }\n      local_60 = local_60 + (int)pPVar27;\n      local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n      if (bVar16 != 0) goto LAB_00017f30;\n      uVar7 = piVar3->pending;\n    }\n    piVar3->head = (Posf *)0x0;\n    piVar3->status = 0x3f3b;\nLAB_0001835c:\n    if ((uVar7 & 0x1000) == 0) {\n      if (*(int *)&piVar3->method != 0) {\n        *(undefined4 *)(*(int *)&piVar3->method + 0x24) = 0;\n      }\n    }\n    else {\n      pPVar27 = (Posf *)0x0;\n      if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n      do {\n        iVar6 = *(int *)&piVar3->method;\n        pPVar27 = (Posf *)((int)pPVar27 + 1);\n        bVar16 = (local_60 + -1)[(int)pPVar27];\n        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x24), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x28))) {\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }\n      } while ((bVar16 != 0) && (pPVar27 < local_6c));\n      if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);\n        piVar3->gzhead = pgVar13;\n      }\n      local_60 = local_60 + (int)pPVar27;\n      local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n      if (bVar16 != 0) goto LAB_00017f30;\n      uVar7 = piVar3->pending;\n    }\n    piVar3->status = 0x3f3c;\nLAB_00018382:\n    if ((uVar7 & 0x200) == 0) {\nLAB_0001838b:\n      iVar6 = *(int *)&piVar3->method;\n      if (iVar6 != 0) {\n        *(undefined4 *)(iVar6 + 0x30) = 1;\n        *(uint *)(iVar6 + 0x2c) = (int)uVar7 >> 9 & 1;\n      }\n      pgVar13 = (gz_headerp)crc32(0,(uchar *)0x0,0);\n      piVar3->gzhead = pgVar13;\n      strm->adler = (uLong)pgVar13;\n      piVar3->status = 0x3f3f;\n      goto _L105;\n    }\n    if ((uint)cVar20 < 0x10) {\n      if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n      do {\n        pbVar26 = local_60 + 1;\n        local_6c = (Posf *)((int)local_6c - 1);\n        bVar16 = cVar20.fc;\n        cVar20 = (ct_data_s)((int)cVar20 + 8);\n        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n        local_60 = pbVar26;\n        if (0xf < (uint)cVar20) goto LAB_00018a2e;\n      } while (local_6c != (Posf *)0x0);\n      pPVar27 = (Posf *)0x0;\n    }\n    else {\nLAB_00018a2e:\n      if (((piVar3->pending_buf_size & 4) == 0) ||\n         ((gz_headerp)(uint)*(ushort *)&piVar3->gzhead == local_64)) {\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\n        goto LAB_0001838b;\n      }\n      strm->msg = "header crc mismatch";\n      piVar3->status = 0x3f51;\n      pPVar27 = (Posf *)0xfffffffd;\n    }\n  }" { (labeled_statement "LAB_0001826a:\n    piVar3->head = (Posf *)0x0;" statement_identifier : (expression_statement "piVar3->head = (Posf *)0x0;" (assignment_expression "piVar3->head = (Posf *)0x0" (field_expression "piVar3->head" identifier -> field_identifier) = (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "piVar3->status = 0x3f3a;" (assignment_expression "piVar3->status = 0x3f3a" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (labeled_statement "LAB_0001832f:\n    if ((uVar7 & 0x800) == 0) {\n      if (*(int *)&piVar3->method != 0) {\n        *(undefined4 *)(*(int *)&piVar3->method + 0x1c) = 0;\n      }\n    }\n    else {\n      pPVar27 = (Posf *)0x0;\n      if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n      do {\n        iVar6 = *(int *)&piVar3->method;\n        pPVar27 = (Posf *)((int)pPVar27 + 1);\n        bVar16 = (local_60 + -1)[(int)pPVar27];\n        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x1c), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x20))) {\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }\n      } while ((bVar16 != 0) && (pPVar27 < local_6c));\n      if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);\n        piVar3->gzhead = pgVar13;\n      }\n      local_60 = local_60 + (int)pPVar27;\n      local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n      if (bVar16 != 0) goto LAB_00017f30;\n      uVar7 = piVar3->pending;\n    }" statement_identifier : (if_statement "if ((uVar7 & 0x800) == 0) {\n      if (*(int *)&piVar3->method != 0) {\n        *(undefined4 *)(*(int *)&piVar3->method + 0x1c) = 0;\n      }\n    }\n    else {\n      pPVar27 = (Posf *)0x0;\n      if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n      do {\n        iVar6 = *(int *)&piVar3->method;\n        pPVar27 = (Posf *)((int)pPVar27 + 1);\n        bVar16 = (local_60 + -1)[(int)pPVar27];\n        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x1c), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x20))) {\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }\n      } while ((bVar16 != 0) && (pPVar27 < local_6c));\n      if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);\n        piVar3->gzhead = pgVar13;\n      }\n      local_60 = local_60 + (int)pPVar27;\n      local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n      if (bVar16 != 0) goto LAB_00017f30;\n      uVar7 = piVar3->pending;\n    }" if (parenthesized_expression "((uVar7 & 0x800) == 0)" ( (binary_expression "(uVar7 & 0x800) == 0" (parenthesized_expression "(uVar7 & 0x800)" ( (binary_expression "uVar7 & 0x800" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if (*(int *)&piVar3->method != 0) {\n        *(undefined4 *)(*(int *)&piVar3->method + 0x1c) = 0;\n      }\n    }" { (if_statement "if (*(int *)&piVar3->method != 0) {\n        *(undefined4 *)(*(int *)&piVar3->method + 0x1c) = 0;\n      }" if (parenthesized_expression "(*(int *)&piVar3->method != 0)" ( (binary_expression "*(int *)&piVar3->method != 0" (pointer_expression "*(int *)&piVar3->method" * (cast_expression "(int *)&piVar3->method" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&piVar3->method" & (field_expression "piVar3->method" identifier -> field_identifier)))) != number_literal) )) (compound_statement "{\n        *(undefined4 *)(*(int *)&piVar3->method + 0x1c) = 0;\n      }" { (expression_statement "*(undefined4 *)(*(int *)&piVar3->method + 0x1c) = 0;" (assignment_expression "*(undefined4 *)(*(int *)&piVar3->method + 0x1c) = 0" (pointer_expression "*(undefined4 *)(*(int *)&piVar3->method + 0x1c)" * (cast_expression "(undefined4 *)(*(int *)&piVar3->method + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)&piVar3->method + 0x1c)" ( (binary_expression "*(int *)&piVar3->method + 0x1c" (pointer_expression "*(int *)&piVar3->method" * (cast_expression "(int *)&piVar3->method" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&piVar3->method" & (field_expression "piVar3->method" identifier -> field_identifier)))) + number_literal) )))) = number_literal) ;) })) }) (else_clause "else {\n      pPVar27 = (Posf *)0x0;\n      if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n      do {\n        iVar6 = *(int *)&piVar3->method;\n        pPVar27 = (Posf *)((int)pPVar27 + 1);\n        bVar16 = (local_60 + -1)[(int)pPVar27];\n        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x1c), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x20))) {\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }\n      } while ((bVar16 != 0) && (pPVar27 < local_6c));\n      if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);\n        piVar3->gzhead = pgVar13;\n      }\n      local_60 = local_60 + (int)pPVar27;\n      local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n      if (bVar16 != 0) goto LAB_00017f30;\n      uVar7 = piVar3->pending;\n    }" else (compound_statement "{\n      pPVar27 = (Posf *)0x0;\n      if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n      do {\n        iVar6 = *(int *)&piVar3->method;\n        pPVar27 = (Posf *)((int)pPVar27 + 1);\n        bVar16 = (local_60 + -1)[(int)pPVar27];\n        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x1c), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x20))) {\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }\n      } while ((bVar16 != 0) && (pPVar27 < local_6c));\n      if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);\n        piVar3->gzhead = pgVar13;\n      }\n      local_60 = local_60 + (int)pPVar27;\n      local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n      if (bVar16 != 0) goto LAB_00017f30;\n      uVar7 = piVar3->pending;\n    }" { (expression_statement "pPVar27 = (Posf *)0x0;" (assignment_expression "pPVar27 = (Posf *)0x0" identifier = (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (local_6c == (Posf *)0x0) goto LAB_00017f32;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;)) (do_statement "do {\n        iVar6 = *(int *)&piVar3->method;\n        pPVar27 = (Posf *)((int)pPVar27 + 1);\n        bVar16 = (local_60 + -1)[(int)pPVar27];\n        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x1c), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x20))) {\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }\n      } while ((bVar16 != 0) && (pPVar27 < local_6c));" do (compound_statement "{\n        iVar6 = *(int *)&piVar3->method;\n        pPVar27 = (Posf *)((int)pPVar27 + 1);\n        bVar16 = (local_60 + -1)[(int)pPVar27];\n        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x1c), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x20))) {\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }\n      }" { (expression_statement "iVar6 = *(int *)&piVar3->method;" (assignment_expression "iVar6 = *(int *)&piVar3->method" identifier = (pointer_expression "*(int *)&piVar3->method" * (cast_expression "(int *)&piVar3->method" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&piVar3->method" & (field_expression "piVar3->method" identifier -> field_identifier))))) ;) (expression_statement "pPVar27 = (Posf *)((int)pPVar27 + 1);" (assignment_expression "pPVar27 = (Posf *)((int)pPVar27 + 1)" identifier = (cast_expression "(Posf *)((int)pPVar27 + 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pPVar27 + 1)" ( (binary_expression "(int)pPVar27 + 1" (cast_expression "(int)pPVar27" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "bVar16 = (local_60 + -1)[(int)pPVar27];" (assignment_expression "bVar16 = (local_60 + -1)[(int)pPVar27]" identifier = (subscript_expression "(local_60 + -1)[(int)pPVar27]" (parenthesized_expression "(local_60 + -1)" ( (binary_expression "local_60 + -1" identifier + number_literal) )) [ (cast_expression "(int)pPVar27" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (if_statement "if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x1c), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x20))) {\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }" if (parenthesized_expression "(((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x1c), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x20)))" ( (binary_expression "((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x1c), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x20))" (parenthesized_expression "((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x1c), iVar11 != 0))" ( (binary_expression "(iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x1c), iVar11 != 0)" (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar11 = *(int *)(iVar6 + 0x1c), iVar11 != 0)" ( (comma_expression "iVar11 = *(int *)(iVar6 + 0x1c), iVar11 != 0" (assignment_expression "iVar11 = *(int *)(iVar6 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar6 + 0x1c)" * (cast_expression "(int *)(iVar6 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1c)" ( (binary_expression "iVar6 + 0x1c" identifier + number_literal) ))))) , (binary_expression "iVar11 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x20))" ( (comma_expression "pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x20)" (assignment_expression "pPVar9 = piVar3->head" identifier = (field_expression "piVar3->head" identifier -> field_identifier)) , (binary_expression "pPVar9 < *(Posf **)(iVar6 + 0x20)" identifier < (pointer_expression "*(Posf **)(iVar6 + 0x20)" * (cast_expression "(Posf **)(iVar6 + 0x20)" ( (type_descriptor "Posf **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0x20)" ( (binary_expression "iVar6 + 0x20" identifier + number_literal) )))))) ))) )) (compound_statement "{\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }" { (expression_statement "piVar3->head = (Posf *)((int)pPVar9 + 1);" (assignment_expression "piVar3->head = (Posf *)((int)pPVar9 + 1)" (field_expression "piVar3->head" identifier -> field_identifier) = (cast_expression "(Posf *)((int)pPVar9 + 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pPVar9 + 1)" ( (binary_expression "(int)pPVar9 + 1" (cast_expression "(int)pPVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(byte *)(iVar11 + (int)pPVar9) = bVar16;" (assignment_expression "*(byte *)(iVar11 + (int)pPVar9) = bVar16" (pointer_expression "*(byte *)(iVar11 + (int)pPVar9)" * (cast_expression "(byte *)(iVar11 + (int)pPVar9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + (int)pPVar9)" ( (binary_expression "iVar11 + (int)pPVar9" identifier + (cast_expression "(int)pPVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )))) = identifier) ;) })) }) while (parenthesized_expression "((bVar16 != 0) && (pPVar27 < local_6c))" ( (binary_expression "(bVar16 != 0) && (pPVar27 < local_6c)" (parenthesized_expression "(bVar16 != 0)" ( (binary_expression "bVar16 != 0" identifier != number_literal) )) && (parenthesized_expression "(pPVar27 < local_6c)" ( (binary_expression "pPVar27 < local_6c" identifier < identifier) ))) )) ;) (if_statement "if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);\n        piVar3->gzhead = pgVar13;\n      }" if (parenthesized_expression "(((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0))" ( (binary_expression "((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)" (parenthesized_expression "((piVar3->pending & 0x200) != 0)" ( (binary_expression "(piVar3->pending & 0x200) != 0" (parenthesized_expression "(piVar3->pending & 0x200)" ( (binary_expression "piVar3->pending & 0x200" (field_expression "piVar3->pending" identifier -> field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "((piVar3->pending_buf_size & 4) != 0)" ( (binary_expression "(piVar3->pending_buf_size & 4) != 0" (parenthesized_expression "(piVar3->pending_buf_size & 4)" ( (binary_expression "piVar3->pending_buf_size & 4" (field_expression "piVar3->pending_buf_size" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);\n        piVar3->gzhead = pgVar13;\n      }" { (expression_statement "pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);" (assignment_expression "pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27)" identifier = (cast_expression "(gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27)" ( (type_descriptor "gz_headerp" type_identifier) ) (call_expression "crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27)" identifier (argument_list "((ulong)piVar3->gzhead,local_60,(uInt)pPVar27)" ( (cast_expression "(ulong)piVar3->gzhead" ( (type_descriptor "ulong" type_identifier) ) (field_expression "piVar3->gzhead" identifier -> field_identifier)) , identifier , (cast_expression "(uInt)pPVar27" ( (type_descriptor "uInt" type_identifier) ) identifier) ))))) ;) (expression_statement "piVar3->gzhead = pgVar13;" (assignment_expression "piVar3->gzhead = pgVar13" (field_expression "piVar3->gzhead" identifier -> field_identifier) = identifier) ;) })) (expression_statement "local_60 = local_60 + (int)pPVar27;" (assignment_expression "local_60 = local_60 + (int)pPVar27" identifier = (binary_expression "local_60 + (int)pPVar27" identifier + (cast_expression "(int)pPVar27" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_6c = (Posf *)((int)local_6c - (int)pPVar27);" (assignment_expression "local_6c = (Posf *)((int)local_6c - (int)pPVar27)" identifier = (cast_expression "(Posf *)((int)local_6c - (int)pPVar27)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - (int)pPVar27)" ( (binary_expression "(int)local_6c - (int)pPVar27" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pPVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (bVar16 != 0) goto LAB_00017f30;" if (parenthesized_expression "(bVar16 != 0)" ( (binary_expression "bVar16 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "uVar7 = piVar3->pending;" (assignment_expression "uVar7 = piVar3->pending" identifier = (field_expression "piVar3->pending" identifier -> field_identifier)) ;) })))) (expression_statement "piVar3->head = (Posf *)0x0;" (assignment_expression "piVar3->head = (Posf *)0x0" (field_expression "piVar3->head" identifier -> field_identifier) = (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar3->status = 0x3f3b;" (assignment_expression "piVar3->status = 0x3f3b" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (labeled_statement "LAB_0001835c:\n    if ((uVar7 & 0x1000) == 0) {\n      if (*(int *)&piVar3->method != 0) {\n        *(undefined4 *)(*(int *)&piVar3->method + 0x24) = 0;\n      }\n    }\n    else {\n      pPVar27 = (Posf *)0x0;\n      if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n      do {\n        iVar6 = *(int *)&piVar3->method;\n        pPVar27 = (Posf *)((int)pPVar27 + 1);\n        bVar16 = (local_60 + -1)[(int)pPVar27];\n        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x24), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x28))) {\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }\n      } while ((bVar16 != 0) && (pPVar27 < local_6c));\n      if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);\n        piVar3->gzhead = pgVar13;\n      }\n      local_60 = local_60 + (int)pPVar27;\n      local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n      if (bVar16 != 0) goto LAB_00017f30;\n      uVar7 = piVar3->pending;\n    }" statement_identifier : (if_statement "if ((uVar7 & 0x1000) == 0) {\n      if (*(int *)&piVar3->method != 0) {\n        *(undefined4 *)(*(int *)&piVar3->method + 0x24) = 0;\n      }\n    }\n    else {\n      pPVar27 = (Posf *)0x0;\n      if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n      do {\n        iVar6 = *(int *)&piVar3->method;\n        pPVar27 = (Posf *)((int)pPVar27 + 1);\n        bVar16 = (local_60 + -1)[(int)pPVar27];\n        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x24), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x28))) {\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }\n      } while ((bVar16 != 0) && (pPVar27 < local_6c));\n      if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);\n        piVar3->gzhead = pgVar13;\n      }\n      local_60 = local_60 + (int)pPVar27;\n      local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n      if (bVar16 != 0) goto LAB_00017f30;\n      uVar7 = piVar3->pending;\n    }" if (parenthesized_expression "((uVar7 & 0x1000) == 0)" ( (binary_expression "(uVar7 & 0x1000) == 0" (parenthesized_expression "(uVar7 & 0x1000)" ( (binary_expression "uVar7 & 0x1000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if (*(int *)&piVar3->method != 0) {\n        *(undefined4 *)(*(int *)&piVar3->method + 0x24) = 0;\n      }\n    }" { (if_statement "if (*(int *)&piVar3->method != 0) {\n        *(undefined4 *)(*(int *)&piVar3->method + 0x24) = 0;\n      }" if (parenthesized_expression "(*(int *)&piVar3->method != 0)" ( (binary_expression "*(int *)&piVar3->method != 0" (pointer_expression "*(int *)&piVar3->method" * (cast_expression "(int *)&piVar3->method" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&piVar3->method" & (field_expression "piVar3->method" identifier -> field_identifier)))) != number_literal) )) (compound_statement "{\n        *(undefined4 *)(*(int *)&piVar3->method + 0x24) = 0;\n      }" { (expression_statement "*(undefined4 *)(*(int *)&piVar3->method + 0x24) = 0;" (assignment_expression "*(undefined4 *)(*(int *)&piVar3->method + 0x24) = 0" (pointer_expression "*(undefined4 *)(*(int *)&piVar3->method + 0x24)" * (cast_expression "(undefined4 *)(*(int *)&piVar3->method + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)&piVar3->method + 0x24)" ( (binary_expression "*(int *)&piVar3->method + 0x24" (pointer_expression "*(int *)&piVar3->method" * (cast_expression "(int *)&piVar3->method" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&piVar3->method" & (field_expression "piVar3->method" identifier -> field_identifier)))) + number_literal) )))) = number_literal) ;) })) }) (else_clause "else {\n      pPVar27 = (Posf *)0x0;\n      if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n      do {\n        iVar6 = *(int *)&piVar3->method;\n        pPVar27 = (Posf *)((int)pPVar27 + 1);\n        bVar16 = (local_60 + -1)[(int)pPVar27];\n        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x24), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x28))) {\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }\n      } while ((bVar16 != 0) && (pPVar27 < local_6c));\n      if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);\n        piVar3->gzhead = pgVar13;\n      }\n      local_60 = local_60 + (int)pPVar27;\n      local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n      if (bVar16 != 0) goto LAB_00017f30;\n      uVar7 = piVar3->pending;\n    }" else (compound_statement "{\n      pPVar27 = (Posf *)0x0;\n      if (local_6c == (Posf *)0x0) goto LAB_00017f32;\n      do {\n        iVar6 = *(int *)&piVar3->method;\n        pPVar27 = (Posf *)((int)pPVar27 + 1);\n        bVar16 = (local_60 + -1)[(int)pPVar27];\n        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x24), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x28))) {\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }\n      } while ((bVar16 != 0) && (pPVar27 < local_6c));\n      if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);\n        piVar3->gzhead = pgVar13;\n      }\n      local_60 = local_60 + (int)pPVar27;\n      local_6c = (Posf *)((int)local_6c - (int)pPVar27);\n      if (bVar16 != 0) goto LAB_00017f30;\n      uVar7 = piVar3->pending;\n    }" { (expression_statement "pPVar27 = (Posf *)0x0;" (assignment_expression "pPVar27 = (Posf *)0x0" identifier = (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (local_6c == (Posf *)0x0) goto LAB_00017f32;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;)) (do_statement "do {\n        iVar6 = *(int *)&piVar3->method;\n        pPVar27 = (Posf *)((int)pPVar27 + 1);\n        bVar16 = (local_60 + -1)[(int)pPVar27];\n        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x24), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x28))) {\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }\n      } while ((bVar16 != 0) && (pPVar27 < local_6c));" do (compound_statement "{\n        iVar6 = *(int *)&piVar3->method;\n        pPVar27 = (Posf *)((int)pPVar27 + 1);\n        bVar16 = (local_60 + -1)[(int)pPVar27];\n        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x24), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x28))) {\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }\n      }" { (expression_statement "iVar6 = *(int *)&piVar3->method;" (assignment_expression "iVar6 = *(int *)&piVar3->method" identifier = (pointer_expression "*(int *)&piVar3->method" * (cast_expression "(int *)&piVar3->method" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&piVar3->method" & (field_expression "piVar3->method" identifier -> field_identifier))))) ;) (expression_statement "pPVar27 = (Posf *)((int)pPVar27 + 1);" (assignment_expression "pPVar27 = (Posf *)((int)pPVar27 + 1)" identifier = (cast_expression "(Posf *)((int)pPVar27 + 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pPVar27 + 1)" ( (binary_expression "(int)pPVar27 + 1" (cast_expression "(int)pPVar27" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "bVar16 = (local_60 + -1)[(int)pPVar27];" (assignment_expression "bVar16 = (local_60 + -1)[(int)pPVar27]" identifier = (subscript_expression "(local_60 + -1)[(int)pPVar27]" (parenthesized_expression "(local_60 + -1)" ( (binary_expression "local_60 + -1" identifier + number_literal) )) [ (cast_expression "(int)pPVar27" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (if_statement "if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x24), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x28))) {\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }" if (parenthesized_expression "(((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x24), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x28)))" ( (binary_expression "((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x24), iVar11 != 0)) &&\n           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x28))" (parenthesized_expression "((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x24), iVar11 != 0))" ( (binary_expression "(iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x24), iVar11 != 0)" (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar11 = *(int *)(iVar6 + 0x24), iVar11 != 0)" ( (comma_expression "iVar11 = *(int *)(iVar6 + 0x24), iVar11 != 0" (assignment_expression "iVar11 = *(int *)(iVar6 + 0x24)" identifier = (pointer_expression "*(int *)(iVar6 + 0x24)" * (cast_expression "(int *)(iVar6 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x24)" ( (binary_expression "iVar6 + 0x24" identifier + number_literal) ))))) , (binary_expression "iVar11 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x28))" ( (comma_expression "pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x28)" (assignment_expression "pPVar9 = piVar3->head" identifier = (field_expression "piVar3->head" identifier -> field_identifier)) , (binary_expression "pPVar9 < *(Posf **)(iVar6 + 0x28)" identifier < (pointer_expression "*(Posf **)(iVar6 + 0x28)" * (cast_expression "(Posf **)(iVar6 + 0x28)" ( (type_descriptor "Posf **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0x28)" ( (binary_expression "iVar6 + 0x28" identifier + number_literal) )))))) ))) )) (compound_statement "{\n          piVar3->head = (Posf *)((int)pPVar9 + 1);\n          *(byte *)(iVar11 + (int)pPVar9) = bVar16;\n        }" { (expression_statement "piVar3->head = (Posf *)((int)pPVar9 + 1);" (assignment_expression "piVar3->head = (Posf *)((int)pPVar9 + 1)" (field_expression "piVar3->head" identifier -> field_identifier) = (cast_expression "(Posf *)((int)pPVar9 + 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pPVar9 + 1)" ( (binary_expression "(int)pPVar9 + 1" (cast_expression "(int)pPVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(byte *)(iVar11 + (int)pPVar9) = bVar16;" (assignment_expression "*(byte *)(iVar11 + (int)pPVar9) = bVar16" (pointer_expression "*(byte *)(iVar11 + (int)pPVar9)" * (cast_expression "(byte *)(iVar11 + (int)pPVar9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + (int)pPVar9)" ( (binary_expression "iVar11 + (int)pPVar9" identifier + (cast_expression "(int)pPVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )))) = identifier) ;) })) }) while (parenthesized_expression "((bVar16 != 0) && (pPVar27 < local_6c))" ( (binary_expression "(bVar16 != 0) && (pPVar27 < local_6c)" (parenthesized_expression "(bVar16 != 0)" ( (binary_expression "bVar16 != 0" identifier != number_literal) )) && (parenthesized_expression "(pPVar27 < local_6c)" ( (binary_expression "pPVar27 < local_6c" identifier < identifier) ))) )) ;) (if_statement "if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);\n        piVar3->gzhead = pgVar13;\n      }" if (parenthesized_expression "(((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0))" ( (binary_expression "((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)" (parenthesized_expression "((piVar3->pending & 0x200) != 0)" ( (binary_expression "(piVar3->pending & 0x200) != 0" (parenthesized_expression "(piVar3->pending & 0x200)" ( (binary_expression "piVar3->pending & 0x200" (field_expression "piVar3->pending" identifier -> field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "((piVar3->pending_buf_size & 4) != 0)" ( (binary_expression "(piVar3->pending_buf_size & 4) != 0" (parenthesized_expression "(piVar3->pending_buf_size & 4)" ( (binary_expression "piVar3->pending_buf_size & 4" (field_expression "piVar3->pending_buf_size" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);\n        piVar3->gzhead = pgVar13;\n      }" { (expression_statement "pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);" (assignment_expression "pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27)" identifier = (cast_expression "(gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27)" ( (type_descriptor "gz_headerp" type_identifier) ) (call_expression "crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27)" identifier (argument_list "((ulong)piVar3->gzhead,local_60,(uInt)pPVar27)" ( (cast_expression "(ulong)piVar3->gzhead" ( (type_descriptor "ulong" type_identifier) ) (field_expression "piVar3->gzhead" identifier -> field_identifier)) , identifier , (cast_expression "(uInt)pPVar27" ( (type_descriptor "uInt" type_identifier) ) identifier) ))))) ;) (expression_statement "piVar3->gzhead = pgVar13;" (assignment_expression "piVar3->gzhead = pgVar13" (field_expression "piVar3->gzhead" identifier -> field_identifier) = identifier) ;) })) (expression_statement "local_60 = local_60 + (int)pPVar27;" (assignment_expression "local_60 = local_60 + (int)pPVar27" identifier = (binary_expression "local_60 + (int)pPVar27" identifier + (cast_expression "(int)pPVar27" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_6c = (Posf *)((int)local_6c - (int)pPVar27);" (assignment_expression "local_6c = (Posf *)((int)local_6c - (int)pPVar27)" identifier = (cast_expression "(Posf *)((int)local_6c - (int)pPVar27)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - (int)pPVar27)" ( (binary_expression "(int)local_6c - (int)pPVar27" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pPVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (bVar16 != 0) goto LAB_00017f30;" if (parenthesized_expression "(bVar16 != 0)" ( (binary_expression "bVar16 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "uVar7 = piVar3->pending;" (assignment_expression "uVar7 = piVar3->pending" identifier = (field_expression "piVar3->pending" identifier -> field_identifier)) ;) })))) (expression_statement "piVar3->status = 0x3f3c;" (assignment_expression "piVar3->status = 0x3f3c" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (labeled_statement "LAB_00018382:\n    if ((uVar7 & 0x200) == 0) {\nLAB_0001838b:\n      iVar6 = *(int *)&piVar3->method;\n      if (iVar6 != 0) {\n        *(undefined4 *)(iVar6 + 0x30) = 1;\n        *(uint *)(iVar6 + 0x2c) = (int)uVar7 >> 9 & 1;\n      }\n      pgVar13 = (gz_headerp)crc32(0,(uchar *)0x0,0);\n      piVar3->gzhead = pgVar13;\n      strm->adler = (uLong)pgVar13;\n      piVar3->status = 0x3f3f;\n      goto _L105;\n    }" statement_identifier : (if_statement "if ((uVar7 & 0x200) == 0) {\nLAB_0001838b:\n      iVar6 = *(int *)&piVar3->method;\n      if (iVar6 != 0) {\n        *(undefined4 *)(iVar6 + 0x30) = 1;\n        *(uint *)(iVar6 + 0x2c) = (int)uVar7 >> 9 & 1;\n      }\n      pgVar13 = (gz_headerp)crc32(0,(uchar *)0x0,0);\n      piVar3->gzhead = pgVar13;\n      strm->adler = (uLong)pgVar13;\n      piVar3->status = 0x3f3f;\n      goto _L105;\n    }" if (parenthesized_expression "((uVar7 & 0x200) == 0)" ( (binary_expression "(uVar7 & 0x200) == 0" (parenthesized_expression "(uVar7 & 0x200)" ( (binary_expression "uVar7 & 0x200" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0001838b:\n      iVar6 = *(int *)&piVar3->method;\n      if (iVar6 != 0) {\n        *(undefined4 *)(iVar6 + 0x30) = 1;\n        *(uint *)(iVar6 + 0x2c) = (int)uVar7 >> 9 & 1;\n      }\n      pgVar13 = (gz_headerp)crc32(0,(uchar *)0x0,0);\n      piVar3->gzhead = pgVar13;\n      strm->adler = (uLong)pgVar13;\n      piVar3->status = 0x3f3f;\n      goto _L105;\n    }" { (labeled_statement "LAB_0001838b:\n      iVar6 = *(int *)&piVar3->method;" statement_identifier : (expression_statement "iVar6 = *(int *)&piVar3->method;" (assignment_expression "iVar6 = *(int *)&piVar3->method" identifier = (pointer_expression "*(int *)&piVar3->method" * (cast_expression "(int *)&piVar3->method" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&piVar3->method" & (field_expression "piVar3->method" identifier -> field_identifier))))) ;)) (if_statement "if (iVar6 != 0) {\n        *(undefined4 *)(iVar6 + 0x30) = 1;\n        *(uint *)(iVar6 + 0x2c) = (int)uVar7 >> 9 & 1;\n      }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n        *(undefined4 *)(iVar6 + 0x30) = 1;\n        *(uint *)(iVar6 + 0x2c) = (int)uVar7 >> 9 & 1;\n      }" { (expression_statement "*(undefined4 *)(iVar6 + 0x30) = 1;" (assignment_expression "*(undefined4 *)(iVar6 + 0x30) = 1" (pointer_expression "*(undefined4 *)(iVar6 + 0x30)" * (cast_expression "(undefined4 *)(iVar6 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x30)" ( (binary_expression "iVar6 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(iVar6 + 0x2c) = (int)uVar7 >> 9 & 1;" (assignment_expression "*(uint *)(iVar6 + 0x2c) = (int)uVar7 >> 9 & 1" (pointer_expression "*(uint *)(iVar6 + 0x2c)" * (cast_expression "(uint *)(iVar6 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x2c)" ( (binary_expression "iVar6 + 0x2c" identifier + number_literal) )))) = (binary_expression "(int)uVar7 >> 9 & 1" (binary_expression "(int)uVar7 >> 9" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) & number_literal)) ;) })) (expression_statement "pgVar13 = (gz_headerp)crc32(0,(uchar *)0x0,0);" (assignment_expression "pgVar13 = (gz_headerp)crc32(0,(uchar *)0x0,0)" identifier = (cast_expression "(gz_headerp)crc32(0,(uchar *)0x0,0)" ( (type_descriptor "gz_headerp" type_identifier) ) (call_expression "crc32(0,(uchar *)0x0,0)" identifier (argument_list "(0,(uchar *)0x0,0)" ( number_literal , (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))))) ;) (expression_statement "piVar3->gzhead = pgVar13;" (assignment_expression "piVar3->gzhead = pgVar13" (field_expression "piVar3->gzhead" identifier -> field_identifier) = identifier) ;) (expression_statement "strm->adler = (uLong)pgVar13;" (assignment_expression "strm->adler = (uLong)pgVar13" (field_expression "strm->adler" identifier -> field_identifier) = (cast_expression "(uLong)pgVar13" ( (type_descriptor "uLong" type_identifier) ) identifier)) ;) (expression_statement "piVar3->status = 0x3f3f;" (assignment_expression "piVar3->status = 0x3f3f" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (goto_statement "goto _L105;" goto statement_identifier ;) }))) (if_statement "if ((uint)cVar20 < 0x10) {\n      if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n      do {\n        pbVar26 = local_60 + 1;\n        local_6c = (Posf *)((int)local_6c - 1);\n        bVar16 = cVar20.fc;\n        cVar20 = (ct_data_s)((int)cVar20 + 8);\n        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n        local_60 = pbVar26;\n        if (0xf < (uint)cVar20) goto LAB_00018a2e;\n      } while (local_6c != (Posf *)0x0);\n      pPVar27 = (Posf *)0x0;\n    }\n    else {\nLAB_00018a2e:\n      if (((piVar3->pending_buf_size & 4) == 0) ||\n         ((gz_headerp)(uint)*(ushort *)&piVar3->gzhead == local_64)) {\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\n        goto LAB_0001838b;\n      }\n      strm->msg = "header crc mismatch";\n      piVar3->status = 0x3f51;\n      pPVar27 = (Posf *)0xfffffffd;\n    }" if (parenthesized_expression "((uint)cVar20 < 0x10)" ( (binary_expression "(uint)cVar20 < 0x10" (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) )) (compound_statement "{\n      if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n      do {\n        pbVar26 = local_60 + 1;\n        local_6c = (Posf *)((int)local_6c - 1);\n        bVar16 = cVar20.fc;\n        cVar20 = (ct_data_s)((int)cVar20 + 8);\n        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n        local_60 = pbVar26;\n        if (0xf < (uint)cVar20) goto LAB_00018a2e;\n      } while (local_6c != (Posf *)0x0);\n      pPVar27 = (Posf *)0x0;\n    }" { (if_statement "if (local_6c == (Posf *)0x0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (do_statement "do {\n        pbVar26 = local_60 + 1;\n        local_6c = (Posf *)((int)local_6c - 1);\n        bVar16 = cVar20.fc;\n        cVar20 = (ct_data_s)((int)cVar20 + 8);\n        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n        local_60 = pbVar26;\n        if (0xf < (uint)cVar20) goto LAB_00018a2e;\n      } while (local_6c != (Posf *)0x0);" do (compound_statement "{\n        pbVar26 = local_60 + 1;\n        local_6c = (Posf *)((int)local_6c - 1);\n        bVar16 = cVar20.fc;\n        cVar20 = (ct_data_s)((int)cVar20 + 8);\n        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));\n        local_60 = pbVar26;\n        if (0xf < (uint)cVar20) goto LAB_00018a2e;\n      }" { (expression_statement "pbVar26 = local_60 + 1;" (assignment_expression "pbVar26 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = (Posf *)((int)local_6c - 1);" (assignment_expression "local_6c = (Posf *)((int)local_6c - 1)" identifier = (cast_expression "(Posf *)((int)local_6c - 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - 1)" ( (binary_expression "(int)local_6c - 1" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "bVar16 = cVar20.fc;" (assignment_expression "bVar16 = cVar20.fc" identifier = (field_expression "cVar20.fc" identifier . field_identifier)) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 + 8);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 + 8)" identifier = (call_expression "(ct_data_s)((int)cVar20 + 8)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 + 8)" ( (binary_expression "(int)cVar20 + 8" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));" (assignment_expression "local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" identifier = (call_expression "(gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))" ( (binary_expression "(int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f))" (cast_expression "(int)&local_64->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_64->text" & (field_expression "local_64->text" identifier -> field_identifier))) + (parenthesized_expression "((uint)*local_60 << (bVar16 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar16 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar16 & 0x1f)" ( (binary_expression "bVar16 & 0x1f" identifier & number_literal) ))) ))) )))) ;) (expression_statement "local_60 = pbVar26;" (assignment_expression "local_60 = pbVar26" identifier = identifier) ;) (if_statement "if (0xf < (uint)cVar20) goto LAB_00018a2e;" if (parenthesized_expression "(0xf < (uint)cVar20)" ( (binary_expression "0xf < (uint)cVar20" number_literal < (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (goto_statement "goto LAB_00018a2e;" goto statement_identifier ;)) }) while (parenthesized_expression "(local_6c != (Posf *)0x0)" ( (binary_expression "local_6c != (Posf *)0x0" identifier != (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "pPVar27 = (Posf *)0x0;" (assignment_expression "pPVar27 = (Posf *)0x0" identifier = (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\nLAB_00018a2e:\n      if (((piVar3->pending_buf_size & 4) == 0) ||\n         ((gz_headerp)(uint)*(ushort *)&piVar3->gzhead == local_64)) {\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\n        goto LAB_0001838b;\n      }\n      strm->msg = "header crc mismatch";\n      piVar3->status = 0x3f51;\n      pPVar27 = (Posf *)0xfffffffd;\n    }" else (compound_statement "{\nLAB_00018a2e:\n      if (((piVar3->pending_buf_size & 4) == 0) ||\n         ((gz_headerp)(uint)*(ushort *)&piVar3->gzhead == local_64)) {\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\n        goto LAB_0001838b;\n      }\n      strm->msg = "header crc mismatch";\n      piVar3->status = 0x3f51;\n      pPVar27 = (Posf *)0xfffffffd;\n    }" { (labeled_statement "LAB_00018a2e:\n      if (((piVar3->pending_buf_size & 4) == 0) ||\n         ((gz_headerp)(uint)*(ushort *)&piVar3->gzhead == local_64)) {\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\n        goto LAB_0001838b;\n      }" statement_identifier : (if_statement "if (((piVar3->pending_buf_size & 4) == 0) ||\n         ((gz_headerp)(uint)*(ushort *)&piVar3->gzhead == local_64)) {\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\n        goto LAB_0001838b;\n      }" if (parenthesized_expression "(((piVar3->pending_buf_size & 4) == 0) ||\n         ((gz_headerp)(uint)*(ushort *)&piVar3->gzhead == local_64))" ( (binary_expression "((piVar3->pending_buf_size & 4) == 0) ||\n         ((gz_headerp)(uint)*(ushort *)&piVar3->gzhead == local_64)" (parenthesized_expression "((piVar3->pending_buf_size & 4) == 0)" ( (binary_expression "(piVar3->pending_buf_size & 4) == 0" (parenthesized_expression "(piVar3->pending_buf_size & 4)" ( (binary_expression "piVar3->pending_buf_size & 4" (field_expression "piVar3->pending_buf_size" identifier -> field_identifier) & number_literal) )) == number_literal) )) || (parenthesized_expression "((gz_headerp)(uint)*(ushort *)&piVar3->gzhead == local_64)" ( (binary_expression "(gz_headerp)(uint)*(ushort *)&piVar3->gzhead == local_64" (binary_expression "(gz_headerp)(uint)*(ushort *)&piVar3->gzhead" (call_expression "(gz_headerp)(uint)" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "(uint)" ( identifier ))) * (cast_expression "(ushort *)&piVar3->gzhead" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&piVar3->gzhead" & (field_expression "piVar3->gzhead" identifier -> field_identifier)))) == identifier) ))) )) (compound_statement "{\n        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n        local_64 = (gz_headerp)0x0;\n        goto LAB_0001838b;\n      }" { (expression_statement "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;" (assignment_expression "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0" (field_expression "cVar20.fc" identifier . field_identifier) = (cast_expression "(anon_union_2_2_314cc5cc_for_fc)0x0" ( (type_descriptor "anon_union_2_2_314cc5cc_for_fc" type_identifier) ) number_literal)) ;) (expression_statement "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;" (assignment_expression "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0" (field_expression "cVar20.dl" identifier . field_identifier) = (cast_expression "(anon_union_2_2_43a7fb4f_for_dl)0x0" ( (type_descriptor "anon_union_2_2_43a7fb4f_for_dl" type_identifier) ) number_literal)) ;) (expression_statement "local_64 = (gz_headerp)0x0;" (assignment_expression "local_64 = (gz_headerp)0x0" identifier = (cast_expression "(gz_headerp)0x0" ( (type_descriptor "gz_headerp" type_identifier) ) number_literal)) ;) (goto_statement "goto LAB_0001838b;" goto statement_identifier ;) }))) (expression_statement "strm->msg = "header crc mismatch";" (assignment_expression "strm->msg = "header crc mismatch"" (field_expression "strm->msg" identifier -> field_identifier) = (string_literal ""header crc mismatch"" " string_content ")) ;) (expression_statement "piVar3->status = 0x3f51;" (assignment_expression "piVar3->status = 0x3f51" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (expression_statement "pPVar27 = (Posf *)0xfffffffd;" (assignment_expression "pPVar27 = (Posf *)0xfffffffd" identifier = (cast_expression "(Posf *)0xfffffffd" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) }) (else_clause "else {\n    pPVar27 = piVar3->head;\n    pPVar9 = local_6c;\n    if (pPVar27 < local_6c) {\n      pPVar9 = pPVar27;\n    }\n    if (pPVar9 != (Posf *)0x0) {\n      iVar6 = *(int *)&piVar3->method;\n      if ((iVar6 != 0) && (*(int *)(iVar6 + 0x10) != 0)) {\n        iVar11 = *(int *)(iVar6 + 0x14) - (int)pPVar27;\n        pPVar27 = (Posf *)(*(uint *)(iVar6 + 0x18) - iVar11);\n        if ((uint)((int)pPVar9 + iVar11) <= *(uint *)(iVar6 + 0x18)) {\n          pPVar27 = pPVar9;\n        }\n        memcpy((void *)(iVar11 + *(int *)(iVar6 + 0x10)),local_60,(size_t)pPVar27);\n        uVar7 = piVar3->pending;\n      }\n      if (((uVar7 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar9);\n        piVar3->gzhead = pgVar13;\n      }\n      local_6c = (Posf *)((int)local_6c - (int)pPVar9);\n      local_60 = local_60 + (int)pPVar9;\n      pPVar27 = (Posf *)((int)piVar3->head - (int)pPVar9);\n      piVar3->head = pPVar27;\n    }\n    if (pPVar27 == (Posf *)0x0) {\n      uVar7 = piVar3->pending;\n      goto LAB_0001826a;\n    }\nLAB_00017f30:\n    pPVar27 = (Posf *)0x0;\n  }" else (compound_statement "{\n    pPVar27 = piVar3->head;\n    pPVar9 = local_6c;\n    if (pPVar27 < local_6c) {\n      pPVar9 = pPVar27;\n    }\n    if (pPVar9 != (Posf *)0x0) {\n      iVar6 = *(int *)&piVar3->method;\n      if ((iVar6 != 0) && (*(int *)(iVar6 + 0x10) != 0)) {\n        iVar11 = *(int *)(iVar6 + 0x14) - (int)pPVar27;\n        pPVar27 = (Posf *)(*(uint *)(iVar6 + 0x18) - iVar11);\n        if ((uint)((int)pPVar9 + iVar11) <= *(uint *)(iVar6 + 0x18)) {\n          pPVar27 = pPVar9;\n        }\n        memcpy((void *)(iVar11 + *(int *)(iVar6 + 0x10)),local_60,(size_t)pPVar27);\n        uVar7 = piVar3->pending;\n      }\n      if (((uVar7 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar9);\n        piVar3->gzhead = pgVar13;\n      }\n      local_6c = (Posf *)((int)local_6c - (int)pPVar9);\n      local_60 = local_60 + (int)pPVar9;\n      pPVar27 = (Posf *)((int)piVar3->head - (int)pPVar9);\n      piVar3->head = pPVar27;\n    }\n    if (pPVar27 == (Posf *)0x0) {\n      uVar7 = piVar3->pending;\n      goto LAB_0001826a;\n    }\nLAB_00017f30:\n    pPVar27 = (Posf *)0x0;\n  }" { (expression_statement "pPVar27 = piVar3->head;" (assignment_expression "pPVar27 = piVar3->head" identifier = (field_expression "piVar3->head" identifier -> field_identifier)) ;) (expression_statement "pPVar9 = local_6c;" (assignment_expression "pPVar9 = local_6c" identifier = identifier) ;) (if_statement "if (pPVar27 < local_6c) {\n      pPVar9 = pPVar27;\n    }" if (parenthesized_expression "(pPVar27 < local_6c)" ( (binary_expression "pPVar27 < local_6c" identifier < identifier) )) (compound_statement "{\n      pPVar9 = pPVar27;\n    }" { (expression_statement "pPVar9 = pPVar27;" (assignment_expression "pPVar9 = pPVar27" identifier = identifier) ;) })) (if_statement "if (pPVar9 != (Posf *)0x0) {\n      iVar6 = *(int *)&piVar3->method;\n      if ((iVar6 != 0) && (*(int *)(iVar6 + 0x10) != 0)) {\n        iVar11 = *(int *)(iVar6 + 0x14) - (int)pPVar27;\n        pPVar27 = (Posf *)(*(uint *)(iVar6 + 0x18) - iVar11);\n        if ((uint)((int)pPVar9 + iVar11) <= *(uint *)(iVar6 + 0x18)) {\n          pPVar27 = pPVar9;\n        }\n        memcpy((void *)(iVar11 + *(int *)(iVar6 + 0x10)),local_60,(size_t)pPVar27);\n        uVar7 = piVar3->pending;\n      }\n      if (((uVar7 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar9);\n        piVar3->gzhead = pgVar13;\n      }\n      local_6c = (Posf *)((int)local_6c - (int)pPVar9);\n      local_60 = local_60 + (int)pPVar9;\n      pPVar27 = (Posf *)((int)piVar3->head - (int)pPVar9);\n      piVar3->head = pPVar27;\n    }" if (parenthesized_expression "(pPVar9 != (Posf *)0x0)" ( (binary_expression "pPVar9 != (Posf *)0x0" identifier != (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar6 = *(int *)&piVar3->method;\n      if ((iVar6 != 0) && (*(int *)(iVar6 + 0x10) != 0)) {\n        iVar11 = *(int *)(iVar6 + 0x14) - (int)pPVar27;\n        pPVar27 = (Posf *)(*(uint *)(iVar6 + 0x18) - iVar11);\n        if ((uint)((int)pPVar9 + iVar11) <= *(uint *)(iVar6 + 0x18)) {\n          pPVar27 = pPVar9;\n        }\n        memcpy((void *)(iVar11 + *(int *)(iVar6 + 0x10)),local_60,(size_t)pPVar27);\n        uVar7 = piVar3->pending;\n      }\n      if (((uVar7 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar9);\n        piVar3->gzhead = pgVar13;\n      }\n      local_6c = (Posf *)((int)local_6c - (int)pPVar9);\n      local_60 = local_60 + (int)pPVar9;\n      pPVar27 = (Posf *)((int)piVar3->head - (int)pPVar9);\n      piVar3->head = pPVar27;\n    }" { (expression_statement "iVar6 = *(int *)&piVar3->method;" (assignment_expression "iVar6 = *(int *)&piVar3->method" identifier = (pointer_expression "*(int *)&piVar3->method" * (cast_expression "(int *)&piVar3->method" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&piVar3->method" & (field_expression "piVar3->method" identifier -> field_identifier))))) ;) (if_statement "if ((iVar6 != 0) && (*(int *)(iVar6 + 0x10) != 0)) {\n        iVar11 = *(int *)(iVar6 + 0x14) - (int)pPVar27;\n        pPVar27 = (Posf *)(*(uint *)(iVar6 + 0x18) - iVar11);\n        if ((uint)((int)pPVar9 + iVar11) <= *(uint *)(iVar6 + 0x18)) {\n          pPVar27 = pPVar9;\n        }\n        memcpy((void *)(iVar11 + *(int *)(iVar6 + 0x10)),local_60,(size_t)pPVar27);\n        uVar7 = piVar3->pending;\n      }" if (parenthesized_expression "((iVar6 != 0) && (*(int *)(iVar6 + 0x10) != 0))" ( (binary_expression "(iVar6 != 0) && (*(int *)(iVar6 + 0x10) != 0)" (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(int *)(iVar6 + 0x10) != 0)" ( (binary_expression "*(int *)(iVar6 + 0x10) != 0" (pointer_expression "*(int *)(iVar6 + 0x10)" * (cast_expression "(int *)(iVar6 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n        iVar11 = *(int *)(iVar6 + 0x14) - (int)pPVar27;\n        pPVar27 = (Posf *)(*(uint *)(iVar6 + 0x18) - iVar11);\n        if ((uint)((int)pPVar9 + iVar11) <= *(uint *)(iVar6 + 0x18)) {\n          pPVar27 = pPVar9;\n        }\n        memcpy((void *)(iVar11 + *(int *)(iVar6 + 0x10)),local_60,(size_t)pPVar27);\n        uVar7 = piVar3->pending;\n      }" { (expression_statement "iVar11 = *(int *)(iVar6 + 0x14) - (int)pPVar27;" (assignment_expression "iVar11 = *(int *)(iVar6 + 0x14) - (int)pPVar27" identifier = (binary_expression "*(int *)(iVar6 + 0x14) - (int)pPVar27" (pointer_expression "*(int *)(iVar6 + 0x14)" * (cast_expression "(int *)(iVar6 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) )))) - (cast_expression "(int)pPVar27" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pPVar27 = (Posf *)(*(uint *)(iVar6 + 0x18) - iVar11);" (assignment_expression "pPVar27 = (Posf *)(*(uint *)(iVar6 + 0x18) - iVar11)" identifier = (cast_expression "(Posf *)(*(uint *)(iVar6 + 0x18) - iVar11)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(uint *)(iVar6 + 0x18) - iVar11)" ( (binary_expression "*(uint *)(iVar6 + 0x18) - iVar11" (pointer_expression "*(uint *)(iVar6 + 0x18)" * (cast_expression "(uint *)(iVar6 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) )))) - identifier) )))) ;) (if_statement "if ((uint)((int)pPVar9 + iVar11) <= *(uint *)(iVar6 + 0x18)) {\n          pPVar27 = pPVar9;\n        }" if (parenthesized_expression "((uint)((int)pPVar9 + iVar11) <= *(uint *)(iVar6 + 0x18))" ( (binary_expression "(uint)((int)pPVar9 + iVar11) <= *(uint *)(iVar6 + 0x18)" (call_expression "(uint)((int)pPVar9 + iVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pPVar9 + iVar11)" ( (binary_expression "(int)pPVar9 + iVar11" (cast_expression "(int)pPVar9" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) <= (pointer_expression "*(uint *)(iVar6 + 0x18)" * (cast_expression "(uint *)(iVar6 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n          pPVar27 = pPVar9;\n        }" { (expression_statement "pPVar27 = pPVar9;" (assignment_expression "pPVar27 = pPVar9" identifier = identifier) ;) })) (expression_statement "memcpy((void *)(iVar11 + *(int *)(iVar6 + 0x10)),local_60,(size_t)pPVar27);" (call_expression "memcpy((void *)(iVar11 + *(int *)(iVar6 + 0x10)),local_60,(size_t)pPVar27)" identifier (argument_list "((void *)(iVar11 + *(int *)(iVar6 + 0x10)),local_60,(size_t)pPVar27)" ( (cast_expression "(void *)(iVar11 + *(int *)(iVar6 + 0x10))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + *(int *)(iVar6 + 0x10))" ( (binary_expression "iVar11 + *(int *)(iVar6 + 0x10)" identifier + (pointer_expression "*(int *)(iVar6 + 0x10)" * (cast_expression "(int *)(iVar6 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) ))) , identifier , (cast_expression "(size_t)pPVar27" ( (type_descriptor "size_t" primitive_type) ) identifier) ))) ;) (expression_statement "uVar7 = piVar3->pending;" (assignment_expression "uVar7 = piVar3->pending" identifier = (field_expression "piVar3->pending" identifier -> field_identifier)) ;) })) (if_statement "if (((uVar7 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar9);\n        piVar3->gzhead = pgVar13;\n      }" if (parenthesized_expression "(((uVar7 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0))" ( (binary_expression "((uVar7 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)" (parenthesized_expression "((uVar7 & 0x200) != 0)" ( (binary_expression "(uVar7 & 0x200) != 0" (parenthesized_expression "(uVar7 & 0x200)" ( (binary_expression "uVar7 & 0x200" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "((piVar3->pending_buf_size & 4) != 0)" ( (binary_expression "(piVar3->pending_buf_size & 4) != 0" (parenthesized_expression "(piVar3->pending_buf_size & 4)" ( (binary_expression "piVar3->pending_buf_size & 4" (field_expression "piVar3->pending_buf_size" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar9);\n        piVar3->gzhead = pgVar13;\n      }" { (expression_statement "pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar9);" (assignment_expression "pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar9)" identifier = (cast_expression "(gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar9)" ( (type_descriptor "gz_headerp" type_identifier) ) (call_expression "crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar9)" identifier (argument_list "((ulong)piVar3->gzhead,local_60,(uInt)pPVar9)" ( (cast_expression "(ulong)piVar3->gzhead" ( (type_descriptor "ulong" type_identifier) ) (field_expression "piVar3->gzhead" identifier -> field_identifier)) , identifier , (cast_expression "(uInt)pPVar9" ( (type_descriptor "uInt" type_identifier) ) identifier) ))))) ;) (expression_statement "piVar3->gzhead = pgVar13;" (assignment_expression "piVar3->gzhead = pgVar13" (field_expression "piVar3->gzhead" identifier -> field_identifier) = identifier) ;) })) (expression_statement "local_6c = (Posf *)((int)local_6c - (int)pPVar9);" (assignment_expression "local_6c = (Posf *)((int)local_6c - (int)pPVar9)" identifier = (cast_expression "(Posf *)((int)local_6c - (int)pPVar9)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - (int)pPVar9)" ( (binary_expression "(int)local_6c - (int)pPVar9" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pPVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "local_60 = local_60 + (int)pPVar9;" (assignment_expression "local_60 = local_60 + (int)pPVar9" identifier = (binary_expression "local_60 + (int)pPVar9" identifier + (cast_expression "(int)pPVar9" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pPVar27 = (Posf *)((int)piVar3->head - (int)pPVar9);" (assignment_expression "pPVar27 = (Posf *)((int)piVar3->head - (int)pPVar9)" identifier = (cast_expression "(Posf *)((int)piVar3->head - (int)pPVar9)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar3->head - (int)pPVar9)" ( (binary_expression "(int)piVar3->head - (int)pPVar9" (cast_expression "(int)piVar3->head" ( (type_descriptor "int" primitive_type) ) (field_expression "piVar3->head" identifier -> field_identifier)) - (cast_expression "(int)pPVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "piVar3->head = pPVar27;" (assignment_expression "piVar3->head = pPVar27" (field_expression "piVar3->head" identifier -> field_identifier) = identifier) ;) })) (if_statement "if (pPVar27 == (Posf *)0x0) {\n      uVar7 = piVar3->pending;\n      goto LAB_0001826a;\n    }" if (parenthesized_expression "(pPVar27 == (Posf *)0x0)" ( (binary_expression "pPVar27 == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar7 = piVar3->pending;\n      goto LAB_0001826a;\n    }" { (expression_statement "uVar7 = piVar3->pending;" (assignment_expression "uVar7 = piVar3->pending" identifier = (field_expression "piVar3->pending" identifier -> field_identifier)) ;) (goto_statement "goto LAB_0001826a;" goto statement_identifier ;) })) (labeled_statement "LAB_00017f30:\n    pPVar27 = (Posf *)0x0;" statement_identifier : (expression_statement "pPVar27 = (Posf *)0x0;" (assignment_expression "pPVar27 = (Posf *)0x0" identifier = (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) })))) goto identifier ; identifier : identifier = ( primitive_type ) identifier - ( primitive_type ) identifier ; identifier -> identifier = identifier -> identifier + identifier ; identifier -> identifier = identifier -> identifier + identifier ; identifier = identifier & number_literal ; (if_statement "if ((uVar19 != 0) && (uVar29 != 0)) {\n    if (piVar3->pending == 0) {\n      pgVar13 = (gz_headerp)adler32((uLong)piVar3->gzhead,end + -uVar29,uVar29);\n    }\n    else {\n      pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,end + -uVar29,uVar29);\n    }\n    piVar3->gzhead = pgVar13;\n    strm->adler = (uLong)pgVar13;\n    uVar7 = piVar3->pending_buf_size;\n    uVar19 = uVar7 & 4;\n  }" if (parenthesized_expression "((uVar19 != 0) && (uVar29 != 0))" ( (binary_expression "(uVar19 != 0) && (uVar29 != 0)" (parenthesized_expression "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar29 != 0)" ( (binary_expression "uVar29 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    if (piVar3->pending == 0) {\n      pgVar13 = (gz_headerp)adler32((uLong)piVar3->gzhead,end + -uVar29,uVar29);\n    }\n    else {\n      pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,end + -uVar29,uVar29);\n    }\n    piVar3->gzhead = pgVar13;\n    strm->adler = (uLong)pgVar13;\n    uVar7 = piVar3->pending_buf_size;\n    uVar19 = uVar7 & 4;\n  }" { (if_statement "if (piVar3->pending == 0) {\n      pgVar13 = (gz_headerp)adler32((uLong)piVar3->gzhead,end + -uVar29,uVar29);\n    }\n    else {\n      pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,end + -uVar29,uVar29);\n    }" if (parenthesized_expression "(piVar3->pending == 0)" ( (binary_expression "piVar3->pending == 0" (field_expression "piVar3->pending" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n      pgVar13 = (gz_headerp)adler32((uLong)piVar3->gzhead,end + -uVar29,uVar29);\n    }" { (expression_statement "pgVar13 = (gz_headerp)adler32((uLong)piVar3->gzhead,end + -uVar29,uVar29);" (assignment_expression "pgVar13 = (gz_headerp)adler32((uLong)piVar3->gzhead,end + -uVar29,uVar29)" identifier = (cast_expression "(gz_headerp)adler32((uLong)piVar3->gzhead,end + -uVar29,uVar29)" ( (type_descriptor "gz_headerp" type_identifier) ) (call_expression "adler32((uLong)piVar3->gzhead,end + -uVar29,uVar29)" identifier (argument_list "((uLong)piVar3->gzhead,end + -uVar29,uVar29)" ( (cast_expression "(uLong)piVar3->gzhead" ( (type_descriptor "uLong" type_identifier) ) (field_expression "piVar3->gzhead" identifier -> field_identifier)) , (binary_expression "end + -uVar29" identifier + (unary_expression "-uVar29" - identifier)) , identifier ))))) ;) }) (else_clause "else {\n      pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,end + -uVar29,uVar29);\n    }" else (compound_statement "{\n      pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,end + -uVar29,uVar29);\n    }" { (expression_statement "pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,end + -uVar29,uVar29);" (assignment_expression "pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,end + -uVar29,uVar29)" identifier = (cast_expression "(gz_headerp)crc32((ulong)piVar3->gzhead,end + -uVar29,uVar29)" ( (type_descriptor "gz_headerp" type_identifier) ) (call_expression "crc32((ulong)piVar3->gzhead,end + -uVar29,uVar29)" identifier (argument_list "((ulong)piVar3->gzhead,end + -uVar29,uVar29)" ( (cast_expression "(ulong)piVar3->gzhead" ( (type_descriptor "ulong" type_identifier) ) (field_expression "piVar3->gzhead" identifier -> field_identifier)) , (binary_expression "end + -uVar29" identifier + (unary_expression "-uVar29" - identifier)) , identifier ))))) ;) }))) (expression_statement "piVar3->gzhead = pgVar13;" (assignment_expression "piVar3->gzhead = pgVar13" (field_expression "piVar3->gzhead" identifier -> field_identifier) = identifier) ;) (expression_statement "strm->adler = (uLong)pgVar13;" (assignment_expression "strm->adler = (uLong)pgVar13" (field_expression "strm->adler" identifier -> field_identifier) = (cast_expression "(uLong)pgVar13" ( (type_descriptor "uLong" type_identifier) ) identifier)) ;) (expression_statement "uVar7 = piVar3->pending_buf_size;" (assignment_expression "uVar7 = piVar3->pending_buf_size" identifier = (field_expression "piVar3->pending_buf_size" identifier -> field_identifier)) ;) (expression_statement "uVar19 = uVar7 & 4;" (assignment_expression "uVar19 = uVar7 & 4" identifier = (binary_expression "uVar7 & 4" identifier & number_literal)) ;) })) (if_statement "if (uVar19 != 0) {\n    pgVar13 = local_64;\n    if (piVar3->pending == 0) {\n      pgVar13 = (gz_headerp)\n                (((uint)local_64 >> 0x18) + (int)local_64 * 0x1000000 +\n                 ((uint)local_64 >> 8 & 0xff00) + ((uint)local_64 & 0xff00) * 0x100);\n    }\n    if (piVar3->gzhead != pgVar13) {\n      strm->msg = "incorrect data check";\n      piVar3->status = 0x3f51;\n      pPVar27 = (Posf *)0xfffffffd;\n      local_50 = local_5c;\n      goto LAB_00017f32;\n    }\n  }" if (parenthesized_expression "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) )) (compound_statement "{\n    pgVar13 = local_64;\n    if (piVar3->pending == 0) {\n      pgVar13 = (gz_headerp)\n                (((uint)local_64 >> 0x18) + (int)local_64 * 0x1000000 +\n                 ((uint)local_64 >> 8 & 0xff00) + ((uint)local_64 & 0xff00) * 0x100);\n    }\n    if (piVar3->gzhead != pgVar13) {\n      strm->msg = "incorrect data check";\n      piVar3->status = 0x3f51;\n      pPVar27 = (Posf *)0xfffffffd;\n      local_50 = local_5c;\n      goto LAB_00017f32;\n    }\n  }" { (expression_statement "pgVar13 = local_64;" (assignment_expression "pgVar13 = local_64" identifier = identifier) ;) (if_statement "if (piVar3->pending == 0) {\n      pgVar13 = (gz_headerp)\n                (((uint)local_64 >> 0x18) + (int)local_64 * 0x1000000 +\n                 ((uint)local_64 >> 8 & 0xff00) + ((uint)local_64 & 0xff00) * 0x100);\n    }" if (parenthesized_expression "(piVar3->pending == 0)" ( (binary_expression "piVar3->pending == 0" (field_expression "piVar3->pending" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n      pgVar13 = (gz_headerp)\n                (((uint)local_64 >> 0x18) + (int)local_64 * 0x1000000 +\n                 ((uint)local_64 >> 8 & 0xff00) + ((uint)local_64 & 0xff00) * 0x100);\n    }" { (expression_statement "pgVar13 = (gz_headerp)\n                (((uint)local_64 >> 0x18) + (int)local_64 * 0x1000000 +\n                 ((uint)local_64 >> 8 & 0xff00) + ((uint)local_64 & 0xff00) * 0x100);" (assignment_expression "pgVar13 = (gz_headerp)\n                (((uint)local_64 >> 0x18) + (int)local_64 * 0x1000000 +\n                 ((uint)local_64 >> 8 & 0xff00) + ((uint)local_64 & 0xff00) * 0x100)" identifier = (call_expression "(gz_headerp)\n                (((uint)local_64 >> 0x18) + (int)local_64 * 0x1000000 +\n                 ((uint)local_64 >> 8 & 0xff00) + ((uint)local_64 & 0xff00) * 0x100)" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "(((uint)local_64 >> 0x18) + (int)local_64 * 0x1000000 +\n                 ((uint)local_64 >> 8 & 0xff00) + ((uint)local_64 & 0xff00) * 0x100)" ( (binary_expression "((uint)local_64 >> 0x18) + (int)local_64 * 0x1000000 +\n                 ((uint)local_64 >> 8 & 0xff00) + ((uint)local_64 & 0xff00) * 0x100" (binary_expression "((uint)local_64 >> 0x18) + (int)local_64 * 0x1000000 +\n                 ((uint)local_64 >> 8 & 0xff00)" (binary_expression "((uint)local_64 >> 0x18) + (int)local_64 * 0x1000000" (parenthesized_expression "((uint)local_64 >> 0x18)" ( (binary_expression "(uint)local_64 >> 0x18" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )) + (binary_expression "(int)local_64 * 0x1000000" (cast_expression "(int)local_64" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + (parenthesized_expression "((uint)local_64 >> 8 & 0xff00)" ( (binary_expression "(uint)local_64 >> 8 & 0xff00" (binary_expression "(uint)local_64 >> 8" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) & number_literal) ))) + (binary_expression "((uint)local_64 & 0xff00) * 0x100" (parenthesized_expression "((uint)local_64 & 0xff00)" ( (binary_expression "(uint)local_64 & 0xff00" (cast_expression "(uint)local_64" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) * number_literal)) )))) ;) })) (if_statement "if (piVar3->gzhead != pgVar13) {\n      strm->msg = "incorrect data check";\n      piVar3->status = 0x3f51;\n      pPVar27 = (Posf *)0xfffffffd;\n      local_50 = local_5c;\n      goto LAB_00017f32;\n    }" if (parenthesized_expression "(piVar3->gzhead != pgVar13)" ( (binary_expression "piVar3->gzhead != pgVar13" (field_expression "piVar3->gzhead" identifier -> field_identifier) != identifier) )) (compound_statement "{\n      strm->msg = "incorrect data check";\n      piVar3->status = 0x3f51;\n      pPVar27 = (Posf *)0xfffffffd;\n      local_50 = local_5c;\n      goto LAB_00017f32;\n    }" { (expression_statement "strm->msg = "incorrect data check";" (assignment_expression "strm->msg = "incorrect data check"" (field_expression "strm->msg" identifier -> field_identifier) = (string_literal ""incorrect data check"" " string_content ")) ;) (expression_statement "piVar3->status = 0x3f51;" (assignment_expression "piVar3->status = 0x3f51" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (expression_statement "pPVar27 = (Posf *)0xfffffffd;" (assignment_expression "pPVar27 = (Posf *)0xfffffffd" identifier = (cast_expression "(Posf *)0xfffffffd" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_50 = local_5c;" (assignment_expression "local_50 = local_5c" identifier = identifier) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) })) (expression_statement "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;" (assignment_expression "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0" (field_expression "cVar20.fc" identifier . field_identifier) = (cast_expression "(anon_union_2_2_314cc5cc_for_fc)0x0" ( (type_descriptor "anon_union_2_2_314cc5cc_for_fc" type_identifier) ) number_literal)) ;) (expression_statement "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;" (assignment_expression "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0" (field_expression "cVar20.dl" identifier . field_identifier) = (cast_expression "(anon_union_2_2_43a7fb4f_for_dl)0x0" ( (type_descriptor "anon_union_2_2_43a7fb4f_for_dl" type_identifier) ) number_literal)) ;) (expression_statement "local_64 = (gz_headerp)0x0;" (assignment_expression "local_64 = (gz_headerp)0x0" identifier = (cast_expression "(gz_headerp)0x0" ( (type_descriptor "gz_headerp" type_identifier) ) number_literal)) ;) (expression_statement "local_50 = local_5c;" (assignment_expression "local_50 = local_5c" identifier = identifier) ;) (labeled_statement "LAB_00018e20:\n  piVar3->status = 0x3f4f;" statement_identifier : (expression_statement "piVar3->status = 0x3f4f;" (assignment_expression "piVar3->status = 0x3f4f" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;)) (labeled_statement "LAB_000183ff:\n  if ((uVar7 != 0) && (piVar3->pending != 0)) {\n    for (; (uint)cVar20 < 0x20; cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n      if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n      local_6c = (Posf *)((int)local_6c - 1);\n      local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n      local_60 = local_60 + 1;\n    }\n    if ((gz_headerp)piVar3->gzindex != local_64) {\n      strm->msg = "incorrect length check";\n      piVar3->status = 0x3f51;\n      pPVar27 = (Posf *)0xfffffffd;\n      goto LAB_00017f32;\n    }\n    cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n    cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n    local_64 = (gz_headerp)0x0;\n  }" statement_identifier : (if_statement "if ((uVar7 != 0) && (piVar3->pending != 0)) {\n    for (; (uint)cVar20 < 0x20; cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n      if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n      local_6c = (Posf *)((int)local_6c - 1);\n      local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n      local_60 = local_60 + 1;\n    }\n    if ((gz_headerp)piVar3->gzindex != local_64) {\n      strm->msg = "incorrect length check";\n      piVar3->status = 0x3f51;\n      pPVar27 = (Posf *)0xfffffffd;\n      goto LAB_00017f32;\n    }\n    cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n    cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n    local_64 = (gz_headerp)0x0;\n  }" if (parenthesized_expression "((uVar7 != 0) && (piVar3->pending != 0))" ( (binary_expression "(uVar7 != 0) && (piVar3->pending != 0)" (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) && (parenthesized_expression "(piVar3->pending != 0)" ( (binary_expression "piVar3->pending != 0" (field_expression "piVar3->pending" identifier -> field_identifier) != number_literal) ))) )) (compound_statement "{\n    for (; (uint)cVar20 < 0x20; cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n      if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n      local_6c = (Posf *)((int)local_6c - 1);\n      local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n      local_60 = local_60 + 1;\n    }\n    if ((gz_headerp)piVar3->gzindex != local_64) {\n      strm->msg = "incorrect length check";\n      piVar3->status = 0x3f51;\n      pPVar27 = (Posf *)0xfffffffd;\n      goto LAB_00017f32;\n    }\n    cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;\n    cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;\n    local_64 = (gz_headerp)0x0;\n  }" { (for_statement "for (; (uint)cVar20 < 0x20; cVar20 = (ct_data_s)((int)cVar20 + 8)) {\n      if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n      local_6c = (Posf *)((int)local_6c - 1);\n      local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n      local_60 = local_60 + 1;\n    }" for ( ; (binary_expression "(uint)cVar20 < 0x20" (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) ; (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 + 8)" identifier = (call_expression "(ct_data_s)((int)cVar20 + 8)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 + 8)" ( (binary_expression "(int)cVar20 + 8" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ) (compound_statement "{\n      if (local_6c == (Posf *)0x0) goto LAB_00017f30;\n      local_6c = (Posf *)((int)local_6c - 1);\n      local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));\n      local_60 = local_60 + 1;\n    }" { (if_statement "if (local_6c == (Posf *)0x0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == (Posf *)0x0)" ( (binary_expression "local_6c == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "local_6c = (Posf *)((int)local_6c - 1);" (assignment_expression "local_6c = (Posf *)((int)local_6c - 1)" identifier = (cast_expression "(Posf *)((int)local_6c - 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - 1)" ( (binary_expression "(int)local_6c - 1" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));" (assignment_expression "local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)))" identifier = (call_expression "(gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)))" ( (binary_expression "(int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f))" (cast_expression "(int)&local_64->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_64->text" & (field_expression "local_64->text" identifier -> field_identifier))) + (parenthesized_expression "((uint)*local_60 << (cVar20.fc & 0x1f))" ( (binary_expression "(uint)*local_60 << (cVar20.fc & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(cVar20.fc & 0x1f)" ( (binary_expression "cVar20.fc & 0x1f" (field_expression "cVar20.fc" identifier . field_identifier) & number_literal) ))) ))) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) })) (if_statement "if ((gz_headerp)piVar3->gzindex != local_64) {\n      strm->msg = "incorrect length check";\n      piVar3->status = 0x3f51;\n      pPVar27 = (Posf *)0xfffffffd;\n      goto LAB_00017f32;\n    }" if (parenthesized_expression "((gz_headerp)piVar3->gzindex != local_64)" ( (binary_expression "(gz_headerp)piVar3->gzindex != local_64" (cast_expression "(gz_headerp)piVar3->gzindex" ( (type_descriptor "gz_headerp" type_identifier) ) (field_expression "piVar3->gzindex" identifier -> field_identifier)) != identifier) )) (compound_statement "{\n      strm->msg = "incorrect length check";\n      piVar3->status = 0x3f51;\n      pPVar27 = (Posf *)0xfffffffd;\n      goto LAB_00017f32;\n    }" { (expression_statement "strm->msg = "incorrect length check";" (assignment_expression "strm->msg = "incorrect length check"" (field_expression "strm->msg" identifier -> field_identifier) = (string_literal ""incorrect length check"" " string_content ")) ;) (expression_statement "piVar3->status = 0x3f51;" (assignment_expression "piVar3->status = 0x3f51" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (expression_statement "pPVar27 = (Posf *)0xfffffffd;" (assignment_expression "pPVar27 = (Posf *)0xfffffffd" identifier = (cast_expression "(Posf *)0xfffffffd" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (expression_statement "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;" (assignment_expression "cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0" (field_expression "cVar20.fc" identifier . field_identifier) = (cast_expression "(anon_union_2_2_314cc5cc_for_fc)0x0" ( (type_descriptor "anon_union_2_2_314cc5cc_for_fc" type_identifier) ) number_literal)) ;) (expression_statement "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;" (assignment_expression "cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0" (field_expression "cVar20.dl" identifier . field_identifier) = (cast_expression "(anon_union_2_2_43a7fb4f_for_dl)0x0" ( (type_descriptor "anon_union_2_2_43a7fb4f_for_dl" type_identifier) ) number_literal)) ;) (expression_statement "local_64 = (gz_headerp)0x0;" (assignment_expression "local_64 = (gz_headerp)0x0" identifier = (cast_expression "(gz_headerp)0x0" ( (type_descriptor "gz_headerp" type_identifier) ) number_literal)) ;) }))) identifier = ( identifier * ) number_literal ; identifier -> identifier = number_literal ; goto identifier ; (labeled_statement "LAB_00018d40:\n  pPVar27 = (Posf *)0x0;" statement_identifier : (expression_statement "pPVar27 = (Posf *)0x0;" (assignment_expression "pPVar27 = (Posf *)0x0" identifier = (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "local_60 = pbVar26;" (assignment_expression "local_60 = pbVar26" identifier = identifier) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) (labeled_statement "code_r0x00018d1f:\n  piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;" statement_identifier : (expression_statement "piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;" (assignment_expression "piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff" (field_expression "piVar3[1].dyn_ltree[0x11c].fc" (subscript_expression "piVar3[1].dyn_ltree[0x11c]" (field_expression "piVar3[1].dyn_ltree" (subscript_expression "piVar3[1]" identifier [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) = (cast_expression "(anon_union_2_2_314cc5cc_for_fc)0xffff" ( (type_descriptor "anon_union_2_2_314cc5cc_for_fc" type_identifier) ) number_literal)) ;)) (expression_statement "piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;" (assignment_expression "piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff" (field_expression "piVar3[1].dyn_ltree[0x11c].dl" (subscript_expression "piVar3[1].dyn_ltree[0x11c]" (field_expression "piVar3[1].dyn_ltree" (subscript_expression "piVar3[1]" identifier [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) = (cast_expression "(anon_union_2_2_43a7fb4f_for_dl)0xffff" ( (type_descriptor "anon_union_2_2_43a7fb4f_for_dl" type_identifier) ) number_literal)) ;) (expression_statement "piVar3->status = 0x3f3f;" (assignment_expression "piVar3->status = 0x3f3f" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (labeled_statement "_L105:\n  if (flush - 5U < 2) goto LAB_00017f30;" statement_identifier : (if_statement "if (flush - 5U < 2) goto LAB_00017f30;" if (parenthesized_expression "(flush - 5U < 2)" ( (binary_expression "flush - 5U < 2" (binary_expression "flush - 5U" identifier - number_literal) < number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;))) (goto_statement "goto _L106;" goto statement_identifier ;) while (parenthesized_expression "(local_6c != (Posf *)0x0)" ( (binary_expression "local_6c != (Posf *)0x0" identifier != (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00017970:\n    pbVar26 = local_60 + 1;\n    local_6c = (Posf *)((int)local_6c - 1);\n    bVar32 = cVar20.fc;\n    cVar20 = (ct_data_s)((int)cVar20 + 8);\n    local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar32 & 0x1f)));\n    local_60 = pbVar26;\n    if (0x1f < (uint)cVar20) goto LAB_00017996;\n  }" { (labeled_statement "LAB_00017970:\n    pbVar26 = local_60 + 1;" statement_identifier : (expression_statement "pbVar26 = local_60 + 1;" (assignment_expression "pbVar26 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;)) (expression_statement "local_6c = (Posf *)((int)local_6c - 1);" (assignment_expression "local_6c = (Posf *)((int)local_6c - 1)" identifier = (cast_expression "(Posf *)((int)local_6c - 1)" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_6c - 1)" ( (binary_expression "(int)local_6c - 1" (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "bVar32 = cVar20.fc;" (assignment_expression "bVar32 = cVar20.fc" identifier = (field_expression "cVar20.fc" identifier . field_identifier)) ;) (expression_statement "cVar20 = (ct_data_s)((int)cVar20 + 8);" (assignment_expression "cVar20 = (ct_data_s)((int)cVar20 + 8)" identifier = (call_expression "(ct_data_s)((int)cVar20 + 8)" (parenthesized_expression "(ct_data_s)" ( identifier )) (argument_list "((int)cVar20 + 8)" ( (binary_expression "(int)cVar20 + 8" (cast_expression "(int)cVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar32 & 0x1f)));" (assignment_expression "local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar32 & 0x1f)))" identifier = (call_expression "(gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar32 & 0x1f)))" (parenthesized_expression "(gz_headerp)" ( identifier )) (argument_list "((int)&local_64->text + ((uint)*local_60 << (bVar32 & 0x1f)))" ( (binary_expression "(int)&local_64->text + ((uint)*local_60 << (bVar32 & 0x1f))" (cast_expression "(int)&local_64->text" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_64->text" & (field_expression "local_64->text" identifier -> field_identifier))) + (parenthesized_expression "((uint)*local_60 << (bVar32 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar32 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar32 & 0x1f)" ( (binary_expression "bVar32 & 0x1f" identifier & number_literal) ))) ))) )))) ;) (expression_statement "local_60 = pbVar26;" (assignment_expression "local_60 = pbVar26" identifier = identifier) ;) (if_statement "if (0x1f < (uint)cVar20) goto LAB_00017996;" if (parenthesized_expression "(0x1f < (uint)cVar20)" ( (binary_expression "0x1f < (uint)cVar20" number_literal < (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (goto_statement "goto LAB_00017996;" goto statement_identifier ;)) }) (labeled_statement "LAB_000190a2:\n  pPVar27 = (Posf *)0x0;" statement_identifier : (expression_statement "pPVar27 = (Posf *)0x0;" (assignment_expression "pPVar27 = (Posf *)0x0" identifier = (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "local_60 = pbVar26;" (assignment_expression "local_60 = pbVar26" identifier = identifier) ;) (labeled_statement "LAB_00017f32:\n  strm->next_in = local_60;" statement_identifier : (expression_statement "strm->next_in = local_60;" (assignment_expression "strm->next_in = local_60" (field_expression "strm->next_in" identifier -> field_identifier) = identifier) ;)) (expression_statement "strm->next_out = end;" (assignment_expression "strm->next_out = end" (field_expression "strm->next_out" identifier -> field_identifier) = identifier) ;) (expression_statement "strm->avail_in = (uInt)local_6c;" (assignment_expression "strm->avail_in = (uInt)local_6c" (field_expression "strm->avail_in" identifier -> field_identifier) = (cast_expression "(uInt)local_6c" ( (type_descriptor "uInt" type_identifier) ) identifier)) ;) (expression_statement "strm->avail_out = (uInt)local_5c;" (assignment_expression "strm->avail_out = (uInt)local_5c" (field_expression "strm->avail_out" identifier -> field_identifier) = (cast_expression "(uInt)local_5c" ( (type_descriptor "uInt" type_identifier) ) identifier)) ;) (expression_statement "piVar3->window_size = (ulg)local_64;" (assignment_expression "piVar3->window_size = (ulg)local_64" (field_expression "piVar3->window_size" identifier -> field_identifier) = (cast_expression "(ulg)local_64" ( (type_descriptor "ulg" type_identifier) ) identifier)) ;) (expression_statement "piVar3->prev = (Posf *)cVar20;" (assignment_expression "piVar3->prev = (Posf *)cVar20" (field_expression "piVar3->prev" identifier -> field_identifier) = (cast_expression "(Posf *)cVar20" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if ((piVar3->w_size != 0) ||\n     (((local_5c != local_50 && ((uint)piVar3->status < 0x3f51)) &&\n      (((uint)piVar3->status < 0x3f4e || (flush != 4)))))) {\n    iVar6 = updatewindow(strm,end,(int)local_50 - (int)local_5c);\n    if (iVar6 != 0) {\n      piVar3->status = 0x3f52;\n_L593:\n      pPVar27 = (Posf *)0xfffffffc;\n      goto LAB_00018778;\n    }\n    local_6c = (Posf *)strm->avail_in;\n    local_5c = (Posf *)strm->avail_out;\n  }" if (parenthesized_expression "((piVar3->w_size != 0) ||\n     (((local_5c != local_50 && ((uint)piVar3->status < 0x3f51)) &&\n      (((uint)piVar3->status < 0x3f4e || (flush != 4))))))" ( (binary_expression "(piVar3->w_size != 0) ||\n     (((local_5c != local_50 && ((uint)piVar3->status < 0x3f51)) &&\n      (((uint)piVar3->status < 0x3f4e || (flush != 4)))))" (parenthesized_expression "(piVar3->w_size != 0)" ( (binary_expression "piVar3->w_size != 0" (field_expression "piVar3->w_size" identifier -> field_identifier) != number_literal) )) || (parenthesized_expression "(((local_5c != local_50 && ((uint)piVar3->status < 0x3f51)) &&\n      (((uint)piVar3->status < 0x3f4e || (flush != 4)))))" ( (parenthesized_expression "((local_5c != local_50 && ((uint)piVar3->status < 0x3f51)) &&\n      (((uint)piVar3->status < 0x3f4e || (flush != 4))))" ( (binary_expression "(local_5c != local_50 && ((uint)piVar3->status < 0x3f51)) &&\n      (((uint)piVar3->status < 0x3f4e || (flush != 4)))" (parenthesized_expression "(local_5c != local_50 && ((uint)piVar3->status < 0x3f51))" ( (binary_expression "local_5c != local_50 && ((uint)piVar3->status < 0x3f51)" (binary_expression "local_5c != local_50" identifier != identifier) && (parenthesized_expression "((uint)piVar3->status < 0x3f51)" ( (binary_expression "(uint)piVar3->status < 0x3f51" (cast_expression "(uint)piVar3->status" ( (type_descriptor "uint" type_identifier) ) (field_expression "piVar3->status" identifier -> field_identifier)) < number_literal) ))) )) && (parenthesized_expression "(((uint)piVar3->status < 0x3f4e || (flush != 4)))" ( (parenthesized_expression "((uint)piVar3->status < 0x3f4e || (flush != 4))" ( (binary_expression "(uint)piVar3->status < 0x3f4e || (flush != 4)" (binary_expression "(uint)piVar3->status < 0x3f4e" (cast_expression "(uint)piVar3->status" ( (type_descriptor "uint" type_identifier) ) (field_expression "piVar3->status" identifier -> field_identifier)) < number_literal) || (parenthesized_expression "(flush != 4)" ( (binary_expression "flush != 4" identifier != number_literal) ))) )) ))) )) ))) )) (compound_statement "{\n    iVar6 = updatewindow(strm,end,(int)local_50 - (int)local_5c);\n    if (iVar6 != 0) {\n      piVar3->status = 0x3f52;\n_L593:\n      pPVar27 = (Posf *)0xfffffffc;\n      goto LAB_00018778;\n    }\n    local_6c = (Posf *)strm->avail_in;\n    local_5c = (Posf *)strm->avail_out;\n  }" { (expression_statement "iVar6 = updatewindow(strm,end,(int)local_50 - (int)local_5c);" (assignment_expression "iVar6 = updatewindow(strm,end,(int)local_50 - (int)local_5c)" identifier = (call_expression "updatewindow(strm,end,(int)local_50 - (int)local_5c)" identifier (argument_list "(strm,end,(int)local_50 - (int)local_5c)" ( identifier , identifier , (binary_expression "(int)local_50 - (int)local_5c" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (iVar6 != 0) {\n      piVar3->status = 0x3f52;\n_L593:\n      pPVar27 = (Posf *)0xfffffffc;\n      goto LAB_00018778;\n    }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar3->status = 0x3f52;\n_L593:\n      pPVar27 = (Posf *)0xfffffffc;\n      goto LAB_00018778;\n    }" { (expression_statement "piVar3->status = 0x3f52;" (assignment_expression "piVar3->status = 0x3f52" (field_expression "piVar3->status" identifier -> field_identifier) = number_literal) ;) (labeled_statement "_L593:\n      pPVar27 = (Posf *)0xfffffffc;" statement_identifier : (expression_statement "pPVar27 = (Posf *)0xfffffffc;" (assignment_expression "pPVar27 = (Posf *)0xfffffffc" identifier = (cast_expression "(Posf *)0xfffffffc" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (goto_statement "goto LAB_00018778;" goto statement_identifier ;) })) (expression_statement "local_6c = (Posf *)strm->avail_in;" (assignment_expression "local_6c = (Posf *)strm->avail_in" identifier = (cast_expression "(Posf *)strm->avail_in" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "strm->avail_in" identifier -> field_identifier))) ;) (expression_statement "local_5c = (Posf *)strm->avail_out;" (assignment_expression "local_5c = (Posf *)strm->avail_out" identifier = (cast_expression "(Posf *)strm->avail_out" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "strm->avail_out" identifier -> field_identifier))) ;) })) (expression_statement "uVar29 = (int)local_50 - (int)local_5c;" (assignment_expression "uVar29 = (int)local_50 - (int)local_5c" identifier = (binary_expression "(int)local_50 - (int)local_5c" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "strm->total_in = strm->total_in + ((int)pPVar2 - (int)local_6c);" (assignment_expression "strm->total_in = strm->total_in + ((int)pPVar2 - (int)local_6c)" (field_expression "strm->total_in" identifier -> field_identifier) = (binary_expression "strm->total_in + ((int)pPVar2 - (int)local_6c)" (field_expression "strm->total_in" identifier -> field_identifier) + (parenthesized_expression "((int)pPVar2 - (int)local_6c)" ( (binary_expression "(int)pPVar2 - (int)local_6c" (cast_expression "(int)pPVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "strm->total_out = strm->total_out + uVar29;" (assignment_expression "strm->total_out = strm->total_out + uVar29" (field_expression "strm->total_out" identifier -> field_identifier) = (binary_expression "strm->total_out + uVar29" (field_expression "strm->total_out" identifier -> field_identifier) + identifier)) ;) (expression_statement "piVar3->gzindex = piVar3->gzindex + uVar29;" (assignment_expression "piVar3->gzindex = piVar3->gzindex + uVar29" (field_expression "piVar3->gzindex" identifier -> field_identifier) = (binary_expression "piVar3->gzindex + uVar29" (field_expression "piVar3->gzindex" identifier -> field_identifier) + identifier)) ;) (if_statement "if (((piVar3->pending_buf_size & 4) != 0) && (uVar29 != 0)) {\n    if (piVar3->pending == 0) {\n      pgVar13 = (gz_headerp)adler32((uLong)piVar3->gzhead,strm->next_out + -uVar29,uVar29);\n    }\n    else {\n      pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,strm->next_out + -uVar29,uVar29);\n    }\n    piVar3->gzhead = pgVar13;\n    strm->adler = (uLong)pgVar13;\n  }" if (parenthesized_expression "(((piVar3->pending_buf_size & 4) != 0) && (uVar29 != 0))" ( (binary_expression "((piVar3->pending_buf_size & 4) != 0) && (uVar29 != 0)" (parenthesized_expression "((piVar3->pending_buf_size & 4) != 0)" ( (binary_expression "(piVar3->pending_buf_size & 4) != 0" (parenthesized_expression "(piVar3->pending_buf_size & 4)" ( (binary_expression "piVar3->pending_buf_size & 4" (field_expression "piVar3->pending_buf_size" identifier -> field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "(uVar29 != 0)" ( (binary_expression "uVar29 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    if (piVar3->pending == 0) {\n      pgVar13 = (gz_headerp)adler32((uLong)piVar3->gzhead,strm->next_out + -uVar29,uVar29);\n    }\n    else {\n      pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,strm->next_out + -uVar29,uVar29);\n    }\n    piVar3->gzhead = pgVar13;\n    strm->adler = (uLong)pgVar13;\n  }" { (if_statement "if (piVar3->pending == 0) {\n      pgVar13 = (gz_headerp)adler32((uLong)piVar3->gzhead,strm->next_out + -uVar29,uVar29);\n    }\n    else {\n      pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,strm->next_out + -uVar29,uVar29);\n    }" if (parenthesized_expression "(piVar3->pending == 0)" ( (binary_expression "piVar3->pending == 0" (field_expression "piVar3->pending" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n      pgVar13 = (gz_headerp)adler32((uLong)piVar3->gzhead,strm->next_out + -uVar29,uVar29);\n    }" { (expression_statement "pgVar13 = (gz_headerp)adler32((uLong)piVar3->gzhead,strm->next_out + -uVar29,uVar29);" (assignment_expression "pgVar13 = (gz_headerp)adler32((uLong)piVar3->gzhead,strm->next_out + -uVar29,uVar29)" identifier = (cast_expression "(gz_headerp)adler32((uLong)piVar3->gzhead,strm->next_out + -uVar29,uVar29)" ( (type_descriptor "gz_headerp" type_identifier) ) (call_expression "adler32((uLong)piVar3->gzhead,strm->next_out + -uVar29,uVar29)" identifier (argument_list "((uLong)piVar3->gzhead,strm->next_out + -uVar29,uVar29)" ( (cast_expression "(uLong)piVar3->gzhead" ( (type_descriptor "uLong" type_identifier) ) (field_expression "piVar3->gzhead" identifier -> field_identifier)) , (binary_expression "strm->next_out + -uVar29" (field_expression "strm->next_out" identifier -> field_identifier) + (unary_expression "-uVar29" - identifier)) , identifier ))))) ;) }) (else_clause "else {\n      pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,strm->next_out + -uVar29,uVar29);\n    }" else (compound_statement "{\n      pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,strm->next_out + -uVar29,uVar29);\n    }" { (expression_statement "pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,strm->next_out + -uVar29,uVar29);" (assignment_expression "pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,strm->next_out + -uVar29,uVar29)" identifier = (cast_expression "(gz_headerp)crc32((ulong)piVar3->gzhead,strm->next_out + -uVar29,uVar29)" ( (type_descriptor "gz_headerp" type_identifier) ) (call_expression "crc32((ulong)piVar3->gzhead,strm->next_out + -uVar29,uVar29)" identifier (argument_list "((ulong)piVar3->gzhead,strm->next_out + -uVar29,uVar29)" ( (cast_expression "(ulong)piVar3->gzhead" ( (type_descriptor "ulong" type_identifier) ) (field_expression "piVar3->gzhead" identifier -> field_identifier)) , (binary_expression "strm->next_out + -uVar29" (field_expression "strm->next_out" identifier -> field_identifier) + (unary_expression "-uVar29" - identifier)) , identifier ))))) ;) }))) (expression_statement "piVar3->gzhead = pgVar13;" (assignment_expression "piVar3->gzhead = pgVar13" (field_expression "piVar3->gzhead" identifier -> field_identifier) = identifier) ;) (expression_statement "strm->adler = (uLong)pgVar13;" (assignment_expression "strm->adler = (uLong)pgVar13" (field_expression "strm->adler" identifier -> field_identifier) = (cast_expression "(uLong)pgVar13" ( (type_descriptor "uLong" type_identifier) ) identifier)) ;) })) (expression_statement "pPVar9 = piVar3->prev;" (assignment_expression "pPVar9 = piVar3->prev" identifier = (field_expression "piVar3->prev" identifier -> field_identifier)) ;) (if_statement "if (piVar3->pending_buf != (Bytef *)0x0) {\n    pPVar9 = pPVar9 + 0x20;\n  }" if (parenthesized_expression "(piVar3->pending_buf != (Bytef *)0x0)" ( (binary_expression "piVar3->pending_buf != (Bytef *)0x0" (field_expression "piVar3->pending_buf" identifier -> field_identifier) != (cast_expression "(Bytef *)0x0" ( (type_descriptor "Bytef *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pPVar9 = pPVar9 + 0x20;\n  }" { (expression_statement "pPVar9 = pPVar9 + 0x20;" (assignment_expression "pPVar9 = pPVar9 + 0x20" identifier = (binary_expression "pPVar9 + 0x20" identifier + number_literal)) ;) })) (expression_statement "iVar6 = piVar3->status;" (assignment_expression "iVar6 = piVar3->status" identifier = (field_expression "piVar3->status" identifier -> field_identifier)) ;) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (if_statement "if (iVar6 == 0x3f3f) {\n    pPVar9 = pPVar9 + 0x40;\n  }\n  else if ((iVar6 == 0x3f47) || (iVar6 == 0x3f42)) {\n    local_4c = 0x100;\n  }" if (parenthesized_expression "(iVar6 == 0x3f3f)" ( (binary_expression "iVar6 == 0x3f3f" identifier == number_literal) )) (compound_statement "{\n    pPVar9 = pPVar9 + 0x40;\n  }" { (expression_statement "pPVar9 = pPVar9 + 0x40;" (assignment_expression "pPVar9 = pPVar9 + 0x40" identifier = (binary_expression "pPVar9 + 0x40" identifier + number_literal)) ;) }) (else_clause "else if ((iVar6 == 0x3f47) || (iVar6 == 0x3f42)) {\n    local_4c = 0x100;\n  }" else (if_statement "if ((iVar6 == 0x3f47) || (iVar6 == 0x3f42)) {\n    local_4c = 0x100;\n  }" if (parenthesized_expression "((iVar6 == 0x3f47) || (iVar6 == 0x3f42))" ( (binary_expression "(iVar6 == 0x3f47) || (iVar6 == 0x3f42)" (parenthesized_expression "(iVar6 == 0x3f47)" ( (binary_expression "iVar6 == 0x3f47" identifier == number_literal) )) || (parenthesized_expression "(iVar6 == 0x3f42)" ( (binary_expression "iVar6 == 0x3f42" identifier == number_literal) ))) )) (compound_statement "{\n    local_4c = 0x100;\n  }" { (expression_statement "local_4c = 0x100;" (assignment_expression "local_4c = 0x100" identifier = number_literal) ;) })))) (expression_statement "strm->data_type = (int)pPVar9 + local_4c;" (assignment_expression "strm->data_type = (int)pPVar9 + local_4c" (field_expression "strm->data_type" identifier -> field_identifier) = (binary_expression "(int)pPVar9 + local_4c" (cast_expression "(int)pPVar9" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (if_statement "if ((((int)pPVar2 - (int)local_6c == 0 && uVar29 == 0) || (flush == 4)) &&\n     (pPVar27 == (Posf *)0x0)) {\n    pPVar27 = (Posf *)0xfffffffb;\n  }" if (parenthesized_expression "((((int)pPVar2 - (int)local_6c == 0 && uVar29 == 0) || (flush == 4)) &&\n     (pPVar27 == (Posf *)0x0))" ( (binary_expression "(((int)pPVar2 - (int)local_6c == 0 && uVar29 == 0) || (flush == 4)) &&\n     (pPVar27 == (Posf *)0x0)" (parenthesized_expression "(((int)pPVar2 - (int)local_6c == 0 && uVar29 == 0) || (flush == 4))" ( (binary_expression "((int)pPVar2 - (int)local_6c == 0 && uVar29 == 0) || (flush == 4)" (parenthesized_expression "((int)pPVar2 - (int)local_6c == 0 && uVar29 == 0)" ( (binary_expression "(int)pPVar2 - (int)local_6c == 0 && uVar29 == 0" (binary_expression "(int)pPVar2 - (int)local_6c == 0" (binary_expression "(int)pPVar2 - (int)local_6c" (cast_expression "(int)pPVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_6c" ( (type_descriptor "int" primitive_type) ) identifier)) == number_literal) && (binary_expression "uVar29 == 0" identifier == number_literal)) )) || (parenthesized_expression "(flush == 4)" ( (binary_expression "flush == 4" identifier == number_literal) ))) )) && (parenthesized_expression "(pPVar27 == (Posf *)0x0)" ( (binary_expression "pPVar27 == (Posf *)0x0" identifier == (cast_expression "(Posf *)0x0" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n    pPVar27 = (Posf *)0xfffffffb;\n  }" { (expression_statement "pPVar27 = (Posf *)0xfffffffb;" (assignment_expression "pPVar27 = (Posf *)0xfffffffb" identifier = (cast_expression "(Posf *)0xfffffffb" ( (type_descriptor "Posf *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (labeled_statement "LAB_00018778:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (int)pPVar27;\n  }" statement_identifier : (if_statement "if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (int)pPVar27;\n  }" if (parenthesized_expression "(iVar1 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return (int)pPVar27;\n  }" { (return_statement "return (int)pPVar27;" return (cast_expression "(int)pPVar27" ( (type_descriptor "int" primitive_type) ) identifier) ;) })))) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })
(ERROR "uint inflate(int *param_1,int param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  int iVar3;\n  byte bVar4;\n  int iVar5;\n  char *pcVar6;\n  int iVar7;\n  undefined1 *puVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  ushort *puVar11;\n  byte bVar12;\n  byte bVar13;\n  uint uVar14;\n  uint extraout_ECX;\n  size_t __n;\n  uint uVar15;\n  uint extraout_ECX_00;\n  uint extraout_ECX_01;\n  undefined2 *puVar16;\n  uint uVar17;\n  uint uVar18;\n  ushort uVar19;\n  byte *pbVar20;\n  uint uVar21;\n  undefined1 *puVar22;\n  undefined1 *__dest;\n  byte *pbVar24;\n  int in_GS_OFFSET;\n  byte bVar25;\n  uint local_6c;\n  uint local_64;\n  byte *local_60;\n  uint local_5c;\n  uint local_50;\n  int local_4c;\n  uint uStack_48;\n  uint uStack_40;\n  uint uStack_38;\n  undefined2 uStack_24;\n  undefined1 uStack_22;\n  undefined1 uStack_21;\n  int local_20;\n  undefined4 uStack_14;\n  undefined1 *puVar23;\n  \n  bVar25 = 0;\n  uStack_14 = 0x17809;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((((param_1 != (int *)0x0) && (param_1[8] != 0)) && (param_1[9] != 0)) &&\n     ((iVar5 = FUN_00017420(), iVar5 == 0 &&\n      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0)))) {\n    local_60 = (byte *)*param_1;\n    uVar1 = param_1[1];\n    if ((local_60 != (byte *)0x0) || (uVar1 == 0)) {\n      uVar2 = param_1[7];\n      iVar5 = *(int *)(uVar2 + 4);\n      if (iVar5 == 0x3f3f) {\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n        iVar5 = 0x3f40;\n      }\n      local_50 = param_1[4];\n      local_64 = *(uint *)(uVar2 + 0x3c);\n      uVar15 = *(uint *)(uVar2 + 0x40);\n      uVar21 = uVar2;\n      local_6c = uVar1;\n      local_5c = local_50;\nLAB_000178c9:\n      switch(iVar5) {\n      case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n      case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;\n      case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;\n      case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;\n      case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;\n      case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;\n      case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto code_r0x00017eda;\n      case 0x3f3f:\n        goto LAB_00017f13;\n      case 0x3f41:\n        goto code_r0x00017ac6;\n      case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;\n      case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;\n      case 0x3f44:\n        goto code_r0x00018840;\n      case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;\n      case 0x3f47:\n        goto LAB_00017c70;\n      case 0x3f48:\n        goto LAB_00017b90;\n      case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto code_r0x00017d27;\n      case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto code_r0x00017c9a;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;\n      case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto LAB_00018817;\n      case 0x3f52:\n        goto code_r0x00018770;\n      }\n    }\n  }\n  uVar21 = 0xfffffffe;\n  goto LAB_00018778;\n  while (local_6c != 0) {\ncode_r0x00018ea0:\n    pbVar20 = local_60 + 1;\n    local_6c = local_6c - 1;\n    bVar12 = (byte)uVar15;\n    uVar15 = uVar15 + 8;\n    local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n    local_60 = pbVar20;\n    if (0xf < uVar15) goto code_r0x00018ec6;\n  }\n  goto LAB_000190a2;\ncode_r0x00018ec6:\n  if (((uVar21 & 2) == 0) || (local_64 != 0x8b1f)) {\n    *(undefined4 *)(uVar2 + 0x14) = 0;\n    if (*(int *)(uVar2 + 0x24) != 0) {\n      *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30) = 0xffffffff;\n    }\n    if (((uVar21 & 1) == 0) ||\n       (uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8), uVar21 != (uVar21 / 0x1f) * 0x1f)) {\n      pcVar6 = "incorrect header check";\nLAB_000188eb:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }\n    else {\n      if ((local_64 & 0xf) == 8) {\n        local_64 = local_64 >> 4;\n        uVar15 = uVar15 - 4;\n        uVar21 = (local_64 & 0xf) + 8;\n        if (*(uint *)(uVar2 + 0x28) == 0) {\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;\n        iVar5 = 1 << (sbyte)uVar21;\n        *(int *)(uVar2 + 0x18) = iVar5;\n        iVar5 = adler32(0,0,0,iVar5);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        if ((local_64 & 0x200) == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }\n        local_64 = 0;\n        uVar15 = 0;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3d;\n        do {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        } while (uVar15 < 0x20);\n        uVar15 = 0;\n        local_64 = 0;\n        iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3e;\ncode_r0x00017eda:\n        if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        uVar21 = 2;\n        param_1[3] = (int)__dest;\n        param_1[4] = local_5c;\n        *param_1 = (int)local_60;\n        param_1[1] = local_6c;\n        *(uint *)(uVar2 + 0x40) = uVar15;\n        *(uint *)(uVar2 + 0x3c) = local_64;\n        goto LAB_00018778;\n      }\n      pcVar6 = "unknown compression method";\nLAB_00017b45:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }\n  }\n  else {\n    if (*(int *)(uVar2 + 0x28) == 0) {\n      *(undefined4 *)(uVar2 + 0x28) = 0xf;\n    }\n    uVar15 = 0;\n    uVar9 = crc32(0,0,0);\n    uStack_24 = 0x8b1f;\n    *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n    uVar9 = crc32(uVar9,&uStack_24,2);\n    *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n    *(undefined4 *)(uVar2 + 4) = 0x3f35;\n    local_64 = 0;\n    do {\n      if (local_6c == 0) goto LAB_00017f30;\n      local_6c = local_6c - 1;\n      bVar12 = (byte)uVar15;\n      uVar15 = uVar15 + 8;\n      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n      local_60 = local_60 + 1;\njoined_r0x0001879b:\n    } while (uVar15 < 0x10);\n    *(uint *)(uVar2 + 0x14) = local_64;\n    if ((char)local_64 == '\b') {\n      if ((local_64 & 0xe000) != 0) {\n        pcVar6 = "unknown header flags set";\n        goto LAB_000188eb;\n      }\n      if (*(uint **)(uVar2 + 0x24) != (uint *)0x0) {\n        **(uint **)(uVar2 + 0x24) = local_64 >> 8 & 1;\n      }\n      if (((local_64 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uStack_24 = (undefined2)local_64;\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2,uVar2);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_64 = 0;\n      uVar15 = 0;\n      *(undefined4 *)(uVar2 + 4) = 0x3f36;\n      do {\n        if (local_6c == 0) goto LAB_00017f30;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = local_60 + 1;\njoined_r0x00018053:\n      } while (uVar15 < 0x20);\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(uint *)(*(int *)(uVar2 + 0x24) + 4) = local_64;\n      }\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uStack_24 = (undefined2)local_64;\n        uStack_22 = (undefined1)(local_64 >> 0x10);\n        uStack_21 = (undefined1)(local_64 >> 0x18);\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,4);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_64 = 0;\n      uVar15 = 0;\n      *(undefined4 *)(uVar2 + 4) = 0x3f37;\n      do {\n        if (local_6c == 0) goto LAB_00017f30;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = local_60 + 1;\njoined_r0x000180e3:\n      } while (uVar15 < 0x10);\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(uint *)(iVar5 + 8) = local_64 & 0xff;\n        *(uint *)(iVar5 + 0xc) = local_64 >> 8;\n      }\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uStack_24 = (undefined2)local_64;\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      *(undefined4 *)(uVar2 + 4) = 0x3f38;\n      if ((uVar21 & 0x400) == 0) {\n        uVar15 = 0;\n        local_64 = 0;\ncode_r0x000181ae:\n        if (*(int *)(uVar2 + 0x24) != 0) {\n          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;\n        }\n        goto code_r0x000181c0;\n      }\n      local_64 = 0;\n      uVar15 = 0;\ncode_r0x0001829d:\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x000182ea;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }\n    else {\n      param_1[6] = (int)"unknown compression method";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\nLAB_00018817:\n      uVar21 = 0xfffffffd;\n    }\n  }\n  goto LAB_00017f32;\ncode_r0x000182ea:\n  *(uint *)(uVar2 + 0x44) = local_64;\n  if (*(int *)(uVar2 + 0x24) != 0) {\n    *(uint *)(*(int *)(uVar2 + 0x24) + 0x14) = local_64;\n  }\n  if (((uVar21 & 0x200) == 0) || ((*(byte *)(uVar2 + 0xc) & 4) == 0)) {\n    uVar15 = 0;\n    local_64 = 0;\n  }\n  else {\n    uVar15 = 0;\n    uStack_24 = (undefined2)local_64;\n    uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n    *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n    local_64 = 0;\n    uVar21 = *(uint *)(uVar2 + 0x14);\n  }\ncode_r0x000181c0:\n  *(undefined4 *)(uVar2 + 4) = 0x3f39;\ncode_r0x000181cb:\n  if ((uVar21 & 0x400) == 0) {\ncode_r0x0001826a:\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3a;\ncode_r0x0001832f:\n    if ((uVar21 & 0x800) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3b;\ncode_r0x0001835c:\n    if ((uVar21 & 0x1000) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 4) = 0x3f3c;\ncode_r0x00018382:\n    if ((uVar21 & 0x200) == 0) {\ncode_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }\n      iVar5 = crc32(0,0,0);\n      *(int *)(uVar2 + 0x1c) = iVar5;\n      param_1[0xc] = iVar5;\n      *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n      goto LAB_00017f13;\n    }\n    if (uVar15 < 0x10) {\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }\n    else {\ncode_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }\n      param_1[6] = (int)"header crc mismatch";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n    }\n  }\n  else {\n    uVar14 = *(uint *)(uVar2 + 0x44);\n    uVar17 = local_6c;\n    if (uVar14 < local_6c) {\n      uVar17 = uVar14;\n    }\n    if (uVar17 != 0) {\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_6c = local_6c - uVar17;\n      local_60 = local_60 + uVar17;\n      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;\n      *(uint *)(uVar2 + 0x44) = uVar14;\n    }\n    if (uVar14 == 0) {\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      goto code_r0x0001826a;\n    }\nLAB_00017f30:\n    uVar21 = 0;\n  }\n  goto LAB_00017f32;\nLAB_00017996:\n  iVar5 = local_50 - local_5c;\n  param_1[5] = param_1[5] + iVar5;\n  *(int *)(uVar2 + 0x20) = *(int *)(uVar2 + 0x20) + iVar5;\n  uVar14 = uVar21 & 4;\n  if ((uVar14 != 0) && (iVar5 != 0)) {\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    else {\n      iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    *(int *)(uVar2 + 0x1c) = iVar5;\n    param_1[0xc] = iVar5;\n    uVar21 = *(uint *)(uVar2 + 0xc);\n    uVar14 = uVar21 & 4;\n  }\n  if (uVar14 != 0) {\n    uVar14 = local_64;\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100;\n    }\n    if (*(uint *)(uVar2 + 0x1c) != uVar14) {\n      param_1[6] = (int)"incorrect data check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      local_50 = local_5c;\n      goto LAB_00017f32;\n    }\n  }\n  uVar15 = 0;\n  local_64 = 0;\n  local_50 = local_5c;\nLAB_00018e20:\n  *(undefined4 *)(uVar2 + 4) = 0x3f4f;\nLAB_000183ff:\n  if ((uVar21 != 0) && (*(int *)(uVar2 + 0x14) != 0)) {\n    for (; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n      if (local_6c == 0) goto LAB_00017f30;\n      local_6c = local_6c - 1;\n      local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n      local_60 = local_60 + 1;\n    }\n    if (*(uint *)(uVar2 + 0x20) != local_64) {\n      param_1[6] = (int)"incorrect length check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      goto LAB_00017f32;\n    }\n    uVar15 = 0;\n    local_64 = 0;\n  }\n  uVar21 = 1;\n  *(undefined4 *)(uVar2 + 4) = 0x3f50;\n  goto LAB_00017f32;\nLAB_00018d40:\n  uVar21 = 0;\n  local_60 = pbVar20;\n  goto LAB_00017f32;\ncode_r0x00018d1f:\n  *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n  *(undefined4 *)(uVar2 + 4) = 0x3f3f;\nLAB_00017f13:\n  if (param_2 - 5U < 2) goto LAB_00017f30;\n  goto LAB_0001790a;\n  while (local_6c != 0) {\nLAB_00017970:\n    pbVar20 = local_60 + 1;\n    local_6c = local_6c - 1;\n    bVar25 = (byte)uVar15;\n    uVar15 = uVar15 + 8;\n    local_64 = local_64 + ((uint)*local_60 << (bVar25 & 0x1f));\n    local_60 = pbVar20;\n    if (0x1f < uVar15) goto LAB_00017996;\n  }\nLAB_000190a2:\n  uVar21 = 0;\n  local_60 = pbVar20;\nLAB_00017f32:\n  *param_1 = (int)local_60;\n  param_1[3] = (int)__dest;\n  param_1[1] = local_6c;\n  param_1[4] = local_5c;\n  *(uint *)(uVar2 + 0x3c) = local_64;\n  *(uint *)(uVar2 + 0x40) = uVar15;\n  if ((*(int *)(uVar2 + 0x2c) != 0) ||\n     (((local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&\n      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)))))) {\n    iVar5 = FUN_000172e0();\n    if (iVar5 != 0) {\n      *(undefined4 *)(uVar2 + 4) = 0x3f52;\ncode_r0x00018770:\n      uVar21 = 0xfffffffc;\n      goto LAB_00018778;\n    }\n    local_6c = param_1[1];\n    local_5c = param_1[4];\n  }\n  iVar5 = local_50 - local_5c;\n  param_1[2] = param_1[2] + (uVar1 - local_6c);\n  param_1[5] = param_1[5] + iVar5;\n  *(int *)(uVar2 + 0x20) = *(int *)(uVar2 + 0x20) + iVar5;\n  if (((*(byte *)(uVar2 + 0xc) & 4) != 0) && (iVar5 != 0)) {\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    else {\n      iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    *(int *)(uVar2 + 0x1c) = iVar7;\n    param_1[0xc] = iVar7;\n  }\n  iVar7 = *(int *)(uVar2 + 0x40);\n  if (*(int *)(uVar2 + 8) != 0) {\n    iVar7 = iVar7 + 0x40;\n  }\n  iVar3 = *(int *)(uVar2 + 4);\n  local_4c = 0;\n  if (iVar3 == 0x3f3f) {\n    iVar7 = iVar7 + 0x80;\n  }\n  else if ((iVar3 == 0x3f47) || (iVar3 == 0x3f42)) {\n    local_4c = 0x100;\n  }\n  param_1[0xb] = iVar7 + local_4c;\n  if (((uVar1 - local_6c == 0 && iVar5 == 0) || (param_2 == 4)) && (uVar21 == 0)) {\n    uVar21 = 0xfffffffb;\n  }\nLAB_00018778:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar21;\n  }\n                    \n  FUN_0001eba0();\n}\n\n" type_identifier (function_declarator "inflate(int *param_1,int param_2)" identifier (parameter_list "(int *param_1,int param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "ushort *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "uint extraout_ECX;" type_identifier identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "uint extraout_ECX_00;" type_identifier identifier ;) (declaration "uint extraout_ECX_01;" type_identifier identifier ;) (declaration "undefined2 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "ushort uVar19;" type_identifier identifier ;) (declaration "byte *pbVar20;" type_identifier (pointer_declarator "*pbVar20" * identifier) ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "undefined1 *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "undefined1 *__dest;" type_identifier (pointer_declarator "*__dest" * identifier) ;) (declaration "byte *pbVar24;" type_identifier (pointer_declarator "*pbVar24" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "byte bVar25;" type_identifier identifier ;) (declaration "uint local_6c;" type_identifier identifier ;) (declaration "uint local_64;" type_identifier identifier ;) (declaration "byte *local_60;" type_identifier (pointer_declarator "*local_60" * identifier) ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "uint local_50;" type_identifier identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "uint uStack_48;" type_identifier identifier ;) (declaration "uint uStack_40;" type_identifier identifier ;) (declaration "uint uStack_38;" type_identifier identifier ;) (declaration "undefined2 uStack_24;" type_identifier identifier ;) (declaration "undefined1 uStack_22;" type_identifier identifier ;) (declaration "undefined1 uStack_21;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (declaration "undefined1 *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (expression_statement "bVar25 = 0;" (assignment_expression "bVar25 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x17809;" (assignment_expression "uStack_14 = 0x17809" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((((param_1 != (int *)0x0) && (param_1[8] != 0)) && (param_1[9] != 0)) &&\n     ((iVar5 = FUN_00017420(), iVar5 == 0 &&\n      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0)))) {\n    local_60 = (byte *)*param_1;\n    uVar1 = param_1[1];\n    if ((local_60 != (byte *)0x0) || (uVar1 == 0)) {\n      uVar2 = param_1[7];\n      iVar5 = *(int *)(uVar2 + 4);\n      if (iVar5 == 0x3f3f) {\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n        iVar5 = 0x3f40;\n      }\n      local_50 = param_1[4];\n      local_64 = *(uint *)(uVar2 + 0x3c);\n      uVar15 = *(uint *)(uVar2 + 0x40);\n      uVar21 = uVar2;\n      local_6c = uVar1;\n      local_5c = local_50;\nLAB_000178c9:\n      switch(iVar5) {\n      case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n      case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;\n      case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;\n      case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;\n      case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;\n      case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;\n      case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto code_r0x00017eda;\n      case 0x3f3f:\n        goto LAB_00017f13;\n      case 0x3f41:\n        goto code_r0x00017ac6;\n      case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;\n      case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;\n      case 0x3f44:\n        goto code_r0x00018840;\n      case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;\n      case 0x3f47:\n        goto LAB_00017c70;\n      case 0x3f48:\n        goto LAB_00017b90;\n      case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto code_r0x00017d27;\n      case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto code_r0x00017c9a;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;\n      case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto LAB_00018817;\n      case 0x3f52:\n        goto code_r0x00018770;\n      }\n    }\n  }" if (parenthesized_expression "((((param_1 != (int *)0x0) && (param_1[8] != 0)) && (param_1[9] != 0)) &&\n     ((iVar5 = FUN_00017420(), iVar5 == 0 &&\n      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0))))" ( (binary_expression "(((param_1 != (int *)0x0) && (param_1[8] != 0)) && (param_1[9] != 0)) &&\n     ((iVar5 = FUN_00017420(), iVar5 == 0 &&\n      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0)))" (parenthesized_expression "(((param_1 != (int *)0x0) && (param_1[8] != 0)) && (param_1[9] != 0))" ( (binary_expression "((param_1 != (int *)0x0) && (param_1[8] != 0)) && (param_1[9] != 0)" (parenthesized_expression "((param_1 != (int *)0x0) && (param_1[8] != 0))" ( (binary_expression "(param_1 != (int *)0x0) && (param_1[8] != 0)" (parenthesized_expression "(param_1 != (int *)0x0)" ( (binary_expression "param_1 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(param_1[8] != 0)" ( (binary_expression "param_1[8] != 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) != number_literal) ))) )) && (parenthesized_expression "(param_1[9] != 0)" ( (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) != number_literal) ))) )) && (parenthesized_expression "((iVar5 = FUN_00017420(), iVar5 == 0 &&\n      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0)))" ( (parenthesized_expression "(iVar5 = FUN_00017420(), iVar5 == 0 &&\n      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0))" ( (comma_expression "iVar5 = FUN_00017420(), iVar5 == 0 &&\n      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0)" (assignment_expression "iVar5 = FUN_00017420()" identifier = (call_expression "FUN_00017420()" identifier (argument_list "()" ( )))) , (binary_expression "iVar5 == 0 &&\n      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0)" (binary_expression "iVar5 == 0" identifier == number_literal) && (parenthesized_expression "(__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0)" ( (comma_expression "__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0" (assignment_expression "__dest = (undefined1 *)param_1[3]" identifier = (cast_expression "(undefined1 *)param_1[3]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ]))) , (binary_expression "__dest != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )))) )) ))) )) (compound_statement "{\n    local_60 = (byte *)*param_1;\n    uVar1 = param_1[1];\n    if ((local_60 != (byte *)0x0) || (uVar1 == 0)) {\n      uVar2 = param_1[7];\n      iVar5 = *(int *)(uVar2 + 4);\n      if (iVar5 == 0x3f3f) {\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n        iVar5 = 0x3f40;\n      }\n      local_50 = param_1[4];\n      local_64 = *(uint *)(uVar2 + 0x3c);\n      uVar15 = *(uint *)(uVar2 + 0x40);\n      uVar21 = uVar2;\n      local_6c = uVar1;\n      local_5c = local_50;\nLAB_000178c9:\n      switch(iVar5) {\n      case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n      case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;\n      case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;\n      case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;\n      case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;\n      case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;\n      case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto code_r0x00017eda;\n      case 0x3f3f:\n        goto LAB_00017f13;\n      case 0x3f41:\n        goto code_r0x00017ac6;\n      case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;\n      case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;\n      case 0x3f44:\n        goto code_r0x00018840;\n      case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;\n      case 0x3f47:\n        goto LAB_00017c70;\n      case 0x3f48:\n        goto LAB_00017b90;\n      case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto code_r0x00017d27;\n      case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto code_r0x00017c9a;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;\n      case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto LAB_00018817;\n      case 0x3f52:\n        goto code_r0x00018770;\n      }\n    }\n  }" { (expression_statement "local_60 = (byte *)*param_1;" (assignment_expression "local_60 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if ((local_60 != (byte *)0x0) || (uVar1 == 0)) {\n      uVar2 = param_1[7];\n      iVar5 = *(int *)(uVar2 + 4);\n      if (iVar5 == 0x3f3f) {\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n        iVar5 = 0x3f40;\n      }\n      local_50 = param_1[4];\n      local_64 = *(uint *)(uVar2 + 0x3c);\n      uVar15 = *(uint *)(uVar2 + 0x40);\n      uVar21 = uVar2;\n      local_6c = uVar1;\n      local_5c = local_50;\nLAB_000178c9:\n      switch(iVar5) {\n      case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n      case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;\n      case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;\n      case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;\n      case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;\n      case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;\n      case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto code_r0x00017eda;\n      case 0x3f3f:\n        goto LAB_00017f13;\n      case 0x3f41:\n        goto code_r0x00017ac6;\n      case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;\n      case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;\n      case 0x3f44:\n        goto code_r0x00018840;\n      case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;\n      case 0x3f47:\n        goto LAB_00017c70;\n      case 0x3f48:\n        goto LAB_00017b90;\n      case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto code_r0x00017d27;\n      case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto code_r0x00017c9a;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;\n      case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto LAB_00018817;\n      case 0x3f52:\n        goto code_r0x00018770;\n      }\n    }" if (parenthesized_expression "((local_60 != (byte *)0x0) || (uVar1 == 0))" ( (binary_expression "(local_60 != (byte *)0x0) || (uVar1 == 0)" (parenthesized_expression "(local_60 != (byte *)0x0)" ( (binary_expression "local_60 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) ))) )) (compound_statement "{\n      uVar2 = param_1[7];\n      iVar5 = *(int *)(uVar2 + 4);\n      if (iVar5 == 0x3f3f) {\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n        iVar5 = 0x3f40;\n      }\n      local_50 = param_1[4];\n      local_64 = *(uint *)(uVar2 + 0x3c);\n      uVar15 = *(uint *)(uVar2 + 0x40);\n      uVar21 = uVar2;\n      local_6c = uVar1;\n      local_5c = local_50;\nLAB_000178c9:\n      switch(iVar5) {\n      case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n      case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;\n      case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;\n      case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;\n      case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;\n      case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;\n      case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto code_r0x00017eda;\n      case 0x3f3f:\n        goto LAB_00017f13;\n      case 0x3f41:\n        goto code_r0x00017ac6;\n      case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;\n      case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;\n      case 0x3f44:\n        goto code_r0x00018840;\n      case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;\n      case 0x3f47:\n        goto LAB_00017c70;\n      case 0x3f48:\n        goto LAB_00017b90;\n      case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto code_r0x00017d27;\n      case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto code_r0x00017c9a;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;\n      case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto LAB_00018817;\n      case 0x3f52:\n        goto code_r0x00018770;\n      }\n    }" { (expression_statement "uVar2 = param_1[7];" (assignment_expression "uVar2 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (expression_statement "iVar5 = *(int *)(uVar2 + 4);" (assignment_expression "iVar5 = *(int *)(uVar2 + 4)" identifier = (pointer_expression "*(int *)(uVar2 + 4)" * (cast_expression "(int *)(uVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 == 0x3f3f) {\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n        iVar5 = 0x3f40;\n      }" if (parenthesized_expression "(iVar5 == 0x3f3f)" ( (binary_expression "iVar5 == 0x3f3f" identifier == number_literal) )) (compound_statement "{\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n        iVar5 = 0x3f40;\n      }" { (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f40;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f40" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar5 = 0x3f40;" (assignment_expression "iVar5 = 0x3f40" identifier = number_literal) ;) })) (expression_statement "local_50 = param_1[4];" (assignment_expression "local_50 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "local_64 = *(uint *)(uVar2 + 0x3c);" (assignment_expression "local_64 = *(uint *)(uVar2 + 0x3c)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x3c)" * (cast_expression "(uint *)(uVar2 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x3c)" ( (binary_expression "uVar2 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = *(uint *)(uVar2 + 0x40);" (assignment_expression "uVar15 = *(uint *)(uVar2 + 0x40)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x40)" * (cast_expression "(uint *)(uVar2 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x40)" ( (binary_expression "uVar2 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "uVar21 = uVar2;" (assignment_expression "uVar21 = uVar2" identifier = identifier) ;) (expression_statement "local_6c = uVar1;" (assignment_expression "local_6c = uVar1" identifier = identifier) ;) (expression_statement "local_5c = local_50;" (assignment_expression "local_5c = local_50" identifier = identifier) ;) (labeled_statement "LAB_000178c9:\n      switch(iVar5) {\n      case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n      case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;\n      case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;\n      case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;\n      case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;\n      case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;\n      case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto code_r0x00017eda;\n      case 0x3f3f:\n        goto LAB_00017f13;\n      case 0x3f41:\n        goto code_r0x00017ac6;\n      case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;\n      case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;\n      case 0x3f44:\n        goto code_r0x00018840;\n      case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;\n      case 0x3f47:\n        goto LAB_00017c70;\n      case 0x3f48:\n        goto LAB_00017b90;\n      case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto code_r0x00017d27;\n      case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto code_r0x00017c9a;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;\n      case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto LAB_00018817;\n      case 0x3f52:\n        goto code_r0x00018770;\n      }" statement_identifier : (switch_statement "switch(iVar5) {\n      case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n      case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;\n      case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;\n      case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;\n      case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;\n      case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;\n      case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto code_r0x00017eda;\n      case 0x3f3f:\n        goto LAB_00017f13;\n      case 0x3f41:\n        goto code_r0x00017ac6;\n      case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;\n      case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;\n      case 0x3f44:\n        goto code_r0x00018840;\n      case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;\n      case 0x3f47:\n        goto LAB_00017c70;\n      case 0x3f48:\n        goto LAB_00017b90;\n      case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto code_r0x00017d27;\n      case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto code_r0x00017c9a;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;\n      case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto LAB_00018817;\n      case 0x3f52:\n        goto code_r0x00018770;\n      }" switch (parenthesized_expression "(iVar5)" ( identifier )) (compound_statement "{\n      case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n      case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;\n      case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;\n      case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;\n      case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;\n      case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;\n      case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto code_r0x00017eda;\n      case 0x3f3f:\n        goto LAB_00017f13;\n      case 0x3f41:\n        goto code_r0x00017ac6;\n      case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;\n      case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;\n      case 0x3f44:\n        goto code_r0x00018840;\n      case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;\n      case 0x3f47:\n        goto LAB_00017c70;\n      case 0x3f48:\n        goto LAB_00017b90;\n      case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto code_r0x00017d27;\n      case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto code_r0x00017c9a;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;\n      case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto LAB_00018817;\n      case 0x3f52:\n        goto code_r0x00018770;\n      }" { (case_statement "case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;" case number_literal : (expression_statement "uVar21 = *(uint *)(uVar2 + 0xc);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0xc)" identifier = (pointer_expression "*(uint *)(uVar2 + 0xc)" * (cast_expression "(uint *)(uVar2 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }" if (parenthesized_expression "(uVar21 != 0)" ( (binary_expression "uVar21 != 0" identifier != number_literal) )) (compound_statement "{\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }" { (if_statement "if (0xf < uVar15) goto code_r0x00018ec6;" if (parenthesized_expression "(0xf < uVar15)" ( (binary_expression "0xf < uVar15" number_literal < identifier) )) (goto_statement "goto code_r0x00018ec6;" goto statement_identifier ;)) (if_statement "if (local_6c != 0) goto code_r0x00018ea0;" if (parenthesized_expression "(local_6c != 0)" ( (binary_expression "local_6c != 0" identifier != number_literal) )) (goto_statement "goto code_r0x00018ea0;" goto statement_identifier ;)) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f40;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f40" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;)) (case_statement "case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;" case number_literal : (labeled_statement "LAB_0001790a:\n        bVar12 = (byte)uVar15;" statement_identifier : (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;)) (if_statement "if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }" if (parenthesized_expression "(*(int *)(uVar2 + 8) != 0)" ( (binary_expression "*(int *)(uVar2 + 8) != 0" (pointer_expression "*(int *)(uVar2 + 8)" * (cast_expression "(int *)(uVar2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 8)" ( (binary_expression "uVar2 + 8" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }" { (expression_statement "uVar15 = uVar15 & 0xfffffff8;" (assignment_expression "uVar15 = uVar15 & 0xfffffff8" identifier = (binary_expression "uVar15 & 0xfffffff8" identifier & number_literal)) ;) (expression_statement "local_64 = local_64 >> (bVar12 & 7);" (assignment_expression "local_64 = local_64 >> (bVar12 & 7)" identifier = (binary_expression "local_64 >> (bVar12 & 7)" identifier >> (parenthesized_expression "(bVar12 & 7)" ( (binary_expression "bVar12 & 7" identifier & number_literal) )))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f4e;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f4e" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto code_r0x00017930;" goto statement_identifier ;) })) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (if_statement "if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }" if (parenthesized_expression "(uVar15 < 3)" ( (binary_expression "uVar15 < 3" identifier < number_literal) )) (compound_statement "{\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }" { (if_statement "if (local_6c == 0) goto LAB_00017f32;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;)) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "bVar13 = *local_60;" (assignment_expression "bVar13 = *local_60" identifier = (pointer_expression "*local_60" * identifier)) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)bVar13 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)bVar13 << (bVar12 & 0x1f))" ( (binary_expression "(uint)bVar13 << (bVar12 & 0x1f)" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) })) (expression_statement "*(uint *)(uVar2 + 8) = local_64 & 1;" (assignment_expression "*(uint *)(uVar2 + 8) = local_64 & 1" (pointer_expression "*(uint *)(uVar2 + 8)" * (cast_expression "(uint *)(uVar2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 8)" ( (binary_expression "uVar2 + 8" identifier + number_literal) )))) = (binary_expression "local_64 & 1" identifier & number_literal)) ;) (expression_statement "uVar14 = local_64 >> 1 & 3;" (assignment_expression "uVar14 = local_64 >> 1 & 3" identifier = (binary_expression "local_64 >> 1 & 3" (binary_expression "local_64 >> 1" identifier >> number_literal) & number_literal)) ;) (if_statement "if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }" if (parenthesized_expression "(uVar14 == 2)" ( (binary_expression "uVar14 == 2" identifier == number_literal) )) (compound_statement "{\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }" { (expression_statement "local_64 = local_64 >> 3;" (assignment_expression "local_64 = local_64 >> 3" identifier = (binary_expression "local_64 >> 3" identifier >> number_literal)) ;) (expression_statement "uVar15 = uVar15 - 3;" (assignment_expression "uVar15 = uVar15 - 3" identifier = (binary_expression "uVar15 - 3" identifier - number_literal)) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f44;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f44" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "code_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }" statement_identifier : (for_statement "for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }" for ( ; (binary_expression "uVar15 < 0xe" identifier < number_literal) ; (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ) (compound_statement "{\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }" { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << ((byte)uVar15 & 0x1f))" ( (binary_expression "(uint)*local_60 << ((byte)uVar15 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "((byte)uVar15 & 0x1f)" ( (binary_expression "(byte)uVar15 & 0x1f" (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) }))) (expression_statement "uVar15 = uVar15 - 0xe;" (assignment_expression "uVar15 = uVar15 - 0xe" identifier = (binary_expression "uVar15 - 0xe" identifier - number_literal)) ;) (expression_statement "uVar17 = (local_64 & 0x1f) + 0x101;" (assignment_expression "uVar17 = (local_64 & 0x1f) + 0x101" identifier = (binary_expression "(local_64 & 0x1f) + 0x101" (parenthesized_expression "(local_64 & 0x1f)" ( (binary_expression "local_64 & 0x1f" identifier & number_literal) )) + number_literal)) ;) (expression_statement "uVar21 = (local_64 >> 5 & 0x1f) + 1;" (assignment_expression "uVar21 = (local_64 >> 5 & 0x1f) + 1" identifier = (binary_expression "(local_64 >> 5 & 0x1f) + 1" (parenthesized_expression "(local_64 >> 5 & 0x1f)" ( (binary_expression "local_64 >> 5 & 0x1f" (binary_expression "local_64 >> 5" identifier >> number_literal) & number_literal) )) + number_literal)) ;) (expression_statement "uVar14 = (local_64 >> 10 & 0xf) + 4;" (assignment_expression "uVar14 = (local_64 >> 10 & 0xf) + 4" identifier = (binary_expression "(local_64 >> 10 & 0xf) + 4" (parenthesized_expression "(local_64 >> 10 & 0xf)" ( (binary_expression "local_64 >> 10 & 0xf" (binary_expression "local_64 >> 10" identifier >> number_literal) & number_literal) )) + number_literal)) ;) (expression_statement "local_64 = local_64 >> 0xe;" (assignment_expression "local_64 = local_64 >> 0xe" identifier = (binary_expression "local_64 >> 0xe" identifier >> number_literal)) ;) (expression_statement "*(uint *)(uVar2 + 100) = uVar17;" (assignment_expression "*(uint *)(uVar2 + 100) = uVar17" (pointer_expression "*(uint *)(uVar2 + 100)" * (cast_expression "(uint *)(uVar2 + 100)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 100)" ( (binary_expression "uVar2 + 100" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(uVar2 + 0x68) = uVar21;" (assignment_expression "*(uint *)(uVar2 + 0x68) = uVar21" (pointer_expression "*(uint *)(uVar2 + 0x68)" * (cast_expression "(uint *)(uVar2 + 0x68)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x68)" ( (binary_expression "uVar2 + 0x68" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(uVar2 + 0x60) = uVar14;" (assignment_expression "*(uint *)(uVar2 + 0x60) = uVar14" (pointer_expression "*(uint *)(uVar2 + 0x60)" * (cast_expression "(uint *)(uVar2 + 0x60)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x60)" ( (binary_expression "uVar2 + 0x60" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }" if (parenthesized_expression "((uVar21 < 0x1f) && (uVar17 < 0x11f))" ( (binary_expression "(uVar21 < 0x1f) && (uVar17 < 0x11f)" (parenthesized_expression "(uVar21 < 0x1f)" ( (binary_expression "uVar21 < 0x1f" identifier < number_literal) )) && (parenthesized_expression "(uVar17 < 0x11f)" ( (binary_expression "uVar17 < 0x11f" identifier < number_literal) ))) )) (compound_statement "{\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }" { (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x6c) = 0;" (assignment_expression "*(undefined4 *)(uVar2 + 0x6c) = 0" (pointer_expression "*(undefined4 *)(uVar2 + 0x6c)" * (cast_expression "(undefined4 *)(uVar2 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x6c)" ( (binary_expression "uVar2 + 0x6c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f45;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f45" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "LAB_000184b2:\n            uVar17 = uVar21 + 1;" statement_identifier : (expression_statement "uVar17 = uVar21 + 1;" (assignment_expression "uVar17 = uVar21 + 1" identifier = (binary_expression "uVar21 + 1" identifier + number_literal)) ;)) (do_statement "do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);" do (compound_statement "{\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            }" { (expression_statement "uVar21 = uVar17;" (assignment_expression "uVar21 = uVar17" identifier = identifier) ;) (if_statement "if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }" if (parenthesized_expression "(uVar15 < 3)" ( (binary_expression "uVar15 < 3" identifier < number_literal) )) (compound_statement "{\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }" { (if_statement "if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (compound_statement "{\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }" { (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar15 = uVar15 - 3;" (assignment_expression "uVar15 = uVar15 - 3" identifier = (binary_expression "uVar15 - 3" identifier - number_literal)) ;) (expression_statement "*(uint *)(uVar2 + 0x6c) = uVar21;" (assignment_expression "*(uint *)(uVar2 + 0x6c) = uVar21" (pointer_expression "*(uint *)(uVar2 + 0x6c)" * (cast_expression "(uint *)(uVar2 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x6c)" ( (binary_expression "uVar2 + 0x6c" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar17 = local_64 >> 3;" (assignment_expression "uVar17 = local_64 >> 3" identifier = (binary_expression "local_64 >> 3" identifier >> number_literal)) ;) (expression_statement "*(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;" (assignment_expression "*(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7" (pointer_expression "*(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2)" * (cast_expression "(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2)" ( (binary_expression "uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2" (binary_expression "uVar2 + 0x74" identifier + number_literal) + (binary_expression "(uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2" (binary_expression "(uint)*(ushort *)(&UNK_000221be + uVar21 * 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(&UNK_000221be + uVar21 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_000221be + uVar21 * 2)" ( (binary_expression "&UNK_000221be + uVar21 * 2" (pointer_expression "&UNK_000221be" & identifier) + (binary_expression "uVar21 * 2" identifier * number_literal)) )))) * number_literal)) )))) = (binary_expression "(ushort)local_64 & 7" (cast_expression "(ushort)local_64" ( (type_descriptor "ushort" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "local_64 = uVar17;" (assignment_expression "local_64 = uVar17" identifier = identifier) ;) (expression_statement "uVar17 = uVar21 + 1;" (assignment_expression "uVar17 = uVar21 + 1" identifier = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar14 + 1 != uVar21 + 1)" ( (binary_expression "uVar14 + 1 != uVar21 + 1" (binary_expression "uVar14 + 1" identifier + number_literal) != (binary_expression "uVar21 + 1" identifier + number_literal)) )) ;) (labeled_statement "code_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }" statement_identifier : (if_statement "if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }" if (parenthesized_expression "(uVar21 < 0x13)" ( (binary_expression "uVar21 < 0x13" identifier < number_literal) )) (compound_statement "{\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }" { (expression_statement "puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);" (assignment_expression "puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2)" identifier = (cast_expression "(ushort *)(&UNK_000221c0 + uVar21 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_000221c0 + uVar21 * 2)" ( (binary_expression "&UNK_000221c0 + uVar21 * 2" (pointer_expression "&UNK_000221c0" & identifier) + (binary_expression "uVar21 * 2" identifier * number_literal)) )))) ;) (do_statement "do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);" do (compound_statement "{\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              }" { (expression_statement "uVar19 = *puVar11;" (assignment_expression "uVar19 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;" (assignment_expression "*(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0" (pointer_expression "*(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2)" * (cast_expression "(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x74 + (uint)uVar19 * 2)" ( (binary_expression "uVar2 + 0x74 + (uint)uVar19 * 2" (binary_expression "uVar2 + 0x74" identifier + number_literal) + (binary_expression "(uint)uVar19 * 2" (cast_expression "(uint)uVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) = number_literal) ;) }) while (parenthesized_expression "(puVar11 != (ushort *)&UNK_000221e6)" ( (binary_expression "puVar11 != (ushort *)&UNK_000221e6" identifier != (cast_expression "(ushort *)&UNK_000221e6" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&UNK_000221e6" & identifier))) )) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x6c) = 0x13;" (assignment_expression "*(undefined4 *)(uVar2 + 0x6c) = 0x13" (pointer_expression "*(undefined4 *)(uVar2 + 0x6c)" * (cast_expression "(undefined4 *)(uVar2 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x6c)" ( (binary_expression "uVar2 + 0x6c" identifier + number_literal) )))) = number_literal) ;) }))) (expression_statement "*(undefined4 *)(uVar2 + 0x58) = 7;" (assignment_expression "*(undefined4 *)(uVar2 + 0x58) = 7" (pointer_expression "*(undefined4 *)(uVar2 + 0x58)" * (cast_expression "(undefined4 *)(uVar2 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x58)" ( (binary_expression "uVar2 + 0x58" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(uVar2 + 0x70) = uVar2 + 0x534;" (assignment_expression "*(uint *)(uVar2 + 0x70) = uVar2 + 0x534" (pointer_expression "*(uint *)(uVar2 + 0x70)" * (cast_expression "(uint *)(uVar2 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x70)" ( (binary_expression "uVar2 + 0x70" identifier + number_literal) )))) = (binary_expression "uVar2 + 0x534" identifier + number_literal)) ;) (expression_statement "*(uint *)(uVar2 + 0x50) = uVar2 + 0x534;" (assignment_expression "*(uint *)(uVar2 + 0x50) = uVar2 + 0x534" (pointer_expression "*(uint *)(uVar2 + 0x50)" * (cast_expression "(uint *)(uVar2 + 0x50)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x50)" ( (binary_expression "uVar2 + 0x50" identifier + number_literal) )))) = (binary_expression "uVar2 + 0x534" identifier + number_literal)) ;) (expression_statement "iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);" (assignment_expression "iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4)" identifier = (call_expression "FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4)" identifier (argument_list "(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4)" ( number_literal , (binary_expression "uVar2 + 0x74" identifier + number_literal) , number_literal , (binary_expression "uVar2 + 0x70" identifier + number_literal) , (binary_expression "uVar2 + 0x58" identifier + number_literal) , (binary_expression "uVar2 + 0x2f4" identifier + number_literal) )))) ;) (if_statement "if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }" { (expression_statement "uStack_48 = 0;" (assignment_expression "uStack_48 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x6c) = 0;" (assignment_expression "*(undefined4 *)(uVar2 + 0x6c) = 0" (pointer_expression "*(undefined4 *)(uVar2 + 0x6c)" * (cast_expression "(undefined4 *)(uVar2 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x6c)" ( (binary_expression "uVar2 + 0x6c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f46;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f46" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar21 = extraout_ECX_01;" (assignment_expression "uVar21 = extraout_ECX_01" identifier = identifier) ;) (labeled_statement "LAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);" statement_identifier : (expression_statement "iVar5 = *(int *)(uVar2 + 100);" (assignment_expression "iVar5 = *(int *)(uVar2 + 100)" identifier = (pointer_expression "*(int *)(uVar2 + 100)" * (cast_expression "(int *)(uVar2 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 100)" ( (binary_expression "uVar2 + 100" identifier + number_literal) ))))) ;)) (expression_statement "uVar14 = iVar5 + *(int *)(uVar2 + 0x68);" (assignment_expression "uVar14 = iVar5 + *(int *)(uVar2 + 0x68)" identifier = (binary_expression "iVar5 + *(int *)(uVar2 + 0x68)" identifier + (pointer_expression "*(int *)(uVar2 + 0x68)" * (cast_expression "(int *)(uVar2 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x68)" ( (binary_expression "uVar2 + 0x68" identifier + number_literal) )))))) ;) (while_statement "while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }" while (parenthesized_expression "(uStack_48 < uVar14)" ( (binary_expression "uStack_48 < uVar14" identifier < identifier) )) (compound_statement "{\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }" { (expression_statement "uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));" (assignment_expression "uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f))" identifier = (unary_expression "~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f))" ( (binary_expression "-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f)" number_literal << (parenthesized_expression "((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f)" ( (binary_expression "(byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f" (binary_expression "(byte)*(undefined4 *)(uVar2 + 0x58)" (parenthesized_expression "(byte)" ( identifier )) * (cast_expression "(undefined4 *)(uVar2 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x58)" ( (binary_expression "uVar2 + 0x58" identifier + number_literal) )))) & number_literal) ))) )))) ;) (expression_statement "iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;" (assignment_expression "iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4" identifier = (binary_expression "*(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4" (pointer_expression "*(int *)(uVar2 + 0x50)" * (cast_expression "(int *)(uVar2 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x50)" ( (binary_expression "uVar2 + 0x50" identifier + number_literal) )))) + (binary_expression "(uVar17 & local_64) * 4" (parenthesized_expression "(uVar17 & local_64)" ( (binary_expression "uVar17 & local_64" identifier & identifier) )) * number_literal))) ;) (expression_statement "uVar21 = (uint)*(byte *)(iVar7 + 1);" (assignment_expression "uVar21 = (uint)*(byte *)(iVar7 + 1)" identifier = (binary_expression "(uint)*(byte *)(iVar7 + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar7 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 1)" ( (binary_expression "iVar7 + 1" identifier + number_literal) ))))) ;) (expression_statement "uVar19 = *(ushort *)(iVar7 + 2);" (assignment_expression "uVar19 = *(ushort *)(iVar7 + 2)" identifier = (pointer_expression "*(ushort *)(iVar7 + 2)" * (cast_expression "(ushort *)(iVar7 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 2)" ( (binary_expression "iVar7 + 2" identifier + number_literal) ))))) ;) (if_statement "if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }" if (parenthesized_expression "(uVar15 < uVar21)" ( (binary_expression "uVar15 < uVar21" identifier < identifier) )) (compound_statement "{\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }" { (if_statement "if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }" if (parenthesized_expression "(local_6c != 0)" ( (binary_expression "local_6c != 0" identifier != number_literal) )) (compound_statement "{\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }" { (while_statement "while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }" { (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;" (assignment_expression "iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4" identifier = (binary_expression "*(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4" (pointer_expression "*(int *)(uVar2 + 0x50)" * (cast_expression "(int *)(uVar2 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x50)" ( (binary_expression "uVar2 + 0x50" identifier + number_literal) )))) + (binary_expression "(uVar17 & local_64) * 4" (parenthesized_expression "(uVar17 & local_64)" ( (binary_expression "uVar17 & local_64" identifier & identifier) )) * number_literal))) ;) (expression_statement "uVar21 = (uint)*(byte *)(iVar7 + 1);" (assignment_expression "uVar21 = (uint)*(byte *)(iVar7 + 1)" identifier = (binary_expression "(uint)*(byte *)(iVar7 + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar7 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 1)" ( (binary_expression "iVar7 + 1" identifier + number_literal) ))))) ;) (expression_statement "uVar19 = *(ushort *)(iVar7 + 2);" (assignment_expression "uVar19 = *(ushort *)(iVar7 + 2)" identifier = (pointer_expression "*(ushort *)(iVar7 + 2)" * (cast_expression "(ushort *)(iVar7 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 2)" ( (binary_expression "iVar7 + 2" identifier + number_literal) ))))) ;) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" identifier = identifier) ;) (if_statement "if (uVar21 <= uVar15) break;" if (parenthesized_expression "(uVar21 <= uVar15)" ( (binary_expression "uVar21 <= uVar15" identifier <= identifier) )) (break_statement "break;" break ;)) (if_statement "if (local_6c == 0) goto LAB_00018d40;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00018d40;" goto statement_identifier ;)) })) (goto_statement "goto LAB_00018694;" goto statement_identifier ;) })) (labeled_statement "LAB_000192ef:\n                  uVar21 = 0;" statement_identifier : (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;)) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (labeled_statement "LAB_00018694:\n                bVar12 = (byte)uVar21;" statement_identifier : (expression_statement "bVar12 = (byte)uVar21;" (assignment_expression "bVar12 = (byte)uVar21" identifier = (cast_expression "(byte)uVar21" ( (type_descriptor "byte" type_identifier) ) identifier)) ;)) (if_statement "if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }" if (parenthesized_expression "(uVar19 < 0x10)" ( (binary_expression "uVar19 < 0x10" identifier < number_literal) )) (compound_statement "{\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }" { (expression_statement "local_64 = local_64 >> (bVar12 & 0x1f);" (assignment_expression "local_64 = local_64 >> (bVar12 & 0x1f)" identifier = (binary_expression "local_64 >> (bVar12 & 0x1f)" identifier >> (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar15 = uVar15 - uVar21;" (assignment_expression "uVar15 = uVar15 - uVar21" identifier = (binary_expression "uVar15 - uVar21" identifier - identifier)) ;) (expression_statement "*(uint *)(uVar2 + 0x6c) = uStack_48 + 1;" (assignment_expression "*(uint *)(uVar2 + 0x6c) = uStack_48 + 1" (pointer_expression "*(uint *)(uVar2 + 0x6c)" * (cast_expression "(uint *)(uVar2 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x6c)" ( (binary_expression "uVar2 + 0x6c" identifier + number_literal) )))) = (binary_expression "uStack_48 + 1" identifier + number_literal)) ;) (expression_statement "*(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;" (assignment_expression "*(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19" (pointer_expression "*(ushort *)(uVar2 + 0x74 + uStack_48 * 2)" * (cast_expression "(ushort *)(uVar2 + 0x74 + uStack_48 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x74 + uStack_48 * 2)" ( (binary_expression "uVar2 + 0x74 + uStack_48 * 2" (binary_expression "uVar2 + 0x74" identifier + number_literal) + (binary_expression "uStack_48 * 2" identifier * number_literal)) )))) = identifier) ;) (expression_statement "uVar21 = uStack_48;" (assignment_expression "uVar21 = uStack_48" identifier = identifier) ;) (expression_statement "uStack_48 = uStack_48 + 1;" (assignment_expression "uStack_48 = uStack_48 + 1" identifier = (binary_expression "uStack_48 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }" else (compound_statement "{\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }" { (if_statement "if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }" if (parenthesized_expression "(uVar19 == 0x10)" ( (binary_expression "uVar19 == 0x10" identifier == number_literal) )) (compound_statement "{\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }" { (if_statement "if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }" if (parenthesized_expression "(uVar15 < uVar21 + 2)" ( (binary_expression "uVar15 < uVar21 + 2" identifier < (binary_expression "uVar21 + 2" identifier + number_literal)) )) (compound_statement "{\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }" { (if_statement "if (local_6c == 0) goto LAB_000192ef;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_000192ef;" goto statement_identifier ;)) (while_statement "while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }" { (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar13 = (byte)uVar15;" (assignment_expression "bVar13 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar13 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar13 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar13 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar13 & 0x1f)" ( (binary_expression "bVar13 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" identifier = identifier) ;) (if_statement "if (uVar21 + 2 <= uVar15) break;" if (parenthesized_expression "(uVar21 + 2 <= uVar15)" ( (binary_expression "uVar21 + 2 <= uVar15" (binary_expression "uVar21 + 2" identifier + number_literal) <= identifier) )) (break_statement "break;" break ;)) (if_statement "if (local_6c == 0) goto LAB_00018d40;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00018d40;" goto statement_identifier ;)) })) })) (expression_statement "uVar15 = uVar15 - uVar21;" (assignment_expression "uVar15 = uVar15 - uVar21" identifier = (binary_expression "uVar15 - uVar21" identifier - identifier)) ;) (expression_statement "local_64 = local_64 >> (bVar12 & 0x1f);" (assignment_expression "local_64 = local_64 >> (bVar12 & 0x1f)" identifier = (binary_expression "local_64 >> (bVar12 & 0x1f)" identifier >> (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) )))) ;) (if_statement "if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }" if (parenthesized_expression "(uStack_48 == 0)" ( (binary_expression "uStack_48 == 0" identifier == number_literal) )) (compound_statement "{\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }" { (expression_statement "param_1[6] = (int)"invalid bit length repeat";" (assignment_expression "param_1[6] = (int)"invalid bit length repeat"" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)"invalid bit length repeat"" ( (type_descriptor "int" primitive_type) ) (string_literal ""invalid bit length repeat"" " string_content "))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00018817;" goto statement_identifier ;) })) (expression_statement "uVar17 = local_64 & 3;" (assignment_expression "uVar17 = local_64 & 3" identifier = (binary_expression "local_64 & 3" identifier & number_literal)) ;) (expression_statement "local_64 = local_64 >> 2;" (assignment_expression "local_64 = local_64 >> 2" identifier = (binary_expression "local_64 >> 2" identifier >> number_literal)) ;) (expression_statement "uVar15 = uVar15 - 2;" (assignment_expression "uVar15 = uVar15 - 2" identifier = (binary_expression "uVar15 - 2" identifier - number_literal)) ;) (expression_statement "uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);" (assignment_expression "uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2)" identifier = (binary_expression "(uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(uVar2 + 0x72 + uStack_48 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x72 + uStack_48 * 2)" ( (binary_expression "uVar2 + 0x72 + uStack_48 * 2" (binary_expression "uVar2 + 0x72" identifier + number_literal) + (binary_expression "uStack_48 * 2" identifier * number_literal)) ))))) ;) (expression_statement "iVar7 = uVar17 + 3;" (assignment_expression "iVar7 = uVar17 + 3" identifier = (binary_expression "uVar17 + 3" identifier + number_literal)) ;) }) (else_clause "else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }" else (if_statement "if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }" if (parenthesized_expression "(uVar19 == 0x11)" ( (binary_expression "uVar19 == 0x11" identifier == number_literal) )) (compound_statement "{\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }" { (if_statement "if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }" if (parenthesized_expression "(uVar15 < uVar21 + 3)" ( (binary_expression "uVar15 < uVar21 + 3" identifier < (binary_expression "uVar21 + 3" identifier + number_literal)) )) (compound_statement "{\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }" { (if_statement "if (local_6c == 0) goto LAB_000192ef;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_000192ef;" goto statement_identifier ;)) (while_statement "while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }" { (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar13 = (byte)uVar15;" (assignment_expression "bVar13 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar13 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar13 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar13 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar13 & 0x1f)" ( (binary_expression "bVar13 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" identifier = identifier) ;) (if_statement "if (uVar21 + 3 <= uVar15) break;" if (parenthesized_expression "(uVar21 + 3 <= uVar15)" ( (binary_expression "uVar21 + 3 <= uVar15" (binary_expression "uVar21 + 3" identifier + number_literal) <= identifier) )) (break_statement "break;" break ;)) (if_statement "if (local_6c == 0) goto LAB_00018d40;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00018d40;" goto statement_identifier ;)) })) })) (expression_statement "local_64 = local_64 >> (bVar12 & 0x1f);" (assignment_expression "local_64 = local_64 >> (bVar12 & 0x1f)" identifier = (binary_expression "local_64 >> (bVar12 & 0x1f)" identifier >> (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar15 = (uVar15 - uVar21) - 3;" (assignment_expression "uVar15 = (uVar15 - uVar21) - 3" identifier = (binary_expression "(uVar15 - uVar21) - 3" (parenthesized_expression "(uVar15 - uVar21)" ( (binary_expression "uVar15 - uVar21" identifier - identifier) )) - number_literal)) ;) (expression_statement "iVar7 = (local_64 & 7) + 3;" (assignment_expression "iVar7 = (local_64 & 7) + 3" identifier = (binary_expression "(local_64 & 7) + 3" (parenthesized_expression "(local_64 & 7)" ( (binary_expression "local_64 & 7" identifier & number_literal) )) + number_literal)) ;) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (expression_statement "local_64 = local_64 >> 3;" (assignment_expression "local_64 = local_64 >> 3" identifier = (binary_expression "local_64 >> 3" identifier >> number_literal)) ;) }) (else_clause "else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }" else (compound_statement "{\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }" { (if_statement "if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }" if (parenthesized_expression "(uVar15 < uVar21 + 7)" ( (binary_expression "uVar15 < uVar21 + 7" identifier < (binary_expression "uVar21 + 7" identifier + number_literal)) )) (compound_statement "{\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }" { (if_statement "if (local_6c == 0) goto LAB_000192ef;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_000192ef;" goto statement_identifier ;)) (while_statement "while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }" { (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar13 = (byte)uVar15;" (assignment_expression "bVar13 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar13 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar13 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar13 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar13 & 0x1f)" ( (binary_expression "bVar13 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" identifier = identifier) ;) (if_statement "if (uVar21 + 7 <= uVar15) break;" if (parenthesized_expression "(uVar21 + 7 <= uVar15)" ( (binary_expression "uVar21 + 7 <= uVar15" (binary_expression "uVar21 + 7" identifier + number_literal) <= identifier) )) (break_statement "break;" break ;)) (if_statement "if (local_6c == 0) goto LAB_00018d40;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00018d40;" goto statement_identifier ;)) })) })) (expression_statement "local_64 = local_64 >> (bVar12 & 0x1f);" (assignment_expression "local_64 = local_64 >> (bVar12 & 0x1f)" identifier = (binary_expression "local_64 >> (bVar12 & 0x1f)" identifier >> (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar15 = (uVar15 - uVar21) - 7;" (assignment_expression "uVar15 = (uVar15 - uVar21) - 7" identifier = (binary_expression "(uVar15 - uVar21) - 7" (parenthesized_expression "(uVar15 - uVar21)" ( (binary_expression "uVar15 - uVar21" identifier - identifier) )) - number_literal)) ;) (expression_statement "iVar7 = (local_64 & 0x7f) + 0xb;" (assignment_expression "iVar7 = (local_64 & 0x7f) + 0xb" identifier = (binary_expression "(local_64 & 0x7f) + 0xb" (parenthesized_expression "(local_64 & 0x7f)" ( (binary_expression "local_64 & 0x7f" identifier & number_literal) )) + number_literal)) ;) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (expression_statement "local_64 = local_64 >> 7;" (assignment_expression "local_64 = local_64 >> 7" identifier = (binary_expression "local_64 >> 7" identifier >> number_literal)) ;) }))))) (expression_statement "uVar17 = iVar7 + uStack_48;" (assignment_expression "uVar17 = iVar7 + uStack_48" identifier = (binary_expression "iVar7 + uStack_48" identifier + identifier)) ;) (if_statement "if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }" if (parenthesized_expression "(uVar14 < uVar17)" ( (binary_expression "uVar14 < uVar17" identifier < identifier) )) (compound_statement "{\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }" { (expression_statement "param_1[6] = (int)"invalid bit length repeat";" (assignment_expression "param_1[6] = (int)"invalid bit length repeat"" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)"invalid bit length repeat"" ( (type_descriptor "int" primitive_type) ) (string_literal ""invalid bit length repeat"" " string_content "))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00018817;" goto statement_identifier ;) })) (expression_statement "puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);" (assignment_expression "puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2)" identifier = (cast_expression "(undefined2 *)(uVar2 + 0x74 + uStack_48 * 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x74 + uStack_48 * 2)" ( (binary_expression "uVar2 + 0x74 + uStack_48 * 2" (binary_expression "uVar2 + 0x74" identifier + number_literal) + (binary_expression "uStack_48 * 2" identifier * number_literal)) )))) ;) (do_statement "do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));" do (compound_statement "{\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  }" { (expression_statement "*puVar16 = (short)uVar21;" (assignment_expression "*puVar16 = (short)uVar21" (pointer_expression "*puVar16" * identifier) = (cast_expression "(short)uVar21" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2))" ( (binary_expression "puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2)" identifier != (cast_expression "(undefined2 *)(uVar2 + 0x74 + uVar17 * 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x74 + uVar17 * 2)" ( (binary_expression "uVar2 + 0x74 + uVar17 * 2" (binary_expression "uVar2 + 0x74" identifier + number_literal) + (binary_expression "uVar17 * 2" identifier * number_literal)) )))) )) ;) (expression_statement "*(uint *)(uVar2 + 0x6c) = uVar17;" (assignment_expression "*(uint *)(uVar2 + 0x6c) = uVar17" (pointer_expression "*(uint *)(uVar2 + 0x6c)" * (cast_expression "(uint *)(uVar2 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x6c)" ( (binary_expression "uVar2 + 0x6c" identifier + number_literal) )))) = identifier) ;) (expression_statement "uStack_48 = uVar17;" (assignment_expression "uStack_48 = uVar17" identifier = identifier) ;) }))) })) (if_statement "if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;" if (parenthesized_expression "(*(int *)(uVar2 + 4) == 0x3f51)" ( (binary_expression "*(int *)(uVar2 + 4) == 0x3f51" (pointer_expression "*(int *)(uVar2 + 4)" * (cast_expression "(int *)(uVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_00018817;" goto statement_identifier ;)) (if_statement "if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }" if (parenthesized_expression "(*(short *)(uVar2 + 0x274) != 0)" ( (binary_expression "*(short *)(uVar2 + 0x274) != 0" (pointer_expression "*(short *)(uVar2 + 0x274)" * (cast_expression "(short *)(uVar2 + 0x274)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x274)" ( (binary_expression "uVar2 + 0x274" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }" { (expression_statement "*(undefined4 *)(uVar2 + 0x58) = 9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x58) = 9" (pointer_expression "*(undefined4 *)(uVar2 + 0x58)" * (cast_expression "(undefined4 *)(uVar2 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x58)" ( (binary_expression "uVar2 + 0x58" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(uVar2 + 0x70) = uVar2 + 0x534;" (assignment_expression "*(uint *)(uVar2 + 0x70) = uVar2 + 0x534" (pointer_expression "*(uint *)(uVar2 + 0x70)" * (cast_expression "(uint *)(uVar2 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x70)" ( (binary_expression "uVar2 + 0x70" identifier + number_literal) )))) = (binary_expression "uVar2 + 0x534" identifier + number_literal)) ;) (expression_statement "*(uint *)(uVar2 + 0x50) = uVar2 + 0x534;" (assignment_expression "*(uint *)(uVar2 + 0x50) = uVar2 + 0x534" (pointer_expression "*(uint *)(uVar2 + 0x50)" * (cast_expression "(uint *)(uVar2 + 0x50)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x50)" ( (binary_expression "uVar2 + 0x50" identifier + number_literal) )))) = (binary_expression "uVar2 + 0x534" identifier + number_literal)) ;) (expression_statement "iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);" (assignment_expression "iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21)" identifier = (call_expression "FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21)" identifier (argument_list "(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21)" ( number_literal , (binary_expression "uVar2 + 0x74" identifier + number_literal) , identifier , (binary_expression "uVar2 + 0x70" identifier + number_literal) , (binary_expression "uVar2 + 0x58" identifier + number_literal) , (binary_expression "uVar2 + 0x2f4" identifier + number_literal) , identifier , identifier )))) ;) (if_statement "if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }" { (expression_statement "uVar9 = *(undefined4 *)(uVar2 + 0x70);" (assignment_expression "uVar9 = *(undefined4 *)(uVar2 + 0x70)" identifier = (pointer_expression "*(undefined4 *)(uVar2 + 0x70)" * (cast_expression "(undefined4 *)(uVar2 + 0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x70)" ( (binary_expression "uVar2 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x5c) = 6;" (assignment_expression "*(undefined4 *)(uVar2 + 0x5c) = 6" (pointer_expression "*(undefined4 *)(uVar2 + 0x5c)" * (cast_expression "(undefined4 *)(uVar2 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x5c)" ( (binary_expression "uVar2 + 0x5c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x54) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x54) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x54)" * (cast_expression "(undefined4 *)(uVar2 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x54)" ( (binary_expression "uVar2 + 0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);" (assignment_expression "iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9)" identifier = (call_expression "FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9)" identifier (argument_list "(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9)" ( number_literal , (binary_expression "uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2" (binary_expression "uVar2 + 0x74" identifier + number_literal) + (binary_expression "*(int *)(uVar2 + 100) * 2" (pointer_expression "*(int *)(uVar2 + 100)" * (cast_expression "(int *)(uVar2 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 100)" ( (binary_expression "uVar2 + 100" identifier + number_literal) )))) * number_literal)) , (pointer_expression "*(undefined4 *)(uVar2 + 0x68)" * (cast_expression "(undefined4 *)(uVar2 + 0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x68)" ( (binary_expression "uVar2 + 0x68" identifier + number_literal) )))) , (binary_expression "uVar2 + 0x70" identifier + number_literal) , (binary_expression "uVar2 + 0x5c" identifier + number_literal) , (binary_expression "uVar2 + 0x2f4" identifier + number_literal) , identifier , identifier )))) ;) (if_statement "if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }" { (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f47;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f47" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }" if (parenthesized_expression "(param_2 != 6)" ( (binary_expression "param_2 != 6" identifier != number_literal) )) (compound_statement "{\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }" { (labeled_statement "LAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );" statement_identifier : (do_statement "do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );" do (compound_statement "{\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      }" { (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f48;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f48" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "LAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }" statement_identifier : (if_statement "if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }" if (parenthesized_expression "((5 < local_6c) && (0x101 < local_5c))" ( (binary_expression "(5 < local_6c) && (0x101 < local_5c)" (parenthesized_expression "(5 < local_6c)" ( (binary_expression "5 < local_6c" number_literal < identifier) )) && (parenthesized_expression "(0x101 < local_5c)" ( (binary_expression "0x101 < local_5c" number_literal < identifier) ))) )) (compound_statement "{\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }" { (expression_statement "param_1[3] = (int)__dest;" (assignment_expression "param_1[3] = (int)__dest" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[4] = local_5c;" (assignment_expression "param_1[4] = local_5c" (subscript_expression "param_1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[1] = local_6c;" (assignment_expression "param_1[1] = local_6c" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_1 = (int)local_60;" (assignment_expression "*param_1 = (int)local_60" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(uint *)(uVar2 + 0x40) = uVar15;" (assignment_expression "*(uint *)(uVar2 + 0x40) = uVar15" (pointer_expression "*(uint *)(uVar2 + 0x40)" * (cast_expression "(uint *)(uVar2 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x40)" ( (binary_expression "uVar2 + 0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(uVar2 + 0x3c) = local_64;" (assignment_expression "*(uint *)(uVar2 + 0x3c) = local_64" (pointer_expression "*(uint *)(uVar2 + 0x3c)" * (cast_expression "(uint *)(uVar2 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x3c)" ( (binary_expression "uVar2 + 0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_00016d10(param_1,local_50);" (call_expression "FUN_00016d10(param_1,local_50)" identifier (argument_list "(param_1,local_50)" ( identifier , identifier ))) ;) (expression_statement "__dest = (undefined1 *)param_1[3];" (assignment_expression "__dest = (undefined1 *)param_1[3]" identifier = (cast_expression "(undefined1 *)param_1[3]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ]))) ;) (expression_statement "local_5c = param_1[4];" (assignment_expression "local_5c = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "uVar15 = *(uint *)(uVar2 + 0x40);" (assignment_expression "uVar15 = *(uint *)(uVar2 + 0x40)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x40)" * (cast_expression "(uint *)(uVar2 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x40)" ( (binary_expression "uVar2 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "local_60 = (byte *)*param_1;" (assignment_expression "local_60 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "local_6c = param_1[1];" (assignment_expression "local_6c = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "local_64 = *(uint *)(uVar2 + 0x3c);" (assignment_expression "local_64 = *(uint *)(uVar2 + 0x3c)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x3c)" * (cast_expression "(uint *)(uVar2 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x3c)" ( (binary_expression "uVar2 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(uVar2 + 4);" (assignment_expression "iVar5 = *(int *)(uVar2 + 4)" identifier = (pointer_expression "*(int *)(uVar2 + 4)" * (cast_expression "(int *)(uVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar21 = extraout_ECX;" (assignment_expression "uVar21 = extraout_ECX" identifier = identifier) ;) (if_statement "if (iVar5 != 0x3f3f) goto LAB_000178c9;" if (parenthesized_expression "(iVar5 != 0x3f3f)" ( (binary_expression "iVar5 != 0x3f3f" identifier != number_literal) )) (goto_statement "goto LAB_000178c9;" goto statement_identifier ;)) (expression_statement "*(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff" (pointer_expression "*(undefined4 *)(uVar2 + 0x1bc8)" * (cast_expression "(undefined4 *)(uVar2 + 0x1bc8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00017f13;" goto statement_identifier ;) }))) (expression_statement "iVar5 = *(int *)(uVar2 + 0x50);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x50)" identifier = (pointer_expression "*(int *)(uVar2 + 0x50)" * (cast_expression "(int *)(uVar2 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x50)" ( (binary_expression "uVar2 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x1bc8) = 0;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1bc8) = 0" (pointer_expression "*(undefined4 *)(uVar2 + 0x1bc8)" * (cast_expression "(undefined4 *)(uVar2 + 0x1bc8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));" (assignment_expression "uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f))" identifier = (unary_expression "~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f))" ( (binary_expression "-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f)" number_literal << (parenthesized_expression "((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f)" ( (binary_expression "(byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f" (binary_expression "(byte)*(undefined4 *)(uVar2 + 0x58)" (parenthesized_expression "(byte)" ( identifier )) * (cast_expression "(undefined4 *)(uVar2 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x58)" ( (binary_expression "uVar2 + 0x58" identifier + number_literal) )))) & number_literal) ))) )))) ;) (expression_statement "pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);" (assignment_expression "pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4)" identifier = (cast_expression "(byte *)(iVar5 + (uVar17 & local_64) * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uVar17 & local_64) * 4)" ( (binary_expression "iVar5 + (uVar17 & local_64) * 4" identifier + (binary_expression "(uVar17 & local_64) * 4" (parenthesized_expression "(uVar17 & local_64)" ( (binary_expression "uVar17 & local_64" identifier & identifier) )) * number_literal)) )))) ;) (expression_statement "bVar12 = pbVar20[1];" (assignment_expression "bVar12 = pbVar20[1]" identifier = (subscript_expression "pbVar20[1]" identifier [ number_literal ])) ;) (expression_statement "uVar14 = (uint)bVar12;" (assignment_expression "uVar14 = (uint)bVar12" identifier = (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar13 = *pbVar20;" (assignment_expression "bVar13 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) (expression_statement "uVar19 = *(ushort *)(pbVar20 + 2);" (assignment_expression "uVar19 = *(ushort *)(pbVar20 + 2)" identifier = (pointer_expression "*(ushort *)(pbVar20 + 2)" * (cast_expression "(ushort *)(pbVar20 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar20 + 2)" ( (binary_expression "pbVar20 + 2" identifier + number_literal) ))))) ;) (expression_statement "uVar21 = uVar15;" (assignment_expression "uVar21 = uVar15" identifier = identifier) ;) (if_statement "if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }" if (parenthesized_expression "(uVar15 < uVar14)" ( (binary_expression "uVar15 < uVar14" identifier < identifier) )) (compound_statement "{\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }" { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (while_statement "while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }" { (expression_statement "pbVar24 = local_60 + 1;" (assignment_expression "pbVar24 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);" (assignment_expression "pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4)" identifier = (cast_expression "(byte *)(iVar5 + (uVar17 & local_64) * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uVar17 & local_64) * 4)" ( (binary_expression "iVar5 + (uVar17 & local_64) * 4" identifier + (binary_expression "(uVar17 & local_64) * 4" (parenthesized_expression "(uVar17 & local_64)" ( (binary_expression "uVar17 & local_64" identifier & identifier) )) * number_literal)) )))) ;) (expression_statement "bVar12 = pbVar20[1];" (assignment_expression "bVar12 = pbVar20[1]" identifier = (subscript_expression "pbVar20[1]" identifier [ number_literal ])) ;) (expression_statement "uVar14 = (uint)bVar12;" (assignment_expression "uVar14 = (uint)bVar12" identifier = (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar13 = *pbVar20;" (assignment_expression "bVar13 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) (expression_statement "uVar19 = *(ushort *)(pbVar20 + 2);" (assignment_expression "uVar19 = *(ushort *)(pbVar20 + 2)" identifier = (pointer_expression "*(ushort *)(pbVar20 + 2)" * (cast_expression "(ushort *)(pbVar20 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar20 + 2)" ( (binary_expression "pbVar20 + 2" identifier + number_literal) ))))) ;) (expression_statement "uVar21 = uVar15;" (assignment_expression "uVar21 = uVar15" identifier = identifier) ;) (expression_statement "local_60 = pbVar24;" (assignment_expression "local_60 = pbVar24" identifier = identifier) ;) (if_statement "if (uVar14 <= uVar15) break;" if (parenthesized_expression "(uVar14 <= uVar15)" ( (binary_expression "uVar14 <= uVar15" identifier <= identifier) )) (break_statement "break;" break ;)) (if_statement "if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (compound_statement "{\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }" { (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) })) })) (expression_statement "uVar17 = (uint)uVar19;" (assignment_expression "uVar17 = (uint)uVar19" identifier = (cast_expression "(uint)uVar19" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }" if (parenthesized_expression "(bVar13 == 0)" ( (binary_expression "bVar13 == 0" identifier == number_literal) )) (compound_statement "{\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }" { (expression_statement "local_64 = local_64 >> (bVar12 & 0x1f);" (assignment_expression "local_64 = local_64 >> (bVar12 & 0x1f)" identifier = (binary_expression "local_64 >> (bVar12 & 0x1f)" identifier >> (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar15 = uVar21 - uVar14;" (assignment_expression "uVar15 = uVar21 - uVar14" identifier = (binary_expression "uVar21 - uVar14" identifier - identifier)) ;) (expression_statement "*(uint *)(uVar2 + 0x1bc8) = uVar14;" (assignment_expression "*(uint *)(uVar2 + 0x1bc8) = uVar14" (pointer_expression "*(uint *)(uVar2 + 0x1bc8)" * (cast_expression "(uint *)(uVar2 + 0x1bc8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(uVar2 + 0x44) = uVar17;" (assignment_expression "*(uint *)(uVar2 + 0x44) = uVar17" (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;" statement_identifier : (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f4d;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f4d" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;)) (labeled_statement "LAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;" statement_identifier : (if_statement "if (local_5c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_5c == 0)" ( (binary_expression "local_5c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;))) (expression_statement "local_5c = local_5c - 1;" (assignment_expression "local_5c = local_5c - 1" identifier = (binary_expression "local_5c - 1" identifier - number_literal)) ;) (expression_statement "*__dest = (char)*(undefined4 *)(uVar2 + 0x44);" (assignment_expression "*__dest = (char)*(undefined4 *)(uVar2 + 0x44)" (pointer_expression "*__dest" * identifier) = (cast_expression "(char)*(undefined4 *)(uVar2 + 0x44)" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(undefined4 *)(uVar2 + 0x44)" * (cast_expression "(undefined4 *)(uVar2 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f48;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f48" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__dest = __dest + 1;" (assignment_expression "__dest = __dest + 1" identifier = (binary_expression "__dest + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00017b90;" goto statement_identifier ;) })) (expression_statement "bVar12 = (byte)uVar14;" (assignment_expression "bVar12 = (byte)uVar14" identifier = (cast_expression "(byte)uVar14" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }" if (parenthesized_expression "((bVar13 & 0xf0) == 0)" ( (binary_expression "(bVar13 & 0xf0) == 0" (parenthesized_expression "(bVar13 & 0xf0)" ( (binary_expression "bVar13 & 0xf0" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }" { (expression_statement "uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));" (assignment_expression "uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f))" identifier = (unary_expression "~(-1 << (bVar13 + bVar12 & 0x1f))" ~ (parenthesized_expression "(-1 << (bVar13 + bVar12 & 0x1f))" ( (binary_expression "-1 << (bVar13 + bVar12 & 0x1f)" number_literal << (parenthesized_expression "(bVar13 + bVar12 & 0x1f)" ( (binary_expression "bVar13 + bVar12 & 0x1f" (binary_expression "bVar13 + bVar12" identifier + identifier) & number_literal) ))) )))) ;) (expression_statement "pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);" (assignment_expression "pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4)" identifier = (cast_expression "(byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4)" ( (binary_expression "iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4" identifier + (binary_expression "(((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4" (parenthesized_expression "(((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17)" ( (binary_expression "((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17" (parenthesized_expression "((uVar18 & local_64) >> (bVar12 & 0x1f))" ( (binary_expression "(uVar18 & local_64) >> (bVar12 & 0x1f)" (parenthesized_expression "(uVar18 & local_64)" ( (binary_expression "uVar18 & local_64" identifier & identifier) )) >> (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )) + identifier) )) * number_literal)) )))) ;) (expression_statement "uVar19 = *(ushort *)(pbVar20 + 2);" (assignment_expression "uVar19 = *(ushort *)(pbVar20 + 2)" identifier = (pointer_expression "*(ushort *)(pbVar20 + 2)" * (cast_expression "(ushort *)(pbVar20 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar20 + 2)" ( (binary_expression "pbVar20 + 2" identifier + number_literal) ))))) ;) (expression_statement "bVar13 = *pbVar20;" (assignment_expression "bVar13 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) (expression_statement "uVar10 = (uint)pbVar20[1];" (assignment_expression "uVar10 = (uint)pbVar20[1]" identifier = (cast_expression "(uint)pbVar20[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar20[1]" identifier [ number_literal ]))) ;) (expression_statement "uStack_38 = uVar10 + uVar14;" (assignment_expression "uStack_38 = uVar10 + uVar14" identifier = (binary_expression "uVar10 + uVar14" identifier + identifier)) ;) (expression_statement "uVar15 = uVar21;" (assignment_expression "uVar15 = uVar21" identifier = identifier) ;) (if_statement "if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }" if (parenthesized_expression "(uVar21 < uStack_38)" ( (binary_expression "uVar21 < uStack_38" identifier < identifier) )) (compound_statement "{\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }" { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (while_statement "while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }" { (expression_statement "pbVar24 = local_60 + 1;" (assignment_expression "pbVar24 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "uVar15 = uVar21 + 8;" (assignment_expression "uVar15 = uVar21 + 8" identifier = (binary_expression "uVar21 + 8" identifier + number_literal)) ;) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << ((byte)uVar21 & 0x1f))" ( (binary_expression "(uint)*local_60 << ((byte)uVar21 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "((byte)uVar21 & 0x1f)" ( (binary_expression "(byte)uVar21 & 0x1f" (cast_expression "(byte)uVar21" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (expression_statement "pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);" (assignment_expression "pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4)" identifier = (cast_expression "(byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4)" ( (binary_expression "iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4" identifier + (binary_expression "(((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4" (parenthesized_expression "(((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17)" ( (binary_expression "((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17" (parenthesized_expression "((uVar18 & local_64) >> (bVar12 & 0x1f))" ( (binary_expression "(uVar18 & local_64) >> (bVar12 & 0x1f)" (parenthesized_expression "(uVar18 & local_64)" ( (binary_expression "uVar18 & local_64" identifier & identifier) )) >> (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )) + identifier) )) * number_literal)) )))) ;) (expression_statement "uVar19 = *(ushort *)(pbVar20 + 2);" (assignment_expression "uVar19 = *(ushort *)(pbVar20 + 2)" identifier = (pointer_expression "*(ushort *)(pbVar20 + 2)" * (cast_expression "(ushort *)(pbVar20 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar20 + 2)" ( (binary_expression "pbVar20 + 2" identifier + number_literal) ))))) ;) (expression_statement "bVar13 = *pbVar20;" (assignment_expression "bVar13 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) (expression_statement "uVar10 = (uint)pbVar20[1];" (assignment_expression "uVar10 = (uint)pbVar20[1]" identifier = (cast_expression "(uint)pbVar20[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar20[1]" identifier [ number_literal ]))) ;) (expression_statement "uStack_38 = uVar14 + uVar10;" (assignment_expression "uStack_38 = uVar14 + uVar10" identifier = (binary_expression "uVar14 + uVar10" identifier + identifier)) ;) (expression_statement "local_60 = pbVar24;" (assignment_expression "local_60 = pbVar24" identifier = identifier) ;) (if_statement "if (uStack_38 <= uVar15) break;" if (parenthesized_expression "(uStack_38 <= uVar15)" ( (binary_expression "uStack_38 <= uVar15" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar21 = uVar15;" (assignment_expression "uVar21 = uVar15" identifier = identifier) ;) (if_statement "if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (compound_statement "{\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }" { (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) })) })) (expression_statement "uStack_40 = (uint)uVar19;" (assignment_expression "uStack_40 = (uint)uVar19" identifier = (cast_expression "(uint)uVar19" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = (uVar15 - uVar14) - uVar10;" (assignment_expression "uVar15 = (uVar15 - uVar14) - uVar10" identifier = (binary_expression "(uVar15 - uVar14) - uVar10" (parenthesized_expression "(uVar15 - uVar14)" ( (binary_expression "uVar15 - uVar14" identifier - identifier) )) - identifier)) ;) (expression_statement "local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);" (assignment_expression "local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f)" identifier = (binary_expression "(local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f)" (parenthesized_expression "(local_64 >> (bVar12 & 0x1f))" ( (binary_expression "local_64 >> (bVar12 & 0x1f)" identifier >> (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )) >> (parenthesized_expression "((byte)uVar10 & 0x1f)" ( (binary_expression "(byte)uVar10 & 0x1f" (cast_expression "(byte)uVar10" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "*(uint *)(uVar2 + 0x1bc8) = uStack_38;" (assignment_expression "*(uint *)(uVar2 + 0x1bc8) = uStack_38" (pointer_expression "*(uint *)(uVar2 + 0x1bc8)" * (cast_expression "(uint *)(uVar2 + 0x1bc8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(uVar2 + 0x44) = uStack_40;" (assignment_expression "*(uint *)(uVar2 + 0x44) = uStack_40" (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = identifier) ;) (if_statement "if (bVar13 != 0) goto LAB_00018d16;" if (parenthesized_expression "(bVar13 != 0)" ( (binary_expression "bVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00018d16;" goto statement_identifier ;)) (goto_statement "goto LAB_000191a7;" goto statement_identifier ;) })) (expression_statement "local_64 = local_64 >> (bVar12 & 0x1f);" (assignment_expression "local_64 = local_64 >> (bVar12 & 0x1f)" identifier = (binary_expression "local_64 >> (bVar12 & 0x1f)" identifier >> (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar15 = uVar21 - uVar14;" (assignment_expression "uVar15 = uVar21 - uVar14" identifier = (binary_expression "uVar21 - uVar14" identifier - identifier)) ;) (expression_statement "*(uint *)(uVar2 + 0x1bc8) = uVar14;" (assignment_expression "*(uint *)(uVar2 + 0x1bc8) = uVar14" (pointer_expression "*(uint *)(uVar2 + 0x1bc8)" * (cast_expression "(uint *)(uVar2 + 0x1bc8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(uVar2 + 0x44) = uVar17;" (assignment_expression "*(uint *)(uVar2 + 0x44) = uVar17" (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;" statement_identifier : (if_statement "if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;" if (parenthesized_expression "((bVar13 & 0x20) != 0)" ( (binary_expression "(bVar13 & 0x20) != 0" (parenthesized_expression "(bVar13 & 0x20)" ( (binary_expression "bVar13 & 0x20" identifier & number_literal) )) != number_literal) )) (goto_statement "goto code_r0x00018d1f;" goto statement_identifier ;))) (if_statement "if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }" if (parenthesized_expression "((bVar13 & 0x40) != 0)" ( (binary_expression "(bVar13 & 0x40) != 0" (parenthesized_expression "(bVar13 & 0x40)" ( (binary_expression "bVar13 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }" { (expression_statement "pcVar6 = "invalid literal/length code";" (assignment_expression "pcVar6 = "invalid literal/length code"" identifier = (string_literal ""invalid literal/length code"" " string_content ")) ;) (goto_statement "goto LAB_000188eb;" goto statement_identifier ;) })) (expression_statement "uVar21 = bVar13 & 0xf;" (assignment_expression "uVar21 = bVar13 & 0xf" identifier = (binary_expression "bVar13 & 0xf" identifier & number_literal)) ;) (expression_statement "*(uint *)(uVar2 + 0x4c) = uVar21;" (assignment_expression "*(uint *)(uVar2 + 0x4c) = uVar21" (pointer_expression "*(uint *)(uVar2 + 0x4c)" * (cast_expression "(uint *)(uVar2 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x4c)" ( (binary_expression "uVar2 + 0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f49;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f49" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "LAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }" statement_identifier : (if_statement "if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }" if (parenthesized_expression "(uVar21 == 0)" ( (binary_expression "uVar21 == 0" identifier == number_literal) )) (compound_statement "{\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }" { (expression_statement "iVar5 = *(int *)(uVar2 + 0x44);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x44)" identifier = (pointer_expression "*(int *)(uVar2 + 0x44)" * (cast_expression "(int *)(uVar2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) ))))) ;) }) (else_clause "else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }" else (compound_statement "{\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }" { (if_statement "if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }" if (parenthesized_expression "(uVar15 < uVar21)" ( (binary_expression "uVar15 < uVar21" identifier < identifier) )) (compound_statement "{\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }" { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (while_statement "while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }" { (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" identifier = identifier) ;) (if_statement "if (uVar21 <= uVar15) break;" if (parenthesized_expression "(uVar21 <= uVar15)" ( (binary_expression "uVar21 <= uVar15" identifier <= identifier) )) (break_statement "break;" break ;)) (if_statement "if (local_6c == 0) goto LAB_000190a2;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_000190a2;" goto statement_identifier ;)) })) })) (expression_statement "uVar15 = uVar15 - uVar21;" (assignment_expression "uVar15 = uVar15 - uVar21" identifier = (binary_expression "uVar15 - uVar21" identifier - identifier)) ;) (expression_statement "*(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;" (assignment_expression "*(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21" (pointer_expression "*(int *)(uVar2 + 0x1bc8)" * (cast_expression "(int *)(uVar2 + 0x1bc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) )))) = (binary_expression "*(int *)(uVar2 + 0x1bc8) + uVar21" (pointer_expression "*(int *)(uVar2 + 0x1bc8)" * (cast_expression "(int *)(uVar2 + 0x1bc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) )))) + identifier)) ;) (expression_statement "iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);" (assignment_expression "iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44)" identifier = (binary_expression "(~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44)" (parenthesized_expression "(~(-1 << ((byte)uVar21 & 0x1f)) & local_64)" ( (binary_expression "~(-1 << ((byte)uVar21 & 0x1f)) & local_64" (unary_expression "~(-1 << ((byte)uVar21 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar21 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar21 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar21 & 0x1f)" ( (binary_expression "(byte)uVar21 & 0x1f" (cast_expression "(byte)uVar21" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier) )) + (pointer_expression "*(int *)(uVar2 + 0x44)" * (cast_expression "(int *)(uVar2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))))) ;) (expression_statement "local_64 = local_64 >> ((byte)uVar21 & 0x1f);" (assignment_expression "local_64 = local_64 >> ((byte)uVar21 & 0x1f)" identifier = (binary_expression "local_64 >> ((byte)uVar21 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar21 & 0x1f)" ( (binary_expression "(byte)uVar21 & 0x1f" (cast_expression "(byte)uVar21" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "*(int *)(uVar2 + 0x44) = iVar5;" (assignment_expression "*(int *)(uVar2 + 0x44) = iVar5" (pointer_expression "*(int *)(uVar2 + 0x44)" * (cast_expression "(int *)(uVar2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = identifier) ;) })))) (expression_statement "*(int *)(uVar2 + 0x1bcc) = iVar5;" (assignment_expression "*(int *)(uVar2 + 0x1bcc) = iVar5" (pointer_expression "*(int *)(uVar2 + 0x1bcc)" * (cast_expression "(int *)(uVar2 + 0x1bcc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bcc)" ( (binary_expression "uVar2 + 0x1bcc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f4a;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f4a" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "code_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);" statement_identifier : (expression_statement "iVar5 = *(int *)(uVar2 + 0x54);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x54)" identifier = (pointer_expression "*(int *)(uVar2 + 0x54)" * (cast_expression "(int *)(uVar2 + 0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x54)" ( (binary_expression "uVar2 + 0x54" identifier + number_literal) ))))) ;)) (expression_statement "uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));" (assignment_expression "uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f))" identifier = (unary_expression "~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f))" ( (binary_expression "-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f)" number_literal << (parenthesized_expression "((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f)" ( (binary_expression "(byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f" (binary_expression "(byte)*(undefined4 *)(uVar2 + 0x5c)" (parenthesized_expression "(byte)" ( identifier )) * (cast_expression "(undefined4 *)(uVar2 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x5c)" ( (binary_expression "uVar2 + 0x5c" identifier + number_literal) )))) & number_literal) ))) )))) ;) (expression_statement "pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);" (assignment_expression "pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4)" identifier = (cast_expression "(byte *)(iVar5 + (local_64 & uVar17) * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (local_64 & uVar17) * 4)" ( (binary_expression "iVar5 + (local_64 & uVar17) * 4" identifier + (binary_expression "(local_64 & uVar17) * 4" (parenthesized_expression "(local_64 & uVar17)" ( (binary_expression "local_64 & uVar17" identifier & identifier) )) * number_literal)) )))) ;) (expression_statement "bVar12 = pbVar20[1];" (assignment_expression "bVar12 = pbVar20[1]" identifier = (subscript_expression "pbVar20[1]" identifier [ number_literal ])) ;) (expression_statement "bVar13 = *pbVar20;" (assignment_expression "bVar13 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) (expression_statement "uVar19 = *(ushort *)(pbVar20 + 2);" (assignment_expression "uVar19 = *(ushort *)(pbVar20 + 2)" identifier = (pointer_expression "*(ushort *)(pbVar20 + 2)" * (cast_expression "(ushort *)(pbVar20 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar20 + 2)" ( (binary_expression "pbVar20 + 2" identifier + number_literal) ))))) ;) (expression_statement "uVar14 = (uint)bVar12;" (assignment_expression "uVar14 = (uint)bVar12" identifier = (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar21 = uVar15;" (assignment_expression "uVar21 = uVar15" identifier = identifier) ;) (if_statement "if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }" if (parenthesized_expression "(uVar15 < uVar14)" ( (binary_expression "uVar15 < uVar14" identifier < identifier) )) (compound_statement "{\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }" { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (while_statement "while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }" { (expression_statement "pbVar24 = local_60 + 1;" (assignment_expression "pbVar24 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);" (assignment_expression "pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4)" identifier = (cast_expression "(byte *)(iVar5 + (uVar17 & local_64) * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uVar17 & local_64) * 4)" ( (binary_expression "iVar5 + (uVar17 & local_64) * 4" identifier + (binary_expression "(uVar17 & local_64) * 4" (parenthesized_expression "(uVar17 & local_64)" ( (binary_expression "uVar17 & local_64" identifier & identifier) )) * number_literal)) )))) ;) (expression_statement "bVar12 = pbVar20[1];" (assignment_expression "bVar12 = pbVar20[1]" identifier = (subscript_expression "pbVar20[1]" identifier [ number_literal ])) ;) (expression_statement "bVar13 = *pbVar20;" (assignment_expression "bVar13 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) (expression_statement "uVar19 = *(ushort *)(pbVar20 + 2);" (assignment_expression "uVar19 = *(ushort *)(pbVar20 + 2)" identifier = (pointer_expression "*(ushort *)(pbVar20 + 2)" * (cast_expression "(ushort *)(pbVar20 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar20 + 2)" ( (binary_expression "pbVar20 + 2" identifier + number_literal) ))))) ;) (expression_statement "uVar14 = (uint)bVar12;" (assignment_expression "uVar14 = (uint)bVar12" identifier = (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar21 = uVar15;" (assignment_expression "uVar21 = uVar15" identifier = identifier) ;) (expression_statement "local_60 = pbVar24;" (assignment_expression "local_60 = pbVar24" identifier = identifier) ;) (if_statement "if (uVar14 <= uVar15) break;" if (parenthesized_expression "(uVar14 <= uVar15)" ( (binary_expression "uVar14 <= uVar15" identifier <= identifier) )) (break_statement "break;" break ;)) (if_statement "if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (compound_statement "{\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }" { (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) })) })) (expression_statement "uStack_48 = (uint)uVar19;" (assignment_expression "uStack_48 = (uint)uVar19" identifier = (cast_expression "(uint)uVar19" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }" if (parenthesized_expression "((bVar13 & 0xf0) == 0)" ( (binary_expression "(bVar13 & 0xf0) == 0" (parenthesized_expression "(bVar13 & 0xf0)" ( (binary_expression "bVar13 & 0xf0" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }" { (expression_statement "bVar4 = (byte)uVar14;" (assignment_expression "bVar4 = (byte)uVar14" identifier = (cast_expression "(byte)uVar14" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));" (assignment_expression "uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f))" identifier = (unary_expression "~(-1 << (bVar13 + bVar4 & 0x1f))" ~ (parenthesized_expression "(-1 << (bVar13 + bVar4 & 0x1f))" ( (binary_expression "-1 << (bVar13 + bVar4 & 0x1f)" number_literal << (parenthesized_expression "(bVar13 + bVar4 & 0x1f)" ( (binary_expression "bVar13 + bVar4 & 0x1f" (binary_expression "bVar13 + bVar4" identifier + identifier) & number_literal) ))) )))) ;) (expression_statement "pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);" (assignment_expression "pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4)" identifier = (cast_expression "(byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4)" ( (binary_expression "iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4" identifier + (binary_expression "(((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4" (parenthesized_expression "(((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48)" ( (binary_expression "((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48" (parenthesized_expression "((uVar10 & local_64) >> (bVar12 & 0x1f))" ( (binary_expression "(uVar10 & local_64) >> (bVar12 & 0x1f)" (parenthesized_expression "(uVar10 & local_64)" ( (binary_expression "uVar10 & local_64" identifier & identifier) )) >> (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )) + identifier) )) * number_literal)) )))) ;) (expression_statement "uVar19 = *(ushort *)(pbVar20 + 2);" (assignment_expression "uVar19 = *(ushort *)(pbVar20 + 2)" identifier = (pointer_expression "*(ushort *)(pbVar20 + 2)" * (cast_expression "(ushort *)(pbVar20 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar20 + 2)" ( (binary_expression "pbVar20 + 2" identifier + number_literal) ))))) ;) (expression_statement "bVar13 = *pbVar20;" (assignment_expression "bVar13 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) (expression_statement "uVar17 = (uint)pbVar20[1];" (assignment_expression "uVar17 = (uint)pbVar20[1]" identifier = (cast_expression "(uint)pbVar20[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar20[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar15 = uVar21;" (assignment_expression "uVar15 = uVar21" identifier = identifier) ;) (if_statement "if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }" if (parenthesized_expression "(uVar21 < uVar17 + uVar14)" ( (binary_expression "uVar21 < uVar17 + uVar14" identifier < (binary_expression "uVar17 + uVar14" identifier + identifier)) )) (compound_statement "{\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }" { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (while_statement "while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }" { (expression_statement "pbVar24 = local_60 + 1;" (assignment_expression "pbVar24 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "uVar15 = uVar21 + 8;" (assignment_expression "uVar15 = uVar21 + 8" identifier = (binary_expression "uVar21 + 8" identifier + number_literal)) ;) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << ((byte)uVar21 & 0x1f))" ( (binary_expression "(uint)*local_60 << ((byte)uVar21 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "((byte)uVar21 & 0x1f)" ( (binary_expression "(byte)uVar21 & 0x1f" (cast_expression "(byte)uVar21" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (expression_statement "pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);" (assignment_expression "pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4)" identifier = (cast_expression "(byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4)" ( (binary_expression "iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4" identifier + (binary_expression "(((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4" (parenthesized_expression "(((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48)" ( (binary_expression "((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48" (parenthesized_expression "((uVar10 & local_64) >> (bVar4 & 0x1f))" ( (binary_expression "(uVar10 & local_64) >> (bVar4 & 0x1f)" (parenthesized_expression "(uVar10 & local_64)" ( (binary_expression "uVar10 & local_64" identifier & identifier) )) >> (parenthesized_expression "(bVar4 & 0x1f)" ( (binary_expression "bVar4 & 0x1f" identifier & number_literal) ))) )) + identifier) )) * number_literal)) )))) ;) (expression_statement "bVar13 = *pbVar20;" (assignment_expression "bVar13 = *pbVar20" identifier = (pointer_expression "*pbVar20" * identifier)) ;) (expression_statement "uVar19 = *(ushort *)(pbVar20 + 2);" (assignment_expression "uVar19 = *(ushort *)(pbVar20 + 2)" identifier = (pointer_expression "*(ushort *)(pbVar20 + 2)" * (cast_expression "(ushort *)(pbVar20 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar20 + 2)" ( (binary_expression "pbVar20 + 2" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = (uint)pbVar20[1];" (assignment_expression "uVar17 = (uint)pbVar20[1]" identifier = (cast_expression "(uint)pbVar20[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar20[1]" identifier [ number_literal ]))) ;) (expression_statement "local_60 = pbVar24;" (assignment_expression "local_60 = pbVar24" identifier = identifier) ;) (if_statement "if (uVar17 + uVar14 <= uVar15) break;" if (parenthesized_expression "(uVar17 + uVar14 <= uVar15)" ( (binary_expression "uVar17 + uVar14 <= uVar15" (binary_expression "uVar17 + uVar14" identifier + identifier) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar21 = uVar15;" (assignment_expression "uVar21 = uVar15" identifier = identifier) ;) (if_statement "if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (compound_statement "{\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }" { (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) })) })) (expression_statement "uStack_48 = (uint)uVar19;" (assignment_expression "uStack_48 = (uint)uVar19" identifier = (cast_expression "(uint)uVar19" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar21 = uVar15 - uVar14;" (assignment_expression "uVar21 = uVar15 - uVar14" identifier = (binary_expression "uVar15 - uVar14" identifier - identifier)) ;) (expression_statement "local_64 = local_64 >> (bVar4 & 0x1f);" (assignment_expression "local_64 = local_64 >> (bVar4 & 0x1f)" identifier = (binary_expression "local_64 >> (bVar4 & 0x1f)" identifier >> (parenthesized_expression "(bVar4 & 0x1f)" ( (binary_expression "bVar4 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);" (assignment_expression "iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8)" identifier = (binary_expression "uVar14 + *(int *)(uVar2 + 0x1bc8)" identifier + (pointer_expression "*(int *)(uVar2 + 0x1bc8)" * (cast_expression "(int *)(uVar2 + 0x1bc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) )))))) ;) }) (else_clause "else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }" else (compound_statement "{\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }" { (expression_statement "iVar5 = *(int *)(uVar2 + 0x1bc8);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x1bc8)" identifier = (pointer_expression "*(int *)(uVar2 + 0x1bc8)" * (cast_expression "(int *)(uVar2 + 0x1bc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = uVar14;" (assignment_expression "uVar17 = uVar14" identifier = identifier) ;) }))) (expression_statement "local_64 = local_64 >> ((byte)uVar17 & 0x1f);" (assignment_expression "local_64 = local_64 >> ((byte)uVar17 & 0x1f)" identifier = (binary_expression "local_64 >> ((byte)uVar17 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar17 & 0x1f)" ( (binary_expression "(byte)uVar17 & 0x1f" (cast_expression "(byte)uVar17" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar15 = uVar21 - uVar17;" (assignment_expression "uVar15 = uVar21 - uVar17" identifier = (binary_expression "uVar21 - uVar17" identifier - identifier)) ;) (expression_statement "*(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;" (assignment_expression "*(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5" (pointer_expression "*(uint *)(uVar2 + 0x1bc8)" * (cast_expression "(uint *)(uVar2 + 0x1bc8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) )))) = (binary_expression "uVar17 + iVar5" identifier + identifier)) ;) (if_statement "if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }" if (parenthesized_expression "((bVar13 & 0x40) != 0)" ( (binary_expression "(bVar13 & 0x40) != 0" (parenthesized_expression "(bVar13 & 0x40)" ( (binary_expression "bVar13 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }" { (expression_statement "param_1[6] = (int)"invalid distance code";" (assignment_expression "param_1[6] = (int)"invalid distance code"" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)"invalid distance code"" ( (type_descriptor "int" primitive_type) ) (string_literal ""invalid distance code"" " string_content "))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" identifier = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (expression_statement "uVar21 = bVar13 & 0xf;" (assignment_expression "uVar21 = bVar13 & 0xf" identifier = (binary_expression "bVar13 & 0xf" identifier & number_literal)) ;) (expression_statement "*(uint *)(uVar2 + 0x4c) = uVar21;" (assignment_expression "*(uint *)(uVar2 + 0x4c) = uVar21" (pointer_expression "*(uint *)(uVar2 + 0x4c)" * (cast_expression "(uint *)(uVar2 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x4c)" ( (binary_expression "uVar2 + 0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f4b;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f4b" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(uVar2 + 0x48) = uStack_48;" (assignment_expression "*(uint *)(uVar2 + 0x48) = uStack_48" (pointer_expression "*(uint *)(uVar2 + 0x48)" * (cast_expression "(uint *)(uVar2 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x48)" ( (binary_expression "uVar2 + 0x48" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }" statement_identifier : (if_statement "if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }" if (parenthesized_expression "(uVar21 != 0)" ( (binary_expression "uVar21 != 0" identifier != number_literal) )) (compound_statement "{\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }" { (if_statement "if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }" if (parenthesized_expression "(uVar15 < uVar21)" ( (binary_expression "uVar15 < uVar21" identifier < identifier) )) (compound_statement "{\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }" { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (while_statement "while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }" { (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" identifier = identifier) ;) (if_statement "if (uVar21 <= uVar15) break;" if (parenthesized_expression "(uVar21 <= uVar15)" ( (binary_expression "uVar21 <= uVar15" identifier <= identifier) )) (break_statement "break;" break ;)) (if_statement "if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (compound_statement "{\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }" { (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) })) })) (expression_statement "uVar15 = uVar15 - uVar21;" (assignment_expression "uVar15 = uVar15 - uVar21" identifier = (binary_expression "uVar15 - uVar21" identifier - identifier)) ;) (expression_statement "uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;" (assignment_expression "uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64" identifier = (binary_expression "~(-1 << ((byte)uVar21 & 0x1f)) & local_64" (unary_expression "~(-1 << ((byte)uVar21 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar21 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar21 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar21 & 0x1f)" ( (binary_expression "(byte)uVar21 & 0x1f" (cast_expression "(byte)uVar21" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & identifier)) ;) (expression_statement "local_64 = local_64 >> ((byte)uVar21 & 0x1f);" (assignment_expression "local_64 = local_64 >> ((byte)uVar21 & 0x1f)" identifier = (binary_expression "local_64 >> ((byte)uVar21 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar21 & 0x1f)" ( (binary_expression "(byte)uVar21 & 0x1f" (cast_expression "(byte)uVar21" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "*(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;" (assignment_expression "*(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14" (pointer_expression "*(int *)(uVar2 + 0x48)" * (cast_expression "(int *)(uVar2 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x48)" ( (binary_expression "uVar2 + 0x48" identifier + number_literal) )))) = (binary_expression "*(int *)(uVar2 + 0x48) + uVar14" (pointer_expression "*(int *)(uVar2 + 0x48)" * (cast_expression "(int *)(uVar2 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x48)" ( (binary_expression "uVar2 + 0x48" identifier + number_literal) )))) + identifier)) ;) (expression_statement "*(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;" (assignment_expression "*(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21" (pointer_expression "*(int *)(uVar2 + 0x1bc8)" * (cast_expression "(int *)(uVar2 + 0x1bc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) )))) = (binary_expression "*(int *)(uVar2 + 0x1bc8) + uVar21" (pointer_expression "*(int *)(uVar2 + 0x1bc8)" * (cast_expression "(int *)(uVar2 + 0x1bc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) )))) + identifier)) ;) }))) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f4c;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f4c" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "code_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;" statement_identifier : (if_statement "if (local_5c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_5c == 0)" ( (binary_expression "local_5c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;))) (expression_statement "uVar21 = *(uint *)(uVar2 + 0x48);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x48)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x48)" * (cast_expression "(uint *)(uVar2 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x48)" ( (binary_expression "uVar2 + 0x48" identifier + number_literal) ))))) ;) (if_statement "if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }" if (parenthesized_expression "(local_50 - local_5c < uVar21)" ( (binary_expression "local_50 - local_5c < uVar21" (binary_expression "local_50 - local_5c" identifier - identifier) < identifier) )) (compound_statement "{\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }" { (expression_statement "uVar21 = uVar21 - (local_50 - local_5c);" (assignment_expression "uVar21 = uVar21 - (local_50 - local_5c)" identifier = (binary_expression "uVar21 - (local_50 - local_5c)" identifier - (parenthesized_expression "(local_50 - local_5c)" ( (binary_expression "local_50 - local_5c" identifier - identifier) )))) ;) (if_statement "if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }" if (parenthesized_expression "((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))" ( (binary_expression "(*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0)" (parenthesized_expression "(*(uint *)(uVar2 + 0x30) < uVar21)" ( (binary_expression "*(uint *)(uVar2 + 0x30) < uVar21" (pointer_expression "*(uint *)(uVar2 + 0x30)" * (cast_expression "(uint *)(uVar2 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x30)" ( (binary_expression "uVar2 + 0x30" identifier + number_literal) )))) < identifier) )) && (parenthesized_expression "(*(int *)(uVar2 + 0x1bc4) != 0)" ( (binary_expression "*(int *)(uVar2 + 0x1bc4) != 0" (pointer_expression "*(int *)(uVar2 + 0x1bc4)" * (cast_expression "(int *)(uVar2 + 0x1bc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc4)" ( (binary_expression "uVar2 + 0x1bc4" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }" { (expression_statement "param_1[6] = (int)"invalid distance too far back";" (assignment_expression "param_1[6] = (int)"invalid distance too far back"" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)"invalid distance too far back"" ( (type_descriptor "int" primitive_type) ) (string_literal ""invalid distance too far back"" " string_content "))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" identifier = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (expression_statement "uVar14 = *(uint *)(uVar2 + 0x34);" (assignment_expression "uVar14 = *(uint *)(uVar2 + 0x34)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x34)" * (cast_expression "(uint *)(uVar2 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x34)" ( (binary_expression "uVar2 + 0x34" identifier + number_literal) ))))) ;) (if_statement "if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }" if (parenthesized_expression "(uVar14 < uVar21)" ( (binary_expression "uVar14 < uVar21" identifier < identifier) )) (compound_statement "{\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }" { (expression_statement "uVar21 = uVar21 - uVar14;" (assignment_expression "uVar21 = uVar21 - uVar14" identifier = (binary_expression "uVar21 - uVar14" identifier - identifier)) ;) (expression_statement "puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));" (assignment_expression "puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c))" identifier = (cast_expression "(undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c))" ( (binary_expression "(*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c)" (parenthesized_expression "(*(int *)(uVar2 + 0x38) - uVar21)" ( (binary_expression "*(int *)(uVar2 + 0x38) - uVar21" (pointer_expression "*(int *)(uVar2 + 0x38)" * (cast_expression "(int *)(uVar2 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x38)" ( (binary_expression "uVar2 + 0x38" identifier + number_literal) )))) - identifier) )) + (pointer_expression "*(int *)(uVar2 + 0x2c)" * (cast_expression "(int *)(uVar2 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x2c)" ( (binary_expression "uVar2 + 0x2c" identifier + number_literal) ))))) )))) ;) }) (else_clause "else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }" else (compound_statement "{\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }" { (expression_statement "puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));" (assignment_expression "puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21))" identifier = (cast_expression "(undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21))" ( (binary_expression "*(int *)(uVar2 + 0x38) + (uVar14 - uVar21)" (pointer_expression "*(int *)(uVar2 + 0x38)" * (cast_expression "(int *)(uVar2 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x38)" ( (binary_expression "uVar2 + 0x38" identifier + number_literal) )))) + (parenthesized_expression "(uVar14 - uVar21)" ( (binary_expression "uVar14 - uVar21" identifier - identifier) ))) )))) ;) }))) (expression_statement "uVar14 = *(uint *)(uVar2 + 0x44);" (assignment_expression "uVar14 = *(uint *)(uVar2 + 0x44)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) ))))) ;) (if_statement "if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }" if (parenthesized_expression "(uVar14 <= uVar21)" ( (binary_expression "uVar14 <= uVar21" identifier <= identifier) )) (compound_statement "{\n                            uVar21 = uVar14;\n                          }" { (expression_statement "uVar21 = uVar14;" (assignment_expression "uVar21 = uVar14" identifier = identifier) ;) })) }) (else_clause "else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }" else (compound_statement "{\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }" { (expression_statement "puVar22 = __dest + -uVar21;" (assignment_expression "puVar22 = __dest + -uVar21" identifier = (binary_expression "__dest + -uVar21" identifier + (unary_expression "-uVar21" - identifier))) ;) (expression_statement "uVar21 = *(uint *)(uVar2 + 0x44);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x44)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "uVar14 = uVar21;" (assignment_expression "uVar14 = uVar21" identifier = identifier) ;) }))) (if_statement "if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }" if (parenthesized_expression "(local_5c < uVar21)" ( (binary_expression "local_5c < uVar21" identifier < identifier) )) (compound_statement "{\n                          uVar21 = local_5c;\n                        }" { (expression_statement "uVar21 = local_5c;" (assignment_expression "uVar21 = local_5c" identifier = identifier) ;) })) (expression_statement "local_5c = local_5c - uVar21;" (assignment_expression "local_5c = local_5c - uVar21" identifier = (binary_expression "local_5c - uVar21" identifier - identifier)) ;) (expression_statement "puVar8 = __dest + uVar21;" (assignment_expression "puVar8 = __dest + uVar21" identifier = (binary_expression "__dest + uVar21" identifier + identifier)) ;) (expression_statement "*(uint *)(uVar2 + 0x44) = uVar14 - uVar21;" (assignment_expression "*(uint *)(uVar2 + 0x44) = uVar14 - uVar21" (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = (binary_expression "uVar14 - uVar21" identifier - identifier)) ;) (expression_statement "puVar23 = __dest;" (assignment_expression "puVar23 = __dest" identifier = identifier) ;) (do_statement "do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);" do (compound_statement "{\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        }" { (expression_statement "__dest = puVar23 + (uint)bVar25 * -2 + 1;" (assignment_expression "__dest = puVar23 + (uint)bVar25 * -2 + 1" identifier = (binary_expression "puVar23 + (uint)bVar25 * -2 + 1" (binary_expression "puVar23 + (uint)bVar25 * -2" identifier + (binary_expression "(uint)bVar25 * -2" (cast_expression "(uint)bVar25" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "*puVar23 = *puVar22;" (assignment_expression "*puVar23 = *puVar22" (pointer_expression "*puVar23" * identifier) = (pointer_expression "*puVar22" * identifier)) ;) (expression_statement "puVar22 = puVar22 + (uint)bVar25 * -2 + 1;" (assignment_expression "puVar22 = puVar22 + (uint)bVar25 * -2 + 1" identifier = (binary_expression "puVar22 + (uint)bVar25 * -2 + 1" (binary_expression "puVar22 + (uint)bVar25 * -2" identifier + (binary_expression "(uint)bVar25 * -2" (cast_expression "(uint)bVar25" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar23 = __dest;" (assignment_expression "puVar23 = __dest" identifier = identifier) ;) }) while (parenthesized_expression "(__dest != puVar8)" ( (binary_expression "__dest != puVar8" identifier != identifier) )) ;) (if_statement "if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }" if (parenthesized_expression "(*(int *)(uVar2 + 0x44) != 0)" ( (binary_expression "*(int *)(uVar2 + 0x44) != 0" (pointer_expression "*(int *)(uVar2 + 0x44)" * (cast_expression "(int *)(uVar2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }" { (expression_statement "iVar5 = *(int *)(uVar2 + 4);" (assignment_expression "iVar5 = *(int *)(uVar2 + 4)" identifier = (pointer_expression "*(int *)(uVar2 + 4)" * (cast_expression "(int *)(uVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar21 = uVar2;" (assignment_expression "uVar21 = uVar2" identifier = identifier) ;) (goto_statement "goto LAB_000178c9;" goto statement_identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }" else (compound_statement "{\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }" { (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" identifier = number_literal) ;) (expression_statement "param_1[6] = (int)"invalid distances set";" (assignment_expression "param_1[6] = (int)"invalid distances set"" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)"invalid distances set"" ( (type_descriptor "int" primitive_type) ) (string_literal ""invalid distances set"" " string_content "))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) }))) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (expression_statement "pcVar6 = "invalid literal/lengths set";" (assignment_expression "pcVar6 = "invalid literal/lengths set"" identifier = (string_literal ""invalid literal/lengths set"" " string_content ")) ;) (goto_statement "goto LAB_00017b45;" goto statement_identifier ;) })) (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" identifier = number_literal) ;) (expression_statement "param_1[6] = (int)"invalid code -- missing end-of-block";" (assignment_expression "param_1[6] = (int)"invalid code -- missing end-of-block"" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)"invalid code -- missing end-of-block"" ( (type_descriptor "int" primitive_type) ) (string_literal ""invalid code -- missing end-of-block"" " string_content "))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }" else (compound_statement "{\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }" { (expression_statement "param_1[6] = (int)"invalid code lengths set";" (assignment_expression "param_1[6] = (int)"invalid code lengths set"" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)"invalid code lengths set"" ( (type_descriptor "int" primitive_type) ) (string_literal ""invalid code lengths set"" " string_content "))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" identifier = number_literal) ;) }))) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (expression_statement "pcVar6 = "too many length or distance symbols";" (assignment_expression "pcVar6 = "too many length or distance symbols"" identifier = (string_literal ""too many length or distance symbols"" " string_content ")) ;) (goto_statement "goto LAB_000188eb;" goto statement_identifier ;) })) (if_statement "if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }" if (parenthesized_expression "(uVar14 == 3)" ( (binary_expression "uVar14 == 3" identifier == number_literal) )) (compound_statement "{\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }" { (expression_statement "uVar15 = uVar15 - 3;" (assignment_expression "uVar15 = uVar15 - 3" identifier = (binary_expression "uVar15 - 3" identifier - number_literal)) ;) (expression_statement "local_64 = local_64 >> 3;" (assignment_expression "local_64 = local_64 >> 3" identifier = (binary_expression "local_64 >> 3" identifier >> number_literal)) ;) (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" identifier = number_literal) ;) (expression_statement "param_1[6] = (int)"invalid block type";" (assignment_expression "param_1[6] = (int)"invalid block type"" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)"invalid block type"" ( (type_descriptor "int" primitive_type) ) (string_literal ""invalid block type"" " string_content "))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (if_statement "if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }" if (parenthesized_expression "(uVar14 == 1)" ( (binary_expression "uVar14 == 1" identifier == number_literal) )) (compound_statement "{\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }" { (expression_statement "*(undefined4 *)(uVar2 + 0x58) = 9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x58) = 9" (pointer_expression "*(undefined4 *)(uVar2 + 0x58)" * (cast_expression "(undefined4 *)(uVar2 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x58)" ( (binary_expression "uVar2 + 0x58" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x5c) = 5;" (assignment_expression "*(undefined4 *)(uVar2 + 0x5c) = 5" (pointer_expression "*(undefined4 *)(uVar2 + 0x5c)" * (cast_expression "(undefined4 *)(uVar2 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x5c)" ( (binary_expression "uVar2 + 0x5c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f47;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f47" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined **)(uVar2 + 0x50) = &UNK_000219c0;" (assignment_expression "*(undefined **)(uVar2 + 0x50) = &UNK_000219c0" (pointer_expression "*(undefined **)(uVar2 + 0x50)" * (cast_expression "(undefined **)(uVar2 + 0x50)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar2 + 0x50)" ( (binary_expression "uVar2 + 0x50" identifier + number_literal) )))) = (pointer_expression "&UNK_000219c0" & identifier)) ;) (expression_statement "*(undefined **)(uVar2 + 0x54) = &UNK_00021940;" (assignment_expression "*(undefined **)(uVar2 + 0x54) = &UNK_00021940" (pointer_expression "*(undefined **)(uVar2 + 0x54)" * (cast_expression "(undefined **)(uVar2 + 0x54)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar2 + 0x54)" ( (binary_expression "uVar2 + 0x54" identifier + number_literal) )))) = (pointer_expression "&UNK_00021940" & identifier)) ;) (if_statement "if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }" if (parenthesized_expression "(param_2 != 6)" ( (binary_expression "param_2 != 6" identifier != number_literal) )) (compound_statement "{\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }" { (expression_statement "local_64 = local_64 >> 3;" (assignment_expression "local_64 = local_64 >> 3" identifier = (binary_expression "local_64 >> 3" identifier >> number_literal)) ;) (expression_statement "uVar15 = uVar15 - 3;" (assignment_expression "uVar15 = uVar15 - 3" identifier = (binary_expression "uVar15 - 3" identifier - number_literal)) ;) (goto_statement "goto LAB_00017c70;" goto statement_identifier ;) })) (expression_statement "local_64 = local_64 >> 3;" (assignment_expression "local_64 = local_64 >> 3" identifier = (binary_expression "local_64 >> 3" identifier >> number_literal)) ;) (expression_statement "uVar15 = uVar15 - 3;" (assignment_expression "uVar15 = uVar15 - 3" identifier = (binary_expression "uVar15 - 3" identifier - number_literal)) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (expression_statement "local_64 = local_64 >> 3;" (assignment_expression "local_64 = local_64 >> 3" identifier = (binary_expression "local_64 >> 3" identifier >> number_literal)) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f41;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f41" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar15 = uVar15 - 3;" (assignment_expression "uVar15 = uVar15 - 3" identifier = (binary_expression "uVar15 - 3" identifier - number_literal)) ;) (labeled_statement "code_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);" statement_identifier : (expression_statement "local_64 = local_64 >> ((byte)uVar15 & 7);" (assignment_expression "local_64 = local_64 >> ((byte)uVar15 & 7)" identifier = (binary_expression "local_64 >> ((byte)uVar15 & 7)" identifier >> (parenthesized_expression "((byte)uVar15 & 7)" ( (binary_expression "(byte)uVar15 & 7" (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;)) (for_statement "for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }" for ( (assignment_expression "uVar15 = uVar15 & 0xfffffff8" identifier = (binary_expression "uVar15 & 0xfffffff8" identifier & number_literal)) ; (binary_expression "uVar15 < 0x20" identifier < number_literal) ; (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ) (compound_statement "{\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }" { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << ((byte)uVar15 & 0x1f))" ( (binary_expression "(uint)*local_60 << ((byte)uVar15 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "((byte)uVar15 & 0x1f)" ( (binary_expression "(byte)uVar15 & 0x1f" (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar14 = local_64 & 0xffff;" (assignment_expression "uVar14 = local_64 & 0xffff" identifier = (binary_expression "local_64 & 0xffff" identifier & number_literal)) ;) (if_statement "if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }" if (parenthesized_expression "(uVar14 != (local_64 >> 0x10 ^ 0xffff))" ( (binary_expression "uVar14 != (local_64 >> 0x10 ^ 0xffff)" identifier != (parenthesized_expression "(local_64 >> 0x10 ^ 0xffff)" ( (binary_expression "local_64 >> 0x10 ^ 0xffff" (binary_expression "local_64 >> 0x10" identifier >> number_literal) ^ number_literal) ))) )) (compound_statement "{\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }" { (expression_statement "pcVar6 = "invalid stored block lengths";" (assignment_expression "pcVar6 = "invalid stored block lengths"" identifier = (string_literal ""invalid stored block lengths"" " string_content ")) ;) (goto_statement "goto LAB_00017b45;" goto statement_identifier ;) })) (expression_statement "*(uint *)(uVar2 + 0x44) = uVar14;" (assignment_expression "*(uint *)(uVar2 + 0x44) = uVar14" (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f42;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f42" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }" if (parenthesized_expression "(param_2 == 6)" ( (binary_expression "param_2 == 6" identifier == number_literal) )) (compound_statement "{\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }" { (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;" statement_identifier : (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f43;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f43" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;)) (labeled_statement "code_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }" statement_identifier : (if_statement "if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (compound_statement "{\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }" { (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3f;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3f" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00017f13;" goto statement_identifier ;) }))) (if_statement "if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }" if (parenthesized_expression "(local_6c <= uVar14)" ( (binary_expression "local_6c <= uVar14" identifier <= identifier) )) (compound_statement "{\n          uVar14 = local_6c;\n        }" { (expression_statement "uVar14 = local_6c;" (assignment_expression "uVar14 = local_6c" identifier = identifier) ;) })) (if_statement "if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }" if (parenthesized_expression "(local_5c < uVar14)" ( (binary_expression "local_5c < uVar14" identifier < identifier) )) (compound_statement "{\n          uVar14 = local_5c;\n        }" { (expression_statement "uVar14 = local_5c;" (assignment_expression "uVar14 = local_5c" identifier = identifier) ;) })) (if_statement "if (uVar14 == 0) goto LAB_00017f30;" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "memcpy(__dest,local_60,uVar14);" (call_expression "memcpy(__dest,local_60,uVar14)" identifier (argument_list "(__dest,local_60,uVar14)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_6c = local_6c - uVar14;" (assignment_expression "local_6c = local_6c - uVar14" identifier = (binary_expression "local_6c - uVar14" identifier - identifier)) ;) (expression_statement "local_60 = local_60 + uVar14;" (assignment_expression "local_60 = local_60 + uVar14" identifier = (binary_expression "local_60 + uVar14" identifier + identifier)) ;) (expression_statement "local_5c = local_5c - uVar14;" (assignment_expression "local_5c = local_5c - uVar14" identifier = (binary_expression "local_5c - uVar14" identifier - identifier)) ;) (expression_statement "*(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;" (assignment_expression "*(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14" (pointer_expression "*(int *)(uVar2 + 0x44)" * (cast_expression "(int *)(uVar2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = (binary_expression "*(int *)(uVar2 + 0x44) - uVar14" (pointer_expression "*(int *)(uVar2 + 0x44)" * (cast_expression "(int *)(uVar2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) - identifier)) ;) (expression_statement "iVar5 = *(int *)(uVar2 + 4);" (assignment_expression "iVar5 = *(int *)(uVar2 + 4)" identifier = (pointer_expression "*(int *)(uVar2 + 4)" * (cast_expression "(int *)(uVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar21 = extraout_ECX_00;" (assignment_expression "uVar21 = extraout_ECX_00" identifier = identifier) ;) (expression_statement "__dest = __dest + uVar14;" (assignment_expression "__dest = __dest + uVar14" identifier = (binary_expression "__dest + uVar14" identifier + identifier)) ;) (goto_statement "goto LAB_000178c9;" goto statement_identifier ;)) (case_statement "case 0x3f35:\n        goto joined_r0x0001879b;" case number_literal : (goto_statement "goto joined_r0x0001879b;" goto statement_identifier ;)) (case_statement "case 0x3f36:\n        goto joined_r0x00018053;" case number_literal : (goto_statement "goto joined_r0x00018053;" goto statement_identifier ;)) (case_statement "case 0x3f37:\n        goto joined_r0x000180e3;" case number_literal : (goto_statement "goto joined_r0x000180e3;" goto statement_identifier ;)) (case_statement "case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;" case number_literal : (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;" if (parenthesized_expression "((uVar21 & 0x400) == 0)" ( (binary_expression "(uVar21 & 0x400) == 0" (parenthesized_expression "(uVar21 & 0x400)" ( (binary_expression "uVar21 & 0x400" identifier & number_literal) )) == number_literal) )) (goto_statement "goto code_r0x000181ae;" goto statement_identifier ;)) (if_statement "if (uVar15 < 0x10) goto code_r0x0001829d;" if (parenthesized_expression "(uVar15 < 0x10)" ( (binary_expression "uVar15 < 0x10" identifier < number_literal) )) (goto_statement "goto code_r0x0001829d;" goto statement_identifier ;)) (goto_statement "goto code_r0x000182ea;" goto statement_identifier ;)) (case_statement "case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;" case number_literal : (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) ))))) ;) (goto_statement "goto code_r0x000181cb;" goto statement_identifier ;)) (case_statement "case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;" case number_literal : (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) ))))) ;) (goto_statement "goto code_r0x0001832f;" goto statement_identifier ;)) (case_statement "case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;" case number_literal : (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) ))))) ;) (goto_statement "goto code_r0x0001835c;" goto statement_identifier ;)) (case_statement "case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;" case number_literal : (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) ))))) ;) (goto_statement "goto code_r0x00018382;" goto statement_identifier ;)) (case_statement "case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;" case number_literal : (expression_statement "uVar21 = local_64;" (assignment_expression "uVar21 = local_64" identifier = identifier) ;) (goto_statement "goto joined_r0x00017e43;" goto statement_identifier ;)) (case_statement "case 0x3f3e:\n        goto code_r0x00017eda;" case number_literal : (goto_statement "goto code_r0x00017eda;" goto statement_identifier ;)) (case_statement "case 0x3f3f:\n        goto LAB_00017f13;" case number_literal : (goto_statement "goto LAB_00017f13;" goto statement_identifier ;)) (case_statement "case 0x3f41:\n        goto code_r0x00017ac6;" case number_literal : (goto_statement "goto code_r0x00017ac6;" goto statement_identifier ;)) (case_statement "case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;" case number_literal : (expression_statement "uVar14 = *(uint *)(uVar2 + 0x44);" (assignment_expression "uVar14 = *(uint *)(uVar2 + 0x44)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00018557;" goto statement_identifier ;)) (case_statement "case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;" case number_literal : (expression_statement "uVar14 = *(uint *)(uVar2 + 0x44);" (assignment_expression "uVar14 = *(uint *)(uVar2 + 0x44)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) ))))) ;) (goto_statement "goto code_r0x00018562;" goto statement_identifier ;)) (case_statement "case 0x3f44:\n        goto code_r0x00018840;" case number_literal : (goto_statement "goto code_r0x00018840;" goto statement_identifier ;)) (case_statement "case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;" case number_literal : (expression_statement "uVar21 = *(uint *)(uVar2 + 0x6c);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x6c)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x6c)" * (cast_expression "(uint *)(uVar2 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x6c)" ( (binary_expression "uVar2 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "uVar14 = *(uint *)(uVar2 + 0x60);" (assignment_expression "uVar14 = *(uint *)(uVar2 + 0x60)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x60)" * (cast_expression "(uint *)(uVar2 + 0x60)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x60)" ( (binary_expression "uVar2 + 0x60" identifier + number_literal) ))))) ;) (if_statement "if (uVar14 <= uVar21) goto code_r0x00019253;" if (parenthesized_expression "(uVar14 <= uVar21)" ( (binary_expression "uVar14 <= uVar21" identifier <= identifier) )) (goto_statement "goto code_r0x00019253;" goto statement_identifier ;)) (goto_statement "goto LAB_000184b2;" goto statement_identifier ;)) (case_statement "case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;" case number_literal : (expression_statement "uStack_48 = *(uint *)(uVar2 + 0x6c);" (assignment_expression "uStack_48 = *(uint *)(uVar2 + 0x6c)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x6c)" * (cast_expression "(uint *)(uVar2 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x6c)" ( (binary_expression "uVar2 + 0x6c" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_000185db;" goto statement_identifier ;)) (case_statement "case 0x3f47:\n        goto LAB_00017c70;" case number_literal : (goto_statement "goto LAB_00017c70;" goto statement_identifier ;)) (case_statement "case 0x3f48:\n        goto LAB_00017b90;" case number_literal : (goto_statement "goto LAB_00017b90;" goto statement_identifier ;)) (case_statement "case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;" case number_literal : (expression_statement "uVar21 = *(uint *)(uVar2 + 0x4c);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x4c)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x4c)" * (cast_expression "(uint *)(uVar2 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x4c)" ( (binary_expression "uVar2 + 0x4c" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00017d07;" goto statement_identifier ;)) (case_statement "case 0x3f4a:\n        goto code_r0x00017d27;" case number_literal : (goto_statement "goto code_r0x00017d27;" goto statement_identifier ;)) (case_statement "case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;" case number_literal : (expression_statement "uVar21 = *(uint *)(uVar2 + 0x4c);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x4c)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x4c)" * (cast_expression "(uint *)(uVar2 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x4c)" ( (binary_expression "uVar2 + 0x4c" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00017c87;" goto statement_identifier ;)) (case_statement "case 0x3f4c:\n        goto code_r0x00017c9a;" case number_literal : (goto_statement "goto code_r0x00017c9a;" goto statement_identifier ;)) (case_statement "case 0x3f4d:\n        goto LAB_00017b6a;" case number_literal : (goto_statement "goto LAB_00017b6a;" goto statement_identifier ;)) (case_statement "case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;" case number_literal : (labeled_statement "code_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);" statement_identifier : (expression_statement "uVar21 = *(uint *)(uVar2 + 0xc);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0xc)" identifier = (pointer_expression "*(uint *)(uVar2 + 0xc)" * (cast_expression "(uint *)(uVar2 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) ))))) ;)) (if_statement "if (uVar21 == 0) goto LAB_00018e20;" if (parenthesized_expression "(uVar21 == 0)" ( (binary_expression "uVar21 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00018e20;" goto statement_identifier ;)) (if_statement "if (0x1f < uVar15) goto LAB_00017996;" if (parenthesized_expression "(0x1f < uVar15)" ( (binary_expression "0x1f < uVar15" number_literal < identifier) )) (goto_statement "goto LAB_00017996;" goto statement_identifier ;)) (if_statement "if (local_6c != 0) goto LAB_00017970;" if (parenthesized_expression "(local_6c != 0)" ( (binary_expression "local_6c != 0" identifier != number_literal) )) (goto_statement "goto LAB_00017970;" goto statement_identifier ;)) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (case_statement "case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;" case number_literal : (expression_statement "uVar21 = *(uint *)(uVar2 + 0xc);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0xc)" identifier = (pointer_expression "*(uint *)(uVar2 + 0xc)" * (cast_expression "(uint *)(uVar2 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_000183ff;" goto statement_identifier ;)) (case_statement "case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;" case number_literal : (expression_statement "uVar21 = 1;" (assignment_expression "uVar21 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;)) (case_statement "case 0x3f51:\n        goto LAB_00018817;" case number_literal : (goto_statement "goto LAB_00018817;" goto statement_identifier ;)) (case_statement "case 0x3f52:\n        goto code_r0x00018770;" case number_literal : (goto_statement "goto code_r0x00018770;" goto statement_identifier ;)) }))) })) })) (expression_statement "uVar21 = 0xfffffffe;" (assignment_expression "uVar21 = 0xfffffffe" identifier = number_literal) ;) (goto_statement "goto LAB_00018778;" goto statement_identifier ;) (while_statement "while (local_6c != 0) {\ncode_r0x00018ea0:\n    pbVar20 = local_60 + 1;\n    local_6c = local_6c - 1;\n    bVar12 = (byte)uVar15;\n    uVar15 = uVar15 + 8;\n    local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n    local_60 = pbVar20;\n    if (0xf < uVar15) goto code_r0x00018ec6;\n  }" while (parenthesized_expression "(local_6c != 0)" ( (binary_expression "local_6c != 0" identifier != number_literal) )) (compound_statement "{\ncode_r0x00018ea0:\n    pbVar20 = local_60 + 1;\n    local_6c = local_6c - 1;\n    bVar12 = (byte)uVar15;\n    uVar15 = uVar15 + 8;\n    local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n    local_60 = pbVar20;\n    if (0xf < uVar15) goto code_r0x00018ec6;\n  }" { (labeled_statement "code_r0x00018ea0:\n    pbVar20 = local_60 + 1;" statement_identifier : (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;)) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" identifier = identifier) ;) (if_statement "if (0xf < uVar15) goto code_r0x00018ec6;" if (parenthesized_expression "(0xf < uVar15)" ( (binary_expression "0xf < uVar15" number_literal < identifier) )) (goto_statement "goto code_r0x00018ec6;" goto statement_identifier ;)) })) (goto_statement "goto LAB_000190a2;" goto statement_identifier ;) identifier : if (parenthesized_expression "(((uVar21 & 2) == 0) || (local_64 != 0x8b1f))" ( (binary_expression "((uVar21 & 2) == 0) || (local_64 != 0x8b1f)" (parenthesized_expression "((uVar21 & 2) == 0)" ( (binary_expression "(uVar21 & 2) == 0" (parenthesized_expression "(uVar21 & 2)" ( (binary_expression "uVar21 & 2" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(local_64 != 0x8b1f)" ( (binary_expression "local_64 != 0x8b1f" identifier != number_literal) ))) )) (compound_statement "{\n    *(undefined4 *)(uVar2 + 0x14) = 0;\n    if (*(int *)(uVar2 + 0x24) != 0) {\n      *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30) = 0xffffffff;\n    }\n    if (((uVar21 & 1) == 0) ||\n       (uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8), uVar21 != (uVar21 / 0x1f) * 0x1f)) {\n      pcVar6 = "incorrect header check";\nLAB_000188eb:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }\n    else {\n      if ((local_64 & 0xf) == 8) {\n        local_64 = local_64 >> 4;\n        uVar15 = uVar15 - 4;\n        uVar21 = (local_64 & 0xf) + 8;\n        if (*(uint *)(uVar2 + 0x28) == 0) {\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;\n        iVar5 = 1 << (sbyte)uVar21;\n        *(int *)(uVar2 + 0x18) = iVar5;\n        iVar5 = adler32(0,0,0,iVar5);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        if ((local_64 & 0x200) == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }\n        local_64 = 0;\n        uVar15 = 0;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3d;\n        do {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        } while (uVar15 < 0x20);\n        uVar15 = 0;\n        local_64 = 0;\n        iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3e;\ncode_r0x00017eda:\n        if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        uVar21 = 2;\n        param_1[3] = (int)__dest;\n        param_1[4] = local_5c;\n        *param_1 = (int)local_60;\n        param_1[1] = local_6c;\n        *(uint *)(uVar2 + 0x40) = uVar15;\n        *(uint *)(uVar2 + 0x3c) = local_64;\n        goto LAB_00018778;\n      }\n      pcVar6 = "unknown compression method";\nLAB_00017b45:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }\n  }" { (expression_statement "*(undefined4 *)(uVar2 + 0x14) = 0;" (assignment_expression "*(undefined4 *)(uVar2 + 0x14) = 0" (pointer_expression "*(undefined4 *)(uVar2 + 0x14)" * (cast_expression "(undefined4 *)(uVar2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (*(int *)(uVar2 + 0x24) != 0) {\n      *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30) = 0xffffffff;\n    }" if (parenthesized_expression "(*(int *)(uVar2 + 0x24) != 0)" ( (binary_expression "*(int *)(uVar2 + 0x24) != 0" (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30) = 0xffffffff;\n    }" { (expression_statement "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30) = 0xffffffff;" (assignment_expression "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30) = 0xffffffff" (pointer_expression "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30)" * (cast_expression "(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(uVar2 + 0x24) + 0x30)" ( (binary_expression "*(int *)(uVar2 + 0x24) + 0x30" (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) + number_literal) )))) = number_literal) ;) })) (if_statement "if (((uVar21 & 1) == 0) ||\n       (uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8), uVar21 != (uVar21 / 0x1f) * 0x1f)) {\n      pcVar6 = "incorrect header check";\nLAB_000188eb:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }\n    else {\n      if ((local_64 & 0xf) == 8) {\n        local_64 = local_64 >> 4;\n        uVar15 = uVar15 - 4;\n        uVar21 = (local_64 & 0xf) + 8;\n        if (*(uint *)(uVar2 + 0x28) == 0) {\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;\n        iVar5 = 1 << (sbyte)uVar21;\n        *(int *)(uVar2 + 0x18) = iVar5;\n        iVar5 = adler32(0,0,0,iVar5);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        if ((local_64 & 0x200) == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }\n        local_64 = 0;\n        uVar15 = 0;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3d;\n        do {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        } while (uVar15 < 0x20);\n        uVar15 = 0;\n        local_64 = 0;\n        iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3e;\ncode_r0x00017eda:\n        if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        uVar21 = 2;\n        param_1[3] = (int)__dest;\n        param_1[4] = local_5c;\n        *param_1 = (int)local_60;\n        param_1[1] = local_6c;\n        *(uint *)(uVar2 + 0x40) = uVar15;\n        *(uint *)(uVar2 + 0x3c) = local_64;\n        goto LAB_00018778;\n      }\n      pcVar6 = "unknown compression method";\nLAB_00017b45:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }" if (parenthesized_expression "(((uVar21 & 1) == 0) ||\n       (uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8), uVar21 != (uVar21 / 0x1f) * 0x1f))" ( (binary_expression "((uVar21 & 1) == 0) ||\n       (uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8), uVar21 != (uVar21 / 0x1f) * 0x1f)" (parenthesized_expression "((uVar21 & 1) == 0)" ( (binary_expression "(uVar21 & 1) == 0" (parenthesized_expression "(uVar21 & 1)" ( (binary_expression "uVar21 & 1" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8), uVar21 != (uVar21 / 0x1f) * 0x1f)" ( (comma_expression "uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8), uVar21 != (uVar21 / 0x1f) * 0x1f" (assignment_expression "uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8)" identifier = (binary_expression "(local_64 & 0xff) * 0x100 + (local_64 >> 8)" (binary_expression "(local_64 & 0xff) * 0x100" (parenthesized_expression "(local_64 & 0xff)" ( (binary_expression "local_64 & 0xff" identifier & number_literal) )) * number_literal) + (parenthesized_expression "(local_64 >> 8)" ( (binary_expression "local_64 >> 8" identifier >> number_literal) )))) , (binary_expression "uVar21 != (uVar21 / 0x1f) * 0x1f" identifier != (binary_expression "(uVar21 / 0x1f) * 0x1f" (parenthesized_expression "(uVar21 / 0x1f)" ( (binary_expression "uVar21 / 0x1f" identifier / number_literal) )) * number_literal))) ))) )) (compound_statement "{\n      pcVar6 = "incorrect header check";\nLAB_000188eb:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }" { (expression_statement "pcVar6 = "incorrect header check";" (assignment_expression "pcVar6 = "incorrect header check"" identifier = (string_literal ""incorrect header check"" " string_content ")) ;) (labeled_statement "LAB_000188eb:\n      uVar21 = 0xfffffffd;" statement_identifier : (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" identifier = number_literal) ;)) (expression_statement "param_1[6] = (int)pcVar6;" (assignment_expression "param_1[6] = (int)pcVar6" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n      if ((local_64 & 0xf) == 8) {\n        local_64 = local_64 >> 4;\n        uVar15 = uVar15 - 4;\n        uVar21 = (local_64 & 0xf) + 8;\n        if (*(uint *)(uVar2 + 0x28) == 0) {\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;\n        iVar5 = 1 << (sbyte)uVar21;\n        *(int *)(uVar2 + 0x18) = iVar5;\n        iVar5 = adler32(0,0,0,iVar5);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        if ((local_64 & 0x200) == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }\n        local_64 = 0;\n        uVar15 = 0;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3d;\n        do {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        } while (uVar15 < 0x20);\n        uVar15 = 0;\n        local_64 = 0;\n        iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3e;\ncode_r0x00017eda:\n        if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        uVar21 = 2;\n        param_1[3] = (int)__dest;\n        param_1[4] = local_5c;\n        *param_1 = (int)local_60;\n        param_1[1] = local_6c;\n        *(uint *)(uVar2 + 0x40) = uVar15;\n        *(uint *)(uVar2 + 0x3c) = local_64;\n        goto LAB_00018778;\n      }\n      pcVar6 = "unknown compression method";\nLAB_00017b45:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }" else (compound_statement "{\n      if ((local_64 & 0xf) == 8) {\n        local_64 = local_64 >> 4;\n        uVar15 = uVar15 - 4;\n        uVar21 = (local_64 & 0xf) + 8;\n        if (*(uint *)(uVar2 + 0x28) == 0) {\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;\n        iVar5 = 1 << (sbyte)uVar21;\n        *(int *)(uVar2 + 0x18) = iVar5;\n        iVar5 = adler32(0,0,0,iVar5);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        if ((local_64 & 0x200) == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }\n        local_64 = 0;\n        uVar15 = 0;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3d;\n        do {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        } while (uVar15 < 0x20);\n        uVar15 = 0;\n        local_64 = 0;\n        iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3e;\ncode_r0x00017eda:\n        if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        uVar21 = 2;\n        param_1[3] = (int)__dest;\n        param_1[4] = local_5c;\n        *param_1 = (int)local_60;\n        param_1[1] = local_6c;\n        *(uint *)(uVar2 + 0x40) = uVar15;\n        *(uint *)(uVar2 + 0x3c) = local_64;\n        goto LAB_00018778;\n      }\n      pcVar6 = "unknown compression method";\nLAB_00017b45:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }" { (if_statement "if ((local_64 & 0xf) == 8) {\n        local_64 = local_64 >> 4;\n        uVar15 = uVar15 - 4;\n        uVar21 = (local_64 & 0xf) + 8;\n        if (*(uint *)(uVar2 + 0x28) == 0) {\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;\n        iVar5 = 1 << (sbyte)uVar21;\n        *(int *)(uVar2 + 0x18) = iVar5;\n        iVar5 = adler32(0,0,0,iVar5);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        if ((local_64 & 0x200) == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }\n        local_64 = 0;\n        uVar15 = 0;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3d;\n        do {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        } while (uVar15 < 0x20);\n        uVar15 = 0;\n        local_64 = 0;\n        iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3e;\ncode_r0x00017eda:\n        if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        uVar21 = 2;\n        param_1[3] = (int)__dest;\n        param_1[4] = local_5c;\n        *param_1 = (int)local_60;\n        param_1[1] = local_6c;\n        *(uint *)(uVar2 + 0x40) = uVar15;\n        *(uint *)(uVar2 + 0x3c) = local_64;\n        goto LAB_00018778;\n      }" if (parenthesized_expression "((local_64 & 0xf) == 8)" ( (binary_expression "(local_64 & 0xf) == 8" (parenthesized_expression "(local_64 & 0xf)" ( (binary_expression "local_64 & 0xf" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        local_64 = local_64 >> 4;\n        uVar15 = uVar15 - 4;\n        uVar21 = (local_64 & 0xf) + 8;\n        if (*(uint *)(uVar2 + 0x28) == 0) {\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;\n        iVar5 = 1 << (sbyte)uVar21;\n        *(int *)(uVar2 + 0x18) = iVar5;\n        iVar5 = adler32(0,0,0,iVar5);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        if ((local_64 & 0x200) == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }\n        local_64 = 0;\n        uVar15 = 0;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3d;\n        do {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        } while (uVar15 < 0x20);\n        uVar15 = 0;\n        local_64 = 0;\n        iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3e;\ncode_r0x00017eda:\n        if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        uVar21 = 2;\n        param_1[3] = (int)__dest;\n        param_1[4] = local_5c;\n        *param_1 = (int)local_60;\n        param_1[1] = local_6c;\n        *(uint *)(uVar2 + 0x40) = uVar15;\n        *(uint *)(uVar2 + 0x3c) = local_64;\n        goto LAB_00018778;\n      }" { (expression_statement "local_64 = local_64 >> 4;" (assignment_expression "local_64 = local_64 >> 4" identifier = (binary_expression "local_64 >> 4" identifier >> number_literal)) ;) (expression_statement "uVar15 = uVar15 - 4;" (assignment_expression "uVar15 = uVar15 - 4" identifier = (binary_expression "uVar15 - 4" identifier - number_literal)) ;) (expression_statement "uVar21 = (local_64 & 0xf) + 8;" (assignment_expression "uVar21 = (local_64 & 0xf) + 8" identifier = (binary_expression "(local_64 & 0xf) + 8" (parenthesized_expression "(local_64 & 0xf)" ( (binary_expression "local_64 & 0xf" identifier & number_literal) )) + number_literal)) ;) (if_statement "if (*(uint *)(uVar2 + 0x28) == 0) {\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;" if (parenthesized_expression "(*(uint *)(uVar2 + 0x28) == 0)" ( (binary_expression "*(uint *)(uVar2 + 0x28) == 0" (pointer_expression "*(uint *)(uVar2 + 0x28)" * (cast_expression "(uint *)(uVar2 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x28)" ( (binary_expression "uVar2 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }" { (expression_statement "*(uint *)(uVar2 + 0x28) = uVar21;" (assignment_expression "*(uint *)(uVar2 + 0x28) = uVar21" (pointer_expression "*(uint *)(uVar2 + 0x28)" * (cast_expression "(uint *)(uVar2 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x28)" ( (binary_expression "uVar2 + 0x28" identifier + number_literal) )))) = identifier) ;) (if_statement "if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }" if (parenthesized_expression "(0xf < uVar21)" ( (binary_expression "0xf < uVar21" number_literal < identifier) )) (compound_statement "{\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }" { (labeled_statement "code_r0x00019879:\n            pcVar6 = "invalid window size";" statement_identifier : (expression_statement "pcVar6 = "invalid window size";" (assignment_expression "pcVar6 = "invalid window size"" identifier = (string_literal ""invalid window size"" " string_content ")) ;)) (goto_statement "goto LAB_00017b45;" goto statement_identifier ;) })) }) (else_clause "else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;" else (if_statement "if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;" if (parenthesized_expression "((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21))" ( (binary_expression "(0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)" (parenthesized_expression "(0xf < uVar21)" ( (binary_expression "0xf < uVar21" number_literal < identifier) )) || (parenthesized_expression "(*(uint *)(uVar2 + 0x28) < uVar21)" ( (binary_expression "*(uint *)(uVar2 + 0x28) < uVar21" (pointer_expression "*(uint *)(uVar2 + 0x28)" * (cast_expression "(uint *)(uVar2 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x28)" ( (binary_expression "uVar2 + 0x28" identifier + number_literal) )))) < identifier) ))) )) (goto_statement "goto code_r0x00019879;" goto statement_identifier ;)))) (expression_statement "iVar5 = 1 << (sbyte)uVar21;" (assignment_expression "iVar5 = 1 << (sbyte)uVar21" identifier = (binary_expression "1 << (sbyte)uVar21" number_literal << (cast_expression "(sbyte)uVar21" ( (type_descriptor "sbyte" type_identifier) ) identifier))) ;) (expression_statement "*(int *)(uVar2 + 0x18) = iVar5;" (assignment_expression "*(int *)(uVar2 + 0x18) = iVar5" (pointer_expression "*(int *)(uVar2 + 0x18)" * (cast_expression "(int *)(uVar2 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x18)" ( (binary_expression "uVar2 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar5 = adler32(0,0,0,iVar5);" (assignment_expression "iVar5 = adler32(0,0,0,iVar5)" identifier = (call_expression "adler32(0,0,0,iVar5)" identifier (argument_list "(0,0,0,iVar5)" ( number_literal , number_literal , number_literal , identifier )))) ;) (expression_statement "*(int *)(uVar2 + 0x1c) = iVar5;" (assignment_expression "*(int *)(uVar2 + 0x1c) = iVar5" (pointer_expression "*(int *)(uVar2 + 0x1c)" * (cast_expression "(int *)(uVar2 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[0xc] = iVar5;" (assignment_expression "param_1[0xc] = iVar5" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((local_64 & 0x200) == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }" if (parenthesized_expression "((local_64 & 0x200) == 0)" ( (binary_expression "(local_64 & 0x200) == 0" (parenthesized_expression "(local_64 & 0x200)" ( (binary_expression "local_64 & 0x200" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }" { (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3f;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3f" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00017f13;" goto statement_identifier ;) })) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3d;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3d" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (do_statement "do {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        } while (uVar15 < 0x20);" do (compound_statement "{\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        }" { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (labeled_statement "joined_r0x00017e43:\n          local_64 = uVar21;" statement_identifier : (expression_statement "local_64 = uVar21;" (assignment_expression "local_64 = uVar21" identifier = identifier) ;)) }) while (parenthesized_expression "(uVar15 < 0x20)" ( (binary_expression "uVar15 < 0x20" identifier < number_literal) )) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (expression_statement "iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);" (assignment_expression "iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00)" identifier = (binary_expression "(uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00)" (binary_expression "(uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18)" (binary_expression "(uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000" (binary_expression "(uVar21 & 0xff00) * 0x100" (parenthesized_expression "(uVar21 & 0xff00)" ( (binary_expression "uVar21 & 0xff00" identifier & number_literal) )) * number_literal) + (binary_expression "uVar21 * 0x1000000" identifier * number_literal)) + (parenthesized_expression "(uVar21 >> 0x18)" ( (binary_expression "uVar21 >> 0x18" identifier >> number_literal) ))) + (parenthesized_expression "(uVar21 >> 8 & 0xff00)" ( (binary_expression "uVar21 >> 8 & 0xff00" (binary_expression "uVar21 >> 8" identifier >> number_literal) & number_literal) )))) ;) (expression_statement "*(int *)(uVar2 + 0x1c) = iVar5;" (assignment_expression "*(int *)(uVar2 + 0x1c) = iVar5" (pointer_expression "*(int *)(uVar2 + 0x1c)" * (cast_expression "(int *)(uVar2 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[0xc] = iVar5;" (assignment_expression "param_1[0xc] = iVar5" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3e;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3e" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "code_r0x00017eda:\n        if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }" statement_identifier : (if_statement "if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }" if (parenthesized_expression "(*(int *)(uVar2 + 0x10) != 0)" ( (binary_expression "*(int *)(uVar2 + 0x10) != 0" (pointer_expression "*(int *)(uVar2 + 0x10)" * (cast_expression "(int *)(uVar2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x10)" ( (binary_expression "uVar2 + 0x10" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }" { (expression_statement "iVar5 = adler32(0,0,0);" (assignment_expression "iVar5 = adler32(0,0,0)" identifier = (call_expression "adler32(0,0,0)" identifier (argument_list "(0,0,0)" ( number_literal , number_literal , number_literal )))) ;) (expression_statement "*(int *)(uVar2 + 0x1c) = iVar5;" (assignment_expression "*(int *)(uVar2 + 0x1c) = iVar5" (pointer_expression "*(int *)(uVar2 + 0x1c)" * (cast_expression "(int *)(uVar2 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[0xc] = iVar5;" (assignment_expression "param_1[0xc] = iVar5" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3f;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3f" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00017f13;" goto statement_identifier ;) }))) (expression_statement "uVar21 = 2;" (assignment_expression "uVar21 = 2" identifier = number_literal) ;) (expression_statement "param_1[3] = (int)__dest;" (assignment_expression "param_1[3] = (int)__dest" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[4] = local_5c;" (assignment_expression "param_1[4] = local_5c" (subscript_expression "param_1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_1 = (int)local_60;" (assignment_expression "*param_1 = (int)local_60" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[1] = local_6c;" (assignment_expression "param_1[1] = local_6c" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(uint *)(uVar2 + 0x40) = uVar15;" (assignment_expression "*(uint *)(uVar2 + 0x40) = uVar15" (pointer_expression "*(uint *)(uVar2 + 0x40)" * (cast_expression "(uint *)(uVar2 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x40)" ( (binary_expression "uVar2 + 0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(uVar2 + 0x3c) = local_64;" (assignment_expression "*(uint *)(uVar2 + 0x3c) = local_64" (pointer_expression "*(uint *)(uVar2 + 0x3c)" * (cast_expression "(uint *)(uVar2 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x3c)" ( (binary_expression "uVar2 + 0x3c" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_00018778;" goto statement_identifier ;) })) (expression_statement "pcVar6 = "unknown compression method";" (assignment_expression "pcVar6 = "unknown compression method"" identifier = (string_literal ""unknown compression method"" " string_content ")) ;) (labeled_statement "LAB_00017b45:\n      uVar21 = 0xfffffffd;" statement_identifier : (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" identifier = number_literal) ;)) (expression_statement "param_1[6] = (int)pcVar6;" (assignment_expression "param_1[6] = (int)pcVar6" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) }))) }) else { (if_statement "if (*(int *)(uVar2 + 0x28) == 0) {\n      *(undefined4 *)(uVar2 + 0x28) = 0xf;\n    }" if (parenthesized_expression "(*(int *)(uVar2 + 0x28) == 0)" ( (binary_expression "*(int *)(uVar2 + 0x28) == 0" (pointer_expression "*(int *)(uVar2 + 0x28)" * (cast_expression "(int *)(uVar2 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x28)" ( (binary_expression "uVar2 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      *(undefined4 *)(uVar2 + 0x28) = 0xf;\n    }" { (expression_statement "*(undefined4 *)(uVar2 + 0x28) = 0xf;" (assignment_expression "*(undefined4 *)(uVar2 + 0x28) = 0xf" (pointer_expression "*(undefined4 *)(uVar2 + 0x28)" * (cast_expression "(undefined4 *)(uVar2 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x28)" ( (binary_expression "uVar2 + 0x28" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "uVar9 = crc32(0,0,0);" (assignment_expression "uVar9 = crc32(0,0,0)" identifier = (call_expression "crc32(0,0,0)" identifier (argument_list "(0,0,0)" ( number_literal , number_literal , number_literal )))) ;) (expression_statement "uStack_24 = 0x8b1f;" (assignment_expression "uStack_24 = 0x8b1f" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar9 = crc32(uVar9,&uStack_24,2);" (assignment_expression "uVar9 = crc32(uVar9,&uStack_24,2)" identifier = (call_expression "crc32(uVar9,&uStack_24,2)" identifier (argument_list "(uVar9,&uStack_24,2)" ( identifier , (pointer_expression "&uStack_24" & identifier) , number_literal )))) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f35;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f35" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) do { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (labeled_statement "joined_r0x0001879b:\n    } while (uVar15 < 0x10);" statement_identifier : (ERROR "}" }) (while_statement "while (uVar15 < 0x10);" while (parenthesized_expression "(uVar15 < 0x10)" ( (binary_expression "uVar15 < 0x10" identifier < number_literal) )) (expression_statement ";" ;))) (expression_statement "*(uint *)(uVar2 + 0x14) = local_64;" (assignment_expression "*(uint *)(uVar2 + 0x14) = local_64" (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) )))) = identifier) ;) if (parenthesized_expression "((char)local_64 == '\b')" ( (binary_expression "(char)local_64 == '\b'" (cast_expression "(char)local_64" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\b'" ' escape_sequence ')) )) { (if_statement "if ((local_64 & 0xe000) != 0) {\n        pcVar6 = "unknown header flags set";\n        goto LAB_000188eb;\n      }" if (parenthesized_expression "((local_64 & 0xe000) != 0)" ( (binary_expression "(local_64 & 0xe000) != 0" (parenthesized_expression "(local_64 & 0xe000)" ( (binary_expression "local_64 & 0xe000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        pcVar6 = "unknown header flags set";\n        goto LAB_000188eb;\n      }" { (expression_statement "pcVar6 = "unknown header flags set";" (assignment_expression "pcVar6 = "unknown header flags set"" identifier = (string_literal ""unknown header flags set"" " string_content ")) ;) (goto_statement "goto LAB_000188eb;" goto statement_identifier ;) })) (if_statement "if (*(uint **)(uVar2 + 0x24) != (uint *)0x0) {\n        **(uint **)(uVar2 + 0x24) = local_64 >> 8 & 1;\n      }" if (parenthesized_expression "(*(uint **)(uVar2 + 0x24) != (uint *)0x0)" ( (binary_expression "*(uint **)(uVar2 + 0x24) != (uint *)0x0" (pointer_expression "*(uint **)(uVar2 + 0x24)" * (cast_expression "(uint **)(uVar2 + 0x24)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        **(uint **)(uVar2 + 0x24) = local_64 >> 8 & 1;\n      }" { (expression_statement "**(uint **)(uVar2 + 0x24) = local_64 >> 8 & 1;" (assignment_expression "**(uint **)(uVar2 + 0x24) = local_64 >> 8 & 1" (pointer_expression "**(uint **)(uVar2 + 0x24)" * (pointer_expression "*(uint **)(uVar2 + 0x24)" * (cast_expression "(uint **)(uVar2 + 0x24)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) ))))) = (binary_expression "local_64 >> 8 & 1" (binary_expression "local_64 >> 8" identifier >> number_literal) & number_literal)) ;) })) (if_statement "if (((local_64 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uStack_24 = (undefined2)local_64;\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2,uVar2);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" if (parenthesized_expression "(((local_64 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0))" ( (binary_expression "((local_64 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)" (parenthesized_expression "((local_64 & 0x200) != 0)" ( (binary_expression "(local_64 & 0x200) != 0" (parenthesized_expression "(local_64 & 0x200)" ( (binary_expression "local_64 & 0x200" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) != 0)" ( (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" ( (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" * (cast_expression "(byte *)(uVar2 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        uStack_24 = (undefined2)local_64;\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2,uVar2);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" { (expression_statement "uStack_24 = (undefined2)local_64;" (assignment_expression "uStack_24 = (undefined2)local_64" identifier = (cast_expression "(undefined2)local_64" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (expression_statement "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2,uVar2);" (assignment_expression "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2,uVar2)" identifier = (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2,uVar2)" identifier (argument_list "(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2,uVar2)" ( (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) , (pointer_expression "&uStack_24" & identifier) , number_literal , identifier )))) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f36;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f36" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) do { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (labeled_statement "joined_r0x00018053:\n      } while (uVar15 < 0x20);" statement_identifier : (ERROR "}" }) (while_statement "while (uVar15 < 0x20);" while (parenthesized_expression "(uVar15 < 0x20)" ( (binary_expression "uVar15 < 0x20" identifier < number_literal) )) (expression_statement ";" ;))) (if_statement "if (*(int *)(uVar2 + 0x24) != 0) {\n        *(uint *)(*(int *)(uVar2 + 0x24) + 4) = local_64;\n      }" if (parenthesized_expression "(*(int *)(uVar2 + 0x24) != 0)" ( (binary_expression "*(int *)(uVar2 + 0x24) != 0" (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        *(uint *)(*(int *)(uVar2 + 0x24) + 4) = local_64;\n      }" { (expression_statement "*(uint *)(*(int *)(uVar2 + 0x24) + 4) = local_64;" (assignment_expression "*(uint *)(*(int *)(uVar2 + 0x24) + 4) = local_64" (pointer_expression "*(uint *)(*(int *)(uVar2 + 0x24) + 4)" * (cast_expression "(uint *)(*(int *)(uVar2 + 0x24) + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(uVar2 + 0x24) + 4)" ( (binary_expression "*(int *)(uVar2 + 0x24) + 4" (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) + number_literal) )))) = identifier) ;) })) (if_statement "if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uStack_24 = (undefined2)local_64;\n        uStack_22 = (undefined1)(local_64 >> 0x10);\n        uStack_21 = (undefined1)(local_64 >> 0x18);\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,4);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" if (parenthesized_expression "(((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0))" ( (binary_expression "((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)" (parenthesized_expression "((*(byte *)(uVar2 + 0x15) & 2) != 0)" ( (binary_expression "(*(byte *)(uVar2 + 0x15) & 2) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0x15) & 2)" ( (binary_expression "*(byte *)(uVar2 + 0x15) & 2" (pointer_expression "*(byte *)(uVar2 + 0x15)" * (cast_expression "(byte *)(uVar2 + 0x15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x15)" ( (binary_expression "uVar2 + 0x15" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) != 0)" ( (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" ( (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" * (cast_expression "(byte *)(uVar2 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        uStack_24 = (undefined2)local_64;\n        uStack_22 = (undefined1)(local_64 >> 0x10);\n        uStack_21 = (undefined1)(local_64 >> 0x18);\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,4);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" { (expression_statement "uStack_24 = (undefined2)local_64;" (assignment_expression "uStack_24 = (undefined2)local_64" identifier = (cast_expression "(undefined2)local_64" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (expression_statement "uStack_22 = (undefined1)(local_64 >> 0x10);" (assignment_expression "uStack_22 = (undefined1)(local_64 >> 0x10)" identifier = (call_expression "(undefined1)(local_64 >> 0x10)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "(local_64 >> 0x10)" ( (binary_expression "local_64 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "uStack_21 = (undefined1)(local_64 >> 0x18);" (assignment_expression "uStack_21 = (undefined1)(local_64 >> 0x18)" identifier = (call_expression "(undefined1)(local_64 >> 0x18)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "(local_64 >> 0x18)" ( (binary_expression "local_64 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,4);" (assignment_expression "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,4)" identifier = (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,4)" identifier (argument_list "(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,4)" ( (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) , (pointer_expression "&uStack_24" & identifier) , number_literal )))) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f37;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f37" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) do (ERROR "{\n        if (local_6c == 0) goto LAB_00017f30;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = local_60 + 1;\njoined_r0x000180e3:\n      } while (uVar15 < 0x10);\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(uint *)(iVar5 + 8) = local_64 & 0xff;\n        *(uint *)(iVar5 + 0xc) = local_64 >> 8;\n      }\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uStack_24 = (undefined2)local_64;\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      *(undefined4 *)(uVar2 + 4) = 0x3f38;\n      if ((uVar21 & 0x400) == 0) {\n        uVar15 = 0;\n        local_64 = 0;\ncode_r0x000181ae:\n        if (*(int *)(uVar2 + 0x24) != 0) {\n          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;\n        }\n        goto code_r0x000181c0;\n      }\n      local_64 = 0;\n      uVar15 = 0;\ncode_r0x0001829d:\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x000182ea;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }\n    else {\n      param_1[6] = (int)"unknown compression method";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\nLAB_00018817:\n      uVar21 = 0xfffffffd;\n    }\n  }\n  goto LAB_00017f32;\ncode_r0x000182ea:\n  *(uint *)(uVar2 + 0x44) = local_64;\n  if (*(int *)(uVar2 + 0x24) != 0) {\n    *(uint *)(*(int *)(uVar2 + 0x24) + 0x14) = local_64;\n  }\n  if (((uVar21 & 0x200) == 0) || ((*(byte *)(uVar2 + 0xc) & 4) == 0)) {\n    uVar15 = 0;\n    local_64 = 0;\n  }\n  else {\n    uVar15 = 0;\n    uStack_24 = (undefined2)local_64;\n    uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n    *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n    local_64 = 0;\n    uVar21 = *(uint *)(uVar2 + 0x14);\n  }\ncode_r0x000181c0:\n  *(undefined4 *)(uVar2 + 4) = 0x3f39;\ncode_r0x000181cb:\n  if ((uVar21 & 0x400) == 0) {\ncode_r0x0001826a:\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3a;\ncode_r0x0001832f:\n    if ((uVar21 & 0x800) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3b;\ncode_r0x0001835c:\n    if ((uVar21 & 0x1000) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 4) = 0x3f3c;\ncode_r0x00018382:\n    if ((uVar21 & 0x200) == 0) {\ncode_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }\n      iVar5 = crc32(0,0,0);\n      *(int *)(uVar2 + 0x1c) = iVar5;\n      param_1[0xc] = iVar5;\n      *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n      goto LAB_00017f13;\n    }\n    if (uVar15 < 0x10) {\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }\n    else {\ncode_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }\n      param_1[6] = (int)"header crc mismatch";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n    }\n  }\n  else {\n    uVar14 = *(uint *)(uVar2 + 0x44);\n    uVar17 = local_6c;\n    if (uVar14 < local_6c) {\n      uVar17 = uVar14;\n    }\n    if (uVar17 != 0) {\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_6c = local_6c - uVar17;\n      local_60 = local_60 + uVar17;\n      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;\n      *(uint *)(uVar2 + 0x44) = uVar14;\n    }\n    if (uVar14 == 0) {\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      goto code_r0x0001826a;\n    }\nLAB_00017f30:\n    uVar21 = 0;\n  }\n  goto LAB_00017f32;\nLAB_00017996:\n  iVar5 = local_50 - local_5c;\n  param_1[5] = param_1[5] + iVar5;\n  *(int *)(uVar2 + 0x20) = *(int *)(uVar2 + 0x20) + iVar5;\n  uVar14 = uVar21 & 4;\n  if ((uVar14 != 0) && (iVar5 != 0)) {\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    else {\n      iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    *(int *)(uVar2 + 0x1c) = iVar5;\n    param_1[0xc] = iVar5;\n    uVar21 = *(uint *)(uVar2 + 0xc);\n    uVar14 = uVar21 & 4;\n  }\n  if (uVar14 != 0) {\n    uVar14 = local_64;\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100;\n    }\n    if (*(uint *)(uVar2 + 0x1c) != uVar14) {\n      param_1[6] = (int)"incorrect data check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      local_50 = local_5c;\n      goto LAB_00017f32;\n    }\n  }\n  uVar15 = 0;\n  local_64 = 0;\n  local_50 = local_5c;\nLAB_00018e20:\n  *(undefined4 *)(uVar2 + 4) = 0x3f4f;\nLAB_000183ff:\n  if ((uVar21 != 0) && (*(int *)(uVar2 + 0x14) != 0)) {\n    for (; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n      if (local_6c == 0) goto LAB_00017f30;\n      local_6c = local_6c - 1;\n      local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n      local_60 = local_60 + 1;\n    }\n    if (*(uint *)(uVar2 + 0x20) != local_64) {\n      param_1[6] = (int)"incorrect length check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      goto LAB_00017f32;\n    }\n    uVar15 = 0;\n    local_64 = 0;\n  }\n  uVar21 = 1;\n  *(undefined4 *)(uVar2 + 4) = 0x3f50;\n  goto LAB_00017f32;\nLAB_00018d40:\n  uVar21 = 0;\n  local_60 = pbVar20;\n  goto LAB_00017f32;\ncode_r0x00018d1f:\n  *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n  *(undefined4 *)(uVar2 + 4) = 0x3f3f;\nLAB_00017f13:\n  if (param_2 - 5U < 2) goto LAB_00017f30;\n  goto LAB_0001790a;\n  while (local_6c != 0) {\nLAB_00017970:\n    pbVar20 = local_60 + 1;\n    local_6c = local_6c - 1;\n    bVar25 = (byte)uVar15;\n    uVar15 = uVar15 + 8;\n    local_64 = local_64 + ((uint)*local_60 << (bVar25 & 0x1f));\n    local_60 = pbVar20;\n    if (0x1f < uVar15) goto LAB_00017996;\n  }\nLAB_000190a2:\n  uVar21 = 0;\n  local_60 = pbVar20;\nLAB_00017f32:\n  *param_1 = (int)local_60;\n  param_1[3] = (int)__dest;\n  param_1[1] = local_6c;\n  param_1[4] = local_5c;\n  *(uint *)(uVar2 + 0x3c) = local_64;\n  *(uint *)(uVar2 + 0x40) = uVar15;\n  if ((*(int *)(uVar2 + 0x2c) != 0) ||\n     (((local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&\n      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)))))) {\n    iVar5 = FUN_000172e0();\n    if (iVar5 != 0) {\n      *(undefined4 *)(uVar2 + 4) = 0x3f52;\ncode_r0x00018770:\n      uVar21 = 0xfffffffc;\n      goto LAB_00018778;\n    }\n    local_6c = param_1[1];\n    local_5c = param_1[4];\n  }\n  iVar5 = local_50 - local_5c;\n  param_1[2] = param_1[2] + (uVar1 - local_6c);\n  param_1[5] = param_1[5] + iVar5;\n  *(int *)(uVar2 + 0x20) = *(int *)(uVar2 + 0x20) + iVar5;\n  if (((*(byte *)(uVar2 + 0xc) & 4) != 0) && (iVar5 != 0)) {\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    else {\n      iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    *(int *)(uVar2 + 0x1c) = iVar7;\n    param_1[0xc] = iVar7;\n  }\n  iVar7 = *(int *)(uVar2 + 0x40);\n  if (*(int *)(uVar2 + 8) != 0) {\n    iVar7 = iVar7 + 0x40;\n  }\n  iVar3 = *(int *)(uVar2 + 4);\n  local_4c = 0;\n  if (iVar3 == 0x3f3f) {\n    iVar7 = iVar7 + 0x80;\n  }\n  else if ((iVar3 == 0x3f47) || (iVar3 == 0x3f42)) {\n    local_4c = 0x100;\n  }\n  param_1[0xb] = iVar7 + local_4c;\n  if (((uVar1 - local_6c == 0 && iVar5 == 0) || (param_2 == 4)) && (uVar21 == 0)) {\n    uVar21 = 0xfffffffb;\n  }\nLAB_00018778:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar21;\n  }" (compound_statement "{\n        if (local_6c == 0) goto LAB_00017f30;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = local_60 + 1;\njoined_r0x000180e3:\n      } while (uVar15 < 0x10);\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(uint *)(iVar5 + 8) = local_64 & 0xff;\n        *(uint *)(iVar5 + 0xc) = local_64 >> 8;\n      }\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uStack_24 = (undefined2)local_64;\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      *(undefined4 *)(uVar2 + 4) = 0x3f38;\n      if ((uVar21 & 0x400) == 0) {\n        uVar15 = 0;\n        local_64 = 0;\ncode_r0x000181ae:\n        if (*(int *)(uVar2 + 0x24) != 0) {\n          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;\n        }\n        goto code_r0x000181c0;\n      }\n      local_64 = 0;\n      uVar15 = 0;\ncode_r0x0001829d:\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x000182ea;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }" { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (labeled_statement "joined_r0x000180e3:\n      } while (uVar15 < 0x10);" statement_identifier : (ERROR "}" }) (while_statement "while (uVar15 < 0x10);" while (parenthesized_expression "(uVar15 < 0x10)" ( (binary_expression "uVar15 < 0x10" identifier < number_literal) )) (expression_statement ";" ;))) (expression_statement "iVar5 = *(int *)(uVar2 + 0x24);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x24)" identifier = (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 != 0) {\n        *(uint *)(iVar5 + 8) = local_64 & 0xff;\n        *(uint *)(iVar5 + 0xc) = local_64 >> 8;\n      }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n        *(uint *)(iVar5 + 8) = local_64 & 0xff;\n        *(uint *)(iVar5 + 0xc) = local_64 >> 8;\n      }" { (expression_statement "*(uint *)(iVar5 + 8) = local_64 & 0xff;" (assignment_expression "*(uint *)(iVar5 + 8) = local_64 & 0xff" (pointer_expression "*(uint *)(iVar5 + 8)" * (cast_expression "(uint *)(iVar5 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 8)" ( (binary_expression "iVar5 + 8" identifier + number_literal) )))) = (binary_expression "local_64 & 0xff" identifier & number_literal)) ;) (expression_statement "*(uint *)(iVar5 + 0xc) = local_64 >> 8;" (assignment_expression "*(uint *)(iVar5 + 0xc) = local_64 >> 8" (pointer_expression "*(uint *)(iVar5 + 0xc)" * (cast_expression "(uint *)(iVar5 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) )))) = (binary_expression "local_64 >> 8" identifier >> number_literal)) ;) })) (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uStack_24 = (undefined2)local_64;\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }" if (parenthesized_expression "(((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0))" ( (binary_expression "((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)" (parenthesized_expression "((uVar21 & 0x200) != 0)" ( (binary_expression "(uVar21 & 0x200) != 0" (parenthesized_expression "(uVar21 & 0x200)" ( (binary_expression "uVar21 & 0x200" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) != 0)" ( (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" ( (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" * (cast_expression "(byte *)(uVar2 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        uStack_24 = (undefined2)local_64;\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }" { (expression_statement "uStack_24 = (undefined2)local_64;" (assignment_expression "uStack_24 = (undefined2)local_64" identifier = (cast_expression "(undefined2)local_64" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (expression_statement "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);" (assignment_expression "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2)" identifier = (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2)" identifier (argument_list "(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2)" ( (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) , (pointer_expression "&uStack_24" & identifier) , number_literal )))) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) ))))) ;) })) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f38;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f38" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (if_statement "if ((uVar21 & 0x400) == 0) {\n        uVar15 = 0;\n        local_64 = 0;\ncode_r0x000181ae:\n        if (*(int *)(uVar2 + 0x24) != 0) {\n          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;\n        }\n        goto code_r0x000181c0;\n      }" if (parenthesized_expression "((uVar21 & 0x400) == 0)" ( (binary_expression "(uVar21 & 0x400) == 0" (parenthesized_expression "(uVar21 & 0x400)" ( (binary_expression "uVar21 & 0x400" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        uVar15 = 0;\n        local_64 = 0;\ncode_r0x000181ae:\n        if (*(int *)(uVar2 + 0x24) != 0) {\n          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;\n        }\n        goto code_r0x000181c0;\n      }" { (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (labeled_statement "code_r0x000181ae:\n        if (*(int *)(uVar2 + 0x24) != 0) {\n          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;\n        }" statement_identifier : (if_statement "if (*(int *)(uVar2 + 0x24) != 0) {\n          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;\n        }" if (parenthesized_expression "(*(int *)(uVar2 + 0x24) != 0)" ( (binary_expression "*(int *)(uVar2 + 0x24) != 0" (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;\n        }" { (expression_statement "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;" (assignment_expression "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0" (pointer_expression "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10)" * (cast_expression "(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(uVar2 + 0x24) + 0x10)" ( (binary_expression "*(int *)(uVar2 + 0x24) + 0x10" (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) + number_literal) )))) = number_literal) ;) }))) (goto_statement "goto code_r0x000181c0;" goto statement_identifier ;) })) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (labeled_statement "code_r0x0001829d:\n      if (local_6c == 0) goto LAB_00017f30;" statement_identifier : (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;))) (do_statement "do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x000182ea;\n      } while (local_6c != 0);" do (compound_statement "{\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x000182ea;\n      }" { (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" identifier = identifier) ;) (if_statement "if (0xf < uVar15) goto code_r0x000182ea;" if (parenthesized_expression "(0xf < uVar15)" ( (binary_expression "0xf < uVar15" number_literal < identifier) )) (goto_statement "goto code_r0x000182ea;" goto statement_identifier ;)) }) while (parenthesized_expression "(local_6c != 0)" ( (binary_expression "local_6c != 0" identifier != number_literal) )) ;) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) }) else (compound_statement "{\n      param_1[6] = (int)"unknown compression method";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\nLAB_00018817:\n      uVar21 = 0xfffffffd;\n    }" { (expression_statement "param_1[6] = (int)"unknown compression method";" (assignment_expression "param_1[6] = (int)"unknown compression method"" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)"unknown compression method"" ( (type_descriptor "int" primitive_type) ) (string_literal ""unknown compression method"" " string_content "))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "LAB_00018817:\n      uVar21 = 0xfffffffd;" statement_identifier : (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" identifier = number_literal) ;)) }) } (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) (labeled_statement "code_r0x000182ea:\n  *(uint *)(uVar2 + 0x44) = local_64;" statement_identifier : (expression_statement "*(uint *)(uVar2 + 0x44) = local_64;" (assignment_expression "*(uint *)(uVar2 + 0x44) = local_64" (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = identifier) ;)) (if_statement "if (*(int *)(uVar2 + 0x24) != 0) {\n    *(uint *)(*(int *)(uVar2 + 0x24) + 0x14) = local_64;\n  }" if (parenthesized_expression "(*(int *)(uVar2 + 0x24) != 0)" ( (binary_expression "*(int *)(uVar2 + 0x24) != 0" (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    *(uint *)(*(int *)(uVar2 + 0x24) + 0x14) = local_64;\n  }" { (expression_statement "*(uint *)(*(int *)(uVar2 + 0x24) + 0x14) = local_64;" (assignment_expression "*(uint *)(*(int *)(uVar2 + 0x24) + 0x14) = local_64" (pointer_expression "*(uint *)(*(int *)(uVar2 + 0x24) + 0x14)" * (cast_expression "(uint *)(*(int *)(uVar2 + 0x24) + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(uVar2 + 0x24) + 0x14)" ( (binary_expression "*(int *)(uVar2 + 0x24) + 0x14" (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) + number_literal) )))) = identifier) ;) })) (if_statement "if (((uVar21 & 0x200) == 0) || ((*(byte *)(uVar2 + 0xc) & 4) == 0)) {\n    uVar15 = 0;\n    local_64 = 0;\n  }\n  else {\n    uVar15 = 0;\n    uStack_24 = (undefined2)local_64;\n    uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n    *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n    local_64 = 0;\n    uVar21 = *(uint *)(uVar2 + 0x14);\n  }" if (parenthesized_expression "(((uVar21 & 0x200) == 0) || ((*(byte *)(uVar2 + 0xc) & 4) == 0))" ( (binary_expression "((uVar21 & 0x200) == 0) || ((*(byte *)(uVar2 + 0xc) & 4) == 0)" (parenthesized_expression "((uVar21 & 0x200) == 0)" ( (binary_expression "(uVar21 & 0x200) == 0" (parenthesized_expression "(uVar21 & 0x200)" ( (binary_expression "uVar21 & 0x200" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) == 0)" ( (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) == 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" ( (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" * (cast_expression "(byte *)(uVar2 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    uVar15 = 0;\n    local_64 = 0;\n  }" { (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    uVar15 = 0;\n    uStack_24 = (undefined2)local_64;\n    uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n    *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n    local_64 = 0;\n    uVar21 = *(uint *)(uVar2 + 0x14);\n  }" else (compound_statement "{\n    uVar15 = 0;\n    uStack_24 = (undefined2)local_64;\n    uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n    *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n    local_64 = 0;\n    uVar21 = *(uint *)(uVar2 + 0x14);\n  }" { (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "uStack_24 = (undefined2)local_64;" (assignment_expression "uStack_24 = (undefined2)local_64" identifier = (cast_expression "(undefined2)local_64" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (expression_statement "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);" (assignment_expression "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2)" identifier = (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2)" identifier (argument_list "(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2)" ( (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) , (pointer_expression "&uStack_24" & identifier) , number_literal )))) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) ))))) ;) }))) (labeled_statement "code_r0x000181c0:\n  *(undefined4 *)(uVar2 + 4) = 0x3f39;" statement_identifier : (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f39;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f39" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;)) (labeled_statement "code_r0x000181cb:\n  if ((uVar21 & 0x400) == 0) {\ncode_r0x0001826a:\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3a;\ncode_r0x0001832f:\n    if ((uVar21 & 0x800) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3b;\ncode_r0x0001835c:\n    if ((uVar21 & 0x1000) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 4) = 0x3f3c;\ncode_r0x00018382:\n    if ((uVar21 & 0x200) == 0) {\ncode_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }\n      iVar5 = crc32(0,0,0);\n      *(int *)(uVar2 + 0x1c) = iVar5;\n      param_1[0xc] = iVar5;\n      *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n      goto LAB_00017f13;\n    }\n    if (uVar15 < 0x10) {\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }\n    else {\ncode_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }\n      param_1[6] = (int)"header crc mismatch";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n    }\n  }\n  else {\n    uVar14 = *(uint *)(uVar2 + 0x44);\n    uVar17 = local_6c;\n    if (uVar14 < local_6c) {\n      uVar17 = uVar14;\n    }\n    if (uVar17 != 0) {\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_6c = local_6c - uVar17;\n      local_60 = local_60 + uVar17;\n      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;\n      *(uint *)(uVar2 + 0x44) = uVar14;\n    }\n    if (uVar14 == 0) {\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      goto code_r0x0001826a;\n    }\nLAB_00017f30:\n    uVar21 = 0;\n  }" statement_identifier : (if_statement "if ((uVar21 & 0x400) == 0) {\ncode_r0x0001826a:\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3a;\ncode_r0x0001832f:\n    if ((uVar21 & 0x800) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3b;\ncode_r0x0001835c:\n    if ((uVar21 & 0x1000) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 4) = 0x3f3c;\ncode_r0x00018382:\n    if ((uVar21 & 0x200) == 0) {\ncode_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }\n      iVar5 = crc32(0,0,0);\n      *(int *)(uVar2 + 0x1c) = iVar5;\n      param_1[0xc] = iVar5;\n      *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n      goto LAB_00017f13;\n    }\n    if (uVar15 < 0x10) {\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }\n    else {\ncode_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }\n      param_1[6] = (int)"header crc mismatch";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n    }\n  }\n  else {\n    uVar14 = *(uint *)(uVar2 + 0x44);\n    uVar17 = local_6c;\n    if (uVar14 < local_6c) {\n      uVar17 = uVar14;\n    }\n    if (uVar17 != 0) {\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_6c = local_6c - uVar17;\n      local_60 = local_60 + uVar17;\n      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;\n      *(uint *)(uVar2 + 0x44) = uVar14;\n    }\n    if (uVar14 == 0) {\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      goto code_r0x0001826a;\n    }\nLAB_00017f30:\n    uVar21 = 0;\n  }" if (parenthesized_expression "((uVar21 & 0x400) == 0)" ( (binary_expression "(uVar21 & 0x400) == 0" (parenthesized_expression "(uVar21 & 0x400)" ( (binary_expression "uVar21 & 0x400" identifier & number_literal) )) == number_literal) )) (compound_statement "{\ncode_r0x0001826a:\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3a;\ncode_r0x0001832f:\n    if ((uVar21 & 0x800) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3b;\ncode_r0x0001835c:\n    if ((uVar21 & 0x1000) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 4) = 0x3f3c;\ncode_r0x00018382:\n    if ((uVar21 & 0x200) == 0) {\ncode_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }\n      iVar5 = crc32(0,0,0);\n      *(int *)(uVar2 + 0x1c) = iVar5;\n      param_1[0xc] = iVar5;\n      *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n      goto LAB_00017f13;\n    }\n    if (uVar15 < 0x10) {\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }\n    else {\ncode_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }\n      param_1[6] = (int)"header crc mismatch";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n    }\n  }" { (labeled_statement "code_r0x0001826a:\n    *(undefined4 *)(uVar2 + 0x44) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(uVar2 + 0x44) = 0;" (assignment_expression "*(undefined4 *)(uVar2 + 0x44) = 0" (pointer_expression "*(undefined4 *)(uVar2 + 0x44)" * (cast_expression "(undefined4 *)(uVar2 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3a;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3a" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "code_r0x0001832f:\n    if ((uVar21 & 0x800) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }" statement_identifier : (if_statement "if ((uVar21 & 0x800) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }" if (parenthesized_expression "((uVar21 & 0x800) == 0)" ( (binary_expression "(uVar21 & 0x800) == 0" (parenthesized_expression "(uVar21 & 0x800)" ( (binary_expression "uVar21 & 0x800" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }\n    }" { (if_statement "if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }" if (parenthesized_expression "(*(int *)(uVar2 + 0x24) != 0)" ( (binary_expression "*(int *)(uVar2 + 0x24) != 0" (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }" { (expression_statement "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;" (assignment_expression "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0" (pointer_expression "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c)" * (cast_expression "(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(uVar2 + 0x24) + 0x1c)" ( (binary_expression "*(int *)(uVar2 + 0x24) + 0x1c" (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) + number_literal) )))) = number_literal) ;) })) }) (else_clause "else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }" else (compound_statement "{\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }" { (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (if_statement "if (local_6c == 0) goto LAB_00017f32;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;)) (do_statement "do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));" do (compound_statement "{\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      }" { (expression_statement "iVar5 = *(int *)(uVar2 + 0x24);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x24)" identifier = (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "uVar14 = uVar21 + 1;" (assignment_expression "uVar14 = uVar21 + 1" identifier = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) (expression_statement "bVar12 = local_60[uVar21];" (assignment_expression "bVar12 = local_60[uVar21]" identifier = (subscript_expression "local_60[uVar21]" identifier [ identifier ])) ;) (if_statement "if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }" if (parenthesized_expression "(((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20)))" ( (binary_expression "((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))" (parenthesized_expression "((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0))" ( (binary_expression "(iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)" ( (comma_expression "iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0" (assignment_expression "iVar7 = *(int *)(iVar5 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar5 + 0x1c)" * (cast_expression "(int *)(iVar5 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x1c)" ( (binary_expression "iVar5 + 0x1c" identifier + number_literal) ))))) , (binary_expression "iVar7 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))" ( (comma_expression "uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20)" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x44)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) ))))) , (binary_expression "uVar21 < *(uint *)(iVar5 + 0x20)" identifier < (pointer_expression "*(uint *)(iVar5 + 0x20)" * (cast_expression "(uint *)(iVar5 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x20)" ( (binary_expression "iVar5 + 0x20" identifier + number_literal) )))))) ))) )) (compound_statement "{\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }" { (expression_statement "*(uint *)(uVar2 + 0x44) = uVar21 + 1;" (assignment_expression "*(uint *)(uVar2 + 0x44) = uVar21 + 1" (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) (expression_statement "*(byte *)(iVar7 + uVar21) = bVar12;" (assignment_expression "*(byte *)(iVar7 + uVar21) = bVar12" (pointer_expression "*(byte *)(iVar7 + uVar21)" * (cast_expression "(byte *)(iVar7 + uVar21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + uVar21)" ( (binary_expression "iVar7 + uVar21" identifier + identifier) )))) = identifier) ;) })) }) while (parenthesized_expression "((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c))" ( (binary_expression "(bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c)" (parenthesized_expression "(bVar12 != 0)" ( (binary_expression "bVar12 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar21 = uVar14, uVar14 < local_6c)" ( (comma_expression "uVar21 = uVar14, uVar14 < local_6c" (assignment_expression "uVar21 = uVar14" identifier = identifier) , (binary_expression "uVar14 < local_6c" identifier < identifier)) ))) )) ;) (if_statement "if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" if (parenthesized_expression "(((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0))" ( (binary_expression "((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)" (parenthesized_expression "((*(byte *)(uVar2 + 0x15) & 2) != 0)" ( (binary_expression "(*(byte *)(uVar2 + 0x15) & 2) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0x15) & 2)" ( (binary_expression "*(byte *)(uVar2 + 0x15) & 2" (pointer_expression "*(byte *)(uVar2 + 0x15)" * (cast_expression "(byte *)(uVar2 + 0x15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x15)" ( (binary_expression "uVar2 + 0x15" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) != 0)" ( (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" ( (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" * (cast_expression "(byte *)(uVar2 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" { (expression_statement "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);" (assignment_expression "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14)" identifier = (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14)" identifier (argument_list "(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14)" ( (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) , identifier , identifier )))) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "local_60 = local_60 + uVar14;" (assignment_expression "local_60 = local_60 + uVar14" identifier = (binary_expression "local_60 + uVar14" identifier + identifier)) ;) (expression_statement "local_6c = local_6c - uVar14;" (assignment_expression "local_6c = local_6c - uVar14" identifier = (binary_expression "local_6c - uVar14" identifier - identifier)) ;) (if_statement "if (bVar12 != 0) goto LAB_00017f30;" if (parenthesized_expression "(bVar12 != 0)" ( (binary_expression "bVar12 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) ))))) ;) })))) (expression_statement "*(undefined4 *)(uVar2 + 0x44) = 0;" (assignment_expression "*(undefined4 *)(uVar2 + 0x44) = 0" (pointer_expression "*(undefined4 *)(uVar2 + 0x44)" * (cast_expression "(undefined4 *)(uVar2 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3b;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3b" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "code_r0x0001835c:\n    if ((uVar21 & 0x1000) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }" statement_identifier : (if_statement "if ((uVar21 & 0x1000) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }" if (parenthesized_expression "((uVar21 & 0x1000) == 0)" ( (binary_expression "(uVar21 & 0x1000) == 0" (parenthesized_expression "(uVar21 & 0x1000)" ( (binary_expression "uVar21 & 0x1000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }\n    }" { (if_statement "if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }" if (parenthesized_expression "(*(int *)(uVar2 + 0x24) != 0)" ( (binary_expression "*(int *)(uVar2 + 0x24) != 0" (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }" { (expression_statement "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;" (assignment_expression "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0" (pointer_expression "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24)" * (cast_expression "(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(uVar2 + 0x24) + 0x24)" ( (binary_expression "*(int *)(uVar2 + 0x24) + 0x24" (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) )))) + number_literal) )))) = number_literal) ;) })) }) (else_clause "else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }" else (compound_statement "{\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }" { (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (if_statement "if (local_6c == 0) goto LAB_00017f32;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;)) (do_statement "do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));" do (compound_statement "{\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      }" { (expression_statement "iVar5 = *(int *)(uVar2 + 0x24);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x24)" identifier = (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "uVar14 = uVar21 + 1;" (assignment_expression "uVar14 = uVar21 + 1" identifier = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) (expression_statement "bVar12 = local_60[uVar21];" (assignment_expression "bVar12 = local_60[uVar21]" identifier = (subscript_expression "local_60[uVar21]" identifier [ identifier ])) ;) (if_statement "if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }" if (parenthesized_expression "(((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28)))" ( (binary_expression "((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))" (parenthesized_expression "((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0))" ( (binary_expression "(iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)" ( (comma_expression "iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0" (assignment_expression "iVar7 = *(int *)(iVar5 + 0x24)" identifier = (pointer_expression "*(int *)(iVar5 + 0x24)" * (cast_expression "(int *)(iVar5 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x24)" ( (binary_expression "iVar5 + 0x24" identifier + number_literal) ))))) , (binary_expression "iVar7 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))" ( (comma_expression "uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28)" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x44)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) ))))) , (binary_expression "uVar21 < *(uint *)(iVar5 + 0x28)" identifier < (pointer_expression "*(uint *)(iVar5 + 0x28)" * (cast_expression "(uint *)(iVar5 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x28)" ( (binary_expression "iVar5 + 0x28" identifier + number_literal) )))))) ))) )) (compound_statement "{\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }" { (expression_statement "*(uint *)(uVar2 + 0x44) = uVar21 + 1;" (assignment_expression "*(uint *)(uVar2 + 0x44) = uVar21 + 1" (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) (expression_statement "*(byte *)(iVar7 + uVar21) = bVar12;" (assignment_expression "*(byte *)(iVar7 + uVar21) = bVar12" (pointer_expression "*(byte *)(iVar7 + uVar21)" * (cast_expression "(byte *)(iVar7 + uVar21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + uVar21)" ( (binary_expression "iVar7 + uVar21" identifier + identifier) )))) = identifier) ;) })) }) while (parenthesized_expression "((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c))" ( (binary_expression "(bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c)" (parenthesized_expression "(bVar12 != 0)" ( (binary_expression "bVar12 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar21 = uVar14, uVar14 < local_6c)" ( (comma_expression "uVar21 = uVar14, uVar14 < local_6c" (assignment_expression "uVar21 = uVar14" identifier = identifier) , (binary_expression "uVar14 < local_6c" identifier < identifier)) ))) )) ;) (if_statement "if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" if (parenthesized_expression "(((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0))" ( (binary_expression "((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)" (parenthesized_expression "((*(byte *)(uVar2 + 0x15) & 2) != 0)" ( (binary_expression "(*(byte *)(uVar2 + 0x15) & 2) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0x15) & 2)" ( (binary_expression "*(byte *)(uVar2 + 0x15) & 2" (pointer_expression "*(byte *)(uVar2 + 0x15)" * (cast_expression "(byte *)(uVar2 + 0x15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x15)" ( (binary_expression "uVar2 + 0x15" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) != 0)" ( (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" ( (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" * (cast_expression "(byte *)(uVar2 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" { (expression_statement "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);" (assignment_expression "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14)" identifier = (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14)" identifier (argument_list "(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14)" ( (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) , identifier , identifier )))) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "local_60 = local_60 + uVar14;" (assignment_expression "local_60 = local_60 + uVar14" identifier = (binary_expression "local_60 + uVar14" identifier + identifier)) ;) (expression_statement "local_6c = local_6c - uVar14;" (assignment_expression "local_6c = local_6c - uVar14" identifier = (binary_expression "local_6c - uVar14" identifier - identifier)) ;) (if_statement "if (bVar12 != 0) goto LAB_00017f30;" if (parenthesized_expression "(bVar12 != 0)" ( (binary_expression "bVar12 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) ))))) ;) })))) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3c;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3c" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "code_r0x00018382:\n    if ((uVar21 & 0x200) == 0) {\ncode_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }\n      iVar5 = crc32(0,0,0);\n      *(int *)(uVar2 + 0x1c) = iVar5;\n      param_1[0xc] = iVar5;\n      *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n      goto LAB_00017f13;\n    }" statement_identifier : (if_statement "if ((uVar21 & 0x200) == 0) {\ncode_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }\n      iVar5 = crc32(0,0,0);\n      *(int *)(uVar2 + 0x1c) = iVar5;\n      param_1[0xc] = iVar5;\n      *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n      goto LAB_00017f13;\n    }" if (parenthesized_expression "((uVar21 & 0x200) == 0)" ( (binary_expression "(uVar21 & 0x200) == 0" (parenthesized_expression "(uVar21 & 0x200)" ( (binary_expression "uVar21 & 0x200" identifier & number_literal) )) == number_literal) )) (compound_statement "{\ncode_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }\n      iVar5 = crc32(0,0,0);\n      *(int *)(uVar2 + 0x1c) = iVar5;\n      param_1[0xc] = iVar5;\n      *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n      goto LAB_00017f13;\n    }" { (labeled_statement "code_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);" statement_identifier : (expression_statement "iVar5 = *(int *)(uVar2 + 0x24);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x24)" identifier = (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) ))))) ;)) (if_statement "if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }" { (expression_statement "*(undefined4 *)(iVar5 + 0x30) = 1;" (assignment_expression "*(undefined4 *)(iVar5 + 0x30) = 1" (pointer_expression "*(undefined4 *)(iVar5 + 0x30)" * (cast_expression "(undefined4 *)(iVar5 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x30)" ( (binary_expression "iVar5 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;" (assignment_expression "*(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1" (pointer_expression "*(uint *)(iVar5 + 0x2c)" * (cast_expression "(uint *)(iVar5 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x2c)" ( (binary_expression "iVar5 + 0x2c" identifier + number_literal) )))) = (binary_expression "(int)uVar21 >> 9 & 1" (binary_expression "(int)uVar21 >> 9" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) & number_literal)) ;) })) (expression_statement "iVar5 = crc32(0,0,0);" (assignment_expression "iVar5 = crc32(0,0,0)" identifier = (call_expression "crc32(0,0,0)" identifier (argument_list "(0,0,0)" ( number_literal , number_literal , number_literal )))) ;) (expression_statement "*(int *)(uVar2 + 0x1c) = iVar5;" (assignment_expression "*(int *)(uVar2 + 0x1c) = iVar5" (pointer_expression "*(int *)(uVar2 + 0x1c)" * (cast_expression "(int *)(uVar2 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[0xc] = iVar5;" (assignment_expression "param_1[0xc] = iVar5" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3f;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3f" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00017f13;" goto statement_identifier ;) }))) (if_statement "if (uVar15 < 0x10) {\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }\n    else {\ncode_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }\n      param_1[6] = (int)"header crc mismatch";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n    }" if (parenthesized_expression "(uVar15 < 0x10)" ( (binary_expression "uVar15 < 0x10" identifier < number_literal) )) (compound_statement "{\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }" { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (do_statement "do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      } while (local_6c != 0);" do (compound_statement "{\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      }" { (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar12 & 0x1f)" ( (binary_expression "bVar12 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" identifier = identifier) ;) (if_statement "if (0xf < uVar15) goto code_r0x00018a2e;" if (parenthesized_expression "(0xf < uVar15)" ( (binary_expression "0xf < uVar15" number_literal < identifier) )) (goto_statement "goto code_r0x00018a2e;" goto statement_identifier ;)) }) while (parenthesized_expression "(local_6c != 0)" ( (binary_expression "local_6c != 0" identifier != number_literal) )) ;) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) }) (else_clause "else {\ncode_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }\n      param_1[6] = (int)"header crc mismatch";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n    }" else (compound_statement "{\ncode_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }\n      param_1[6] = (int)"header crc mismatch";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n    }" { (labeled_statement "code_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }" statement_identifier : (if_statement "if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }" if (parenthesized_expression "(((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64))" ( (binary_expression "((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)" (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) == 0)" ( (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) == 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" ( (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" * (cast_expression "(byte *)(uVar2 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "(*(ushort *)(uVar2 + 0x1c) == local_64)" ( (binary_expression "*(ushort *)(uVar2 + 0x1c) == local_64" (pointer_expression "*(ushort *)(uVar2 + 0x1c)" * (cast_expression "(ushort *)(uVar2 + 0x1c)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) == identifier) ))) )) (compound_statement "{\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }" { (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (goto_statement "goto code_r0x0001838b;" goto statement_identifier ;) }))) (expression_statement "param_1[6] = (int)"header crc mismatch";" (assignment_expression "param_1[6] = (int)"header crc mismatch"" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)"header crc mismatch"" ( (type_descriptor "int" primitive_type) ) (string_literal ""header crc mismatch"" " string_content "))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" identifier = number_literal) ;) }))) }) (else_clause "else {\n    uVar14 = *(uint *)(uVar2 + 0x44);\n    uVar17 = local_6c;\n    if (uVar14 < local_6c) {\n      uVar17 = uVar14;\n    }\n    if (uVar17 != 0) {\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_6c = local_6c - uVar17;\n      local_60 = local_60 + uVar17;\n      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;\n      *(uint *)(uVar2 + 0x44) = uVar14;\n    }\n    if (uVar14 == 0) {\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      goto code_r0x0001826a;\n    }\nLAB_00017f30:\n    uVar21 = 0;\n  }" else (compound_statement "{\n    uVar14 = *(uint *)(uVar2 + 0x44);\n    uVar17 = local_6c;\n    if (uVar14 < local_6c) {\n      uVar17 = uVar14;\n    }\n    if (uVar17 != 0) {\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_6c = local_6c - uVar17;\n      local_60 = local_60 + uVar17;\n      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;\n      *(uint *)(uVar2 + 0x44) = uVar14;\n    }\n    if (uVar14 == 0) {\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      goto code_r0x0001826a;\n    }\nLAB_00017f30:\n    uVar21 = 0;\n  }" { (expression_statement "uVar14 = *(uint *)(uVar2 + 0x44);" (assignment_expression "uVar14 = *(uint *)(uVar2 + 0x44)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = local_6c;" (assignment_expression "uVar17 = local_6c" identifier = identifier) ;) (if_statement "if (uVar14 < local_6c) {\n      uVar17 = uVar14;\n    }" if (parenthesized_expression "(uVar14 < local_6c)" ( (binary_expression "uVar14 < local_6c" identifier < identifier) )) (compound_statement "{\n      uVar17 = uVar14;\n    }" { (expression_statement "uVar17 = uVar14;" (assignment_expression "uVar17 = uVar14" identifier = identifier) ;) })) (if_statement "if (uVar17 != 0) {\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_6c = local_6c - uVar17;\n      local_60 = local_60 + uVar17;\n      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;\n      *(uint *)(uVar2 + 0x44) = uVar14;\n    }" if (parenthesized_expression "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_6c = local_6c - uVar17;\n      local_60 = local_60 + uVar17;\n      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;\n      *(uint *)(uVar2 + 0x44) = uVar14;\n    }" { (expression_statement "iVar5 = *(int *)(uVar2 + 0x24);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x24)" identifier = (pointer_expression "*(int *)(uVar2 + 0x24)" * (cast_expression "(int *)(uVar2 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x24)" ( (binary_expression "uVar2 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }" if (parenthesized_expression "((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0))" ( (binary_expression "(iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(int *)(iVar5 + 0x10) != 0)" ( (binary_expression "*(int *)(iVar5 + 0x10) != 0" (pointer_expression "*(int *)(iVar5 + 0x10)" * (cast_expression "(int *)(iVar5 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }" { (expression_statement "iVar7 = *(int *)(iVar5 + 0x14) - uVar14;" (assignment_expression "iVar7 = *(int *)(iVar5 + 0x14) - uVar14" identifier = (binary_expression "*(int *)(iVar5 + 0x14) - uVar14" (pointer_expression "*(int *)(iVar5 + 0x14)" * (cast_expression "(int *)(iVar5 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) - identifier)) ;) (expression_statement "__n = *(uint *)(iVar5 + 0x18) - iVar7;" (assignment_expression "__n = *(uint *)(iVar5 + 0x18) - iVar7" identifier = (binary_expression "*(uint *)(iVar5 + 0x18) - iVar7" (pointer_expression "*(uint *)(iVar5 + 0x18)" * (cast_expression "(uint *)(iVar5 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) )))) - identifier)) ;) (if_statement "if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }" if (parenthesized_expression "(uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18))" ( (binary_expression "uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)" (binary_expression "uVar17 + iVar7" identifier + identifier) <= (pointer_expression "*(uint *)(iVar5 + 0x18)" * (cast_expression "(uint *)(iVar5 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n          __n = uVar17;\n        }" { (expression_statement "__n = uVar17;" (assignment_expression "__n = uVar17" identifier = identifier) ;) })) (expression_statement "memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);" (call_expression "memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n)" identifier (argument_list "((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n)" ( (cast_expression "(void *)(iVar7 + *(int *)(iVar5 + 0x10))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + *(int *)(iVar5 + 0x10))" ( (binary_expression "iVar7 + *(int *)(iVar5 + 0x10)" identifier + (pointer_expression "*(int *)(iVar5 + 0x10)" * (cast_expression "(int *)(iVar5 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) ))))) ))) , identifier , identifier ))) ;) (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) ))))) ;) })) (if_statement "if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" if (parenthesized_expression "(((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0))" ( (binary_expression "((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)" (parenthesized_expression "((uVar21 & 0x200) != 0)" ( (binary_expression "(uVar21 & 0x200) != 0" (parenthesized_expression "(uVar21 & 0x200)" ( (binary_expression "uVar21 & 0x200" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) != 0)" ( (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" ( (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" * (cast_expression "(byte *)(uVar2 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" { (expression_statement "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);" (assignment_expression "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17)" identifier = (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17)" identifier (argument_list "(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17)" ( (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) , identifier , identifier )))) ;) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "local_6c = local_6c - uVar17;" (assignment_expression "local_6c = local_6c - uVar17" identifier = (binary_expression "local_6c - uVar17" identifier - identifier)) ;) (expression_statement "local_60 = local_60 + uVar17;" (assignment_expression "local_60 = local_60 + uVar17" identifier = (binary_expression "local_60 + uVar17" identifier + identifier)) ;) (expression_statement "uVar14 = *(int *)(uVar2 + 0x44) - uVar17;" (assignment_expression "uVar14 = *(int *)(uVar2 + 0x44) - uVar17" identifier = (binary_expression "*(int *)(uVar2 + 0x44) - uVar17" (pointer_expression "*(int *)(uVar2 + 0x44)" * (cast_expression "(int *)(uVar2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) - identifier)) ;) (expression_statement "*(uint *)(uVar2 + 0x44) = uVar14;" (assignment_expression "*(uint *)(uVar2 + 0x44) = uVar14" (pointer_expression "*(uint *)(uVar2 + 0x44)" * (cast_expression "(uint *)(uVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x44)" ( (binary_expression "uVar2 + 0x44" identifier + number_literal) )))) = identifier) ;) })) (if_statement "if (uVar14 == 0) {\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      goto code_r0x0001826a;\n    }" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      goto code_r0x0001826a;\n    }" { (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar2 + 0x14)" * (cast_expression "(uint *)(uVar2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) ))))) ;) (goto_statement "goto code_r0x0001826a;" goto statement_identifier ;) })) (labeled_statement "LAB_00017f30:\n    uVar21 = 0;" statement_identifier : (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;)) })))) goto identifier ; identifier : identifier = identifier - identifier ; identifier [ number_literal ] = identifier [ number_literal ] + identifier ; * ( primitive_type * ) ( identifier + number_literal ) = * ( primitive_type * ) ( identifier + number_literal ) + identifier ; identifier = identifier & number_literal ; (if_statement "if ((uVar14 != 0) && (iVar5 != 0)) {\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    else {\n      iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    *(int *)(uVar2 + 0x1c) = iVar5;\n    param_1[0xc] = iVar5;\n    uVar21 = *(uint *)(uVar2 + 0xc);\n    uVar14 = uVar21 & 4;\n  }" if (parenthesized_expression "((uVar14 != 0) && (iVar5 != 0))" ( (binary_expression "(uVar14 != 0) && (iVar5 != 0)" (parenthesized_expression "(uVar14 != 0)" ( (binary_expression "uVar14 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    else {\n      iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    *(int *)(uVar2 + 0x1c) = iVar5;\n    param_1[0xc] = iVar5;\n    uVar21 = *(uint *)(uVar2 + 0xc);\n    uVar14 = uVar21 & 4;\n  }" { (if_statement "if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    else {\n      iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }" if (parenthesized_expression "(*(int *)(uVar2 + 0x14) == 0)" ( (binary_expression "*(int *)(uVar2 + 0x14) == 0" (pointer_expression "*(int *)(uVar2 + 0x14)" * (cast_expression "(int *)(uVar2 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }" { (expression_statement "iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);" (assignment_expression "iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5)" identifier = (call_expression "adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5)" identifier (argument_list "(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5)" ( (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) , (binary_expression "(int)__dest - iVar5" (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) , identifier )))) ;) }) (else_clause "else {\n      iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }" else (compound_statement "{\n      iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }" { (expression_statement "iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);" (assignment_expression "iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5)" identifier = (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5)" identifier (argument_list "(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5)" ( (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) , (binary_expression "(int)__dest - iVar5" (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) , identifier )))) ;) }))) (expression_statement "*(int *)(uVar2 + 0x1c) = iVar5;" (assignment_expression "*(int *)(uVar2 + 0x1c) = iVar5" (pointer_expression "*(int *)(uVar2 + 0x1c)" * (cast_expression "(int *)(uVar2 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[0xc] = iVar5;" (assignment_expression "param_1[0xc] = iVar5" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar21 = *(uint *)(uVar2 + 0xc);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0xc)" identifier = (pointer_expression "*(uint *)(uVar2 + 0xc)" * (cast_expression "(uint *)(uVar2 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar14 = uVar21 & 4;" (assignment_expression "uVar14 = uVar21 & 4" identifier = (binary_expression "uVar21 & 4" identifier & number_literal)) ;) })) (if_statement "if (uVar14 != 0) {\n    uVar14 = local_64;\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100;\n    }\n    if (*(uint *)(uVar2 + 0x1c) != uVar14) {\n      param_1[6] = (int)"incorrect data check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      local_50 = local_5c;\n      goto LAB_00017f32;\n    }\n  }" if (parenthesized_expression "(uVar14 != 0)" ( (binary_expression "uVar14 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar14 = local_64;\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100;\n    }\n    if (*(uint *)(uVar2 + 0x1c) != uVar14) {\n      param_1[6] = (int)"incorrect data check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      local_50 = local_5c;\n      goto LAB_00017f32;\n    }\n  }" { (expression_statement "uVar14 = local_64;" (assignment_expression "uVar14 = local_64" identifier = identifier) ;) (if_statement "if (*(int *)(uVar2 + 0x14) == 0) {\n      uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100;\n    }" if (parenthesized_expression "(*(int *)(uVar2 + 0x14) == 0)" ( (binary_expression "*(int *)(uVar2 + 0x14) == 0" (pointer_expression "*(int *)(uVar2 + 0x14)" * (cast_expression "(int *)(uVar2 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100;\n    }" { (expression_statement "uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100;" (assignment_expression "uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100" identifier = (binary_expression "(local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100" (binary_expression "(local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00)" (binary_expression "(local_64 >> 0x18) + local_64 * 0x1000000" (parenthesized_expression "(local_64 >> 0x18)" ( (binary_expression "local_64 >> 0x18" identifier >> number_literal) )) + (binary_expression "local_64 * 0x1000000" identifier * number_literal)) + (parenthesized_expression "(local_64 >> 8 & 0xff00)" ( (binary_expression "local_64 >> 8 & 0xff00" (binary_expression "local_64 >> 8" identifier >> number_literal) & number_literal) ))) + (binary_expression "(local_64 & 0xff00) * 0x100" (parenthesized_expression "(local_64 & 0xff00)" ( (binary_expression "local_64 & 0xff00" identifier & number_literal) )) * number_literal))) ;) })) (if_statement "if (*(uint *)(uVar2 + 0x1c) != uVar14) {\n      param_1[6] = (int)"incorrect data check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      local_50 = local_5c;\n      goto LAB_00017f32;\n    }" if (parenthesized_expression "(*(uint *)(uVar2 + 0x1c) != uVar14)" ( (binary_expression "*(uint *)(uVar2 + 0x1c) != uVar14" (pointer_expression "*(uint *)(uVar2 + 0x1c)" * (cast_expression "(uint *)(uVar2 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n      param_1[6] = (int)"incorrect data check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      local_50 = local_5c;\n      goto LAB_00017f32;\n    }" { (expression_statement "param_1[6] = (int)"incorrect data check";" (assignment_expression "param_1[6] = (int)"incorrect data check"" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)"incorrect data check"" ( (type_descriptor "int" primitive_type) ) (string_literal ""incorrect data check"" " string_content "))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" identifier = number_literal) ;) (expression_statement "local_50 = local_5c;" (assignment_expression "local_50 = local_5c" identifier = identifier) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) })) identifier = number_literal ; identifier = number_literal ; identifier = identifier ; (labeled_statement "LAB_00018e20:\n  *(undefined4 *)(uVar2 + 4) = 0x3f4f;" statement_identifier : (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f4f;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f4f" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;)) (labeled_statement "LAB_000183ff:\n  if ((uVar21 != 0) && (*(int *)(uVar2 + 0x14) != 0)) {\n    for (; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n      if (local_6c == 0) goto LAB_00017f30;\n      local_6c = local_6c - 1;\n      local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n      local_60 = local_60 + 1;\n    }\n    if (*(uint *)(uVar2 + 0x20) != local_64) {\n      param_1[6] = (int)"incorrect length check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      goto LAB_00017f32;\n    }\n    uVar15 = 0;\n    local_64 = 0;\n  }" statement_identifier : (if_statement "if ((uVar21 != 0) && (*(int *)(uVar2 + 0x14) != 0)) {\n    for (; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n      if (local_6c == 0) goto LAB_00017f30;\n      local_6c = local_6c - 1;\n      local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n      local_60 = local_60 + 1;\n    }\n    if (*(uint *)(uVar2 + 0x20) != local_64) {\n      param_1[6] = (int)"incorrect length check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      goto LAB_00017f32;\n    }\n    uVar15 = 0;\n    local_64 = 0;\n  }" if (parenthesized_expression "((uVar21 != 0) && (*(int *)(uVar2 + 0x14) != 0))" ( (binary_expression "(uVar21 != 0) && (*(int *)(uVar2 + 0x14) != 0)" (parenthesized_expression "(uVar21 != 0)" ( (binary_expression "uVar21 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(int *)(uVar2 + 0x14) != 0)" ( (binary_expression "*(int *)(uVar2 + 0x14) != 0" (pointer_expression "*(int *)(uVar2 + 0x14)" * (cast_expression "(int *)(uVar2 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n    for (; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n      if (local_6c == 0) goto LAB_00017f30;\n      local_6c = local_6c - 1;\n      local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n      local_60 = local_60 + 1;\n    }\n    if (*(uint *)(uVar2 + 0x20) != local_64) {\n      param_1[6] = (int)"incorrect length check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      goto LAB_00017f32;\n    }\n    uVar15 = 0;\n    local_64 = 0;\n  }" { (for_statement "for (; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n      if (local_6c == 0) goto LAB_00017f30;\n      local_6c = local_6c - 1;\n      local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n      local_60 = local_60 + 1;\n    }" for ( ; (binary_expression "uVar15 < 0x20" identifier < number_literal) ; (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ) (compound_statement "{\n      if (local_6c == 0) goto LAB_00017f30;\n      local_6c = local_6c - 1;\n      local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n      local_60 = local_60 + 1;\n    }" { (if_statement "if (local_6c == 0) goto LAB_00017f30;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;)) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << ((byte)uVar15 & 0x1f))" ( (binary_expression "(uint)*local_60 << ((byte)uVar15 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "((byte)uVar15 & 0x1f)" ( (binary_expression "(byte)uVar15 & 0x1f" (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) })) (if_statement "if (*(uint *)(uVar2 + 0x20) != local_64) {\n      param_1[6] = (int)"incorrect length check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      goto LAB_00017f32;\n    }" if (parenthesized_expression "(*(uint *)(uVar2 + 0x20) != local_64)" ( (binary_expression "*(uint *)(uVar2 + 0x20) != local_64" (pointer_expression "*(uint *)(uVar2 + 0x20)" * (cast_expression "(uint *)(uVar2 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x20)" ( (binary_expression "uVar2 + 0x20" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n      param_1[6] = (int)"incorrect length check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      goto LAB_00017f32;\n    }" { (expression_statement "param_1[6] = (int)"incorrect length check";" (assignment_expression "param_1[6] = (int)"incorrect length check"" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)"incorrect length check"" ( (type_descriptor "int" primitive_type) ) (string_literal ""incorrect length check"" " string_content "))) ;) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" identifier = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) })) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) }))) identifier = number_literal ; (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f50;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f50" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) (labeled_statement "LAB_00018d40:\n  uVar21 = 0;" statement_identifier : (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;)) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" identifier = identifier) ;) (goto_statement "goto LAB_00017f32;" goto statement_identifier ;) (labeled_statement "code_r0x00018d1f:\n  *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;" statement_identifier : (expression_statement "*(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff" (pointer_expression "*(undefined4 *)(uVar2 + 0x1bc8)" * (cast_expression "(undefined4 *)(uVar2 + 0x1bc8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1bc8)" ( (binary_expression "uVar2 + 0x1bc8" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3f;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3f" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "LAB_00017f13:\n  if (param_2 - 5U < 2) goto LAB_00017f30;" statement_identifier : (if_statement "if (param_2 - 5U < 2) goto LAB_00017f30;" if (parenthesized_expression "(param_2 - 5U < 2)" ( (binary_expression "param_2 - 5U < 2" (binary_expression "param_2 - 5U" identifier - number_literal) < number_literal) )) (goto_statement "goto LAB_00017f30;" goto statement_identifier ;))) (goto_statement "goto LAB_0001790a;" goto statement_identifier ;) while (parenthesized_expression "(local_6c != 0)" ( (binary_expression "local_6c != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00017970:\n    pbVar20 = local_60 + 1;\n    local_6c = local_6c - 1;\n    bVar25 = (byte)uVar15;\n    uVar15 = uVar15 + 8;\n    local_64 = local_64 + ((uint)*local_60 << (bVar25 & 0x1f));\n    local_60 = pbVar20;\n    if (0x1f < uVar15) goto LAB_00017996;\n  }" { (labeled_statement "LAB_00017970:\n    pbVar20 = local_60 + 1;" statement_identifier : (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;)) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" identifier = (binary_expression "local_6c - 1" identifier - number_literal)) ;) (expression_statement "bVar25 = (byte)uVar15;" (assignment_expression "bVar25 = (byte)uVar15" identifier = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" identifier = (binary_expression "uVar15 + 8" identifier + number_literal)) ;) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar25 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar25 & 0x1f))" identifier = (binary_expression "local_64 + ((uint)*local_60 << (bVar25 & 0x1f))" identifier + (parenthesized_expression "((uint)*local_60 << (bVar25 & 0x1f))" ( (binary_expression "(uint)*local_60 << (bVar25 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" ( identifier )) * identifier) << (parenthesized_expression "(bVar25 & 0x1f)" ( (binary_expression "bVar25 & 0x1f" identifier & number_literal) ))) )))) ;) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" identifier = identifier) ;) (if_statement "if (0x1f < uVar15) goto LAB_00017996;" if (parenthesized_expression "(0x1f < uVar15)" ( (binary_expression "0x1f < uVar15" number_literal < identifier) )) (goto_statement "goto LAB_00017996;" goto statement_identifier ;)) }) (labeled_statement "LAB_000190a2:\n  uVar21 = 0;" statement_identifier : (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;)) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" identifier = identifier) ;) (labeled_statement "LAB_00017f32:\n  *param_1 = (int)local_60;" statement_identifier : (expression_statement "*param_1 = (int)local_60;" (assignment_expression "*param_1 = (int)local_60" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (expression_statement "param_1[3] = (int)__dest;" (assignment_expression "param_1[3] = (int)__dest" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[1] = local_6c;" (assignment_expression "param_1[1] = local_6c" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[4] = local_5c;" (assignment_expression "param_1[4] = local_5c" (subscript_expression "param_1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(uint *)(uVar2 + 0x3c) = local_64;" (assignment_expression "*(uint *)(uVar2 + 0x3c) = local_64" (pointer_expression "*(uint *)(uVar2 + 0x3c)" * (cast_expression "(uint *)(uVar2 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x3c)" ( (binary_expression "uVar2 + 0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(uVar2 + 0x40) = uVar15;" (assignment_expression "*(uint *)(uVar2 + 0x40) = uVar15" (pointer_expression "*(uint *)(uVar2 + 0x40)" * (cast_expression "(uint *)(uVar2 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x40)" ( (binary_expression "uVar2 + 0x40" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((*(int *)(uVar2 + 0x2c) != 0) ||\n     (((local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&\n      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)))))) {\n    iVar5 = FUN_000172e0();\n    if (iVar5 != 0) {\n      *(undefined4 *)(uVar2 + 4) = 0x3f52;\ncode_r0x00018770:\n      uVar21 = 0xfffffffc;\n      goto LAB_00018778;\n    }\n    local_6c = param_1[1];\n    local_5c = param_1[4];\n  }" if (parenthesized_expression "((*(int *)(uVar2 + 0x2c) != 0) ||\n     (((local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&\n      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4))))))" ( (binary_expression "(*(int *)(uVar2 + 0x2c) != 0) ||\n     (((local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&\n      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)))))" (parenthesized_expression "(*(int *)(uVar2 + 0x2c) != 0)" ( (binary_expression "*(int *)(uVar2 + 0x2c) != 0" (pointer_expression "*(int *)(uVar2 + 0x2c)" * (cast_expression "(int *)(uVar2 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x2c)" ( (binary_expression "uVar2 + 0x2c" identifier + number_literal) )))) != number_literal) )) || (parenthesized_expression "(((local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&\n      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)))))" ( (parenthesized_expression "((local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&\n      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4))))" ( (binary_expression "(local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&\n      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)))" (parenthesized_expression "(local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51))" ( (binary_expression "local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)" (binary_expression "local_5c != local_50" identifier != identifier) && (parenthesized_expression "(*(uint *)(uVar2 + 4) < 0x3f51)" ( (binary_expression "*(uint *)(uVar2 + 4) < 0x3f51" (pointer_expression "*(uint *)(uVar2 + 4)" * (cast_expression "(uint *)(uVar2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) < number_literal) ))) )) && (parenthesized_expression "((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)))" ( (parenthesized_expression "(*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4))" ( (binary_expression "*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)" (binary_expression "*(uint *)(uVar2 + 4) < 0x3f4e" (pointer_expression "*(uint *)(uVar2 + 4)" * (cast_expression "(uint *)(uVar2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) < number_literal) || (parenthesized_expression "(param_2 != 4)" ( (binary_expression "param_2 != 4" identifier != number_literal) ))) )) ))) )) ))) )) (compound_statement "{\n    iVar5 = FUN_000172e0();\n    if (iVar5 != 0) {\n      *(undefined4 *)(uVar2 + 4) = 0x3f52;\ncode_r0x00018770:\n      uVar21 = 0xfffffffc;\n      goto LAB_00018778;\n    }\n    local_6c = param_1[1];\n    local_5c = param_1[4];\n  }" { (expression_statement "iVar5 = FUN_000172e0();" (assignment_expression "iVar5 = FUN_000172e0()" identifier = (call_expression "FUN_000172e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 != 0) {\n      *(undefined4 *)(uVar2 + 4) = 0x3f52;\ncode_r0x00018770:\n      uVar21 = 0xfffffffc;\n      goto LAB_00018778;\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      *(undefined4 *)(uVar2 + 4) = 0x3f52;\ncode_r0x00018770:\n      uVar21 = 0xfffffffc;\n      goto LAB_00018778;\n    }" { (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f52;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f52" (pointer_expression "*(undefined4 *)(uVar2 + 4)" * (cast_expression "(undefined4 *)(uVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "code_r0x00018770:\n      uVar21 = 0xfffffffc;" statement_identifier : (expression_statement "uVar21 = 0xfffffffc;" (assignment_expression "uVar21 = 0xfffffffc" identifier = number_literal) ;)) (goto_statement "goto LAB_00018778;" goto statement_identifier ;) })) (expression_statement "local_6c = param_1[1];" (assignment_expression "local_6c = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "local_5c = param_1[4];" (assignment_expression "local_5c = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) })) (expression_statement "iVar5 = local_50 - local_5c;" (assignment_expression "iVar5 = local_50 - local_5c" identifier = (binary_expression "local_50 - local_5c" identifier - identifier)) ;) (expression_statement "param_1[2] = param_1[2] + (uVar1 - local_6c);" (assignment_expression "param_1[2] = param_1[2] + (uVar1 - local_6c)" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (binary_expression "param_1[2] + (uVar1 - local_6c)" (subscript_expression "param_1[2]" identifier [ number_literal ]) + (parenthesized_expression "(uVar1 - local_6c)" ( (binary_expression "uVar1 - local_6c" identifier - identifier) )))) ;) (expression_statement "param_1[5] = param_1[5] + iVar5;" (assignment_expression "param_1[5] = param_1[5] + iVar5" (subscript_expression "param_1[5]" identifier [ number_literal ]) = (binary_expression "param_1[5] + iVar5" (subscript_expression "param_1[5]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "*(int *)(uVar2 + 0x20) = *(int *)(uVar2 + 0x20) + iVar5;" (assignment_expression "*(int *)(uVar2 + 0x20) = *(int *)(uVar2 + 0x20) + iVar5" (pointer_expression "*(int *)(uVar2 + 0x20)" * (cast_expression "(int *)(uVar2 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x20)" ( (binary_expression "uVar2 + 0x20" identifier + number_literal) )))) = (binary_expression "*(int *)(uVar2 + 0x20) + iVar5" (pointer_expression "*(int *)(uVar2 + 0x20)" * (cast_expression "(int *)(uVar2 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x20)" ( (binary_expression "uVar2 + 0x20" identifier + number_literal) )))) + identifier)) ;) (if_statement "if (((*(byte *)(uVar2 + 0xc) & 4) != 0) && (iVar5 != 0)) {\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    else {\n      iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    *(int *)(uVar2 + 0x1c) = iVar7;\n    param_1[0xc] = iVar7;\n  }" if (parenthesized_expression "(((*(byte *)(uVar2 + 0xc) & 4) != 0) && (iVar5 != 0))" ( (binary_expression "((*(byte *)(uVar2 + 0xc) & 4) != 0) && (iVar5 != 0)" (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) != 0)" ( (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" ( (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" * (cast_expression "(byte *)(uVar2 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0xc)" ( (binary_expression "uVar2 + 0xc" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    else {\n      iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    *(int *)(uVar2 + 0x1c) = iVar7;\n    param_1[0xc] = iVar7;\n  }" { (if_statement "if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    else {\n      iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }" if (parenthesized_expression "(*(int *)(uVar2 + 0x14) == 0)" ( (binary_expression "*(int *)(uVar2 + 0x14) == 0" (pointer_expression "*(int *)(uVar2 + 0x14)" * (cast_expression "(int *)(uVar2 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x14)" ( (binary_expression "uVar2 + 0x14" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }" { (expression_statement "iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);" (assignment_expression "iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5)" identifier = (call_expression "adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5)" identifier (argument_list "(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5)" ( (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) , (binary_expression "param_1[3] - iVar5" (subscript_expression "param_1[3]" identifier [ number_literal ]) - identifier) , identifier )))) ;) }) (else_clause "else {\n      iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }" else (compound_statement "{\n      iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }" { (expression_statement "iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);" (assignment_expression "iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5)" identifier = (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5)" identifier (argument_list "(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5)" ( (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" * (cast_expression "(undefined4 *)(uVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) , (binary_expression "param_1[3] - iVar5" (subscript_expression "param_1[3]" identifier [ number_literal ]) - identifier) , identifier )))) ;) }))) (expression_statement "*(int *)(uVar2 + 0x1c) = iVar7;" (assignment_expression "*(int *)(uVar2 + 0x1c) = iVar7" (pointer_expression "*(int *)(uVar2 + 0x1c)" * (cast_expression "(int *)(uVar2 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x1c)" ( (binary_expression "uVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[0xc] = iVar7;" (assignment_expression "param_1[0xc] = iVar7" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "iVar7 = *(int *)(uVar2 + 0x40);" (assignment_expression "iVar7 = *(int *)(uVar2 + 0x40)" identifier = (pointer_expression "*(int *)(uVar2 + 0x40)" * (cast_expression "(int *)(uVar2 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x40)" ( (binary_expression "uVar2 + 0x40" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(uVar2 + 8) != 0) {\n    iVar7 = iVar7 + 0x40;\n  }" if (parenthesized_expression "(*(int *)(uVar2 + 8) != 0)" ( (binary_expression "*(int *)(uVar2 + 8) != 0" (pointer_expression "*(int *)(uVar2 + 8)" * (cast_expression "(int *)(uVar2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 8)" ( (binary_expression "uVar2 + 8" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    iVar7 = iVar7 + 0x40;\n  }" { (expression_statement "iVar7 = iVar7 + 0x40;" (assignment_expression "iVar7 = iVar7 + 0x40" identifier = (binary_expression "iVar7 + 0x40" identifier + number_literal)) ;) })) (expression_statement "iVar3 = *(int *)(uVar2 + 4);" (assignment_expression "iVar3 = *(int *)(uVar2 + 4)" identifier = (pointer_expression "*(int *)(uVar2 + 4)" * (cast_expression "(int *)(uVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 4)" ( (binary_expression "uVar2 + 4" identifier + number_literal) ))))) ;) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (if_statement "if (iVar3 == 0x3f3f) {\n    iVar7 = iVar7 + 0x80;\n  }\n  else if ((iVar3 == 0x3f47) || (iVar3 == 0x3f42)) {\n    local_4c = 0x100;\n  }" if (parenthesized_expression "(iVar3 == 0x3f3f)" ( (binary_expression "iVar3 == 0x3f3f" identifier == number_literal) )) (compound_statement "{\n    iVar7 = iVar7 + 0x80;\n  }" { (expression_statement "iVar7 = iVar7 + 0x80;" (assignment_expression "iVar7 = iVar7 + 0x80" identifier = (binary_expression "iVar7 + 0x80" identifier + number_literal)) ;) }) (else_clause "else if ((iVar3 == 0x3f47) || (iVar3 == 0x3f42)) {\n    local_4c = 0x100;\n  }" else (if_statement "if ((iVar3 == 0x3f47) || (iVar3 == 0x3f42)) {\n    local_4c = 0x100;\n  }" if (parenthesized_expression "((iVar3 == 0x3f47) || (iVar3 == 0x3f42))" ( (binary_expression "(iVar3 == 0x3f47) || (iVar3 == 0x3f42)" (parenthesized_expression "(iVar3 == 0x3f47)" ( (binary_expression "iVar3 == 0x3f47" identifier == number_literal) )) || (parenthesized_expression "(iVar3 == 0x3f42)" ( (binary_expression "iVar3 == 0x3f42" identifier == number_literal) ))) )) (compound_statement "{\n    local_4c = 0x100;\n  }" { (expression_statement "local_4c = 0x100;" (assignment_expression "local_4c = 0x100" identifier = number_literal) ;) })))) (expression_statement "param_1[0xb] = iVar7 + local_4c;" (assignment_expression "param_1[0xb] = iVar7 + local_4c" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "iVar7 + local_4c" identifier + identifier)) ;) (if_statement "if (((uVar1 - local_6c == 0 && iVar5 == 0) || (param_2 == 4)) && (uVar21 == 0)) {\n    uVar21 = 0xfffffffb;\n  }" if (parenthesized_expression "(((uVar1 - local_6c == 0 && iVar5 == 0) || (param_2 == 4)) && (uVar21 == 0))" ( (binary_expression "((uVar1 - local_6c == 0 && iVar5 == 0) || (param_2 == 4)) && (uVar21 == 0)" (parenthesized_expression "((uVar1 - local_6c == 0 && iVar5 == 0) || (param_2 == 4))" ( (binary_expression "(uVar1 - local_6c == 0 && iVar5 == 0) || (param_2 == 4)" (parenthesized_expression "(uVar1 - local_6c == 0 && iVar5 == 0)" ( (binary_expression "uVar1 - local_6c == 0 && iVar5 == 0" (binary_expression "uVar1 - local_6c == 0" (binary_expression "uVar1 - local_6c" identifier - identifier) == number_literal) && (binary_expression "iVar5 == 0" identifier == number_literal)) )) || (parenthesized_expression "(param_2 == 4)" ( (binary_expression "param_2 == 4" identifier == number_literal) ))) )) && (parenthesized_expression "(uVar21 == 0)" ( (binary_expression "uVar21 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    uVar21 = 0xfffffffb;\n  }" { (expression_statement "uVar21 = 0xfffffffb;" (assignment_expression "uVar21 = 0xfffffffb" identifier = number_literal) ;) })) (labeled_statement "LAB_00018778:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar21;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar21;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return uVar21;\n  }" { (return_statement "return uVar21;" return identifier ;) })))) (expression_statement "FUN_0001eba0();" (call_expression "FUN_0001eba0()" identifier (argument_list "()" ( ))) ;) })
(ERROR TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (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 (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression (binary_expression IDENT == LIT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) )))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (switch_statement switch (parenthesized_expression ( IDENT )) (compound_statement { (case_statement case LIT : (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 { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (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) )))) = LIT) ;)) (case_statement case LIT : (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_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 = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (labeled_statement statement_identifier : (for_statement for ( ; (binary_expression IDENT < LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (if_statement if (parenthesized_expression ( (binary_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 + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 (parenthesized_expression ( (binary_expression IDENT & LIT) )) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (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 (parenthesized_expression ( (binary_expression IDENT < LIT) )) && (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (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 = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << (parenthesized_expression ( (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (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 + LIT) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) )))) * LIT)) )))) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != (binary_expression IDENT + LIT)) )) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) = LIT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) )) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement 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 = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & IDENT) )) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & IDENT) )) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (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 + LIT) + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT + LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) <= IDENT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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 = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT + LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) <= IDENT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT + LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) <= IDENT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) }))))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (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 IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (binary_expression IDENT + LIT) , IDENT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (binary_expression (binary_expression IDENT + LIT) + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (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 TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (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) )))) = 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (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 IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT & IDENT) )) * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) 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) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT & IDENT) )) * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) 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) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & IDENT) )) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) + IDENT) )) * LIT)) )))) ;) (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 * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (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 + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & IDENT) )) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) + IDENT) )) * LIT)) )))) ;) (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 * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (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 IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (labeled_statement statement_identifier : (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 IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) & IDENT) )) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (labeled_statement 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 = (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (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 IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT & IDENT) )) * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (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) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT & IDENT) )) * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (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) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & IDENT) )) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) + IDENT) )) * LIT)) )))) ;) (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 * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT + IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (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 + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & IDENT) )) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) + IDENT) )) * LIT)) )))) ;) (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) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) <= IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) }) (else_clause else (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 = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) & IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (labeled_statement statement_identifier : (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = 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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (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 (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT) )) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (parenthesized_expression ( (binary_expression IDENT - 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 <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - 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 = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (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 = IDENT) ;) (goto_statement goto statement_identifier ;) })) }) while (parenthesized_expression ( BOOL )) ;)) })) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }))) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_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)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;)) (for_statement for ( (assignment_expression IDENT = (binary_expression IDENT & LIT)) ; (binary_expression IDENT < LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (if_statement if (parenthesized_expression ( (binary_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 + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) ^ LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (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) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (goto_statement goto statement_identifier ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - 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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case LIT : (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 (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case LIT : (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case LIT : (labeled_statement statement_identifier : (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) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case LIT : (goto_statement goto statement_identifier ;)) }))) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement 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 = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) })) (goto_statement goto statement_identifier ;) IDENT : if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT) + (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) , (binary_expression IDENT != (binary_expression (parenthesized_expression ( (binary_expression IDENT / LIT) )) * LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (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 (parenthesized_expression ( (binary_expression IDENT & LIT) )) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (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 { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;)) (goto_statement goto statement_identifier ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) ))) )) (goto_statement goto statement_identifier ;)))) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT , LIT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) }) while (parenthesized_expression ( (binary_expression IDENT < LIT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT) + (binary_expression IDENT * LIT)) + (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) + (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (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 IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }))) }) else { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) do { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (ERROR }) (while_statement while (parenthesized_expression ( (binary_expression IDENT < LIT) )) (expression_statement ;))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) )) { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) = (binary_expression (binary_expression IDENT >> LIT) & LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) , LIT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) do { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (ERROR }) (while_statement while (parenthesized_expression ( (binary_expression IDENT < LIT) )) (expression_statement ;))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) do (ERROR (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (ERROR }) (while_statement while (parenthesized_expression ( (binary_expression IDENT < LIT) )) (expression_statement ;))) (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 (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 IDENT + LIT) )))) = (binary_expression IDENT >> LIT)) ;) })) (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 (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (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 IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) = LIT) ;) }))) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;))) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) } (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) = LIT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (do_statement do (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 = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression IDENT != LIT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 IDENT + IDENT) )))) = IDENT) ;) })) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT < IDENT)) ))) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) = LIT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (do_statement do (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 = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression IDENT != LIT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 IDENT + IDENT) )))) = IDENT) ;) })) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT < IDENT)) ))) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) & LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (goto_statement goto statement_identifier ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) }) (else_clause else (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 = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (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) )))) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_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 (binary_expression IDENT + IDENT) <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) , IDENT , 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 (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (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 IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) })))) goto IDENT ; IDENT : IDENT = IDENT - IDENT ; IDENT [ LIT ] = IDENT [ LIT ] + IDENT ; * ( TYPE * ) ( IDENT + LIT ) = * ( TYPE * ) ( IDENT + LIT ) + IDENT ; IDENT = IDENT & LIT ; (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) , IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) , IDENT )))) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 = (binary_expression IDENT & LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + (binary_expression IDENT * LIT)) + (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) ))) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) })) IDENT = LIT ; IDENT = LIT ; IDENT = IDENT ; (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (compound_statement { (for_statement for ( ; (binary_expression IDENT < LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (if_statement if (parenthesized_expression ( (binary_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 + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) IDENT = LIT ; (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) )) (goto_statement goto statement_identifier ;))) (goto_statement goto statement_identifier ;) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement 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 = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) }) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (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 (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT != IDENT) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) || (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_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 (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT) , IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT) , IDENT )))) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (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) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT - IDENT) == LIT) && (binary_expression IDENT == LIT)) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) })))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })
(ERROR "uint inflate(int *param_1,int param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  int iVar3;\n  byte bVar4;\n  int iVar5;\n  char *pcVar6;\n  int iVar7;\n  undefined1 *puVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  ushort *puVar11;\n  byte bVar12;\n  byte bVar13;\n  uint uVar14;\n  uint extraout_ECX;\n  size_t __n;\n  uint uVar15;\n  uint extraout_ECX_00;\n  uint extraout_ECX_01;\n  undefined2 *puVar16;\n  uint uVar17;\n  uint uVar18;\n  ushort uVar19;\n  byte *pbVar20;\n  uint uVar21;\n  undefined1 *puVar22;\n  undefined1 *__dest;\n  byte *pbVar24;\n  int in_GS_OFFSET;\n  byte bVar25;\n  uint local_6c;\n  uint local_64;\n  byte *local_60;\n  uint local_5c;\n  uint local_50;\n  int local_4c;\n  uint uStack_48;\n  uint uStack_40;\n  uint uStack_38;\n  undefined2 uStack_24;\n  undefined1 uStack_22;\n  undefined1 uStack_21;\n  int local_20;\n  undefined4 uStack_14;\n  undefined1 *puVar23;\n  \n  bVar25 = 0;\n  uStack_14 = 0x17809;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((((param_1 != (int *)0x0) && (param_1[8] != 0)) && (param_1[9] != 0)) &&\n     ((iVar5 = FUN_00017420(), iVar5 == 0 &&\n      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0)))) {\n    local_60 = (byte *)*param_1;\n    uVar1 = param_1[1];\n    if ((local_60 != (byte *)0x0) || (uVar1 == 0)) {\n      uVar2 = param_1[7];\n      iVar5 = *(int *)(uVar2 + 4);\n      if (iVar5 == 0x3f3f) {\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n        iVar5 = 0x3f40;\n      }\n      local_50 = param_1[4];\n      local_64 = *(uint *)(uVar2 + 0x3c);\n      uVar15 = *(uint *)(uVar2 + 0x40);\n      uVar21 = uVar2;\n      local_6c = uVar1;\n      local_5c = local_50;\nLAB_000178c9:\n      switch(iVar5) {\n      case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n      case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;\n      case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;\n      case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;\n      case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;\n      case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;\n      case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto code_r0x00017eda;\n      case 0x3f3f:\n        goto LAB_00017f13;\n      case 0x3f41:\n        goto code_r0x00017ac6;\n      case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;\n      case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;\n      case 0x3f44:\n        goto code_r0x00018840;\n      case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;\n      case 0x3f47:\n        goto LAB_00017c70;\n      case 0x3f48:\n        goto LAB_00017b90;\n      case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto code_r0x00017d27;\n      case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto code_r0x00017c9a;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;\n      case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto LAB_00018817;\n      case 0x3f52:\n        goto code_r0x00018770;\n      }\n    }\n  }\n  uVar21 = 0xfffffffe;\n  goto LAB_00018778;\n  while (local_6c != 0) {\ncode_r0x00018ea0:\n    pbVar20 = local_60 + 1;\n    local_6c = local_6c - 1;\n    bVar12 = (byte)uVar15;\n    uVar15 = uVar15 + 8;\n    local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n    local_60 = pbVar20;\n    if (0xf < uVar15) goto code_r0x00018ec6;\n  }\n  goto LAB_000190a2;\ncode_r0x00018ec6:\n  if (((uVar21 & 2) == 0) || (local_64 != 0x8b1f)) {\n    *(undefined4 *)(uVar2 + 0x14) = 0;\n    if (*(int *)(uVar2 + 0x24) != 0) {\n      *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30) = 0xffffffff;\n    }\n    if (((uVar21 & 1) == 0) ||\n       (uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8), uVar21 != (uVar21 / 0x1f) * 0x1f)) {\n      pcVar6 = "incorrect header check";\nLAB_000188eb:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }\n    else {\n      if ((local_64 & 0xf) == 8) {\n        local_64 = local_64 >> 4;\n        uVar15 = uVar15 - 4;\n        uVar21 = (local_64 & 0xf) + 8;\n        if (*(uint *)(uVar2 + 0x28) == 0) {\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;\n        iVar5 = 1 << (sbyte)uVar21;\n        *(int *)(uVar2 + 0x18) = iVar5;\n        iVar5 = adler32(0,0,0,iVar5);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        if ((local_64 & 0x200) == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }\n        local_64 = 0;\n        uVar15 = 0;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3d;\n        do {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        } while (uVar15 < 0x20);\n        uVar15 = 0;\n        local_64 = 0;\n        iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3e;\ncode_r0x00017eda:\n        if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        uVar21 = 2;\n        param_1[3] = (int)__dest;\n        param_1[4] = local_5c;\n        *param_1 = (int)local_60;\n        param_1[1] = local_6c;\n        *(uint *)(uVar2 + 0x40) = uVar15;\n        *(uint *)(uVar2 + 0x3c) = local_64;\n        goto LAB_00018778;\n      }\n      pcVar6 = "unknown compression method";\nLAB_00017b45:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }\n  }\n  else {\n    if (*(int *)(uVar2 + 0x28) == 0) {\n      *(undefined4 *)(uVar2 + 0x28) = 0xf;\n    }\n    uVar15 = 0;\n    uVar9 = crc32(0,0,0);\n    uStack_24 = 0x8b1f;\n    *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n    uVar9 = crc32(uVar9,&uStack_24,2);\n    *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n    *(undefined4 *)(uVar2 + 4) = 0x3f35;\n    local_64 = 0;\n    do {\n      if (local_6c == 0) goto LAB_00017f30;\n      local_6c = local_6c - 1;\n      bVar12 = (byte)uVar15;\n      uVar15 = uVar15 + 8;\n      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n      local_60 = local_60 + 1;\njoined_r0x0001879b:\n    } while (uVar15 < 0x10);\n    *(uint *)(uVar2 + 0x14) = local_64;\n    if ((char)local_64 == '\b') {\n      if ((local_64 & 0xe000) != 0) {\n        pcVar6 = "unknown header flags set";\n        goto LAB_000188eb;\n      }\n      if (*(uint **)(uVar2 + 0x24) != (uint *)0x0) {\n        **(uint **)(uVar2 + 0x24) = local_64 >> 8 & 1;\n      }\n      if (((local_64 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uStack_24 = (undefined2)local_64;\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2,uVar2);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_64 = 0;\n      uVar15 = 0;\n      *(undefined4 *)(uVar2 + 4) = 0x3f36;\n      do {\n        if (local_6c == 0) goto LAB_00017f30;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = local_60 + 1;\njoined_r0x00018053:\n      } while (uVar15 < 0x20);\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(uint *)(*(int *)(uVar2 + 0x24) + 4) = local_64;\n      }\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uStack_24 = (undefined2)local_64;\n        uStack_22 = (undefined1)(local_64 >> 0x10);\n        uStack_21 = (undefined1)(local_64 >> 0x18);\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,4);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_64 = 0;\n      uVar15 = 0;\n      *(undefined4 *)(uVar2 + 4) = 0x3f37;\n      do {\n        if (local_6c == 0) goto LAB_00017f30;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = local_60 + 1;\njoined_r0x000180e3:\n      } while (uVar15 < 0x10);\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(uint *)(iVar5 + 8) = local_64 & 0xff;\n        *(uint *)(iVar5 + 0xc) = local_64 >> 8;\n      }\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uStack_24 = (undefined2)local_64;\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      *(undefined4 *)(uVar2 + 4) = 0x3f38;\n      if ((uVar21 & 0x400) == 0) {\n        uVar15 = 0;\n        local_64 = 0;\ncode_r0x000181ae:\n        if (*(int *)(uVar2 + 0x24) != 0) {\n          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;\n        }\n        goto code_r0x000181c0;\n      }\n      local_64 = 0;\n      uVar15 = 0;\ncode_r0x0001829d:\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x000182ea;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }\n    else {\n      param_1[6] = (int)"unknown compression method";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\nLAB_00018817:\n      uVar21 = 0xfffffffd;\n    }\n  }\n  goto LAB_00017f32;\ncode_r0x000182ea:\n  *(uint *)(uVar2 + 0x44) = local_64;\n  if (*(int *)(uVar2 + 0x24) != 0) {\n    *(uint *)(*(int *)(uVar2 + 0x24) + 0x14) = local_64;\n  }\n  if (((uVar21 & 0x200) == 0) || ((*(byte *)(uVar2 + 0xc) & 4) == 0)) {\n    uVar15 = 0;\n    local_64 = 0;\n  }\n  else {\n    uVar15 = 0;\n    uStack_24 = (undefined2)local_64;\n    uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n    *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n    local_64 = 0;\n    uVar21 = *(uint *)(uVar2 + 0x14);\n  }\ncode_r0x000181c0:\n  *(undefined4 *)(uVar2 + 4) = 0x3f39;\ncode_r0x000181cb:\n  if ((uVar21 & 0x400) == 0) {\ncode_r0x0001826a:\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3a;\ncode_r0x0001832f:\n    if ((uVar21 & 0x800) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3b;\ncode_r0x0001835c:\n    if ((uVar21 & 0x1000) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 4) = 0x3f3c;\ncode_r0x00018382:\n    if ((uVar21 & 0x200) == 0) {\ncode_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }\n      iVar5 = crc32(0,0,0);\n      *(int *)(uVar2 + 0x1c) = iVar5;\n      param_1[0xc] = iVar5;\n      *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n      goto LAB_00017f13;\n    }\n    if (uVar15 < 0x10) {\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }\n    else {\ncode_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }\n      param_1[6] = (int)"header crc mismatch";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n    }\n  }\n  else {\n    uVar14 = *(uint *)(uVar2 + 0x44);\n    uVar17 = local_6c;\n    if (uVar14 < local_6c) {\n      uVar17 = uVar14;\n    }\n    if (uVar17 != 0) {\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_6c = local_6c - uVar17;\n      local_60 = local_60 + uVar17;\n      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;\n      *(uint *)(uVar2 + 0x44) = uVar14;\n    }\n    if (uVar14 == 0) {\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      goto code_r0x0001826a;\n    }\nLAB_00017f30:\n    uVar21 = 0;\n  }\n  goto LAB_00017f32;\nLAB_00017996:\n  iVar5 = local_50 - local_5c;\n  param_1[5] = param_1[5] + iVar5;\n  *(int *)(uVar2 + 0x20) = *(int *)(uVar2 + 0x20) + iVar5;\n  uVar14 = uVar21 & 4;\n  if ((uVar14 != 0) && (iVar5 != 0)) {\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    else {\n      iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    *(int *)(uVar2 + 0x1c) = iVar5;\n    param_1[0xc] = iVar5;\n    uVar21 = *(uint *)(uVar2 + 0xc);\n    uVar14 = uVar21 & 4;\n  }\n  if (uVar14 != 0) {\n    uVar14 = local_64;\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100;\n    }\n    if (*(uint *)(uVar2 + 0x1c) != uVar14) {\n      param_1[6] = (int)"incorrect data check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      local_50 = local_5c;\n      goto LAB_00017f32;\n    }\n  }\n  uVar15 = 0;\n  local_64 = 0;\n  local_50 = local_5c;\nLAB_00018e20:\n  *(undefined4 *)(uVar2 + 4) = 0x3f4f;\nLAB_000183ff:\n  if ((uVar21 != 0) && (*(int *)(uVar2 + 0x14) != 0)) {\n    for (; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n      if (local_6c == 0) goto LAB_00017f30;\n      local_6c = local_6c - 1;\n      local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n      local_60 = local_60 + 1;\n    }\n    if (*(uint *)(uVar2 + 0x20) != local_64) {\n      param_1[6] = (int)"incorrect length check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      goto LAB_00017f32;\n    }\n    uVar15 = 0;\n    local_64 = 0;\n  }\n  uVar21 = 1;\n  *(undefined4 *)(uVar2 + 4) = 0x3f50;\n  goto LAB_00017f32;\nLAB_00018d40:\n  uVar21 = 0;\n  local_60 = pbVar20;\n  goto LAB_00017f32;\ncode_r0x00018d1f:\n  *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n  *(undefined4 *)(uVar2 + 4) = 0x3f3f;\nLAB_00017f13:\n  if (param_2 - 5U < 2) goto LAB_00017f30;\n  goto LAB_0001790a;\n  while (local_6c != 0) {\nLAB_00017970:\n    pbVar20 = local_60 + 1;\n    local_6c = local_6c - 1;\n    bVar25 = (byte)uVar15;\n    uVar15 = uVar15 + 8;\n    local_64 = local_64 + ((uint)*local_60 << (bVar25 & 0x1f));\n    local_60 = pbVar20;\n    if (0x1f < uVar15) goto LAB_00017996;\n  }\nLAB_000190a2:\n  uVar21 = 0;\n  local_60 = pbVar20;\nLAB_00017f32:\n  *param_1 = (int)local_60;\n  param_1[3] = (int)__dest;\n  param_1[1] = local_6c;\n  param_1[4] = local_5c;\n  *(uint *)(uVar2 + 0x3c) = local_64;\n  *(uint *)(uVar2 + 0x40) = uVar15;\n  if ((*(int *)(uVar2 + 0x2c) != 0) ||\n     (((local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&\n      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)))))) {\n    iVar5 = FUN_000172e0();\n    if (iVar5 != 0) {\n      *(undefined4 *)(uVar2 + 4) = 0x3f52;\ncode_r0x00018770:\n      uVar21 = 0xfffffffc;\n      goto LAB_00018778;\n    }\n    local_6c = param_1[1];\n    local_5c = param_1[4];\n  }\n  iVar5 = local_50 - local_5c;\n  param_1[2] = param_1[2] + (uVar1 - local_6c);\n  param_1[5] = param_1[5] + iVar5;\n  *(int *)(uVar2 + 0x20) = *(int *)(uVar2 + 0x20) + iVar5;\n  if (((*(byte *)(uVar2 + 0xc) & 4) != 0) && (iVar5 != 0)) {\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    else {\n      iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    *(int *)(uVar2 + 0x1c) = iVar7;\n    param_1[0xc] = iVar7;\n  }\n  iVar7 = *(int *)(uVar2 + 0x40);\n  if (*(int *)(uVar2 + 8) != 0) {\n    iVar7 = iVar7 + 0x40;\n  }\n  iVar3 = *(int *)(uVar2 + 4);\n  local_4c = 0;\n  if (iVar3 == 0x3f3f) {\n    iVar7 = iVar7 + 0x80;\n  }\n  else if ((iVar3 == 0x3f47) || (iVar3 == 0x3f42)) {\n    local_4c = 0x100;\n  }\n  param_1[0xb] = iVar7 + local_4c;\n  if (((uVar1 - local_6c == 0 && iVar5 == 0) || (param_2 == 4)) && (uVar21 == 0)) {\n    uVar21 = 0xfffffffb;\n  }\nLAB_00018778:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar21;\n  }\n                    \n  FUN_0001eba0();\n}\n\n" (type_identifier "uint") (function_declarator "inflate(int *param_1,int param_2)" (identifier "inflate") (parameter_list "(int *param_1,int param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "byte bVar4;" (type_identifier "byte") (identifier "bVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "char *pcVar6;" (primitive_type "char") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "undefined1 *puVar8;" (type_identifier "undefined1") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "ushort *puVar11;" (type_identifier "ushort") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "byte bVar12;" (type_identifier "byte") (identifier "bVar12") (; ";")) (declaration "byte bVar13;" (type_identifier "byte") (identifier "bVar13") (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "uint extraout_ECX;" (type_identifier "uint") (identifier "extraout_ECX") (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "uint uVar15;" (type_identifier "uint") (identifier "uVar15") (; ";")) (declaration "uint extraout_ECX_00;" (type_identifier "uint") (identifier "extraout_ECX_00") (; ";")) (declaration "uint extraout_ECX_01;" (type_identifier "uint") (identifier "extraout_ECX_01") (; ";")) (declaration "undefined2 *puVar16;" (type_identifier "undefined2") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "uint uVar17;" (type_identifier "uint") (identifier "uVar17") (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "ushort uVar19;" (type_identifier "ushort") (identifier "uVar19") (; ";")) (declaration "byte *pbVar20;" (type_identifier "byte") (pointer_declarator "*pbVar20" (* "*") (identifier "pbVar20")) (; ";")) (declaration "uint uVar21;" (type_identifier "uint") (identifier "uVar21") (; ";")) (declaration "undefined1 *puVar22;" (type_identifier "undefined1") (pointer_declarator "*puVar22" (* "*") (identifier "puVar22")) (; ";")) (declaration "undefined1 *__dest;" (type_identifier "undefined1") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "byte *pbVar24;" (type_identifier "byte") (pointer_declarator "*pbVar24" (* "*") (identifier "pbVar24")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "byte bVar25;" (type_identifier "byte") (identifier "bVar25") (; ";")) (declaration "uint local_6c;" (type_identifier "uint") (identifier "local_6c") (; ";")) (declaration "uint local_64;" (type_identifier "uint") (identifier "local_64") (; ";")) (declaration "byte *local_60;" (type_identifier "byte") (pointer_declarator "*local_60" (* "*") (identifier "local_60")) (; ";")) (declaration "uint local_5c;" (type_identifier "uint") (identifier "local_5c") (; ";")) (declaration "uint local_50;" (type_identifier "uint") (identifier "local_50") (; ";")) (declaration "int local_4c;" (primitive_type "int") (identifier "local_4c") (; ";")) (declaration "uint uStack_48;" (type_identifier "uint") (identifier "uStack_48") (; ";")) (declaration "uint uStack_40;" (type_identifier "uint") (identifier "uStack_40") (; ";")) (declaration "uint uStack_38;" (type_identifier "uint") (identifier "uStack_38") (; ";")) (declaration "undefined2 uStack_24;" (type_identifier "undefined2") (identifier "uStack_24") (; ";")) (declaration "undefined1 uStack_22;" (type_identifier "undefined1") (identifier "uStack_22") (; ";")) (declaration "undefined1 uStack_21;" (type_identifier "undefined1") (identifier "uStack_21") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (declaration "undefined1 *puVar23;" (type_identifier "undefined1") (pointer_declarator "*puVar23" (* "*") (identifier "puVar23")) (; ";")) (expression_statement "bVar25 = 0;" (assignment_expression "bVar25 = 0" (identifier "bVar25") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_14 = 0x17809;" (assignment_expression "uStack_14 = 0x17809" (identifier "uStack_14") (= "=") (number_literal "0x17809")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if ((((param_1 != (int *)0x0) && (param_1[8] != 0)) && (param_1[9] != 0)) &&\n     ((iVar5 = FUN_00017420(), iVar5 == 0 &&\n      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0)))) {\n    local_60 = (byte *)*param_1;\n    uVar1 = param_1[1];\n    if ((local_60 != (byte *)0x0) || (uVar1 == 0)) {\n      uVar2 = param_1[7];\n      iVar5 = *(int *)(uVar2 + 4);\n      if (iVar5 == 0x3f3f) {\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n        iVar5 = 0x3f40;\n      }\n      local_50 = param_1[4];\n      local_64 = *(uint *)(uVar2 + 0x3c);\n      uVar15 = *(uint *)(uVar2 + 0x40);\n      uVar21 = uVar2;\n      local_6c = uVar1;\n      local_5c = local_50;\nLAB_000178c9:\n      switch(iVar5) {\n      case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n      case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;\n      case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;\n      case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;\n      case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;\n      case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;\n      case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto code_r0x00017eda;\n      case 0x3f3f:\n        goto LAB_00017f13;\n      case 0x3f41:\n        goto code_r0x00017ac6;\n      case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;\n      case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;\n      case 0x3f44:\n        goto code_r0x00018840;\n      case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;\n      case 0x3f47:\n        goto LAB_00017c70;\n      case 0x3f48:\n        goto LAB_00017b90;\n      case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto code_r0x00017d27;\n      case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto code_r0x00017c9a;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;\n      case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto LAB_00018817;\n      case 0x3f52:\n        goto code_r0x00018770;\n      }\n    }\n  }" (if "if") (parenthesized_expression "((((param_1 != (int *)0x0) && (param_1[8] != 0)) && (param_1[9] != 0)) &&\n     ((iVar5 = FUN_00017420(), iVar5 == 0 &&\n      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0))))" (( "(") (binary_expression "(((param_1 != (int *)0x0) && (param_1[8] != 0)) && (param_1[9] != 0)) &&\n     ((iVar5 = FUN_00017420(), iVar5 == 0 &&\n      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0)))" (parenthesized_expression "(((param_1 != (int *)0x0) && (param_1[8] != 0)) && (param_1[9] != 0))" (( "(") (binary_expression "((param_1 != (int *)0x0) && (param_1[8] != 0)) && (param_1[9] != 0)" (parenthesized_expression "((param_1 != (int *)0x0) && (param_1[8] != 0))" (( "(") (binary_expression "(param_1 != (int *)0x0) && (param_1[8] != 0)" (parenthesized_expression "(param_1 != (int *)0x0)" (( "(") (binary_expression "param_1 != (int *)0x0" (identifier "param_1") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(param_1[8] != 0)" (( "(") (binary_expression "param_1[8] != 0" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(param_1[9] != 0)" (( "(") (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((iVar5 = FUN_00017420(), iVar5 == 0 &&\n      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0)))" (( "(") (parenthesized_expression "(iVar5 = FUN_00017420(), iVar5 == 0 &&\n      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0))" (( "(") (comma_expression "iVar5 = FUN_00017420(), iVar5 == 0 &&\n      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0)" (assignment_expression "iVar5 = FUN_00017420()" (identifier "iVar5") (= "=") (call_expression "FUN_00017420()" (identifier "FUN_00017420") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar5 == 0 &&\n      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0)" (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "(__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0)" (( "(") (comma_expression "__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0" (assignment_expression "__dest = (undefined1 *)param_1[3]" (identifier "__dest") (= "=") (cast_expression "(undefined1 *)param_1[3]" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")))) (, ",") (binary_expression "__dest != (undefined1 *)0x0" (identifier "__dest") (!= "!=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n    local_60 = (byte *)*param_1;\n    uVar1 = param_1[1];\n    if ((local_60 != (byte *)0x0) || (uVar1 == 0)) {\n      uVar2 = param_1[7];\n      iVar5 = *(int *)(uVar2 + 4);\n      if (iVar5 == 0x3f3f) {\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n        iVar5 = 0x3f40;\n      }\n      local_50 = param_1[4];\n      local_64 = *(uint *)(uVar2 + 0x3c);\n      uVar15 = *(uint *)(uVar2 + 0x40);\n      uVar21 = uVar2;\n      local_6c = uVar1;\n      local_5c = local_50;\nLAB_000178c9:\n      switch(iVar5) {\n      case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n      case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;\n      case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;\n      case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;\n      case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;\n      case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;\n      case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto code_r0x00017eda;\n      case 0x3f3f:\n        goto LAB_00017f13;\n      case 0x3f41:\n        goto code_r0x00017ac6;\n      case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;\n      case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;\n      case 0x3f44:\n        goto code_r0x00018840;\n      case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;\n      case 0x3f47:\n        goto LAB_00017c70;\n      case 0x3f48:\n        goto LAB_00017b90;\n      case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto code_r0x00017d27;\n      case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto code_r0x00017c9a;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;\n      case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto LAB_00018817;\n      case 0x3f52:\n        goto code_r0x00018770;\n      }\n    }\n  }" ({ "{") (expression_statement "local_60 = (byte *)*param_1;" (assignment_expression "local_60 = (byte *)*param_1" (identifier "local_60") (= "=") (cast_expression "(byte *)*param_1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" (identifier "uVar1") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if ((local_60 != (byte *)0x0) || (uVar1 == 0)) {\n      uVar2 = param_1[7];\n      iVar5 = *(int *)(uVar2 + 4);\n      if (iVar5 == 0x3f3f) {\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n        iVar5 = 0x3f40;\n      }\n      local_50 = param_1[4];\n      local_64 = *(uint *)(uVar2 + 0x3c);\n      uVar15 = *(uint *)(uVar2 + 0x40);\n      uVar21 = uVar2;\n      local_6c = uVar1;\n      local_5c = local_50;\nLAB_000178c9:\n      switch(iVar5) {\n      case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n      case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;\n      case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;\n      case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;\n      case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;\n      case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;\n      case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto code_r0x00017eda;\n      case 0x3f3f:\n        goto LAB_00017f13;\n      case 0x3f41:\n        goto code_r0x00017ac6;\n      case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;\n      case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;\n      case 0x3f44:\n        goto code_r0x00018840;\n      case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;\n      case 0x3f47:\n        goto LAB_00017c70;\n      case 0x3f48:\n        goto LAB_00017b90;\n      case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto code_r0x00017d27;\n      case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto code_r0x00017c9a;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;\n      case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto LAB_00018817;\n      case 0x3f52:\n        goto code_r0x00018770;\n      }\n    }" (if "if") (parenthesized_expression "((local_60 != (byte *)0x0) || (uVar1 == 0))" (( "(") (binary_expression "(local_60 != (byte *)0x0) || (uVar1 == 0)" (parenthesized_expression "(local_60 != (byte *)0x0)" (( "(") (binary_expression "local_60 != (byte *)0x0" (identifier "local_60") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(uVar1 == 0)" (( "(") (binary_expression "uVar1 == 0" (identifier "uVar1") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      uVar2 = param_1[7];\n      iVar5 = *(int *)(uVar2 + 4);\n      if (iVar5 == 0x3f3f) {\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n        iVar5 = 0x3f40;\n      }\n      local_50 = param_1[4];\n      local_64 = *(uint *)(uVar2 + 0x3c);\n      uVar15 = *(uint *)(uVar2 + 0x40);\n      uVar21 = uVar2;\n      local_6c = uVar1;\n      local_5c = local_50;\nLAB_000178c9:\n      switch(iVar5) {\n      case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n      case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;\n      case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;\n      case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;\n      case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;\n      case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;\n      case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto code_r0x00017eda;\n      case 0x3f3f:\n        goto LAB_00017f13;\n      case 0x3f41:\n        goto code_r0x00017ac6;\n      case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;\n      case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;\n      case 0x3f44:\n        goto code_r0x00018840;\n      case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;\n      case 0x3f47:\n        goto LAB_00017c70;\n      case 0x3f48:\n        goto LAB_00017b90;\n      case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto code_r0x00017d27;\n      case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto code_r0x00017c9a;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;\n      case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto LAB_00018817;\n      case 0x3f52:\n        goto code_r0x00018770;\n      }\n    }" ({ "{") (expression_statement "uVar2 = param_1[7];" (assignment_expression "uVar2 = param_1[7]" (identifier "uVar2") (= "=") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "iVar5 = *(int *)(uVar2 + 4);" (assignment_expression "iVar5 = *(int *)(uVar2 + 4)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(uVar2 + 4)" (* "*") (cast_expression "(int *)(uVar2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (iVar5 == 0x3f3f) {\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n        iVar5 = 0x3f40;\n      }" (if "if") (parenthesized_expression "(iVar5 == 0x3f3f)" (( "(") (binary_expression "iVar5 == 0x3f3f" (identifier "iVar5") (== "==") (number_literal "0x3f3f")) () ")")) (compound_statement "{\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n        iVar5 = 0x3f40;\n      }" ({ "{") (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f40;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f40" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f40")) (; ";")) (expression_statement "iVar5 = 0x3f40;" (assignment_expression "iVar5 = 0x3f40" (identifier "iVar5") (= "=") (number_literal "0x3f40")) (; ";")) (} "}"))) (expression_statement "local_50 = param_1[4];" (assignment_expression "local_50 = param_1[4]" (identifier "local_50") (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "local_64 = *(uint *)(uVar2 + 0x3c);" (assignment_expression "local_64 = *(uint *)(uVar2 + 0x3c)" (identifier "local_64") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x3c)" (* "*") (cast_expression "(uint *)(uVar2 + 0x3c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x3c)" (( "(") (binary_expression "uVar2 + 0x3c" (identifier "uVar2") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "uVar15 = *(uint *)(uVar2 + 0x40);" (assignment_expression "uVar15 = *(uint *)(uVar2 + 0x40)" (identifier "uVar15") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x40)" (* "*") (cast_expression "(uint *)(uVar2 + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x40)" (( "(") (binary_expression "uVar2 + 0x40" (identifier "uVar2") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (expression_statement "uVar21 = uVar2;" (assignment_expression "uVar21 = uVar2" (identifier "uVar21") (= "=") (identifier "uVar2")) (; ";")) (expression_statement "local_6c = uVar1;" (assignment_expression "local_6c = uVar1" (identifier "local_6c") (= "=") (identifier "uVar1")) (; ";")) (expression_statement "local_5c = local_50;" (assignment_expression "local_5c = local_50" (identifier "local_5c") (= "=") (identifier "local_50")) (; ";")) (labeled_statement "LAB_000178c9:\n      switch(iVar5) {\n      case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n      case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;\n      case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;\n      case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;\n      case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;\n      case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;\n      case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto code_r0x00017eda;\n      case 0x3f3f:\n        goto LAB_00017f13;\n      case 0x3f41:\n        goto code_r0x00017ac6;\n      case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;\n      case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;\n      case 0x3f44:\n        goto code_r0x00018840;\n      case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;\n      case 0x3f47:\n        goto LAB_00017c70;\n      case 0x3f48:\n        goto LAB_00017b90;\n      case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto code_r0x00017d27;\n      case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto code_r0x00017c9a;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;\n      case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto LAB_00018817;\n      case 0x3f52:\n        goto code_r0x00018770;\n      }" (statement_identifier "LAB_000178c9") (: ":") (switch_statement "switch(iVar5) {\n      case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n      case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;\n      case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;\n      case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;\n      case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;\n      case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;\n      case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto code_r0x00017eda;\n      case 0x3f3f:\n        goto LAB_00017f13;\n      case 0x3f41:\n        goto code_r0x00017ac6;\n      case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;\n      case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;\n      case 0x3f44:\n        goto code_r0x00018840;\n      case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;\n      case 0x3f47:\n        goto LAB_00017c70;\n      case 0x3f48:\n        goto LAB_00017b90;\n      case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto code_r0x00017d27;\n      case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto code_r0x00017c9a;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;\n      case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto LAB_00018817;\n      case 0x3f52:\n        goto code_r0x00018770;\n      }" (switch "switch") (parenthesized_expression "(iVar5)" (( "(") (identifier "iVar5") () ")")) (compound_statement "{\n      case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;\n      case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;\n      case 0x3f35:\n        goto joined_r0x0001879b;\n      case 0x3f36:\n        goto joined_r0x00018053;\n      case 0x3f37:\n        goto joined_r0x000180e3;\n      case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;\n      case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;\n      case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;\n      case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;\n      case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;\n      case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;\n      case 0x3f3e:\n        goto code_r0x00017eda;\n      case 0x3f3f:\n        goto LAB_00017f13;\n      case 0x3f41:\n        goto code_r0x00017ac6;\n      case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;\n      case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;\n      case 0x3f44:\n        goto code_r0x00018840;\n      case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;\n      case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;\n      case 0x3f47:\n        goto LAB_00017c70;\n      case 0x3f48:\n        goto LAB_00017b90;\n      case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;\n      case 0x3f4a:\n        goto code_r0x00017d27;\n      case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;\n      case 0x3f4c:\n        goto code_r0x00017c9a;\n      case 0x3f4d:\n        goto LAB_00017b6a;\n      case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;\n      case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;\n      case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;\n      case 0x3f51:\n        goto LAB_00018817;\n      case 0x3f52:\n        goto code_r0x00018770;\n      }" ({ "{") (case_statement "case 0x3f34:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }\n        *(undefined4 *)(uVar2 + 4) = 0x3f40;" (case "case") (number_literal "0x3f34") (: ":") (expression_statement "uVar21 = *(uint *)(uVar2 + 0xc);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0xc)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(uVar2 + 0xc)" (* "*") (cast_expression "(uint *)(uVar2 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0xc)" (( "(") (binary_expression "uVar2 + 0xc" (identifier "uVar2") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (uVar21 != 0) {\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }" (if "if") (parenthesized_expression "(uVar21 != 0)" (( "(") (binary_expression "uVar21 != 0" (identifier "uVar21") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          if (0xf < uVar15) goto code_r0x00018ec6;\n          if (local_6c != 0) goto code_r0x00018ea0;\n          goto LAB_00017f30;\n        }" ({ "{") (if_statement "if (0xf < uVar15) goto code_r0x00018ec6;" (if "if") (parenthesized_expression "(0xf < uVar15)" (( "(") (binary_expression "0xf < uVar15" (number_literal "0xf") (< "<") (identifier "uVar15")) () ")")) (goto_statement "goto code_r0x00018ec6;" (goto "goto") (statement_identifier "code_r0x00018ec6") (; ";"))) (if_statement "if (local_6c != 0) goto code_r0x00018ea0;" (if "if") (parenthesized_expression "(local_6c != 0)" (( "(") (binary_expression "local_6c != 0" (identifier "local_6c") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto code_r0x00018ea0;" (goto "goto") (statement_identifier "code_r0x00018ea0") (; ";"))) (goto_statement "goto LAB_00017f30;" (goto "goto") (statement_identifier "LAB_00017f30") (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f40;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f40" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f40")) (; ";"))) (case_statement "case 0x3f40:\nLAB_0001790a:\n        bVar12 = (byte)uVar15;\n        if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }\n        uVar21 = 0;\n        if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }\n        *(uint *)(uVar2 + 8) = local_64 & 1;\n        uVar14 = local_64 >> 1 & 3;\n        if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }\n        if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }\n        if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }\n        local_64 = local_64 >> 3;\n        *(undefined4 *)(uVar2 + 4) = 0x3f41;\n        uVar15 = uVar15 - 3;\ncode_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);\n        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }\n        uVar14 = local_64 & 0xffff;\n        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }\n        *(uint *)(uVar2 + 0x44) = uVar14;\n        *(undefined4 *)(uVar2 + 4) = 0x3f42;\n        if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }\n        uVar15 = 0;\n        local_64 = 0;\nLAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;\ncode_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }\n        if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }\n        if (uVar14 == 0) goto LAB_00017f30;\n        memcpy(__dest,local_60,uVar14);\n        local_6c = local_6c - uVar14;\n        local_60 = local_60 + uVar14;\n        local_5c = local_5c - uVar14;\n        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;\n        iVar5 = *(int *)(uVar2 + 4);\n        uVar21 = extraout_ECX_00;\n        __dest = __dest + uVar14;\n        goto LAB_000178c9;" (case "case") (number_literal "0x3f40") (: ":") (labeled_statement "LAB_0001790a:\n        bVar12 = (byte)uVar15;" (statement_identifier "LAB_0001790a") (: ":") (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" (identifier "bVar12") (= "=") (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15"))) (; ";"))) (if_statement "if (*(int *)(uVar2 + 8) != 0) {\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }" (if "if") (parenthesized_expression "(*(int *)(uVar2 + 8) != 0)" (( "(") (binary_expression "*(int *)(uVar2 + 8) != 0" (pointer_expression "*(int *)(uVar2 + 8)" (* "*") (cast_expression "(int *)(uVar2 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 8)" (( "(") (binary_expression "uVar2 + 8" (identifier "uVar2") (+ "+") (number_literal "8")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          uVar15 = uVar15 & 0xfffffff8;\n          local_64 = local_64 >> (bVar12 & 7);\n          *(undefined4 *)(uVar2 + 4) = 0x3f4e;\n          goto code_r0x00017930;\n        }" ({ "{") (expression_statement "uVar15 = uVar15 & 0xfffffff8;" (assignment_expression "uVar15 = uVar15 & 0xfffffff8" (identifier "uVar15") (= "=") (binary_expression "uVar15 & 0xfffffff8" (identifier "uVar15") (& "&") (number_literal "0xfffffff8"))) (; ";")) (expression_statement "local_64 = local_64 >> (bVar12 & 7);" (assignment_expression "local_64 = local_64 >> (bVar12 & 7)" (identifier "local_64") (= "=") (binary_expression "local_64 >> (bVar12 & 7)" (identifier "local_64") (>> ">>") (parenthesized_expression "(bVar12 & 7)" (( "(") (binary_expression "bVar12 & 7" (identifier "bVar12") (& "&") (number_literal "7")) () ")")))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f4e;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f4e" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f4e")) (; ";")) (goto_statement "goto code_r0x00017930;" (goto "goto") (statement_identifier "code_r0x00017930") (; ";")) (} "}"))) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar15 < 3) {\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }" (if "if") (parenthesized_expression "(uVar15 < 3)" (( "(") (binary_expression "uVar15 < 3" (identifier "uVar15") (< "<") (number_literal "3")) () ")")) (compound_statement "{\n          if (local_6c == 0) goto LAB_00017f32;\n          local_6c = local_6c - 1;\n          uVar15 = uVar15 + 8;\n          bVar13 = *local_60;\n          local_60 = local_60 + 1;\n          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));\n        }" ({ "{") (if_statement "if (local_6c == 0) goto LAB_00017f32;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017f32;" (goto "goto") (statement_identifier "LAB_00017f32") (; ";"))) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" (identifier "local_6c") (= "=") (binary_expression "local_6c - 1" (identifier "local_6c") (- "-") (number_literal "1"))) (; ";")) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 8" (identifier "uVar15") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "bVar13 = *local_60;" (assignment_expression "bVar13 = *local_60" (identifier "bVar13") (= "=") (pointer_expression "*local_60" (* "*") (identifier "local_60"))) (; ";")) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" (identifier "local_60") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f))" (identifier "local_64") (= "=") (binary_expression "local_64 + ((uint)bVar13 << (bVar12 & 0x1f))" (identifier "local_64") (+ "+") (parenthesized_expression "((uint)bVar13 << (bVar12 & 0x1f))" (( "(") (binary_expression "(uint)bVar13 << (bVar12 & 0x1f)" (cast_expression "(uint)bVar13" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar13")) (<< "<<") (parenthesized_expression "(bVar12 & 0x1f)" (( "(") (binary_expression "bVar12 & 0x1f" (identifier "bVar12") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (} "}"))) (expression_statement "*(uint *)(uVar2 + 8) = local_64 & 1;" (assignment_expression "*(uint *)(uVar2 + 8) = local_64 & 1" (pointer_expression "*(uint *)(uVar2 + 8)" (* "*") (cast_expression "(uint *)(uVar2 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 8)" (( "(") (binary_expression "uVar2 + 8" (identifier "uVar2") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "local_64 & 1" (identifier "local_64") (& "&") (number_literal "1"))) (; ";")) (expression_statement "uVar14 = local_64 >> 1 & 3;" (assignment_expression "uVar14 = local_64 >> 1 & 3" (identifier "uVar14") (= "=") (binary_expression "local_64 >> 1 & 3" (binary_expression "local_64 >> 1" (identifier "local_64") (>> ">>") (number_literal "1")) (& "&") (number_literal "3"))) (; ";")) (if_statement "if (uVar14 == 2) {\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }" (if "if") (parenthesized_expression "(uVar14 == 2)" (( "(") (binary_expression "uVar14 == 2" (identifier "uVar14") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          *(undefined4 *)(uVar2 + 4) = 0x3f44;\ncode_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }\n          uVar15 = uVar15 - 0xe;\n          uVar17 = (local_64 & 0x1f) + 0x101;\n          uVar21 = (local_64 >> 5 & 0x1f) + 1;\n          uVar14 = (local_64 >> 10 & 0xf) + 4;\n          local_64 = local_64 >> 0xe;\n          *(uint *)(uVar2 + 100) = uVar17;\n          *(uint *)(uVar2 + 0x68) = uVar21;\n          *(uint *)(uVar2 + 0x60) = uVar14;\n          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }\n          pcVar6 = "too many length or distance symbols";\n          goto LAB_000188eb;\n        }" ({ "{") (expression_statement "local_64 = local_64 >> 3;" (assignment_expression "local_64 = local_64 >> 3" (identifier "local_64") (= "=") (binary_expression "local_64 >> 3" (identifier "local_64") (>> ">>") (number_literal "3"))) (; ";")) (expression_statement "uVar15 = uVar15 - 3;" (assignment_expression "uVar15 = uVar15 - 3" (identifier "uVar15") (= "=") (binary_expression "uVar15 - 3" (identifier "uVar15") (- "-") (number_literal "3"))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f44;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f44" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f44")) (; ";")) (labeled_statement "code_r0x00018840:\n          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }" (statement_identifier "code_r0x00018840") (: ":") (for_statement "for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }" (for "for") (( "(") (; ";") (binary_expression "uVar15 < 0xe" (identifier "uVar15") (< "<") (number_literal "0xe")) (; ";") (assignment_expression "uVar15 = uVar15 + 8" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 8" (identifier "uVar15") (+ "+") (number_literal "8"))) () ")") (compound_statement "{\n            if (local_6c == 0) goto LAB_00017f30;\n            local_6c = local_6c - 1;\n            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n            local_60 = local_60 + 1;\n          }" ({ "{") (if_statement "if (local_6c == 0) goto LAB_00017f30;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017f30;" (goto "goto") (statement_identifier "LAB_00017f30") (; ";"))) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" (identifier "local_6c") (= "=") (binary_expression "local_6c - 1" (identifier "local_6c") (- "-") (number_literal "1"))) (; ";")) (expression_statement "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f))" (identifier "local_64") (= "=") (binary_expression "local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f))" (identifier "local_64") (+ "+") (parenthesized_expression "((uint)*local_60 << ((byte)uVar15 & 0x1f))" (( "(") (binary_expression "(uint)*local_60 << ((byte)uVar15 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "local_60")) (<< "<<") (parenthesized_expression "((byte)uVar15 & 0x1f)" (( "(") (binary_expression "(byte)uVar15 & 0x1f" (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15")) (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" (identifier "local_60") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "uVar15 = uVar15 - 0xe;" (assignment_expression "uVar15 = uVar15 - 0xe" (identifier "uVar15") (= "=") (binary_expression "uVar15 - 0xe" (identifier "uVar15") (- "-") (number_literal "0xe"))) (; ";")) (expression_statement "uVar17 = (local_64 & 0x1f) + 0x101;" (assignment_expression "uVar17 = (local_64 & 0x1f) + 0x101" (identifier "uVar17") (= "=") (binary_expression "(local_64 & 0x1f) + 0x101" (parenthesized_expression "(local_64 & 0x1f)" (( "(") (binary_expression "local_64 & 0x1f" (identifier "local_64") (& "&") (number_literal "0x1f")) () ")")) (+ "+") (number_literal "0x101"))) (; ";")) (expression_statement "uVar21 = (local_64 >> 5 & 0x1f) + 1;" (assignment_expression "uVar21 = (local_64 >> 5 & 0x1f) + 1" (identifier "uVar21") (= "=") (binary_expression "(local_64 >> 5 & 0x1f) + 1" (parenthesized_expression "(local_64 >> 5 & 0x1f)" (( "(") (binary_expression "local_64 >> 5 & 0x1f" (binary_expression "local_64 >> 5" (identifier "local_64") (>> ">>") (number_literal "5")) (& "&") (number_literal "0x1f")) () ")")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar14 = (local_64 >> 10 & 0xf) + 4;" (assignment_expression "uVar14 = (local_64 >> 10 & 0xf) + 4" (identifier "uVar14") (= "=") (binary_expression "(local_64 >> 10 & 0xf) + 4" (parenthesized_expression "(local_64 >> 10 & 0xf)" (( "(") (binary_expression "local_64 >> 10 & 0xf" (binary_expression "local_64 >> 10" (identifier "local_64") (>> ">>") (number_literal "10")) (& "&") (number_literal "0xf")) () ")")) (+ "+") (number_literal "4"))) (; ";")) (expression_statement "local_64 = local_64 >> 0xe;" (assignment_expression "local_64 = local_64 >> 0xe" (identifier "local_64") (= "=") (binary_expression "local_64 >> 0xe" (identifier "local_64") (>> ">>") (number_literal "0xe"))) (; ";")) (expression_statement "*(uint *)(uVar2 + 100) = uVar17;" (assignment_expression "*(uint *)(uVar2 + 100) = uVar17" (pointer_expression "*(uint *)(uVar2 + 100)" (* "*") (cast_expression "(uint *)(uVar2 + 100)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 100)" (( "(") (binary_expression "uVar2 + 100" (identifier "uVar2") (+ "+") (number_literal "100")) () ")")))) (= "=") (identifier "uVar17")) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x68) = uVar21;" (assignment_expression "*(uint *)(uVar2 + 0x68) = uVar21" (pointer_expression "*(uint *)(uVar2 + 0x68)" (* "*") (cast_expression "(uint *)(uVar2 + 0x68)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x68)" (( "(") (binary_expression "uVar2 + 0x68" (identifier "uVar2") (+ "+") (number_literal "0x68")) () ")")))) (= "=") (identifier "uVar21")) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x60) = uVar14;" (assignment_expression "*(uint *)(uVar2 + 0x60) = uVar14" (pointer_expression "*(uint *)(uVar2 + 0x60)" (* "*") (cast_expression "(uint *)(uVar2 + 0x60)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x60)" (( "(") (binary_expression "uVar2 + 0x60" (identifier "uVar2") (+ "+") (number_literal "0x60")) () ")")))) (= "=") (identifier "uVar14")) (; ";")) (if_statement "if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }" (if "if") (parenthesized_expression "((uVar21 < 0x1f) && (uVar17 < 0x11f))" (( "(") (binary_expression "(uVar21 < 0x1f) && (uVar17 < 0x11f)" (parenthesized_expression "(uVar21 < 0x1f)" (( "(") (binary_expression "uVar21 < 0x1f" (identifier "uVar21") (< "<") (number_literal "0x1f")) () ")")) (&& "&&") (parenthesized_expression "(uVar17 < 0x11f)" (( "(") (binary_expression "uVar17 < 0x11f" (identifier "uVar17") (< "<") (number_literal "0x11f")) () ")"))) () ")")) (compound_statement "{\n            uVar21 = 0;\n            *(undefined4 *)(uVar2 + 0x6c) = 0;\n            *(undefined4 *)(uVar2 + 4) = 0x3f45;\nLAB_000184b2:\n            uVar17 = uVar21 + 1;\n            do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);\ncode_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }\n            *(undefined4 *)(uVar2 + 0x58) = 7;\n            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);\n            if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }\n            goto LAB_00017f32;\n          }" ({ "{") (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 0x6c) = 0;" (assignment_expression "*(undefined4 *)(uVar2 + 0x6c) = 0" (pointer_expression "*(undefined4 *)(uVar2 + 0x6c)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x6c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x6c)" (( "(") (binary_expression "uVar2 + 0x6c" (identifier "uVar2") (+ "+") (number_literal "0x6c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f45;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f45" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f45")) (; ";")) (labeled_statement "LAB_000184b2:\n            uVar17 = uVar21 + 1;" (statement_identifier "LAB_000184b2") (: ":") (expression_statement "uVar17 = uVar21 + 1;" (assignment_expression "uVar17 = uVar21 + 1" (identifier "uVar17") (= "=") (binary_expression "uVar21 + 1" (identifier "uVar21") (+ "+") (number_literal "1"))) (; ";"))) (do_statement "do {\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            } while (uVar14 + 1 != uVar21 + 1);" (do "do") (compound_statement "{\n              uVar21 = uVar17;\n              if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }\n              uVar15 = uVar15 - 3;\n              *(uint *)(uVar2 + 0x6c) = uVar21;\n              uVar17 = local_64 >> 3;\n              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;\n              local_64 = uVar17;\n              uVar17 = uVar21 + 1;\n            }" ({ "{") (expression_statement "uVar21 = uVar17;" (assignment_expression "uVar21 = uVar17" (identifier "uVar21") (= "=") (identifier "uVar17")) (; ";")) (if_statement "if (uVar15 < 3) {\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }" (if "if") (parenthesized_expression "(uVar15 < 3)" (( "(") (binary_expression "uVar15 < 3" (identifier "uVar15") (< "<") (number_literal "3")) () ")")) (compound_statement "{\n                if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }\n                local_6c = local_6c - 1;\n                bVar12 = (byte)uVar15;\n                uVar15 = uVar15 + 8;\n                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                local_60 = local_60 + 1;\n              }" ({ "{") (if_statement "if (local_6c == 0) {\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  uVar21 = 0;\n                  local_6c = 0;\n                  goto LAB_00017f32;\n                }" ({ "{") (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" (identifier "local_6c") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00017f32;" (goto "goto") (statement_identifier "LAB_00017f32") (; ";")) (} "}"))) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" (identifier "local_6c") (= "=") (binary_expression "local_6c - 1" (identifier "local_6c") (- "-") (number_literal "1"))) (; ";")) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" (identifier "bVar12") (= "=") (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15"))) (; ";")) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 8" (identifier "uVar15") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "local_64") (= "=") (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "local_64") (+ "+") (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" (( "(") (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "local_60")) (<< "<<") (parenthesized_expression "(bVar12 & 0x1f)" (( "(") (binary_expression "bVar12 & 0x1f" (identifier "bVar12") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" (identifier "local_60") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar15 = uVar15 - 3;" (assignment_expression "uVar15 = uVar15 - 3" (identifier "uVar15") (= "=") (binary_expression "uVar15 - 3" (identifier "uVar15") (- "-") (number_literal "3"))) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x6c) = uVar21;" (assignment_expression "*(uint *)(uVar2 + 0x6c) = uVar21" (pointer_expression "*(uint *)(uVar2 + 0x6c)" (* "*") (cast_expression "(uint *)(uVar2 + 0x6c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x6c)" (( "(") (binary_expression "uVar2 + 0x6c" (identifier "uVar2") (+ "+") (number_literal "0x6c")) () ")")))) (= "=") (identifier "uVar21")) (; ";")) (expression_statement "uVar17 = local_64 >> 3;" (assignment_expression "uVar17 = local_64 >> 3" (identifier "uVar17") (= "=") (binary_expression "local_64 >> 3" (identifier "local_64") (>> ">>") (number_literal "3"))) (; ";")) (expression_statement "*(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7;" (assignment_expression "*(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =\n                   (ushort)local_64 & 7" (pointer_expression "*(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2)" (* "*") (cast_expression "(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2)" (( "(") (binary_expression "uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2" (binary_expression "uVar2 + 0x74" (identifier "uVar2") (+ "+") (number_literal "0x74")) (+ "+") (binary_expression "(uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2" (binary_expression "(uint)*(ushort *)(&UNK_000221be + uVar21 * 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(&UNK_000221be + uVar21 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&UNK_000221be + uVar21 * 2)" (( "(") (binary_expression "&UNK_000221be + uVar21 * 2" (pointer_expression "&UNK_000221be" (& "&") (identifier "UNK_000221be")) (+ "+") (binary_expression "uVar21 * 2" (identifier "uVar21") (* "*") (number_literal "2"))) () ")")))) (* "*") (number_literal "2"))) () ")")))) (= "=") (binary_expression "(ushort)local_64 & 7" (cast_expression "(ushort)local_64" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (identifier "local_64")) (& "&") (number_literal "7"))) (; ";")) (expression_statement "local_64 = uVar17;" (assignment_expression "local_64 = uVar17" (identifier "local_64") (= "=") (identifier "uVar17")) (; ";")) (expression_statement "uVar17 = uVar21 + 1;" (assignment_expression "uVar17 = uVar21 + 1" (identifier "uVar17") (= "=") (binary_expression "uVar21 + 1" (identifier "uVar21") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar14 + 1 != uVar21 + 1)" (( "(") (binary_expression "uVar14 + 1 != uVar21 + 1" (binary_expression "uVar14 + 1" (identifier "uVar14") (+ "+") (number_literal "1")) (!= "!=") (binary_expression "uVar21 + 1" (identifier "uVar21") (+ "+") (number_literal "1"))) () ")")) (; ";")) (labeled_statement "code_r0x00019253:\n            if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }" (statement_identifier "code_r0x00019253") (: ":") (if_statement "if (uVar21 < 0x13) {\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }" (if "if") (parenthesized_expression "(uVar21 < 0x13)" (( "(") (binary_expression "uVar21 < 0x13" (identifier "uVar21") (< "<") (number_literal "0x13")) () ")")) (compound_statement "{\n              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);\n              do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);\n              *(undefined4 *)(uVar2 + 0x6c) = 0x13;\n            }" ({ "{") (expression_statement "puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);" (assignment_expression "puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2)" (identifier "puVar11") (= "=") (cast_expression "(ushort *)(&UNK_000221c0 + uVar21 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&UNK_000221c0 + uVar21 * 2)" (( "(") (binary_expression "&UNK_000221c0 + uVar21 * 2" (pointer_expression "&UNK_000221c0" (& "&") (identifier "UNK_000221c0")) (+ "+") (binary_expression "uVar21 * 2" (identifier "uVar21") (* "*") (number_literal "2"))) () ")")))) (; ";")) (do_statement "do {\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              } while (puVar11 != (ushort *)&UNK_000221e6);" (do "do") (compound_statement "{\n                uVar19 = *puVar11;\n                puVar11 = puVar11 + 1;\n                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;\n              }" ({ "{") (expression_statement "uVar19 = *puVar11;" (assignment_expression "uVar19 = *puVar11" (identifier "uVar19") (= "=") (pointer_expression "*puVar11" (* "*") (identifier "puVar11"))) (; ";")) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" (identifier "puVar11") (= "=") (binary_expression "puVar11 + 1" (identifier "puVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;" (assignment_expression "*(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0" (pointer_expression "*(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2)" (* "*") (cast_expression "(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x74 + (uint)uVar19 * 2)" (( "(") (binary_expression "uVar2 + 0x74 + (uint)uVar19 * 2" (binary_expression "uVar2 + 0x74" (identifier "uVar2") (+ "+") (number_literal "0x74")) (+ "+") (binary_expression "(uint)uVar19 * 2" (cast_expression "(uint)uVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar19")) (* "*") (number_literal "2"))) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar11 != (ushort *)&UNK_000221e6)" (( "(") (binary_expression "puVar11 != (ushort *)&UNK_000221e6" (identifier "puVar11") (!= "!=") (cast_expression "(ushort *)&UNK_000221e6" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&UNK_000221e6" (& "&") (identifier "UNK_000221e6")))) () ")")) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 0x6c) = 0x13;" (assignment_expression "*(undefined4 *)(uVar2 + 0x6c) = 0x13" (pointer_expression "*(undefined4 *)(uVar2 + 0x6c)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x6c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x6c)" (( "(") (binary_expression "uVar2 + 0x6c" (identifier "uVar2") (+ "+") (number_literal "0x6c")) () ")")))) (= "=") (number_literal "0x13")) (; ";")) (} "}")))) (expression_statement "*(undefined4 *)(uVar2 + 0x58) = 7;" (assignment_expression "*(undefined4 *)(uVar2 + 0x58) = 7" (pointer_expression "*(undefined4 *)(uVar2 + 0x58)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x58)" (( "(") (binary_expression "uVar2 + 0x58" (identifier "uVar2") (+ "+") (number_literal "0x58")) () ")")))) (= "=") (number_literal "7")) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x70) = uVar2 + 0x534;" (assignment_expression "*(uint *)(uVar2 + 0x70) = uVar2 + 0x534" (pointer_expression "*(uint *)(uVar2 + 0x70)" (* "*") (cast_expression "(uint *)(uVar2 + 0x70)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x70)" (( "(") (binary_expression "uVar2 + 0x70" (identifier "uVar2") (+ "+") (number_literal "0x70")) () ")")))) (= "=") (binary_expression "uVar2 + 0x534" (identifier "uVar2") (+ "+") (number_literal "0x534"))) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x50) = uVar2 + 0x534;" (assignment_expression "*(uint *)(uVar2 + 0x50) = uVar2 + 0x534" (pointer_expression "*(uint *)(uVar2 + 0x50)" (* "*") (cast_expression "(uint *)(uVar2 + 0x50)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x50)" (( "(") (binary_expression "uVar2 + 0x50" (identifier "uVar2") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (binary_expression "uVar2 + 0x534" (identifier "uVar2") (+ "+") (number_literal "0x534"))) (; ";")) (expression_statement "iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);" (assignment_expression "iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4)" (identifier "iVar5") (= "=") (call_expression "FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4)" (identifier "FUN_0001a270") (argument_list "(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4)" (( "(") (number_literal "0") (, ",") (binary_expression "uVar2 + 0x74" (identifier "uVar2") (+ "+") (number_literal "0x74")) (, ",") (number_literal "0x13") (, ",") (binary_expression "uVar2 + 0x70" (identifier "uVar2") (+ "+") (number_literal "0x70")) (, ",") (binary_expression "uVar2 + 0x58" (identifier "uVar2") (+ "+") (number_literal "0x58")) (, ",") (binary_expression "uVar2 + 0x2f4" (identifier "uVar2") (+ "+") (number_literal "0x2f4")) () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }\n            else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              uStack_48 = 0;\n              *(undefined4 *)(uVar2 + 0x6c) = 0;\n              *(undefined4 *)(uVar2 + 4) = 0x3f46;\n              uVar21 = extraout_ECX_01;\nLAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);\n              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);\n              while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }\n              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;\n              if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }\n              uVar21 = 0xfffffffd;\n              param_1[6] = (int)"invalid code -- missing end-of-block";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n            }" ({ "{") (expression_statement "uStack_48 = 0;" (assignment_expression "uStack_48 = 0" (identifier "uStack_48") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 0x6c) = 0;" (assignment_expression "*(undefined4 *)(uVar2 + 0x6c) = 0" (pointer_expression "*(undefined4 *)(uVar2 + 0x6c)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x6c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x6c)" (( "(") (binary_expression "uVar2 + 0x6c" (identifier "uVar2") (+ "+") (number_literal "0x6c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f46;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f46" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f46")) (; ";")) (expression_statement "uVar21 = extraout_ECX_01;" (assignment_expression "uVar21 = extraout_ECX_01" (identifier "uVar21") (= "=") (identifier "extraout_ECX_01")) (; ";")) (labeled_statement "LAB_000185db:\n              iVar5 = *(int *)(uVar2 + 100);" (statement_identifier "LAB_000185db") (: ":") (expression_statement "iVar5 = *(int *)(uVar2 + 100);" (assignment_expression "iVar5 = *(int *)(uVar2 + 100)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(uVar2 + 100)" (* "*") (cast_expression "(int *)(uVar2 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 100)" (( "(") (binary_expression "uVar2 + 100" (identifier "uVar2") (+ "+") (number_literal "100")) () ")"))))) (; ";"))) (expression_statement "uVar14 = iVar5 + *(int *)(uVar2 + 0x68);" (assignment_expression "uVar14 = iVar5 + *(int *)(uVar2 + 0x68)" (identifier "uVar14") (= "=") (binary_expression "iVar5 + *(int *)(uVar2 + 0x68)" (identifier "iVar5") (+ "+") (pointer_expression "*(int *)(uVar2 + 0x68)" (* "*") (cast_expression "(int *)(uVar2 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x68)" (( "(") (binary_expression "uVar2 + 0x68" (identifier "uVar2") (+ "+") (number_literal "0x68")) () ")")))))) (; ";")) (while_statement "while (uStack_48 < uVar14) {\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }" (while "while") (parenthesized_expression "(uStack_48 < uVar14)" (( "(") (binary_expression "uStack_48 < uVar14" (identifier "uStack_48") (< "<") (identifier "uVar14")) () ")")) (compound_statement "{\n                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                uVar21 = (uint)*(byte *)(iVar7 + 1);\n                uVar19 = *(ushort *)(iVar7 + 2);\n                if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }\nLAB_00018694:\n                bVar12 = (byte)uVar21;\n                if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }\n              }" ({ "{") (expression_statement "uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));" (assignment_expression "uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f))" (identifier "uVar17") (= "=") (unary_expression "~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f))" (~ "~") (parenthesized_expression "(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f))" (( "(") (binary_expression "-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f)" (( "(") (binary_expression "(byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f" (binary_expression "(byte)*(undefined4 *)(uVar2 + 0x58)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x58)" (( "(") (binary_expression "uVar2 + 0x58" (identifier "uVar2") (+ "+") (number_literal "0x58")) () ")")))) (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;" (assignment_expression "iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4" (identifier "iVar7") (= "=") (binary_expression "*(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4" (pointer_expression "*(int *)(uVar2 + 0x50)" (* "*") (cast_expression "(int *)(uVar2 + 0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x50)" (( "(") (binary_expression "uVar2 + 0x50" (identifier "uVar2") (+ "+") (number_literal "0x50")) () ")")))) (+ "+") (binary_expression "(uVar17 & local_64) * 4" (parenthesized_expression "(uVar17 & local_64)" (( "(") (binary_expression "uVar17 & local_64" (identifier "uVar17") (& "&") (identifier "local_64")) () ")")) (* "*") (number_literal "4")))) (; ";")) (expression_statement "uVar21 = (uint)*(byte *)(iVar7 + 1);" (assignment_expression "uVar21 = (uint)*(byte *)(iVar7 + 1)" (identifier "uVar21") (= "=") (binary_expression "(uint)*(byte *)(iVar7 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar7 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 1)" (( "(") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "uVar19 = *(ushort *)(iVar7 + 2);" (assignment_expression "uVar19 = *(ushort *)(iVar7 + 2)" (identifier "uVar19") (= "=") (pointer_expression "*(ushort *)(iVar7 + 2)" (* "*") (cast_expression "(ushort *)(iVar7 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 2)" (( "(") (binary_expression "iVar7 + 2" (identifier "iVar7") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (if_statement "if (uVar15 < uVar21) {\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }" (if "if") (parenthesized_expression "(uVar15 < uVar21)" (( "(") (binary_expression "uVar15 < uVar21" (identifier "uVar15") (< "<") (identifier "uVar21")) () ")")) (compound_statement "{\n                  if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }\nLAB_000192ef:\n                  uVar21 = 0;\n                  goto LAB_00017f32;\n                }" ({ "{") (if_statement "if (local_6c != 0) {\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }" (if "if") (parenthesized_expression "(local_6c != 0)" (( "(") (binary_expression "local_6c != 0" (identifier "local_6c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }\n                    goto LAB_00018694;\n                  }" ({ "{") (while_statement "while( true ) {\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                      pbVar20 = local_60 + 1;\n                      local_6c = local_6c - 1;\n                      bVar12 = (byte)uVar15;\n                      uVar15 = uVar15 + 8;\n                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;\n                      uVar21 = (uint)*(byte *)(iVar7 + 1);\n                      uVar19 = *(ushort *)(iVar7 + 2);\n                      local_60 = pbVar20;\n                      if (uVar21 <= uVar15) break;\n                      if (local_6c == 0) goto LAB_00018d40;\n                    }" ({ "{") (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" (identifier "pbVar20") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" (identifier "local_6c") (= "=") (binary_expression "local_6c - 1" (identifier "local_6c") (- "-") (number_literal "1"))) (; ";")) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" (identifier "bVar12") (= "=") (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15"))) (; ";")) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 8" (identifier "uVar15") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "local_64") (= "=") (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "local_64") (+ "+") (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" (( "(") (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "local_60")) (<< "<<") (parenthesized_expression "(bVar12 & 0x1f)" (( "(") (binary_expression "bVar12 & 0x1f" (identifier "bVar12") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;" (assignment_expression "iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4" (identifier "iVar7") (= "=") (binary_expression "*(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4" (pointer_expression "*(int *)(uVar2 + 0x50)" (* "*") (cast_expression "(int *)(uVar2 + 0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x50)" (( "(") (binary_expression "uVar2 + 0x50" (identifier "uVar2") (+ "+") (number_literal "0x50")) () ")")))) (+ "+") (binary_expression "(uVar17 & local_64) * 4" (parenthesized_expression "(uVar17 & local_64)" (( "(") (binary_expression "uVar17 & local_64" (identifier "uVar17") (& "&") (identifier "local_64")) () ")")) (* "*") (number_literal "4")))) (; ";")) (expression_statement "uVar21 = (uint)*(byte *)(iVar7 + 1);" (assignment_expression "uVar21 = (uint)*(byte *)(iVar7 + 1)" (identifier "uVar21") (= "=") (binary_expression "(uint)*(byte *)(iVar7 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar7 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 1)" (( "(") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "uVar19 = *(ushort *)(iVar7 + 2);" (assignment_expression "uVar19 = *(ushort *)(iVar7 + 2)" (identifier "uVar19") (= "=") (pointer_expression "*(ushort *)(iVar7 + 2)" (* "*") (cast_expression "(ushort *)(iVar7 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 2)" (( "(") (binary_expression "iVar7 + 2" (identifier "iVar7") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" (identifier "local_60") (= "=") (identifier "pbVar20")) (; ";")) (if_statement "if (uVar21 <= uVar15) break;" (if "if") (parenthesized_expression "(uVar21 <= uVar15)" (( "(") (binary_expression "uVar21 <= uVar15" (identifier "uVar21") (<= "<=") (identifier "uVar15")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (local_6c == 0) goto LAB_00018d40;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00018d40;" (goto "goto") (statement_identifier "LAB_00018d40") (; ";"))) (} "}"))) (goto_statement "goto LAB_00018694;" (goto "goto") (statement_identifier "LAB_00018694") (; ";")) (} "}"))) (labeled_statement "LAB_000192ef:\n                  uVar21 = 0;" (statement_identifier "LAB_000192ef") (: ":") (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";"))) (goto_statement "goto LAB_00017f32;" (goto "goto") (statement_identifier "LAB_00017f32") (; ";")) (} "}"))) (labeled_statement "LAB_00018694:\n                bVar12 = (byte)uVar21;" (statement_identifier "LAB_00018694") (: ":") (expression_statement "bVar12 = (byte)uVar21;" (assignment_expression "bVar12 = (byte)uVar21" (identifier "bVar12") (= "=") (cast_expression "(byte)uVar21" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar21"))) (; ";"))) (if_statement "if (uVar19 < 0x10) {\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }\n                else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }" (if "if") (parenthesized_expression "(uVar19 < 0x10)" (( "(") (binary_expression "uVar19 < 0x10" (identifier "uVar19") (< "<") (number_literal "0x10")) () ")")) (compound_statement "{\n                  local_64 = local_64 >> (bVar12 & 0x1f);\n                  uVar15 = uVar15 - uVar21;\n                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;\n                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;\n                  uVar21 = uStack_48;\n                  uStack_48 = uStack_48 + 1;\n                }" ({ "{") (expression_statement "local_64 = local_64 >> (bVar12 & 0x1f);" (assignment_expression "local_64 = local_64 >> (bVar12 & 0x1f)" (identifier "local_64") (= "=") (binary_expression "local_64 >> (bVar12 & 0x1f)" (identifier "local_64") (>> ">>") (parenthesized_expression "(bVar12 & 0x1f)" (( "(") (binary_expression "bVar12 & 0x1f" (identifier "bVar12") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar15 = uVar15 - uVar21;" (assignment_expression "uVar15 = uVar15 - uVar21" (identifier "uVar15") (= "=") (binary_expression "uVar15 - uVar21" (identifier "uVar15") (- "-") (identifier "uVar21"))) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x6c) = uStack_48 + 1;" (assignment_expression "*(uint *)(uVar2 + 0x6c) = uStack_48 + 1" (pointer_expression "*(uint *)(uVar2 + 0x6c)" (* "*") (cast_expression "(uint *)(uVar2 + 0x6c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x6c)" (( "(") (binary_expression "uVar2 + 0x6c" (identifier "uVar2") (+ "+") (number_literal "0x6c")) () ")")))) (= "=") (binary_expression "uStack_48 + 1" (identifier "uStack_48") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;" (assignment_expression "*(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19" (pointer_expression "*(ushort *)(uVar2 + 0x74 + uStack_48 * 2)" (* "*") (cast_expression "(ushort *)(uVar2 + 0x74 + uStack_48 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x74 + uStack_48 * 2)" (( "(") (binary_expression "uVar2 + 0x74 + uStack_48 * 2" (binary_expression "uVar2 + 0x74" (identifier "uVar2") (+ "+") (number_literal "0x74")) (+ "+") (binary_expression "uStack_48 * 2" (identifier "uStack_48") (* "*") (number_literal "2"))) () ")")))) (= "=") (identifier "uVar19")) (; ";")) (expression_statement "uVar21 = uStack_48;" (assignment_expression "uVar21 = uStack_48" (identifier "uVar21") (= "=") (identifier "uStack_48")) (; ";")) (expression_statement "uStack_48 = uStack_48 + 1;" (assignment_expression "uStack_48 = uStack_48 + 1" (identifier "uStack_48") (= "=") (binary_expression "uStack_48 + 1" (identifier "uStack_48") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }" (else "else") (compound_statement "{\n                  if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }\n                  uVar17 = iVar7 + uStack_48;\n                  if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }\n                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);\n                  do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));\n                  *(uint *)(uVar2 + 0x6c) = uVar17;\n                  uStack_48 = uVar17;\n                }" ({ "{") (if_statement "if (uVar19 == 0x10) {\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }\n                  else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }" (if "if") (parenthesized_expression "(uVar19 == 0x10)" (( "(") (binary_expression "uVar19 == 0x10" (identifier "uVar19") (== "==") (number_literal "0x10")) () ")")) (compound_statement "{\n                    if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    uVar15 = uVar15 - uVar21;\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }\n                    uVar17 = local_64 & 3;\n                    local_64 = local_64 >> 2;\n                    uVar15 = uVar15 - 2;\n                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);\n                    iVar7 = uVar17 + 3;\n                  }" ({ "{") (if_statement "if (uVar15 < uVar21 + 2) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }" (if "if") (parenthesized_expression "(uVar15 < uVar21 + 2)" (( "(") (binary_expression "uVar15 < uVar21 + 2" (identifier "uVar15") (< "<") (binary_expression "uVar21 + 2" (identifier "uVar21") (+ "+") (number_literal "2"))) () ")")) (compound_statement "{\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }" ({ "{") (if_statement "if (local_6c == 0) goto LAB_000192ef;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000192ef;" (goto "goto") (statement_identifier "LAB_000192ef") (; ";"))) (while_statement "while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 2 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }" ({ "{") (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" (identifier "pbVar20") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" (identifier "local_6c") (= "=") (binary_expression "local_6c - 1" (identifier "local_6c") (- "-") (number_literal "1"))) (; ";")) (expression_statement "bVar13 = (byte)uVar15;" (assignment_expression "bVar13 = (byte)uVar15" (identifier "bVar13") (= "=") (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15"))) (; ";")) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 8" (identifier "uVar15") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f))" (identifier "local_64") (= "=") (binary_expression "local_64 + ((uint)*local_60 << (bVar13 & 0x1f))" (identifier "local_64") (+ "+") (parenthesized_expression "((uint)*local_60 << (bVar13 & 0x1f))" (( "(") (binary_expression "(uint)*local_60 << (bVar13 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "local_60")) (<< "<<") (parenthesized_expression "(bVar13 & 0x1f)" (( "(") (binary_expression "bVar13 & 0x1f" (identifier "bVar13") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" (identifier "local_60") (= "=") (identifier "pbVar20")) (; ";")) (if_statement "if (uVar21 + 2 <= uVar15) break;" (if "if") (parenthesized_expression "(uVar21 + 2 <= uVar15)" (( "(") (binary_expression "uVar21 + 2 <= uVar15" (binary_expression "uVar21 + 2" (identifier "uVar21") (+ "+") (number_literal "2")) (<= "<=") (identifier "uVar15")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (local_6c == 0) goto LAB_00018d40;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00018d40;" (goto "goto") (statement_identifier "LAB_00018d40") (; ";"))) (} "}"))) (} "}"))) (expression_statement "uVar15 = uVar15 - uVar21;" (assignment_expression "uVar15 = uVar15 - uVar21" (identifier "uVar15") (= "=") (binary_expression "uVar15 - uVar21" (identifier "uVar15") (- "-") (identifier "uVar21"))) (; ";")) (expression_statement "local_64 = local_64 >> (bVar12 & 0x1f);" (assignment_expression "local_64 = local_64 >> (bVar12 & 0x1f)" (identifier "local_64") (= "=") (binary_expression "local_64 >> (bVar12 & 0x1f)" (identifier "local_64") (>> ">>") (parenthesized_expression "(bVar12 & 0x1f)" (( "(") (binary_expression "bVar12 & 0x1f" (identifier "bVar12") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if (uStack_48 == 0) {\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }" (if "if") (parenthesized_expression "(uStack_48 == 0)" (( "(") (binary_expression "uStack_48 == 0" (identifier "uStack_48") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                      param_1[6] = (int)"invalid bit length repeat";\n                      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                      goto LAB_00018817;\n                    }" ({ "{") (expression_statement "param_1[6] = (int)"invalid bit length repeat";" (assignment_expression "param_1[6] = (int)"invalid bit length repeat"" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (cast_expression "(int)"invalid bit length repeat"" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (string_literal ""invalid bit length repeat"" (" """) (string_content "invalid bit length repeat") (" """)))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f51")) (; ";")) (goto_statement "goto LAB_00018817;" (goto "goto") (statement_identifier "LAB_00018817") (; ";")) (} "}"))) (expression_statement "uVar17 = local_64 & 3;" (assignment_expression "uVar17 = local_64 & 3" (identifier "uVar17") (= "=") (binary_expression "local_64 & 3" (identifier "local_64") (& "&") (number_literal "3"))) (; ";")) (expression_statement "local_64 = local_64 >> 2;" (assignment_expression "local_64 = local_64 >> 2" (identifier "local_64") (= "=") (binary_expression "local_64 >> 2" (identifier "local_64") (>> ">>") (number_literal "2"))) (; ";")) (expression_statement "uVar15 = uVar15 - 2;" (assignment_expression "uVar15 = uVar15 - 2" (identifier "uVar15") (= "=") (binary_expression "uVar15 - 2" (identifier "uVar15") (- "-") (number_literal "2"))) (; ";")) (expression_statement "uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);" (assignment_expression "uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2)" (identifier "uVar21") (= "=") (binary_expression "(uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(uVar2 + 0x72 + uStack_48 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x72 + uStack_48 * 2)" (( "(") (binary_expression "uVar2 + 0x72 + uStack_48 * 2" (binary_expression "uVar2 + 0x72" (identifier "uVar2") (+ "+") (number_literal "0x72")) (+ "+") (binary_expression "uStack_48 * 2" (identifier "uStack_48") (* "*") (number_literal "2"))) () ")"))))) (; ";")) (expression_statement "iVar7 = uVar17 + 3;" (assignment_expression "iVar7 = uVar17 + 3" (identifier "iVar7") (= "=") (binary_expression "uVar17 + 3" (identifier "uVar17") (+ "+") (number_literal "3"))) (; ";")) (} "}")) (else_clause "else if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }" (else "else") (if_statement "if (uVar19 == 0x11) {\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }\n                  else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }" (if "if") (parenthesized_expression "(uVar19 == 0x11)" (( "(") (binary_expression "uVar19 == 0x11" (identifier "uVar19") (== "==") (number_literal "0x11")) () ")")) (compound_statement "{\n                    if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 3;\n                    iVar7 = (local_64 & 7) + 3;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 3;\n                  }" ({ "{") (if_statement "if (uVar15 < uVar21 + 3) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }" (if "if") (parenthesized_expression "(uVar15 < uVar21 + 3)" (( "(") (binary_expression "uVar15 < uVar21 + 3" (identifier "uVar15") (< "<") (binary_expression "uVar21 + 3" (identifier "uVar21") (+ "+") (number_literal "3"))) () ")")) (compound_statement "{\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }" ({ "{") (if_statement "if (local_6c == 0) goto LAB_000192ef;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000192ef;" (goto "goto") (statement_identifier "LAB_000192ef") (; ";"))) (while_statement "while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 3 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }" ({ "{") (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" (identifier "pbVar20") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" (identifier "local_6c") (= "=") (binary_expression "local_6c - 1" (identifier "local_6c") (- "-") (number_literal "1"))) (; ";")) (expression_statement "bVar13 = (byte)uVar15;" (assignment_expression "bVar13 = (byte)uVar15" (identifier "bVar13") (= "=") (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15"))) (; ";")) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 8" (identifier "uVar15") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f))" (identifier "local_64") (= "=") (binary_expression "local_64 + ((uint)*local_60 << (bVar13 & 0x1f))" (identifier "local_64") (+ "+") (parenthesized_expression "((uint)*local_60 << (bVar13 & 0x1f))" (( "(") (binary_expression "(uint)*local_60 << (bVar13 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "local_60")) (<< "<<") (parenthesized_expression "(bVar13 & 0x1f)" (( "(") (binary_expression "bVar13 & 0x1f" (identifier "bVar13") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" (identifier "local_60") (= "=") (identifier "pbVar20")) (; ";")) (if_statement "if (uVar21 + 3 <= uVar15) break;" (if "if") (parenthesized_expression "(uVar21 + 3 <= uVar15)" (( "(") (binary_expression "uVar21 + 3 <= uVar15" (binary_expression "uVar21 + 3" (identifier "uVar21") (+ "+") (number_literal "3")) (<= "<=") (identifier "uVar15")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (local_6c == 0) goto LAB_00018d40;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00018d40;" (goto "goto") (statement_identifier "LAB_00018d40") (; ";"))) (} "}"))) (} "}"))) (expression_statement "local_64 = local_64 >> (bVar12 & 0x1f);" (assignment_expression "local_64 = local_64 >> (bVar12 & 0x1f)" (identifier "local_64") (= "=") (binary_expression "local_64 >> (bVar12 & 0x1f)" (identifier "local_64") (>> ">>") (parenthesized_expression "(bVar12 & 0x1f)" (( "(") (binary_expression "bVar12 & 0x1f" (identifier "bVar12") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar15 = (uVar15 - uVar21) - 3;" (assignment_expression "uVar15 = (uVar15 - uVar21) - 3" (identifier "uVar15") (= "=") (binary_expression "(uVar15 - uVar21) - 3" (parenthesized_expression "(uVar15 - uVar21)" (( "(") (binary_expression "uVar15 - uVar21" (identifier "uVar15") (- "-") (identifier "uVar21")) () ")")) (- "-") (number_literal "3"))) (; ";")) (expression_statement "iVar7 = (local_64 & 7) + 3;" (assignment_expression "iVar7 = (local_64 & 7) + 3" (identifier "iVar7") (= "=") (binary_expression "(local_64 & 7) + 3" (parenthesized_expression "(local_64 & 7)" (( "(") (binary_expression "local_64 & 7" (identifier "local_64") (& "&") (number_literal "7")) () ")")) (+ "+") (number_literal "3"))) (; ";")) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_64 = local_64 >> 3;" (assignment_expression "local_64 = local_64 >> 3" (identifier "local_64") (= "=") (binary_expression "local_64 >> 3" (identifier "local_64") (>> ">>") (number_literal "3"))) (; ";")) (} "}")) (else_clause "else {\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }" (else "else") (compound_statement "{\n                    if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }\n                    local_64 = local_64 >> (bVar12 & 0x1f);\n                    uVar15 = (uVar15 - uVar21) - 7;\n                    iVar7 = (local_64 & 0x7f) + 0xb;\n                    uVar21 = 0;\n                    local_64 = local_64 >> 7;\n                  }" ({ "{") (if_statement "if (uVar15 < uVar21 + 7) {\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }" (if "if") (parenthesized_expression "(uVar15 < uVar21 + 7)" (( "(") (binary_expression "uVar15 < uVar21 + 7" (identifier "uVar15") (< "<") (binary_expression "uVar21 + 7" (identifier "uVar21") (+ "+") (number_literal "7"))) () ")")) (compound_statement "{\n                      if (local_6c == 0) goto LAB_000192ef;\n                      while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }\n                    }" ({ "{") (if_statement "if (local_6c == 0) goto LAB_000192ef;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000192ef;" (goto "goto") (statement_identifier "LAB_000192ef") (; ";"))) (while_statement "while( true ) {\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                        pbVar20 = local_60 + 1;\n                        local_6c = local_6c - 1;\n                        bVar13 = (byte)uVar15;\n                        uVar15 = uVar15 + 8;\n                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));\n                        local_60 = pbVar20;\n                        if (uVar21 + 7 <= uVar15) break;\n                        if (local_6c == 0) goto LAB_00018d40;\n                      }" ({ "{") (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" (identifier "pbVar20") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" (identifier "local_6c") (= "=") (binary_expression "local_6c - 1" (identifier "local_6c") (- "-") (number_literal "1"))) (; ";")) (expression_statement "bVar13 = (byte)uVar15;" (assignment_expression "bVar13 = (byte)uVar15" (identifier "bVar13") (= "=") (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15"))) (; ";")) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 8" (identifier "uVar15") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f))" (identifier "local_64") (= "=") (binary_expression "local_64 + ((uint)*local_60 << (bVar13 & 0x1f))" (identifier "local_64") (+ "+") (parenthesized_expression "((uint)*local_60 << (bVar13 & 0x1f))" (( "(") (binary_expression "(uint)*local_60 << (bVar13 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "local_60")) (<< "<<") (parenthesized_expression "(bVar13 & 0x1f)" (( "(") (binary_expression "bVar13 & 0x1f" (identifier "bVar13") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" (identifier "local_60") (= "=") (identifier "pbVar20")) (; ";")) (if_statement "if (uVar21 + 7 <= uVar15) break;" (if "if") (parenthesized_expression "(uVar21 + 7 <= uVar15)" (( "(") (binary_expression "uVar21 + 7 <= uVar15" (binary_expression "uVar21 + 7" (identifier "uVar21") (+ "+") (number_literal "7")) (<= "<=") (identifier "uVar15")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (local_6c == 0) goto LAB_00018d40;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00018d40;" (goto "goto") (statement_identifier "LAB_00018d40") (; ";"))) (} "}"))) (} "}"))) (expression_statement "local_64 = local_64 >> (bVar12 & 0x1f);" (assignment_expression "local_64 = local_64 >> (bVar12 & 0x1f)" (identifier "local_64") (= "=") (binary_expression "local_64 >> (bVar12 & 0x1f)" (identifier "local_64") (>> ">>") (parenthesized_expression "(bVar12 & 0x1f)" (( "(") (binary_expression "bVar12 & 0x1f" (identifier "bVar12") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar15 = (uVar15 - uVar21) - 7;" (assignment_expression "uVar15 = (uVar15 - uVar21) - 7" (identifier "uVar15") (= "=") (binary_expression "(uVar15 - uVar21) - 7" (parenthesized_expression "(uVar15 - uVar21)" (( "(") (binary_expression "uVar15 - uVar21" (identifier "uVar15") (- "-") (identifier "uVar21")) () ")")) (- "-") (number_literal "7"))) (; ";")) (expression_statement "iVar7 = (local_64 & 0x7f) + 0xb;" (assignment_expression "iVar7 = (local_64 & 0x7f) + 0xb" (identifier "iVar7") (= "=") (binary_expression "(local_64 & 0x7f) + 0xb" (parenthesized_expression "(local_64 & 0x7f)" (( "(") (binary_expression "local_64 & 0x7f" (identifier "local_64") (& "&") (number_literal "0x7f")) () ")")) (+ "+") (number_literal "0xb"))) (; ";")) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_64 = local_64 >> 7;" (assignment_expression "local_64 = local_64 >> 7" (identifier "local_64") (= "=") (binary_expression "local_64 >> 7" (identifier "local_64") (>> ">>") (number_literal "7"))) (; ";")) (} "}")))))) (expression_statement "uVar17 = iVar7 + uStack_48;" (assignment_expression "uVar17 = iVar7 + uStack_48" (identifier "uVar17") (= "=") (binary_expression "iVar7 + uStack_48" (identifier "iVar7") (+ "+") (identifier "uStack_48"))) (; ";")) (if_statement "if (uVar14 < uVar17) {\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }" (if "if") (parenthesized_expression "(uVar14 < uVar17)" (( "(") (binary_expression "uVar14 < uVar17" (identifier "uVar14") (< "<") (identifier "uVar17")) () ")")) (compound_statement "{\n                    param_1[6] = (int)"invalid bit length repeat";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                    goto LAB_00018817;\n                  }" ({ "{") (expression_statement "param_1[6] = (int)"invalid bit length repeat";" (assignment_expression "param_1[6] = (int)"invalid bit length repeat"" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (cast_expression "(int)"invalid bit length repeat"" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (string_literal ""invalid bit length repeat"" (" """) (string_content "invalid bit length repeat") (" """)))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f51")) (; ";")) (goto_statement "goto LAB_00018817;" (goto "goto") (statement_identifier "LAB_00018817") (; ";")) (} "}"))) (expression_statement "puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);" (assignment_expression "puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2)" (identifier "puVar16") (= "=") (cast_expression "(undefined2 *)(uVar2 + 0x74 + uStack_48 * 2)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x74 + uStack_48 * 2)" (( "(") (binary_expression "uVar2 + 0x74 + uStack_48 * 2" (binary_expression "uVar2 + 0x74" (identifier "uVar2") (+ "+") (number_literal "0x74")) (+ "+") (binary_expression "uStack_48 * 2" (identifier "uStack_48") (* "*") (number_literal "2"))) () ")")))) (; ";")) (do_statement "do {\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));" (do "do") (compound_statement "{\n                    *puVar16 = (short)uVar21;\n                    puVar16 = puVar16 + 1;\n                  }" ({ "{") (expression_statement "*puVar16 = (short)uVar21;" (assignment_expression "*puVar16 = (short)uVar21" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (cast_expression "(short)uVar21" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar21"))) (; ";")) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" (identifier "puVar16") (= "=") (binary_expression "puVar16 + 1" (identifier "puVar16") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2))" (( "(") (binary_expression "puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2)" (identifier "puVar16") (!= "!=") (cast_expression "(undefined2 *)(uVar2 + 0x74 + uVar17 * 2)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x74 + uVar17 * 2)" (( "(") (binary_expression "uVar2 + 0x74 + uVar17 * 2" (binary_expression "uVar2 + 0x74" (identifier "uVar2") (+ "+") (number_literal "0x74")) (+ "+") (binary_expression "uVar17 * 2" (identifier "uVar17") (* "*") (number_literal "2"))) () ")")))) () ")")) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x6c) = uVar17;" (assignment_expression "*(uint *)(uVar2 + 0x6c) = uVar17" (pointer_expression "*(uint *)(uVar2 + 0x6c)" (* "*") (cast_expression "(uint *)(uVar2 + 0x6c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x6c)" (( "(") (binary_expression "uVar2 + 0x6c" (identifier "uVar2") (+ "+") (number_literal "0x6c")) () ")")))) (= "=") (identifier "uVar17")) (; ";")) (expression_statement "uStack_48 = uVar17;" (assignment_expression "uStack_48 = uVar17" (identifier "uStack_48") (= "=") (identifier "uVar17")) (; ";")) (} "}")))) (} "}"))) (if_statement "if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;" (if "if") (parenthesized_expression "(*(int *)(uVar2 + 4) == 0x3f51)" (( "(") (binary_expression "*(int *)(uVar2 + 4) == 0x3f51" (pointer_expression "*(int *)(uVar2 + 4)" (* "*") (cast_expression "(int *)(uVar2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (== "==") (number_literal "0x3f51")) () ")")) (goto_statement "goto LAB_00018817;" (goto "goto") (statement_identifier "LAB_00018817") (; ";"))) (if_statement "if (*(short *)(uVar2 + 0x274) != 0) {\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }" (if "if") (parenthesized_expression "(*(short *)(uVar2 + 0x274) != 0)" (( "(") (binary_expression "*(short *)(uVar2 + 0x274) != 0" (pointer_expression "*(short *)(uVar2 + 0x274)" (* "*") (cast_expression "(short *)(uVar2 + 0x274)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x274)" (( "(") (binary_expression "uVar2 + 0x274" (identifier "uVar2") (+ "+") (number_literal "0x274")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                *(undefined4 *)(uVar2 + 0x58) = 9;\n                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;\n                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;\n                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);\n                if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }\n                pcVar6 = "invalid literal/lengths set";\n                goto LAB_00017b45;\n              }" ({ "{") (expression_statement "*(undefined4 *)(uVar2 + 0x58) = 9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x58) = 9" (pointer_expression "*(undefined4 *)(uVar2 + 0x58)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x58)" (( "(") (binary_expression "uVar2 + 0x58" (identifier "uVar2") (+ "+") (number_literal "0x58")) () ")")))) (= "=") (number_literal "9")) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x70) = uVar2 + 0x534;" (assignment_expression "*(uint *)(uVar2 + 0x70) = uVar2 + 0x534" (pointer_expression "*(uint *)(uVar2 + 0x70)" (* "*") (cast_expression "(uint *)(uVar2 + 0x70)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x70)" (( "(") (binary_expression "uVar2 + 0x70" (identifier "uVar2") (+ "+") (number_literal "0x70")) () ")")))) (= "=") (binary_expression "uVar2 + 0x534" (identifier "uVar2") (+ "+") (number_literal "0x534"))) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x50) = uVar2 + 0x534;" (assignment_expression "*(uint *)(uVar2 + 0x50) = uVar2 + 0x534" (pointer_expression "*(uint *)(uVar2 + 0x50)" (* "*") (cast_expression "(uint *)(uVar2 + 0x50)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x50)" (( "(") (binary_expression "uVar2 + 0x50" (identifier "uVar2") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (binary_expression "uVar2 + 0x534" (identifier "uVar2") (+ "+") (number_literal "0x534"))) (; ";")) (expression_statement "iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21);" (assignment_expression "iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21)" (identifier "iVar5") (= "=") (call_expression "FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21)" (identifier "FUN_0001a270") (argument_list "(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,\n                                     uVar21,uVar21)" (( "(") (number_literal "1") (, ",") (binary_expression "uVar2 + 0x74" (identifier "uVar2") (+ "+") (number_literal "0x74")) (, ",") (identifier "iVar5") (, ",") (binary_expression "uVar2 + 0x70" (identifier "uVar2") (+ "+") (number_literal "0x70")) (, ",") (binary_expression "uVar2 + 0x58" (identifier "uVar2") (+ "+") (number_literal "0x58")) (, ",") (binary_expression "uVar2 + 0x2f4" (identifier "uVar2") (+ "+") (number_literal "0x2f4")) (, ",") (identifier "uVar21") (, ",") (identifier "uVar21") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  uVar9 = *(undefined4 *)(uVar2 + 0x70);\n                  *(undefined4 *)(uVar2 + 0x5c) = 6;\n                  *(undefined4 *)(uVar2 + 0x54) = uVar9;\n                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);\n                  if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }\n                  goto LAB_00017f32;\n                }" ({ "{") (expression_statement "uVar9 = *(undefined4 *)(uVar2 + 0x70);" (assignment_expression "uVar9 = *(undefined4 *)(uVar2 + 0x70)" (identifier "uVar9") (= "=") (pointer_expression "*(undefined4 *)(uVar2 + 0x70)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x70)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x70)" (( "(") (binary_expression "uVar2 + 0x70" (identifier "uVar2") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 0x5c) = 6;" (assignment_expression "*(undefined4 *)(uVar2 + 0x5c) = 6" (pointer_expression "*(undefined4 *)(uVar2 + 0x5c)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x5c)" (( "(") (binary_expression "uVar2 + 0x5c" (identifier "uVar2") (+ "+") (number_literal "0x5c")) () ")")))) (= "=") (number_literal "6")) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 0x54) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x54) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x54)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x54)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x54)" (( "(") (binary_expression "uVar2 + 0x54" (identifier "uVar2") (+ "+") (number_literal "0x54")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9);" (assignment_expression "iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9)" (identifier "iVar5") (= "=") (call_expression "FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9)" (identifier "FUN_0001a270") (argument_list "(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,\n                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,\n                                       uVar2 + 0x2f4,uVar9,uVar9)" (( "(") (number_literal "2") (, ",") (binary_expression "uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2" (binary_expression "uVar2 + 0x74" (identifier "uVar2") (+ "+") (number_literal "0x74")) (+ "+") (binary_expression "*(int *)(uVar2 + 100) * 2" (pointer_expression "*(int *)(uVar2 + 100)" (* "*") (cast_expression "(int *)(uVar2 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 100)" (( "(") (binary_expression "uVar2 + 100" (identifier "uVar2") (+ "+") (number_literal "100")) () ")")))) (* "*") (number_literal "2"))) (, ",") (pointer_expression "*(undefined4 *)(uVar2 + 0x68)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x68)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x68)" (( "(") (binary_expression "uVar2 + 0x68" (identifier "uVar2") (+ "+") (number_literal "0x68")) () ")")))) (, ",") (binary_expression "uVar2 + 0x70" (identifier "uVar2") (+ "+") (number_literal "0x70")) (, ",") (binary_expression "uVar2 + 0x5c" (identifier "uVar2") (+ "+") (number_literal "0x5c")) (, ",") (binary_expression "uVar2 + 0x2f4" (identifier "uVar2") (+ "+") (number_literal "0x2f4")) (, ",") (identifier "uVar9") (, ",") (identifier "uVar9") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }\n                  else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    *(undefined4 *)(uVar2 + 4) = 0x3f47;\n                    if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }\n                    uVar21 = 0;\n                  }" ({ "{") (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f47;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f47" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f47")) (; ";")) (if_statement "if (param_2 != 6) {\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }" (if "if") (parenthesized_expression "(param_2 != 6)" (( "(") (binary_expression "param_2 != 6" (identifier "param_2") (!= "!=") (number_literal "6")) () ")")) (compound_statement "{\nLAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );\n                    }" ({ "{") (labeled_statement "LAB_00017c70:\n                      do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );" (statement_identifier "LAB_00017c70") (: ":") (do_statement "do {\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      } while( true );" (do "do") (compound_statement "{\n                        *(undefined4 *)(uVar2 + 4) = 0x3f48;\nLAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }\n                        iVar5 = *(int *)(uVar2 + 0x50);\n                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                        bVar12 = pbVar20[1];\n                        uVar14 = (uint)bVar12;\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uVar17 = (uint)uVar19;\n                        if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }\n                        bVar12 = (byte)uVar14;\n                        if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }\n                        local_64 = local_64 >> (bVar12 & 0x1f);\n                        uVar15 = uVar21 - uVar14;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                        *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;\n                        if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f49;\nLAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }\n                        *(int *)(uVar2 + 0x1bcc) = iVar5;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;\ncode_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);\n                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));\n                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);\n                        bVar12 = pbVar20[1];\n                        bVar13 = *pbVar20;\n                        uVar19 = *(ushort *)(pbVar20 + 2);\n                        uVar14 = (uint)bVar12;\n                        uVar21 = uVar15;\n                        if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }\n                        uStack_48 = (uint)uVar19;\n                        if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }\n                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);\n                        uVar15 = uVar21 - uVar17;\n                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;\n                        if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }\n                        uVar21 = bVar13 & 0xf;\n                        *(uint *)(uVar2 + 0x4c) = uVar21;\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;\n                        *(uint *)(uVar2 + 0x48) = uStack_48;\nLAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }\n                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;\ncode_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;\n                        uVar21 = *(uint *)(uVar2 + 0x48);\n                        if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }\n                        if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }\n                        local_5c = local_5c - uVar21;\n                        puVar8 = __dest + uVar21;\n                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;\n                        puVar23 = __dest;\n                        do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);\n                        if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }\n                      }" ({ "{") (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f48;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f48" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f48")) (; ";")) (labeled_statement "LAB_00017b90:\n                        if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }" (statement_identifier "LAB_00017b90") (: ":") (if_statement "if ((5 < local_6c) && (0x101 < local_5c)) {\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }" (if "if") (parenthesized_expression "((5 < local_6c) && (0x101 < local_5c))" (( "(") (binary_expression "(5 < local_6c) && (0x101 < local_5c)" (parenthesized_expression "(5 < local_6c)" (( "(") (binary_expression "5 < local_6c" (number_literal "5") (< "<") (identifier "local_6c")) () ")")) (&& "&&") (parenthesized_expression "(0x101 < local_5c)" (( "(") (binary_expression "0x101 < local_5c" (number_literal "0x101") (< "<") (identifier "local_5c")) () ")"))) () ")")) (compound_statement "{\n                          param_1[3] = (int)__dest;\n                          param_1[4] = local_5c;\n                          param_1[1] = local_6c;\n                          *param_1 = (int)local_60;\n                          *(uint *)(uVar2 + 0x40) = uVar15;\n                          *(uint *)(uVar2 + 0x3c) = local_64;\n                          FUN_00016d10(param_1,local_50);\n                          __dest = (undefined1 *)param_1[3];\n                          local_5c = param_1[4];\n                          uVar15 = *(uint *)(uVar2 + 0x40);\n                          local_60 = (byte *)*param_1;\n                          local_6c = param_1[1];\n                          local_64 = *(uint *)(uVar2 + 0x3c);\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = extraout_ECX;\n                          if (iVar5 != 0x3f3f) goto LAB_000178c9;\n                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n                          goto LAB_00017f13;\n                        }" ({ "{") (expression_statement "param_1[3] = (int)__dest;" (assignment_expression "param_1[3] = (int)__dest" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(int)__dest" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__dest"))) (; ";")) (expression_statement "param_1[4] = local_5c;" (assignment_expression "param_1[4] = local_5c" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "local_5c")) (; ";")) (expression_statement "param_1[1] = local_6c;" (assignment_expression "param_1[1] = local_6c" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_6c")) (; ";")) (expression_statement "*param_1 = (int)local_60;" (assignment_expression "*param_1 = (int)local_60" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(int)local_60" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_60"))) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x40) = uVar15;" (assignment_expression "*(uint *)(uVar2 + 0x40) = uVar15" (pointer_expression "*(uint *)(uVar2 + 0x40)" (* "*") (cast_expression "(uint *)(uVar2 + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x40)" (( "(") (binary_expression "uVar2 + 0x40" (identifier "uVar2") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "uVar15")) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x3c) = local_64;" (assignment_expression "*(uint *)(uVar2 + 0x3c) = local_64" (pointer_expression "*(uint *)(uVar2 + 0x3c)" (* "*") (cast_expression "(uint *)(uVar2 + 0x3c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x3c)" (( "(") (binary_expression "uVar2 + 0x3c" (identifier "uVar2") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (identifier "local_64")) (; ";")) (expression_statement "FUN_00016d10(param_1,local_50);" (call_expression "FUN_00016d10(param_1,local_50)" (identifier "FUN_00016d10") (argument_list "(param_1,local_50)" (( "(") (identifier "param_1") (, ",") (identifier "local_50") () ")"))) (; ";")) (expression_statement "__dest = (undefined1 *)param_1[3];" (assignment_expression "__dest = (undefined1 *)param_1[3]" (identifier "__dest") (= "=") (cast_expression "(undefined1 *)param_1[3]" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "local_5c = param_1[4];" (assignment_expression "local_5c = param_1[4]" (identifier "local_5c") (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "uVar15 = *(uint *)(uVar2 + 0x40);" (assignment_expression "uVar15 = *(uint *)(uVar2 + 0x40)" (identifier "uVar15") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x40)" (* "*") (cast_expression "(uint *)(uVar2 + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x40)" (( "(") (binary_expression "uVar2 + 0x40" (identifier "uVar2") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (expression_statement "local_60 = (byte *)*param_1;" (assignment_expression "local_60 = (byte *)*param_1" (identifier "local_60") (= "=") (cast_expression "(byte *)*param_1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "local_6c = param_1[1];" (assignment_expression "local_6c = param_1[1]" (identifier "local_6c") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_64 = *(uint *)(uVar2 + 0x3c);" (assignment_expression "local_64 = *(uint *)(uVar2 + 0x3c)" (identifier "local_64") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x3c)" (* "*") (cast_expression "(uint *)(uVar2 + 0x3c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x3c)" (( "(") (binary_expression "uVar2 + 0x3c" (identifier "uVar2") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "iVar5 = *(int *)(uVar2 + 4);" (assignment_expression "iVar5 = *(int *)(uVar2 + 4)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(uVar2 + 4)" (* "*") (cast_expression "(int *)(uVar2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar21 = extraout_ECX;" (assignment_expression "uVar21 = extraout_ECX" (identifier "uVar21") (= "=") (identifier "extraout_ECX")) (; ";")) (if_statement "if (iVar5 != 0x3f3f) goto LAB_000178c9;" (if "if") (parenthesized_expression "(iVar5 != 0x3f3f)" (( "(") (binary_expression "iVar5 != 0x3f3f" (identifier "iVar5") (!= "!=") (number_literal "0x3f3f")) () ")")) (goto_statement "goto LAB_000178c9;" (goto "goto") (statement_identifier "LAB_000178c9") (; ";"))) (expression_statement "*(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff" (pointer_expression "*(undefined4 *)(uVar2 + 0x1bc8)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x1bc8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1bc8)" (( "(") (binary_expression "uVar2 + 0x1bc8" (identifier "uVar2") (+ "+") (number_literal "0x1bc8")) () ")")))) (= "=") (number_literal "0xffffffff")) (; ";")) (goto_statement "goto LAB_00017f13;" (goto "goto") (statement_identifier "LAB_00017f13") (; ";")) (} "}")))) (expression_statement "iVar5 = *(int *)(uVar2 + 0x50);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x50)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(uVar2 + 0x50)" (* "*") (cast_expression "(int *)(uVar2 + 0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x50)" (( "(") (binary_expression "uVar2 + 0x50" (identifier "uVar2") (+ "+") (number_literal "0x50")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 0x1bc8) = 0;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1bc8) = 0" (pointer_expression "*(undefined4 *)(uVar2 + 0x1bc8)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x1bc8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1bc8)" (( "(") (binary_expression "uVar2 + 0x1bc8" (identifier "uVar2") (+ "+") (number_literal "0x1bc8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));" (assignment_expression "uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f))" (identifier "uVar17") (= "=") (unary_expression "~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f))" (~ "~") (parenthesized_expression "(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f))" (( "(") (binary_expression "-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f)" (( "(") (binary_expression "(byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f" (binary_expression "(byte)*(undefined4 *)(uVar2 + 0x58)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x58)" (( "(") (binary_expression "uVar2 + 0x58" (identifier "uVar2") (+ "+") (number_literal "0x58")) () ")")))) (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);" (assignment_expression "pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4)" (identifier "pbVar20") (= "=") (cast_expression "(byte *)(iVar5 + (uVar17 & local_64) * 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + (uVar17 & local_64) * 4)" (( "(") (binary_expression "iVar5 + (uVar17 & local_64) * 4" (identifier "iVar5") (+ "+") (binary_expression "(uVar17 & local_64) * 4" (parenthesized_expression "(uVar17 & local_64)" (( "(") (binary_expression "uVar17 & local_64" (identifier "uVar17") (& "&") (identifier "local_64")) () ")")) (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "bVar12 = pbVar20[1];" (assignment_expression "bVar12 = pbVar20[1]" (identifier "bVar12") (= "=") (subscript_expression "pbVar20[1]" (identifier "pbVar20") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar14 = (uint)bVar12;" (assignment_expression "uVar14 = (uint)bVar12" (identifier "uVar14") (= "=") (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12"))) (; ";")) (expression_statement "bVar13 = *pbVar20;" (assignment_expression "bVar13 = *pbVar20" (identifier "bVar13") (= "=") (pointer_expression "*pbVar20" (* "*") (identifier "pbVar20"))) (; ";")) (expression_statement "uVar19 = *(ushort *)(pbVar20 + 2);" (assignment_expression "uVar19 = *(ushort *)(pbVar20 + 2)" (identifier "uVar19") (= "=") (pointer_expression "*(ushort *)(pbVar20 + 2)" (* "*") (cast_expression "(ushort *)(pbVar20 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar20 + 2)" (( "(") (binary_expression "pbVar20 + 2" (identifier "pbVar20") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "uVar21 = uVar15;" (assignment_expression "uVar21 = uVar15" (identifier "uVar21") (= "=") (identifier "uVar15")) (; ";")) (if_statement "if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }" (if "if") (parenthesized_expression "(uVar15 < uVar14)" (( "(") (binary_expression "uVar15 < uVar14" (identifier "uVar15") (< "<") (identifier "uVar14")) () ")")) (compound_statement "{\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }" ({ "{") (if_statement "if (local_6c == 0) goto LAB_00017f30;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017f30;" (goto "goto") (statement_identifier "LAB_00017f30") (; ";"))) (while_statement "while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            uVar14 = (uint)bVar12;\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }" ({ "{") (expression_statement "pbVar24 = local_60 + 1;" (assignment_expression "pbVar24 = local_60 + 1" (identifier "pbVar24") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" (identifier "local_6c") (= "=") (binary_expression "local_6c - 1" (identifier "local_6c") (- "-") (number_literal "1"))) (; ";")) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" (identifier "bVar12") (= "=") (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15"))) (; ";")) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 8" (identifier "uVar15") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "local_64") (= "=") (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "local_64") (+ "+") (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" (( "(") (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "local_60")) (<< "<<") (parenthesized_expression "(bVar12 & 0x1f)" (( "(") (binary_expression "bVar12 & 0x1f" (identifier "bVar12") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);" (assignment_expression "pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4)" (identifier "pbVar20") (= "=") (cast_expression "(byte *)(iVar5 + (uVar17 & local_64) * 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + (uVar17 & local_64) * 4)" (( "(") (binary_expression "iVar5 + (uVar17 & local_64) * 4" (identifier "iVar5") (+ "+") (binary_expression "(uVar17 & local_64) * 4" (parenthesized_expression "(uVar17 & local_64)" (( "(") (binary_expression "uVar17 & local_64" (identifier "uVar17") (& "&") (identifier "local_64")) () ")")) (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "bVar12 = pbVar20[1];" (assignment_expression "bVar12 = pbVar20[1]" (identifier "bVar12") (= "=") (subscript_expression "pbVar20[1]" (identifier "pbVar20") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar14 = (uint)bVar12;" (assignment_expression "uVar14 = (uint)bVar12" (identifier "uVar14") (= "=") (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12"))) (; ";")) (expression_statement "bVar13 = *pbVar20;" (assignment_expression "bVar13 = *pbVar20" (identifier "bVar13") (= "=") (pointer_expression "*pbVar20" (* "*") (identifier "pbVar20"))) (; ";")) (expression_statement "uVar19 = *(ushort *)(pbVar20 + 2);" (assignment_expression "uVar19 = *(ushort *)(pbVar20 + 2)" (identifier "uVar19") (= "=") (pointer_expression "*(ushort *)(pbVar20 + 2)" (* "*") (cast_expression "(ushort *)(pbVar20 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar20 + 2)" (( "(") (binary_expression "pbVar20 + 2" (identifier "pbVar20") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "uVar21 = uVar15;" (assignment_expression "uVar21 = uVar15" (identifier "uVar21") (= "=") (identifier "uVar15")) (; ";")) (expression_statement "local_60 = pbVar24;" (assignment_expression "local_60 = pbVar24" (identifier "local_60") (= "=") (identifier "pbVar24")) (; ";")) (if_statement "if (uVar14 <= uVar15) break;" (if "if") (parenthesized_expression "(uVar14 <= uVar15)" (( "(") (binary_expression "uVar14 <= uVar15" (identifier "uVar14") (<= "<=") (identifier "uVar15")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }" ({ "{") (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00017f32;" (goto "goto") (statement_identifier "LAB_00017f32") (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "uVar17 = (uint)uVar19;" (assignment_expression "uVar17 = (uint)uVar19" (identifier "uVar17") (= "=") (cast_expression "(uint)uVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar19"))) (; ";")) (if_statement "if (bVar13 == 0) {\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }" (if "if") (parenthesized_expression "(bVar13 == 0)" (( "(") (binary_expression "bVar13 == 0" (identifier "bVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                          local_64 = local_64 >> (bVar12 & 0x1f);\n                          uVar15 = uVar21 - uVar14;\n                          *(uint *)(uVar2 + 0x1bc8) = uVar14;\n                          *(uint *)(uVar2 + 0x44) = uVar17;\nLAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;\nLAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;\n                          local_5c = local_5c - 1;\n                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);\n                          *(undefined4 *)(uVar2 + 4) = 0x3f48;\n                          __dest = __dest + 1;\n                          goto LAB_00017b90;\n                        }" ({ "{") (expression_statement "local_64 = local_64 >> (bVar12 & 0x1f);" (assignment_expression "local_64 = local_64 >> (bVar12 & 0x1f)" (identifier "local_64") (= "=") (binary_expression "local_64 >> (bVar12 & 0x1f)" (identifier "local_64") (>> ">>") (parenthesized_expression "(bVar12 & 0x1f)" (( "(") (binary_expression "bVar12 & 0x1f" (identifier "bVar12") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar15 = uVar21 - uVar14;" (assignment_expression "uVar15 = uVar21 - uVar14" (identifier "uVar15") (= "=") (binary_expression "uVar21 - uVar14" (identifier "uVar21") (- "-") (identifier "uVar14"))) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x1bc8) = uVar14;" (assignment_expression "*(uint *)(uVar2 + 0x1bc8) = uVar14" (pointer_expression "*(uint *)(uVar2 + 0x1bc8)" (* "*") (cast_expression "(uint *)(uVar2 + 0x1bc8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1bc8)" (( "(") (binary_expression "uVar2 + 0x1bc8" (identifier "uVar2") (+ "+") (number_literal "0x1bc8")) () ")")))) (= "=") (identifier "uVar14")) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x44) = uVar17;" (assignment_expression "*(uint *)(uVar2 + 0x44) = uVar17" (pointer_expression "*(uint *)(uVar2 + 0x44)" (* "*") (cast_expression "(uint *)(uVar2 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (identifier "uVar17")) (; ";")) (labeled_statement "LAB_000191a7:\n                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;" (statement_identifier "LAB_000191a7") (: ":") (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f4d;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f4d" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f4d")) (; ";"))) (labeled_statement "LAB_00017b6a:\n                          if (local_5c == 0) goto LAB_00017f30;" (statement_identifier "LAB_00017b6a") (: ":") (if_statement "if (local_5c == 0) goto LAB_00017f30;" (if "if") (parenthesized_expression "(local_5c == 0)" (( "(") (binary_expression "local_5c == 0" (identifier "local_5c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017f30;" (goto "goto") (statement_identifier "LAB_00017f30") (; ";")))) (expression_statement "local_5c = local_5c - 1;" (assignment_expression "local_5c = local_5c - 1" (identifier "local_5c") (= "=") (binary_expression "local_5c - 1" (identifier "local_5c") (- "-") (number_literal "1"))) (; ";")) (expression_statement "*__dest = (char)*(undefined4 *)(uVar2 + 0x44);" (assignment_expression "*__dest = (char)*(undefined4 *)(uVar2 + 0x44)" (pointer_expression "*__dest" (* "*") (identifier "__dest")) (= "=") (cast_expression "(char)*(undefined4 *)(uVar2 + 0x44)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*(undefined4 *)(uVar2 + 0x44)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")")))))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f48;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f48" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f48")) (; ";")) (expression_statement "__dest = __dest + 1;" (assignment_expression "__dest = __dest + 1" (identifier "__dest") (= "=") (binary_expression "__dest + 1" (identifier "__dest") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_00017b90;" (goto "goto") (statement_identifier "LAB_00017b90") (; ";")) (} "}"))) (expression_statement "bVar12 = (byte)uVar14;" (assignment_expression "bVar12 = (byte)uVar14" (identifier "bVar12") (= "=") (cast_expression "(byte)uVar14" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar14"))) (; ";")) (if_statement "if ((bVar13 & 0xf0) == 0) {\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }" (if "if") (parenthesized_expression "((bVar13 & 0xf0) == 0)" (( "(") (binary_expression "(bVar13 & 0xf0) == 0" (parenthesized_expression "(bVar13 & 0xf0)" (( "(") (binary_expression "bVar13 & 0xf0" (identifier "bVar13") (& "&") (number_literal "0xf0")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar10 = (uint)pbVar20[1];\n                          uStack_38 = uVar10 + uVar14;\n                          uVar15 = uVar21;\n                          if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_40 = (uint)uVar19;\n                          uVar15 = (uVar15 - uVar14) - uVar10;\n                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);\n                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;\n                          *(uint *)(uVar2 + 0x44) = uStack_40;\n                          if (bVar13 != 0) goto LAB_00018d16;\n                          goto LAB_000191a7;\n                        }" ({ "{") (expression_statement "uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));" (assignment_expression "uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f))" (identifier "uVar18") (= "=") (unary_expression "~(-1 << (bVar13 + bVar12 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << (bVar13 + bVar12 & 0x1f))" (( "(") (binary_expression "-1 << (bVar13 + bVar12 & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "(bVar13 + bVar12 & 0x1f)" (( "(") (binary_expression "bVar13 + bVar12 & 0x1f" (binary_expression "bVar13 + bVar12" (identifier "bVar13") (+ "+") (identifier "bVar12")) (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4);" (assignment_expression "pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4)" (identifier "pbVar20") (= "=") (cast_expression "(byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4)" (( "(") (binary_expression "iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4" (identifier "iVar5") (+ "+") (binary_expression "(((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17) * 4" (parenthesized_expression "(((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17)" (( "(") (binary_expression "((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uVar17" (parenthesized_expression "((uVar18 & local_64) >> (bVar12 & 0x1f))" (( "(") (binary_expression "(uVar18 & local_64) >> (bVar12 & 0x1f)" (parenthesized_expression "(uVar18 & local_64)" (( "(") (binary_expression "uVar18 & local_64" (identifier "uVar18") (& "&") (identifier "local_64")) () ")")) (>> ">>") (parenthesized_expression "(bVar12 & 0x1f)" (( "(") (binary_expression "bVar12 & 0x1f" (identifier "bVar12") (& "&") (number_literal "0x1f")) () ")"))) () ")")) (+ "+") (identifier "uVar17")) () ")")) (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "uVar19 = *(ushort *)(pbVar20 + 2);" (assignment_expression "uVar19 = *(ushort *)(pbVar20 + 2)" (identifier "uVar19") (= "=") (pointer_expression "*(ushort *)(pbVar20 + 2)" (* "*") (cast_expression "(ushort *)(pbVar20 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar20 + 2)" (( "(") (binary_expression "pbVar20 + 2" (identifier "pbVar20") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "bVar13 = *pbVar20;" (assignment_expression "bVar13 = *pbVar20" (identifier "bVar13") (= "=") (pointer_expression "*pbVar20" (* "*") (identifier "pbVar20"))) (; ";")) (expression_statement "uVar10 = (uint)pbVar20[1];" (assignment_expression "uVar10 = (uint)pbVar20[1]" (identifier "uVar10") (= "=") (cast_expression "(uint)pbVar20[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar20[1]" (identifier "pbVar20") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "uStack_38 = uVar10 + uVar14;" (assignment_expression "uStack_38 = uVar10 + uVar14" (identifier "uStack_38") (= "=") (binary_expression "uVar10 + uVar14" (identifier "uVar10") (+ "+") (identifier "uVar14"))) (; ";")) (expression_statement "uVar15 = uVar21;" (assignment_expression "uVar15 = uVar21" (identifier "uVar15") (= "=") (identifier "uVar21")) (; ";")) (if_statement "if (uVar21 < uStack_38) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }" (if "if") (parenthesized_expression "(uVar21 < uStack_38)" (( "(") (binary_expression "uVar21 < uStack_38" (identifier "uVar21") (< "<") (identifier "uStack_38")) () ")")) (compound_statement "{\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }" ({ "{") (if_statement "if (local_6c == 0) goto LAB_00017f30;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017f30;" (goto "goto") (statement_identifier "LAB_00017f30") (; ";"))) (while_statement "while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              bVar13 = *pbVar20;\n                              uVar10 = (uint)pbVar20[1];\n                              uStack_38 = uVar14 + uVar10;\n                              local_60 = pbVar24;\n                              if (uStack_38 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }" ({ "{") (expression_statement "pbVar24 = local_60 + 1;" (assignment_expression "pbVar24 = local_60 + 1" (identifier "pbVar24") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar15 = uVar21 + 8;" (assignment_expression "uVar15 = uVar21 + 8" (identifier "uVar15") (= "=") (binary_expression "uVar21 + 8" (identifier "uVar21") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" (identifier "local_6c") (= "=") (binary_expression "local_6c - 1" (identifier "local_6c") (- "-") (number_literal "1"))) (; ";")) (expression_statement "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f))" (identifier "local_64") (= "=") (binary_expression "local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f))" (identifier "local_64") (+ "+") (parenthesized_expression "((uint)*local_60 << ((byte)uVar21 & 0x1f))" (( "(") (binary_expression "(uint)*local_60 << ((byte)uVar21 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "local_60")) (<< "<<") (parenthesized_expression "((byte)uVar21 & 0x1f)" (( "(") (binary_expression "(byte)uVar21 & 0x1f" (cast_expression "(byte)uVar21" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar21")) (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4);" (assignment_expression "pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4)" (identifier "pbVar20") (= "=") (cast_expression "(byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4)" (( "(") (binary_expression "iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4" (identifier "iVar5") (+ "+") (binary_expression "(((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17) * 4" (parenthesized_expression "(((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17)" (( "(") (binary_expression "((uVar18 & local_64) >> (bVar12 & 0x1f)) +\n                                                         uVar17" (parenthesized_expression "((uVar18 & local_64) >> (bVar12 & 0x1f))" (( "(") (binary_expression "(uVar18 & local_64) >> (bVar12 & 0x1f)" (parenthesized_expression "(uVar18 & local_64)" (( "(") (binary_expression "uVar18 & local_64" (identifier "uVar18") (& "&") (identifier "local_64")) () ")")) (>> ">>") (parenthesized_expression "(bVar12 & 0x1f)" (( "(") (binary_expression "bVar12 & 0x1f" (identifier "bVar12") (& "&") (number_literal "0x1f")) () ")"))) () ")")) (+ "+") (identifier "uVar17")) () ")")) (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "uVar19 = *(ushort *)(pbVar20 + 2);" (assignment_expression "uVar19 = *(ushort *)(pbVar20 + 2)" (identifier "uVar19") (= "=") (pointer_expression "*(ushort *)(pbVar20 + 2)" (* "*") (cast_expression "(ushort *)(pbVar20 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar20 + 2)" (( "(") (binary_expression "pbVar20 + 2" (identifier "pbVar20") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "bVar13 = *pbVar20;" (assignment_expression "bVar13 = *pbVar20" (identifier "bVar13") (= "=") (pointer_expression "*pbVar20" (* "*") (identifier "pbVar20"))) (; ";")) (expression_statement "uVar10 = (uint)pbVar20[1];" (assignment_expression "uVar10 = (uint)pbVar20[1]" (identifier "uVar10") (= "=") (cast_expression "(uint)pbVar20[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar20[1]" (identifier "pbVar20") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "uStack_38 = uVar14 + uVar10;" (assignment_expression "uStack_38 = uVar14 + uVar10" (identifier "uStack_38") (= "=") (binary_expression "uVar14 + uVar10" (identifier "uVar14") (+ "+") (identifier "uVar10"))) (; ";")) (expression_statement "local_60 = pbVar24;" (assignment_expression "local_60 = pbVar24" (identifier "local_60") (= "=") (identifier "pbVar24")) (; ";")) (if_statement "if (uStack_38 <= uVar15) break;" (if "if") (parenthesized_expression "(uStack_38 <= uVar15)" (( "(") (binary_expression "uStack_38 <= uVar15" (identifier "uStack_38") (<= "<=") (identifier "uVar15")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar21 = uVar15;" (assignment_expression "uVar21 = uVar15" (identifier "uVar21") (= "=") (identifier "uVar15")) (; ";")) (if_statement "if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }" ({ "{") (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00017f32;" (goto "goto") (statement_identifier "LAB_00017f32") (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "uStack_40 = (uint)uVar19;" (assignment_expression "uStack_40 = (uint)uVar19" (identifier "uStack_40") (= "=") (cast_expression "(uint)uVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar19"))) (; ";")) (expression_statement "uVar15 = (uVar15 - uVar14) - uVar10;" (assignment_expression "uVar15 = (uVar15 - uVar14) - uVar10" (identifier "uVar15") (= "=") (binary_expression "(uVar15 - uVar14) - uVar10" (parenthesized_expression "(uVar15 - uVar14)" (( "(") (binary_expression "uVar15 - uVar14" (identifier "uVar15") (- "-") (identifier "uVar14")) () ")")) (- "-") (identifier "uVar10"))) (; ";")) (expression_statement "local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);" (assignment_expression "local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f)" (identifier "local_64") (= "=") (binary_expression "(local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f)" (parenthesized_expression "(local_64 >> (bVar12 & 0x1f))" (( "(") (binary_expression "local_64 >> (bVar12 & 0x1f)" (identifier "local_64") (>> ">>") (parenthesized_expression "(bVar12 & 0x1f)" (( "(") (binary_expression "bVar12 & 0x1f" (identifier "bVar12") (& "&") (number_literal "0x1f")) () ")"))) () ")")) (>> ">>") (parenthesized_expression "((byte)uVar10 & 0x1f)" (( "(") (binary_expression "(byte)uVar10 & 0x1f" (cast_expression "(byte)uVar10" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar10")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x1bc8) = uStack_38;" (assignment_expression "*(uint *)(uVar2 + 0x1bc8) = uStack_38" (pointer_expression "*(uint *)(uVar2 + 0x1bc8)" (* "*") (cast_expression "(uint *)(uVar2 + 0x1bc8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1bc8)" (( "(") (binary_expression "uVar2 + 0x1bc8" (identifier "uVar2") (+ "+") (number_literal "0x1bc8")) () ")")))) (= "=") (identifier "uStack_38")) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x44) = uStack_40;" (assignment_expression "*(uint *)(uVar2 + 0x44) = uStack_40" (pointer_expression "*(uint *)(uVar2 + 0x44)" (* "*") (cast_expression "(uint *)(uVar2 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (identifier "uStack_40")) (; ";")) (if_statement "if (bVar13 != 0) goto LAB_00018d16;" (if "if") (parenthesized_expression "(bVar13 != 0)" (( "(") (binary_expression "bVar13 != 0" (identifier "bVar13") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00018d16;" (goto "goto") (statement_identifier "LAB_00018d16") (; ";"))) (goto_statement "goto LAB_000191a7;" (goto "goto") (statement_identifier "LAB_000191a7") (; ";")) (} "}"))) (expression_statement "local_64 = local_64 >> (bVar12 & 0x1f);" (assignment_expression "local_64 = local_64 >> (bVar12 & 0x1f)" (identifier "local_64") (= "=") (binary_expression "local_64 >> (bVar12 & 0x1f)" (identifier "local_64") (>> ">>") (parenthesized_expression "(bVar12 & 0x1f)" (( "(") (binary_expression "bVar12 & 0x1f" (identifier "bVar12") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar15 = uVar21 - uVar14;" (assignment_expression "uVar15 = uVar21 - uVar14" (identifier "uVar15") (= "=") (binary_expression "uVar21 - uVar14" (identifier "uVar21") (- "-") (identifier "uVar14"))) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x1bc8) = uVar14;" (assignment_expression "*(uint *)(uVar2 + 0x1bc8) = uVar14" (pointer_expression "*(uint *)(uVar2 + 0x1bc8)" (* "*") (cast_expression "(uint *)(uVar2 + 0x1bc8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1bc8)" (( "(") (binary_expression "uVar2 + 0x1bc8" (identifier "uVar2") (+ "+") (number_literal "0x1bc8")) () ")")))) (= "=") (identifier "uVar14")) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x44) = uVar17;" (assignment_expression "*(uint *)(uVar2 + 0x44) = uVar17" (pointer_expression "*(uint *)(uVar2 + 0x44)" (* "*") (cast_expression "(uint *)(uVar2 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (identifier "uVar17")) (; ";")) (labeled_statement "LAB_00018d16:\n                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;" (statement_identifier "LAB_00018d16") (: ":") (if_statement "if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;" (if "if") (parenthesized_expression "((bVar13 & 0x20) != 0)" (( "(") (binary_expression "(bVar13 & 0x20) != 0" (parenthesized_expression "(bVar13 & 0x20)" (( "(") (binary_expression "bVar13 & 0x20" (identifier "bVar13") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto code_r0x00018d1f;" (goto "goto") (statement_identifier "code_r0x00018d1f") (; ";")))) (if_statement "if ((bVar13 & 0x40) != 0) {\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }" (if "if") (parenthesized_expression "((bVar13 & 0x40) != 0)" (( "(") (binary_expression "(bVar13 & 0x40) != 0" (parenthesized_expression "(bVar13 & 0x40)" (( "(") (binary_expression "bVar13 & 0x40" (identifier "bVar13") (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                          pcVar6 = "invalid literal/length code";\n                          goto LAB_000188eb;\n                        }" ({ "{") (expression_statement "pcVar6 = "invalid literal/length code";" (assignment_expression "pcVar6 = "invalid literal/length code"" (identifier "pcVar6") (= "=") (string_literal ""invalid literal/length code"" (" """) (string_content "invalid literal/length code") (" """))) (; ";")) (goto_statement "goto LAB_000188eb;" (goto "goto") (statement_identifier "LAB_000188eb") (; ";")) (} "}"))) (expression_statement "uVar21 = bVar13 & 0xf;" (assignment_expression "uVar21 = bVar13 & 0xf" (identifier "uVar21") (= "=") (binary_expression "bVar13 & 0xf" (identifier "bVar13") (& "&") (number_literal "0xf"))) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x4c) = uVar21;" (assignment_expression "*(uint *)(uVar2 + 0x4c) = uVar21" (pointer_expression "*(uint *)(uVar2 + 0x4c)" (* "*") (cast_expression "(uint *)(uVar2 + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x4c)" (( "(") (binary_expression "uVar2 + 0x4c" (identifier "uVar2") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (identifier "uVar21")) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f49;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f49" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f49")) (; ";")) (labeled_statement "LAB_00017d07:\n                        if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }" (statement_identifier "LAB_00017d07") (: ":") (if_statement "if (uVar21 == 0) {\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }\n                        else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }" (if "if") (parenthesized_expression "(uVar21 == 0)" (( "(") (binary_expression "uVar21 == 0" (identifier "uVar21") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                          iVar5 = *(int *)(uVar2 + 0x44);\n                        }" ({ "{") (expression_statement "iVar5 = *(int *)(uVar2 + 0x44);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x44)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(uVar2 + 0x44)" (* "*") (cast_expression "(int *)(uVar2 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }" (else "else") (compound_statement "{\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x44) = iVar5;\n                        }" ({ "{") (if_statement "if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }" (if "if") (parenthesized_expression "(uVar15 < uVar21)" (( "(") (binary_expression "uVar15 < uVar21" (identifier "uVar15") (< "<") (identifier "uVar21")) () ")")) (compound_statement "{\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }\n                          }" ({ "{") (if_statement "if (local_6c == 0) goto LAB_00017f30;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017f30;" (goto "goto") (statement_identifier "LAB_00017f30") (; ";"))) (while_statement "while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) goto LAB_000190a2;\n                            }" ({ "{") (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" (identifier "pbVar20") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" (identifier "local_6c") (= "=") (binary_expression "local_6c - 1" (identifier "local_6c") (- "-") (number_literal "1"))) (; ";")) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" (identifier "bVar12") (= "=") (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15"))) (; ";")) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 8" (identifier "uVar15") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "local_64") (= "=") (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "local_64") (+ "+") (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" (( "(") (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "local_60")) (<< "<<") (parenthesized_expression "(bVar12 & 0x1f)" (( "(") (binary_expression "bVar12 & 0x1f" (identifier "bVar12") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" (identifier "local_60") (= "=") (identifier "pbVar20")) (; ";")) (if_statement "if (uVar21 <= uVar15) break;" (if "if") (parenthesized_expression "(uVar21 <= uVar15)" (( "(") (binary_expression "uVar21 <= uVar15" (identifier "uVar21") (<= "<=") (identifier "uVar15")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (local_6c == 0) goto LAB_000190a2;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000190a2;" (goto "goto") (statement_identifier "LAB_000190a2") (; ";"))) (} "}"))) (} "}"))) (expression_statement "uVar15 = uVar15 - uVar21;" (assignment_expression "uVar15 = uVar15 - uVar21" (identifier "uVar15") (= "=") (binary_expression "uVar15 - uVar21" (identifier "uVar15") (- "-") (identifier "uVar21"))) (; ";")) (expression_statement "*(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;" (assignment_expression "*(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21" (pointer_expression "*(int *)(uVar2 + 0x1bc8)" (* "*") (cast_expression "(int *)(uVar2 + 0x1bc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1bc8)" (( "(") (binary_expression "uVar2 + 0x1bc8" (identifier "uVar2") (+ "+") (number_literal "0x1bc8")) () ")")))) (= "=") (binary_expression "*(int *)(uVar2 + 0x1bc8) + uVar21" (pointer_expression "*(int *)(uVar2 + 0x1bc8)" (* "*") (cast_expression "(int *)(uVar2 + 0x1bc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1bc8)" (( "(") (binary_expression "uVar2 + 0x1bc8" (identifier "uVar2") (+ "+") (number_literal "0x1bc8")) () ")")))) (+ "+") (identifier "uVar21"))) (; ";")) (expression_statement "iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44);" (assignment_expression "iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44)" (identifier "iVar5") (= "=") (binary_expression "(~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +\n                                  *(int *)(uVar2 + 0x44)" (parenthesized_expression "(~(-1 << ((byte)uVar21 & 0x1f)) & local_64)" (( "(") (binary_expression "~(-1 << ((byte)uVar21 & 0x1f)) & local_64" (unary_expression "~(-1 << ((byte)uVar21 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << ((byte)uVar21 & 0x1f))" (( "(") (binary_expression "-1 << ((byte)uVar21 & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "((byte)uVar21 & 0x1f)" (( "(") (binary_expression "(byte)uVar21 & 0x1f" (cast_expression "(byte)uVar21" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar21")) (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (identifier "local_64")) () ")")) (+ "+") (pointer_expression "*(int *)(uVar2 + 0x44)" (* "*") (cast_expression "(int *)(uVar2 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")")))))) (; ";")) (expression_statement "local_64 = local_64 >> ((byte)uVar21 & 0x1f);" (assignment_expression "local_64 = local_64 >> ((byte)uVar21 & 0x1f)" (identifier "local_64") (= "=") (binary_expression "local_64 >> ((byte)uVar21 & 0x1f)" (identifier "local_64") (>> ">>") (parenthesized_expression "((byte)uVar21 & 0x1f)" (( "(") (binary_expression "(byte)uVar21 & 0x1f" (cast_expression "(byte)uVar21" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar21")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "*(int *)(uVar2 + 0x44) = iVar5;" (assignment_expression "*(int *)(uVar2 + 0x44) = iVar5" (pointer_expression "*(int *)(uVar2 + 0x44)" (* "*") (cast_expression "(int *)(uVar2 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (} "}"))))) (expression_statement "*(int *)(uVar2 + 0x1bcc) = iVar5;" (assignment_expression "*(int *)(uVar2 + 0x1bcc) = iVar5" (pointer_expression "*(int *)(uVar2 + 0x1bcc)" (* "*") (cast_expression "(int *)(uVar2 + 0x1bcc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1bcc)" (( "(") (binary_expression "uVar2 + 0x1bcc" (identifier "uVar2") (+ "+") (number_literal "0x1bcc")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f4a;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f4a" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f4a")) (; ";")) (labeled_statement "code_r0x00017d27:\n                        iVar5 = *(int *)(uVar2 + 0x54);" (statement_identifier "code_r0x00017d27") (: ":") (expression_statement "iVar5 = *(int *)(uVar2 + 0x54);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x54)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(uVar2 + 0x54)" (* "*") (cast_expression "(int *)(uVar2 + 0x54)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x54)" (( "(") (binary_expression "uVar2 + 0x54" (identifier "uVar2") (+ "+") (number_literal "0x54")) () ")"))))) (; ";"))) (expression_statement "uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));" (assignment_expression "uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f))" (identifier "uVar17") (= "=") (unary_expression "~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f))" (~ "~") (parenthesized_expression "(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f))" (( "(") (binary_expression "-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f)" (( "(") (binary_expression "(byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f" (binary_expression "(byte)*(undefined4 *)(uVar2 + 0x5c)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x5c)" (( "(") (binary_expression "uVar2 + 0x5c" (identifier "uVar2") (+ "+") (number_literal "0x5c")) () ")")))) (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);" (assignment_expression "pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4)" (identifier "pbVar20") (= "=") (cast_expression "(byte *)(iVar5 + (local_64 & uVar17) * 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + (local_64 & uVar17) * 4)" (( "(") (binary_expression "iVar5 + (local_64 & uVar17) * 4" (identifier "iVar5") (+ "+") (binary_expression "(local_64 & uVar17) * 4" (parenthesized_expression "(local_64 & uVar17)" (( "(") (binary_expression "local_64 & uVar17" (identifier "local_64") (& "&") (identifier "uVar17")) () ")")) (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "bVar12 = pbVar20[1];" (assignment_expression "bVar12 = pbVar20[1]" (identifier "bVar12") (= "=") (subscript_expression "pbVar20[1]" (identifier "pbVar20") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "bVar13 = *pbVar20;" (assignment_expression "bVar13 = *pbVar20" (identifier "bVar13") (= "=") (pointer_expression "*pbVar20" (* "*") (identifier "pbVar20"))) (; ";")) (expression_statement "uVar19 = *(ushort *)(pbVar20 + 2);" (assignment_expression "uVar19 = *(ushort *)(pbVar20 + 2)" (identifier "uVar19") (= "=") (pointer_expression "*(ushort *)(pbVar20 + 2)" (* "*") (cast_expression "(ushort *)(pbVar20 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar20 + 2)" (( "(") (binary_expression "pbVar20 + 2" (identifier "pbVar20") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "uVar14 = (uint)bVar12;" (assignment_expression "uVar14 = (uint)bVar12" (identifier "uVar14") (= "=") (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12"))) (; ";")) (expression_statement "uVar21 = uVar15;" (assignment_expression "uVar21 = uVar15" (identifier "uVar21") (= "=") (identifier "uVar15")) (; ";")) (if_statement "if (uVar15 < uVar14) {\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }" (if "if") (parenthesized_expression "(uVar15 < uVar14)" (( "(") (binary_expression "uVar15 < uVar14" (identifier "uVar15") (< "<") (identifier "uVar14")) () ")")) (compound_statement "{\n                          if (local_6c == 0) goto LAB_00017f30;\n                          while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }\n                        }" ({ "{") (if_statement "if (local_6c == 0) goto LAB_00017f30;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017f30;" (goto "goto") (statement_identifier "LAB_00017f30") (; ";"))) (while_statement "while( true ) {\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                            pbVar24 = local_60 + 1;\n                            local_6c = local_6c - 1;\n                            bVar12 = (byte)uVar15;\n                            uVar15 = uVar15 + 8;\n                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);\n                            bVar12 = pbVar20[1];\n                            bVar13 = *pbVar20;\n                            uVar19 = *(ushort *)(pbVar20 + 2);\n                            uVar14 = (uint)bVar12;\n                            uVar21 = uVar15;\n                            local_60 = pbVar24;\n                            if (uVar14 <= uVar15) break;\n                            if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }\n                          }" ({ "{") (expression_statement "pbVar24 = local_60 + 1;" (assignment_expression "pbVar24 = local_60 + 1" (identifier "pbVar24") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" (identifier "local_6c") (= "=") (binary_expression "local_6c - 1" (identifier "local_6c") (- "-") (number_literal "1"))) (; ";")) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" (identifier "bVar12") (= "=") (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15"))) (; ";")) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 8" (identifier "uVar15") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "local_64") (= "=") (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "local_64") (+ "+") (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" (( "(") (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "local_60")) (<< "<<") (parenthesized_expression "(bVar12 & 0x1f)" (( "(") (binary_expression "bVar12 & 0x1f" (identifier "bVar12") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);" (assignment_expression "pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4)" (identifier "pbVar20") (= "=") (cast_expression "(byte *)(iVar5 + (uVar17 & local_64) * 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + (uVar17 & local_64) * 4)" (( "(") (binary_expression "iVar5 + (uVar17 & local_64) * 4" (identifier "iVar5") (+ "+") (binary_expression "(uVar17 & local_64) * 4" (parenthesized_expression "(uVar17 & local_64)" (( "(") (binary_expression "uVar17 & local_64" (identifier "uVar17") (& "&") (identifier "local_64")) () ")")) (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "bVar12 = pbVar20[1];" (assignment_expression "bVar12 = pbVar20[1]" (identifier "bVar12") (= "=") (subscript_expression "pbVar20[1]" (identifier "pbVar20") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "bVar13 = *pbVar20;" (assignment_expression "bVar13 = *pbVar20" (identifier "bVar13") (= "=") (pointer_expression "*pbVar20" (* "*") (identifier "pbVar20"))) (; ";")) (expression_statement "uVar19 = *(ushort *)(pbVar20 + 2);" (assignment_expression "uVar19 = *(ushort *)(pbVar20 + 2)" (identifier "uVar19") (= "=") (pointer_expression "*(ushort *)(pbVar20 + 2)" (* "*") (cast_expression "(ushort *)(pbVar20 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar20 + 2)" (( "(") (binary_expression "pbVar20 + 2" (identifier "pbVar20") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "uVar14 = (uint)bVar12;" (assignment_expression "uVar14 = (uint)bVar12" (identifier "uVar14") (= "=") (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12"))) (; ";")) (expression_statement "uVar21 = uVar15;" (assignment_expression "uVar21 = uVar15" (identifier "uVar21") (= "=") (identifier "uVar15")) (; ";")) (expression_statement "local_60 = pbVar24;" (assignment_expression "local_60 = pbVar24" (identifier "local_60") (= "=") (identifier "pbVar24")) (; ";")) (if_statement "if (uVar14 <= uVar15) break;" (if "if") (parenthesized_expression "(uVar14 <= uVar15)" (( "(") (binary_expression "uVar14 <= uVar15" (identifier "uVar14") (<= "<=") (identifier "uVar15")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (local_6c == 0) {\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                              uVar21 = 0;\n                              goto LAB_00017f32;\n                            }" ({ "{") (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00017f32;" (goto "goto") (statement_identifier "LAB_00017f32") (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "uStack_48 = (uint)uVar19;" (assignment_expression "uStack_48 = (uint)uVar19" (identifier "uStack_48") (= "=") (cast_expression "(uint)uVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar19"))) (; ";")) (if_statement "if ((bVar13 & 0xf0) == 0) {\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }\n                        else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }" (if "if") (parenthesized_expression "((bVar13 & 0xf0) == 0)" (( "(") (binary_expression "(bVar13 & 0xf0) == 0" (parenthesized_expression "(bVar13 & 0xf0)" (( "(") (binary_expression "bVar13 & 0xf0" (identifier "bVar13") (& "&") (number_literal "0xf0")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                          bVar4 = (byte)uVar14;\n                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));\n                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);\n                          uVar19 = *(ushort *)(pbVar20 + 2);\n                          bVar13 = *pbVar20;\n                          uVar17 = (uint)pbVar20[1];\n                          uVar15 = uVar21;\n                          if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uStack_48 = (uint)uVar19;\n                          uVar21 = uVar15 - uVar14;\n                          local_64 = local_64 >> (bVar4 & 0x1f);\n                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);\n                        }" ({ "{") (expression_statement "bVar4 = (byte)uVar14;" (assignment_expression "bVar4 = (byte)uVar14" (identifier "bVar4") (= "=") (cast_expression "(byte)uVar14" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar14"))) (; ";")) (expression_statement "uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));" (assignment_expression "uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f))" (identifier "uVar10") (= "=") (unary_expression "~(-1 << (bVar13 + bVar4 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << (bVar13 + bVar4 & 0x1f))" (( "(") (binary_expression "-1 << (bVar13 + bVar4 & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "(bVar13 + bVar4 & 0x1f)" (( "(") (binary_expression "bVar13 + bVar4 & 0x1f" (binary_expression "bVar13 + bVar4" (identifier "bVar13") (+ "+") (identifier "bVar4")) (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4);" (assignment_expression "pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4)" (identifier "pbVar20") (= "=") (cast_expression "(byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4)" (( "(") (binary_expression "iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4" (identifier "iVar5") (+ "+") (binary_expression "(((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48) * 4" (parenthesized_expression "(((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48)" (( "(") (binary_expression "((uVar10 & local_64) >> (bVar12 & 0x1f)) +\n                                                     uStack_48" (parenthesized_expression "((uVar10 & local_64) >> (bVar12 & 0x1f))" (( "(") (binary_expression "(uVar10 & local_64) >> (bVar12 & 0x1f)" (parenthesized_expression "(uVar10 & local_64)" (( "(") (binary_expression "uVar10 & local_64" (identifier "uVar10") (& "&") (identifier "local_64")) () ")")) (>> ">>") (parenthesized_expression "(bVar12 & 0x1f)" (( "(") (binary_expression "bVar12 & 0x1f" (identifier "bVar12") (& "&") (number_literal "0x1f")) () ")"))) () ")")) (+ "+") (identifier "uStack_48")) () ")")) (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "uVar19 = *(ushort *)(pbVar20 + 2);" (assignment_expression "uVar19 = *(ushort *)(pbVar20 + 2)" (identifier "uVar19") (= "=") (pointer_expression "*(ushort *)(pbVar20 + 2)" (* "*") (cast_expression "(ushort *)(pbVar20 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar20 + 2)" (( "(") (binary_expression "pbVar20 + 2" (identifier "pbVar20") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "bVar13 = *pbVar20;" (assignment_expression "bVar13 = *pbVar20" (identifier "bVar13") (= "=") (pointer_expression "*pbVar20" (* "*") (identifier "pbVar20"))) (; ";")) (expression_statement "uVar17 = (uint)pbVar20[1];" (assignment_expression "uVar17 = (uint)pbVar20[1]" (identifier "uVar17") (= "=") (cast_expression "(uint)pbVar20[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar20[1]" (identifier "pbVar20") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "uVar15 = uVar21;" (assignment_expression "uVar15 = uVar21" (identifier "uVar15") (= "=") (identifier "uVar21")) (; ";")) (if_statement "if (uVar21 < uVar17 + uVar14) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }" (if "if") (parenthesized_expression "(uVar21 < uVar17 + uVar14)" (( "(") (binary_expression "uVar21 < uVar17 + uVar14" (identifier "uVar21") (< "<") (binary_expression "uVar17 + uVar14" (identifier "uVar17") (+ "+") (identifier "uVar14"))) () ")")) (compound_statement "{\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }" ({ "{") (if_statement "if (local_6c == 0) goto LAB_00017f30;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017f30;" (goto "goto") (statement_identifier "LAB_00017f30") (; ";"))) (while_statement "while( true ) {\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                              pbVar24 = local_60 + 1;\n                              uVar15 = uVar21 + 8;\n                              local_6c = local_6c - 1;\n                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));\n                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);\n                              bVar13 = *pbVar20;\n                              uVar19 = *(ushort *)(pbVar20 + 2);\n                              uVar17 = (uint)pbVar20[1];\n                              local_60 = pbVar24;\n                              if (uVar17 + uVar14 <= uVar15) break;\n                              uVar21 = uVar15;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }" ({ "{") (expression_statement "pbVar24 = local_60 + 1;" (assignment_expression "pbVar24 = local_60 + 1" (identifier "pbVar24") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar15 = uVar21 + 8;" (assignment_expression "uVar15 = uVar21 + 8" (identifier "uVar15") (= "=") (binary_expression "uVar21 + 8" (identifier "uVar21") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" (identifier "local_6c") (= "=") (binary_expression "local_6c - 1" (identifier "local_6c") (- "-") (number_literal "1"))) (; ";")) (expression_statement "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f))" (identifier "local_64") (= "=") (binary_expression "local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f))" (identifier "local_64") (+ "+") (parenthesized_expression "((uint)*local_60 << ((byte)uVar21 & 0x1f))" (( "(") (binary_expression "(uint)*local_60 << ((byte)uVar21 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "local_60")) (<< "<<") (parenthesized_expression "((byte)uVar21 & 0x1f)" (( "(") (binary_expression "(byte)uVar21 & 0x1f" (cast_expression "(byte)uVar21" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar21")) (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4);" (assignment_expression "pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4)" (identifier "pbVar20") (= "=") (cast_expression "(byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4)" (( "(") (binary_expression "iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4" (identifier "iVar5") (+ "+") (binary_expression "(((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48) * 4" (parenthesized_expression "(((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48)" (( "(") (binary_expression "((uVar10 & local_64) >> (bVar4 & 0x1f)) +\n                                                         uStack_48" (parenthesized_expression "((uVar10 & local_64) >> (bVar4 & 0x1f))" (( "(") (binary_expression "(uVar10 & local_64) >> (bVar4 & 0x1f)" (parenthesized_expression "(uVar10 & local_64)" (( "(") (binary_expression "uVar10 & local_64" (identifier "uVar10") (& "&") (identifier "local_64")) () ")")) (>> ">>") (parenthesized_expression "(bVar4 & 0x1f)" (( "(") (binary_expression "bVar4 & 0x1f" (identifier "bVar4") (& "&") (number_literal "0x1f")) () ")"))) () ")")) (+ "+") (identifier "uStack_48")) () ")")) (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "bVar13 = *pbVar20;" (assignment_expression "bVar13 = *pbVar20" (identifier "bVar13") (= "=") (pointer_expression "*pbVar20" (* "*") (identifier "pbVar20"))) (; ";")) (expression_statement "uVar19 = *(ushort *)(pbVar20 + 2);" (assignment_expression "uVar19 = *(ushort *)(pbVar20 + 2)" (identifier "uVar19") (= "=") (pointer_expression "*(ushort *)(pbVar20 + 2)" (* "*") (cast_expression "(ushort *)(pbVar20 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar20 + 2)" (( "(") (binary_expression "pbVar20 + 2" (identifier "pbVar20") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "uVar17 = (uint)pbVar20[1];" (assignment_expression "uVar17 = (uint)pbVar20[1]" (identifier "uVar17") (= "=") (cast_expression "(uint)pbVar20[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar20[1]" (identifier "pbVar20") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "local_60 = pbVar24;" (assignment_expression "local_60 = pbVar24" (identifier "local_60") (= "=") (identifier "pbVar24")) (; ";")) (if_statement "if (uVar17 + uVar14 <= uVar15) break;" (if "if") (parenthesized_expression "(uVar17 + uVar14 <= uVar15)" (( "(") (binary_expression "uVar17 + uVar14 <= uVar15" (binary_expression "uVar17 + uVar14" (identifier "uVar17") (+ "+") (identifier "uVar14")) (<= "<=") (identifier "uVar15")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar21 = uVar15;" (assignment_expression "uVar21 = uVar15" (identifier "uVar21") (= "=") (identifier "uVar15")) (; ";")) (if_statement "if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }" ({ "{") (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00017f32;" (goto "goto") (statement_identifier "LAB_00017f32") (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "uStack_48 = (uint)uVar19;" (assignment_expression "uStack_48 = (uint)uVar19" (identifier "uStack_48") (= "=") (cast_expression "(uint)uVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar19"))) (; ";")) (expression_statement "uVar21 = uVar15 - uVar14;" (assignment_expression "uVar21 = uVar15 - uVar14" (identifier "uVar21") (= "=") (binary_expression "uVar15 - uVar14" (identifier "uVar15") (- "-") (identifier "uVar14"))) (; ";")) (expression_statement "local_64 = local_64 >> (bVar4 & 0x1f);" (assignment_expression "local_64 = local_64 >> (bVar4 & 0x1f)" (identifier "local_64") (= "=") (binary_expression "local_64 >> (bVar4 & 0x1f)" (identifier "local_64") (>> ">>") (parenthesized_expression "(bVar4 & 0x1f)" (( "(") (binary_expression "bVar4 & 0x1f" (identifier "bVar4") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);" (assignment_expression "iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8)" (identifier "iVar5") (= "=") (binary_expression "uVar14 + *(int *)(uVar2 + 0x1bc8)" (identifier "uVar14") (+ "+") (pointer_expression "*(int *)(uVar2 + 0x1bc8)" (* "*") (cast_expression "(int *)(uVar2 + 0x1bc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1bc8)" (( "(") (binary_expression "uVar2 + 0x1bc8" (identifier "uVar2") (+ "+") (number_literal "0x1bc8")) () ")")))))) (; ";")) (} "}")) (else_clause "else {\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }" (else "else") (compound_statement "{\n                          iVar5 = *(int *)(uVar2 + 0x1bc8);\n                          uVar17 = uVar14;\n                        }" ({ "{") (expression_statement "iVar5 = *(int *)(uVar2 + 0x1bc8);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x1bc8)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(uVar2 + 0x1bc8)" (* "*") (cast_expression "(int *)(uVar2 + 0x1bc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1bc8)" (( "(") (binary_expression "uVar2 + 0x1bc8" (identifier "uVar2") (+ "+") (number_literal "0x1bc8")) () ")"))))) (; ";")) (expression_statement "uVar17 = uVar14;" (assignment_expression "uVar17 = uVar14" (identifier "uVar17") (= "=") (identifier "uVar14")) (; ";")) (} "}")))) (expression_statement "local_64 = local_64 >> ((byte)uVar17 & 0x1f);" (assignment_expression "local_64 = local_64 >> ((byte)uVar17 & 0x1f)" (identifier "local_64") (= "=") (binary_expression "local_64 >> ((byte)uVar17 & 0x1f)" (identifier "local_64") (>> ">>") (parenthesized_expression "((byte)uVar17 & 0x1f)" (( "(") (binary_expression "(byte)uVar17 & 0x1f" (cast_expression "(byte)uVar17" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar17")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar15 = uVar21 - uVar17;" (assignment_expression "uVar15 = uVar21 - uVar17" (identifier "uVar15") (= "=") (binary_expression "uVar21 - uVar17" (identifier "uVar21") (- "-") (identifier "uVar17"))) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;" (assignment_expression "*(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5" (pointer_expression "*(uint *)(uVar2 + 0x1bc8)" (* "*") (cast_expression "(uint *)(uVar2 + 0x1bc8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1bc8)" (( "(") (binary_expression "uVar2 + 0x1bc8" (identifier "uVar2") (+ "+") (number_literal "0x1bc8")) () ")")))) (= "=") (binary_expression "uVar17 + iVar5" (identifier "uVar17") (+ "+") (identifier "iVar5"))) (; ";")) (if_statement "if ((bVar13 & 0x40) != 0) {\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }" (if "if") (parenthesized_expression "((bVar13 & 0x40) != 0)" (( "(") (binary_expression "(bVar13 & 0x40) != 0" (parenthesized_expression "(bVar13 & 0x40)" (( "(") (binary_expression "bVar13 & 0x40" (identifier "bVar13") (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                          param_1[6] = (int)"invalid distance code";\n                          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                          uVar21 = 0xfffffffd;\n                          goto LAB_00017f32;\n                        }" ({ "{") (expression_statement "param_1[6] = (int)"invalid distance code";" (assignment_expression "param_1[6] = (int)"invalid distance code"" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (cast_expression "(int)"invalid distance code"" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (string_literal ""invalid distance code"" (" """) (string_content "invalid distance code") (" """)))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f51")) (; ";")) (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" (identifier "uVar21") (= "=") (number_literal "0xfffffffd")) (; ";")) (goto_statement "goto LAB_00017f32;" (goto "goto") (statement_identifier "LAB_00017f32") (; ";")) (} "}"))) (expression_statement "uVar21 = bVar13 & 0xf;" (assignment_expression "uVar21 = bVar13 & 0xf" (identifier "uVar21") (= "=") (binary_expression "bVar13 & 0xf" (identifier "bVar13") (& "&") (number_literal "0xf"))) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x4c) = uVar21;" (assignment_expression "*(uint *)(uVar2 + 0x4c) = uVar21" (pointer_expression "*(uint *)(uVar2 + 0x4c)" (* "*") (cast_expression "(uint *)(uVar2 + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x4c)" (( "(") (binary_expression "uVar2 + 0x4c" (identifier "uVar2") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (identifier "uVar21")) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f4b;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f4b" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f4b")) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x48) = uStack_48;" (assignment_expression "*(uint *)(uVar2 + 0x48) = uStack_48" (pointer_expression "*(uint *)(uVar2 + 0x48)" (* "*") (cast_expression "(uint *)(uVar2 + 0x48)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x48)" (( "(") (binary_expression "uVar2 + 0x48" (identifier "uVar2") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (identifier "uStack_48")) (; ";")) (labeled_statement "LAB_00017c87:\n                        if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }" (statement_identifier "LAB_00017c87") (: ":") (if_statement "if (uVar21 != 0) {\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }" (if "if") (parenthesized_expression "(uVar21 != 0)" (( "(") (binary_expression "uVar21 != 0" (identifier "uVar21") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                          if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }\n                          uVar15 = uVar15 - uVar21;\n                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;\n                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);\n                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;\n                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;\n                        }" ({ "{") (if_statement "if (uVar15 < uVar21) {\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }" (if "if") (parenthesized_expression "(uVar15 < uVar21)" (( "(") (binary_expression "uVar15 < uVar21" (identifier "uVar15") (< "<") (identifier "uVar21")) () ")")) (compound_statement "{\n                            if (local_6c == 0) goto LAB_00017f30;\n                            while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }\n                          }" ({ "{") (if_statement "if (local_6c == 0) goto LAB_00017f30;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017f30;" (goto "goto") (statement_identifier "LAB_00017f30") (; ";"))) (while_statement "while( true ) {\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                              pbVar20 = local_60 + 1;\n                              local_6c = local_6c - 1;\n                              bVar12 = (byte)uVar15;\n                              uVar15 = uVar15 + 8;\n                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n                              local_60 = pbVar20;\n                              if (uVar21 <= uVar15) break;\n                              if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }\n                            }" ({ "{") (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" (identifier "pbVar20") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" (identifier "local_6c") (= "=") (binary_expression "local_6c - 1" (identifier "local_6c") (- "-") (number_literal "1"))) (; ";")) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" (identifier "bVar12") (= "=") (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15"))) (; ";")) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 8" (identifier "uVar15") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "local_64") (= "=") (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "local_64") (+ "+") (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" (( "(") (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "local_60")) (<< "<<") (parenthesized_expression "(bVar12 & 0x1f)" (( "(") (binary_expression "bVar12 & 0x1f" (identifier "bVar12") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" (identifier "local_60") (= "=") (identifier "pbVar20")) (; ";")) (if_statement "if (uVar21 <= uVar15) break;" (if "if") (parenthesized_expression "(uVar21 <= uVar15)" (( "(") (binary_expression "uVar21 <= uVar15" (identifier "uVar21") (<= "<=") (identifier "uVar15")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (local_6c == 0) {\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                                uVar21 = 0;\n                                goto LAB_00017f32;\n                              }" ({ "{") (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00017f32;" (goto "goto") (statement_identifier "LAB_00017f32") (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "uVar15 = uVar15 - uVar21;" (assignment_expression "uVar15 = uVar15 - uVar21" (identifier "uVar15") (= "=") (binary_expression "uVar15 - uVar21" (identifier "uVar15") (- "-") (identifier "uVar21"))) (; ";")) (expression_statement "uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;" (assignment_expression "uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64" (identifier "uVar14") (= "=") (binary_expression "~(-1 << ((byte)uVar21 & 0x1f)) & local_64" (unary_expression "~(-1 << ((byte)uVar21 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << ((byte)uVar21 & 0x1f))" (( "(") (binary_expression "-1 << ((byte)uVar21 & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "((byte)uVar21 & 0x1f)" (( "(") (binary_expression "(byte)uVar21 & 0x1f" (cast_expression "(byte)uVar21" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar21")) (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (identifier "local_64"))) (; ";")) (expression_statement "local_64 = local_64 >> ((byte)uVar21 & 0x1f);" (assignment_expression "local_64 = local_64 >> ((byte)uVar21 & 0x1f)" (identifier "local_64") (= "=") (binary_expression "local_64 >> ((byte)uVar21 & 0x1f)" (identifier "local_64") (>> ">>") (parenthesized_expression "((byte)uVar21 & 0x1f)" (( "(") (binary_expression "(byte)uVar21 & 0x1f" (cast_expression "(byte)uVar21" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar21")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "*(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;" (assignment_expression "*(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14" (pointer_expression "*(int *)(uVar2 + 0x48)" (* "*") (cast_expression "(int *)(uVar2 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x48)" (( "(") (binary_expression "uVar2 + 0x48" (identifier "uVar2") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (binary_expression "*(int *)(uVar2 + 0x48) + uVar14" (pointer_expression "*(int *)(uVar2 + 0x48)" (* "*") (cast_expression "(int *)(uVar2 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x48)" (( "(") (binary_expression "uVar2 + 0x48" (identifier "uVar2") (+ "+") (number_literal "0x48")) () ")")))) (+ "+") (identifier "uVar14"))) (; ";")) (expression_statement "*(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;" (assignment_expression "*(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21" (pointer_expression "*(int *)(uVar2 + 0x1bc8)" (* "*") (cast_expression "(int *)(uVar2 + 0x1bc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1bc8)" (( "(") (binary_expression "uVar2 + 0x1bc8" (identifier "uVar2") (+ "+") (number_literal "0x1bc8")) () ")")))) (= "=") (binary_expression "*(int *)(uVar2 + 0x1bc8) + uVar21" (pointer_expression "*(int *)(uVar2 + 0x1bc8)" (* "*") (cast_expression "(int *)(uVar2 + 0x1bc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1bc8)" (( "(") (binary_expression "uVar2 + 0x1bc8" (identifier "uVar2") (+ "+") (number_literal "0x1bc8")) () ")")))) (+ "+") (identifier "uVar21"))) (; ";")) (} "}")))) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f4c;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f4c" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f4c")) (; ";")) (labeled_statement "code_r0x00017c9a:\n                        if (local_5c == 0) goto LAB_00017f30;" (statement_identifier "code_r0x00017c9a") (: ":") (if_statement "if (local_5c == 0) goto LAB_00017f30;" (if "if") (parenthesized_expression "(local_5c == 0)" (( "(") (binary_expression "local_5c == 0" (identifier "local_5c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017f30;" (goto "goto") (statement_identifier "LAB_00017f30") (; ";")))) (expression_statement "uVar21 = *(uint *)(uVar2 + 0x48);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x48)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x48)" (* "*") (cast_expression "(uint *)(uVar2 + 0x48)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x48)" (( "(") (binary_expression "uVar2 + 0x48" (identifier "uVar2") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (if_statement "if (local_50 - local_5c < uVar21) {\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }\n                        else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }" (if "if") (parenthesized_expression "(local_50 - local_5c < uVar21)" (( "(") (binary_expression "local_50 - local_5c < uVar21" (binary_expression "local_50 - local_5c" (identifier "local_50") (- "-") (identifier "local_5c")) (< "<") (identifier "uVar21")) () ")")) (compound_statement "{\n                          uVar21 = uVar21 - (local_50 - local_5c);\n                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x34);\n                          if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }\n                          uVar14 = *(uint *)(uVar2 + 0x44);\n                          if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }\n                        }" ({ "{") (expression_statement "uVar21 = uVar21 - (local_50 - local_5c);" (assignment_expression "uVar21 = uVar21 - (local_50 - local_5c)" (identifier "uVar21") (= "=") (binary_expression "uVar21 - (local_50 - local_5c)" (identifier "uVar21") (- "-") (parenthesized_expression "(local_50 - local_5c)" (( "(") (binary_expression "local_50 - local_5c" (identifier "local_50") (- "-") (identifier "local_5c")) () ")")))) (; ";")) (if_statement "if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))\n                          {\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }" (if "if") (parenthesized_expression "((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))" (( "(") (binary_expression "(*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0)" (parenthesized_expression "(*(uint *)(uVar2 + 0x30) < uVar21)" (( "(") (binary_expression "*(uint *)(uVar2 + 0x30) < uVar21" (pointer_expression "*(uint *)(uVar2 + 0x30)" (* "*") (cast_expression "(uint *)(uVar2 + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x30)" (( "(") (binary_expression "uVar2 + 0x30" (identifier "uVar2") (+ "+") (number_literal "0x30")) () ")")))) (< "<") (identifier "uVar21")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(uVar2 + 0x1bc4) != 0)" (( "(") (binary_expression "*(int *)(uVar2 + 0x1bc4) != 0" (pointer_expression "*(int *)(uVar2 + 0x1bc4)" (* "*") (cast_expression "(int *)(uVar2 + 0x1bc4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1bc4)" (( "(") (binary_expression "uVar2 + 0x1bc4" (identifier "uVar2") (+ "+") (number_literal "0x1bc4")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                            param_1[6] = (int)"invalid distance too far back";\n                            *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                            uVar21 = 0xfffffffd;\n                            goto LAB_00017f32;\n                          }" ({ "{") (expression_statement "param_1[6] = (int)"invalid distance too far back";" (assignment_expression "param_1[6] = (int)"invalid distance too far back"" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (cast_expression "(int)"invalid distance too far back"" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (string_literal ""invalid distance too far back"" (" """) (string_content "invalid distance too far back") (" """)))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f51")) (; ";")) (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" (identifier "uVar21") (= "=") (number_literal "0xfffffffd")) (; ";")) (goto_statement "goto LAB_00017f32;" (goto "goto") (statement_identifier "LAB_00017f32") (; ";")) (} "}"))) (expression_statement "uVar14 = *(uint *)(uVar2 + 0x34);" (assignment_expression "uVar14 = *(uint *)(uVar2 + 0x34)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x34)" (* "*") (cast_expression "(uint *)(uVar2 + 0x34)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x34)" (( "(") (binary_expression "uVar2 + 0x34" (identifier "uVar2") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (if_statement "if (uVar14 < uVar21) {\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }\n                          else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }" (if "if") (parenthesized_expression "(uVar14 < uVar21)" (( "(") (binary_expression "uVar14 < uVar21" (identifier "uVar14") (< "<") (identifier "uVar21")) () ")")) (compound_statement "{\n                            uVar21 = uVar21 - uVar14;\n                            puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));\n                          }" ({ "{") (expression_statement "uVar21 = uVar21 - uVar14;" (assignment_expression "uVar21 = uVar21 - uVar14" (identifier "uVar21") (= "=") (binary_expression "uVar21 - uVar14" (identifier "uVar21") (- "-") (identifier "uVar14"))) (; ";")) (expression_statement "puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));" (assignment_expression "puVar22 = (undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c))" (identifier "puVar22") (= "=") (cast_expression "(undefined1 *)\n                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c))" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c))" (( "(") (binary_expression "(*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c)" (parenthesized_expression "(*(int *)(uVar2 + 0x38) - uVar21)" (( "(") (binary_expression "*(int *)(uVar2 + 0x38) - uVar21" (pointer_expression "*(int *)(uVar2 + 0x38)" (* "*") (cast_expression "(int *)(uVar2 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x38)" (( "(") (binary_expression "uVar2 + 0x38" (identifier "uVar2") (+ "+") (number_literal "0x38")) () ")")))) (- "-") (identifier "uVar21")) () ")")) (+ "+") (pointer_expression "*(int *)(uVar2 + 0x2c)" (* "*") (cast_expression "(int *)(uVar2 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x2c)" (( "(") (binary_expression "uVar2 + 0x2c" (identifier "uVar2") (+ "+") (number_literal "0x2c")) () ")"))))) () ")")))) (; ";")) (} "}")) (else_clause "else {\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }" (else "else") (compound_statement "{\n                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));\n                          }" ({ "{") (expression_statement "puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));" (assignment_expression "puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21))" (identifier "puVar22") (= "=") (cast_expression "(undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21))" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21))" (( "(") (binary_expression "*(int *)(uVar2 + 0x38) + (uVar14 - uVar21)" (pointer_expression "*(int *)(uVar2 + 0x38)" (* "*") (cast_expression "(int *)(uVar2 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x38)" (( "(") (binary_expression "uVar2 + 0x38" (identifier "uVar2") (+ "+") (number_literal "0x38")) () ")")))) (+ "+") (parenthesized_expression "(uVar14 - uVar21)" (( "(") (binary_expression "uVar14 - uVar21" (identifier "uVar14") (- "-") (identifier "uVar21")) () ")"))) () ")")))) (; ";")) (} "}")))) (expression_statement "uVar14 = *(uint *)(uVar2 + 0x44);" (assignment_expression "uVar14 = *(uint *)(uVar2 + 0x44)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x44)" (* "*") (cast_expression "(uint *)(uVar2 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (if_statement "if (uVar14 <= uVar21) {\n                            uVar21 = uVar14;\n                          }" (if "if") (parenthesized_expression "(uVar14 <= uVar21)" (( "(") (binary_expression "uVar14 <= uVar21" (identifier "uVar14") (<= "<=") (identifier "uVar21")) () ")")) (compound_statement "{\n                            uVar21 = uVar14;\n                          }" ({ "{") (expression_statement "uVar21 = uVar14;" (assignment_expression "uVar21 = uVar14" (identifier "uVar21") (= "=") (identifier "uVar14")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }" (else "else") (compound_statement "{\n                          puVar22 = __dest + -uVar21;\n                          uVar21 = *(uint *)(uVar2 + 0x44);\n                          uVar14 = uVar21;\n                        }" ({ "{") (expression_statement "puVar22 = __dest + -uVar21;" (assignment_expression "puVar22 = __dest + -uVar21" (identifier "puVar22") (= "=") (binary_expression "__dest + -uVar21" (identifier "__dest") (+ "+") (unary_expression "-uVar21" (- "-") (identifier "uVar21")))) (; ";")) (expression_statement "uVar21 = *(uint *)(uVar2 + 0x44);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x44)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x44)" (* "*") (cast_expression "(uint *)(uVar2 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (expression_statement "uVar14 = uVar21;" (assignment_expression "uVar14 = uVar21" (identifier "uVar14") (= "=") (identifier "uVar21")) (; ";")) (} "}")))) (if_statement "if (local_5c < uVar21) {\n                          uVar21 = local_5c;\n                        }" (if "if") (parenthesized_expression "(local_5c < uVar21)" (( "(") (binary_expression "local_5c < uVar21" (identifier "local_5c") (< "<") (identifier "uVar21")) () ")")) (compound_statement "{\n                          uVar21 = local_5c;\n                        }" ({ "{") (expression_statement "uVar21 = local_5c;" (assignment_expression "uVar21 = local_5c" (identifier "uVar21") (= "=") (identifier "local_5c")) (; ";")) (} "}"))) (expression_statement "local_5c = local_5c - uVar21;" (assignment_expression "local_5c = local_5c - uVar21" (identifier "local_5c") (= "=") (binary_expression "local_5c - uVar21" (identifier "local_5c") (- "-") (identifier "uVar21"))) (; ";")) (expression_statement "puVar8 = __dest + uVar21;" (assignment_expression "puVar8 = __dest + uVar21" (identifier "puVar8") (= "=") (binary_expression "__dest + uVar21" (identifier "__dest") (+ "+") (identifier "uVar21"))) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x44) = uVar14 - uVar21;" (assignment_expression "*(uint *)(uVar2 + 0x44) = uVar14 - uVar21" (pointer_expression "*(uint *)(uVar2 + 0x44)" (* "*") (cast_expression "(uint *)(uVar2 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (binary_expression "uVar14 - uVar21" (identifier "uVar14") (- "-") (identifier "uVar21"))) (; ";")) (expression_statement "puVar23 = __dest;" (assignment_expression "puVar23 = __dest" (identifier "puVar23") (= "=") (identifier "__dest")) (; ";")) (do_statement "do {\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        } while (__dest != puVar8);" (do "do") (compound_statement "{\n                          __dest = puVar23 + (uint)bVar25 * -2 + 1;\n                          *puVar23 = *puVar22;\n                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;\n                          puVar23 = __dest;\n                        }" ({ "{") (expression_statement "__dest = puVar23 + (uint)bVar25 * -2 + 1;" (assignment_expression "__dest = puVar23 + (uint)bVar25 * -2 + 1" (identifier "__dest") (= "=") (binary_expression "puVar23 + (uint)bVar25 * -2 + 1" (binary_expression "puVar23 + (uint)bVar25 * -2" (identifier "puVar23") (+ "+") (binary_expression "(uint)bVar25 * -2" (cast_expression "(uint)bVar25" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar25")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar23 = *puVar22;" (assignment_expression "*puVar23 = *puVar22" (pointer_expression "*puVar23" (* "*") (identifier "puVar23")) (= "=") (pointer_expression "*puVar22" (* "*") (identifier "puVar22"))) (; ";")) (expression_statement "puVar22 = puVar22 + (uint)bVar25 * -2 + 1;" (assignment_expression "puVar22 = puVar22 + (uint)bVar25 * -2 + 1" (identifier "puVar22") (= "=") (binary_expression "puVar22 + (uint)bVar25 * -2 + 1" (binary_expression "puVar22 + (uint)bVar25 * -2" (identifier "puVar22") (+ "+") (binary_expression "(uint)bVar25 * -2" (cast_expression "(uint)bVar25" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar25")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar23 = __dest;" (assignment_expression "puVar23 = __dest" (identifier "puVar23") (= "=") (identifier "__dest")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(__dest != puVar8)" (( "(") (binary_expression "__dest != puVar8" (identifier "__dest") (!= "!=") (identifier "puVar8")) () ")")) (; ";")) (if_statement "if (*(int *)(uVar2 + 0x44) != 0) {\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }" (if "if") (parenthesized_expression "(*(int *)(uVar2 + 0x44) != 0)" (( "(") (binary_expression "*(int *)(uVar2 + 0x44) != 0" (pointer_expression "*(int *)(uVar2 + 0x44)" (* "*") (cast_expression "(int *)(uVar2 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                          iVar5 = *(int *)(uVar2 + 4);\n                          uVar21 = uVar2;\n                          goto LAB_000178c9;\n                        }" ({ "{") (expression_statement "iVar5 = *(int *)(uVar2 + 4);" (assignment_expression "iVar5 = *(int *)(uVar2 + 4)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(uVar2 + 4)" (* "*") (cast_expression "(int *)(uVar2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar21 = uVar2;" (assignment_expression "uVar21 = uVar2" (identifier "uVar21") (= "=") (identifier "uVar2")) (; ";")) (goto_statement "goto LAB_000178c9;" (goto "goto") (statement_identifier "LAB_000178c9") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (} "}"))) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }" (else "else") (compound_statement "{\n                    uVar21 = 0xfffffffd;\n                    param_1[6] = (int)"invalid distances set";\n                    *(undefined4 *)(uVar2 + 4) = 0x3f51;\n                  }" ({ "{") (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" (identifier "uVar21") (= "=") (number_literal "0xfffffffd")) (; ";")) (expression_statement "param_1[6] = (int)"invalid distances set";" (assignment_expression "param_1[6] = (int)"invalid distances set"" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (cast_expression "(int)"invalid distances set"" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (string_literal ""invalid distances set"" (" """) (string_content "invalid distances set") (" """)))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f51")) (; ";")) (} "}")))) (goto_statement "goto LAB_00017f32;" (goto "goto") (statement_identifier "LAB_00017f32") (; ";")) (} "}"))) (expression_statement "pcVar6 = "invalid literal/lengths set";" (assignment_expression "pcVar6 = "invalid literal/lengths set"" (identifier "pcVar6") (= "=") (string_literal ""invalid literal/lengths set"" (" """) (string_content "invalid literal/lengths set") (" """))) (; ";")) (goto_statement "goto LAB_00017b45;" (goto "goto") (statement_identifier "LAB_00017b45") (; ";")) (} "}"))) (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" (identifier "uVar21") (= "=") (number_literal "0xfffffffd")) (; ";")) (expression_statement "param_1[6] = (int)"invalid code -- missing end-of-block";" (assignment_expression "param_1[6] = (int)"invalid code -- missing end-of-block"" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (cast_expression "(int)"invalid code -- missing end-of-block"" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (string_literal ""invalid code -- missing end-of-block"" (" """) (string_content "invalid code -- missing end-of-block") (" """)))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f51")) (; ";")) (} "}")) (else_clause "else {\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }" (else "else") (compound_statement "{\n              param_1[6] = (int)"invalid code lengths set";\n              *(undefined4 *)(uVar2 + 4) = 0x3f51;\n              uVar21 = 0xfffffffd;\n            }" ({ "{") (expression_statement "param_1[6] = (int)"invalid code lengths set";" (assignment_expression "param_1[6] = (int)"invalid code lengths set"" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (cast_expression "(int)"invalid code lengths set"" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (string_literal ""invalid code lengths set"" (" """) (string_content "invalid code lengths set") (" """)))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f51")) (; ";")) (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" (identifier "uVar21") (= "=") (number_literal "0xfffffffd")) (; ";")) (} "}")))) (goto_statement "goto LAB_00017f32;" (goto "goto") (statement_identifier "LAB_00017f32") (; ";")) (} "}"))) (expression_statement "pcVar6 = "too many length or distance symbols";" (assignment_expression "pcVar6 = "too many length or distance symbols"" (identifier "pcVar6") (= "=") (string_literal ""too many length or distance symbols"" (" """) (string_content "too many length or distance symbols") (" """))) (; ";")) (goto_statement "goto LAB_000188eb;" (goto "goto") (statement_identifier "LAB_000188eb") (; ";")) (} "}"))) (if_statement "if (uVar14 == 3) {\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }" (if "if") (parenthesized_expression "(uVar14 == 3)" (( "(") (binary_expression "uVar14 == 3" (identifier "uVar14") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n          uVar15 = uVar15 - 3;\n          local_64 = local_64 >> 3;\n          uVar21 = 0xfffffffd;\n          param_1[6] = (int)"invalid block type";\n          *(undefined4 *)(uVar2 + 4) = 0x3f51;\n          goto LAB_00017f32;\n        }" ({ "{") (expression_statement "uVar15 = uVar15 - 3;" (assignment_expression "uVar15 = uVar15 - 3" (identifier "uVar15") (= "=") (binary_expression "uVar15 - 3" (identifier "uVar15") (- "-") (number_literal "3"))) (; ";")) (expression_statement "local_64 = local_64 >> 3;" (assignment_expression "local_64 = local_64 >> 3" (identifier "local_64") (= "=") (binary_expression "local_64 >> 3" (identifier "local_64") (>> ">>") (number_literal "3"))) (; ";")) (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" (identifier "uVar21") (= "=") (number_literal "0xfffffffd")) (; ";")) (expression_statement "param_1[6] = (int)"invalid block type";" (assignment_expression "param_1[6] = (int)"invalid block type"" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (cast_expression "(int)"invalid block type"" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (string_literal ""invalid block type"" (" """) (string_content "invalid block type") (" """)))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f51")) (; ";")) (goto_statement "goto LAB_00017f32;" (goto "goto") (statement_identifier "LAB_00017f32") (; ";")) (} "}"))) (if_statement "if (uVar14 == 1) {\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }" (if "if") (parenthesized_expression "(uVar14 == 1)" (( "(") (binary_expression "uVar14 == 1" (identifier "uVar14") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          *(undefined4 *)(uVar2 + 0x58) = 9;\n          *(undefined4 *)(uVar2 + 0x5c) = 5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f47;\n          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;\n          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;\n          if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }\n          local_64 = local_64 >> 3;\n          uVar15 = uVar15 - 3;\n          goto LAB_00017f32;\n        }" ({ "{") (expression_statement "*(undefined4 *)(uVar2 + 0x58) = 9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x58) = 9" (pointer_expression "*(undefined4 *)(uVar2 + 0x58)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x58)" (( "(") (binary_expression "uVar2 + 0x58" (identifier "uVar2") (+ "+") (number_literal "0x58")) () ")")))) (= "=") (number_literal "9")) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 0x5c) = 5;" (assignment_expression "*(undefined4 *)(uVar2 + 0x5c) = 5" (pointer_expression "*(undefined4 *)(uVar2 + 0x5c)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x5c)" (( "(") (binary_expression "uVar2 + 0x5c" (identifier "uVar2") (+ "+") (number_literal "0x5c")) () ")")))) (= "=") (number_literal "5")) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f47;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f47" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f47")) (; ";")) (expression_statement "*(undefined **)(uVar2 + 0x50) = &UNK_000219c0;" (assignment_expression "*(undefined **)(uVar2 + 0x50) = &UNK_000219c0" (pointer_expression "*(undefined **)(uVar2 + 0x50)" (* "*") (cast_expression "(undefined **)(uVar2 + 0x50)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(uVar2 + 0x50)" (( "(") (binary_expression "uVar2 + 0x50" (identifier "uVar2") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (pointer_expression "&UNK_000219c0" (& "&") (identifier "UNK_000219c0"))) (; ";")) (expression_statement "*(undefined **)(uVar2 + 0x54) = &UNK_00021940;" (assignment_expression "*(undefined **)(uVar2 + 0x54) = &UNK_00021940" (pointer_expression "*(undefined **)(uVar2 + 0x54)" (* "*") (cast_expression "(undefined **)(uVar2 + 0x54)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(uVar2 + 0x54)" (( "(") (binary_expression "uVar2 + 0x54" (identifier "uVar2") (+ "+") (number_literal "0x54")) () ")")))) (= "=") (pointer_expression "&UNK_00021940" (& "&") (identifier "UNK_00021940"))) (; ";")) (if_statement "if (param_2 != 6) {\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }" (if "if") (parenthesized_expression "(param_2 != 6)" (( "(") (binary_expression "param_2 != 6" (identifier "param_2") (!= "!=") (number_literal "6")) () ")")) (compound_statement "{\n            local_64 = local_64 >> 3;\n            uVar15 = uVar15 - 3;\n            goto LAB_00017c70;\n          }" ({ "{") (expression_statement "local_64 = local_64 >> 3;" (assignment_expression "local_64 = local_64 >> 3" (identifier "local_64") (= "=") (binary_expression "local_64 >> 3" (identifier "local_64") (>> ">>") (number_literal "3"))) (; ";")) (expression_statement "uVar15 = uVar15 - 3;" (assignment_expression "uVar15 = uVar15 - 3" (identifier "uVar15") (= "=") (binary_expression "uVar15 - 3" (identifier "uVar15") (- "-") (number_literal "3"))) (; ";")) (goto_statement "goto LAB_00017c70;" (goto "goto") (statement_identifier "LAB_00017c70") (; ";")) (} "}"))) (expression_statement "local_64 = local_64 >> 3;" (assignment_expression "local_64 = local_64 >> 3" (identifier "local_64") (= "=") (binary_expression "local_64 >> 3" (identifier "local_64") (>> ">>") (number_literal "3"))) (; ";")) (expression_statement "uVar15 = uVar15 - 3;" (assignment_expression "uVar15 = uVar15 - 3" (identifier "uVar15") (= "=") (binary_expression "uVar15 - 3" (identifier "uVar15") (- "-") (number_literal "3"))) (; ";")) (goto_statement "goto LAB_00017f32;" (goto "goto") (statement_identifier "LAB_00017f32") (; ";")) (} "}"))) (expression_statement "local_64 = local_64 >> 3;" (assignment_expression "local_64 = local_64 >> 3" (identifier "local_64") (= "=") (binary_expression "local_64 >> 3" (identifier "local_64") (>> ">>") (number_literal "3"))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f41;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f41" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f41")) (; ";")) (expression_statement "uVar15 = uVar15 - 3;" (assignment_expression "uVar15 = uVar15 - 3" (identifier "uVar15") (= "=") (binary_expression "uVar15 - 3" (identifier "uVar15") (- "-") (number_literal "3"))) (; ";")) (labeled_statement "code_r0x00017ac6:\n        local_64 = local_64 >> ((byte)uVar15 & 7);" (statement_identifier "code_r0x00017ac6") (: ":") (expression_statement "local_64 = local_64 >> ((byte)uVar15 & 7);" (assignment_expression "local_64 = local_64 >> ((byte)uVar15 & 7)" (identifier "local_64") (= "=") (binary_expression "local_64 >> ((byte)uVar15 & 7)" (identifier "local_64") (>> ">>") (parenthesized_expression "((byte)uVar15 & 7)" (( "(") (binary_expression "(byte)uVar15 & 7" (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15")) (& "&") (number_literal "7")) () ")")))) (; ";"))) (for_statement "for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }" (for "for") (( "(") (assignment_expression "uVar15 = uVar15 & 0xfffffff8" (identifier "uVar15") (= "=") (binary_expression "uVar15 & 0xfffffff8" (identifier "uVar15") (& "&") (number_literal "0xfffffff8"))) (; ";") (binary_expression "uVar15 < 0x20" (identifier "uVar15") (< "<") (number_literal "0x20")) (; ";") (assignment_expression "uVar15 = uVar15 + 8" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 8" (identifier "uVar15") (+ "+") (number_literal "8"))) () ")") (compound_statement "{\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n          local_60 = local_60 + 1;\n        }" ({ "{") (if_statement "if (local_6c == 0) goto LAB_00017f30;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017f30;" (goto "goto") (statement_identifier "LAB_00017f30") (; ";"))) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" (identifier "local_6c") (= "=") (binary_expression "local_6c - 1" (identifier "local_6c") (- "-") (number_literal "1"))) (; ";")) (expression_statement "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f))" (identifier "local_64") (= "=") (binary_expression "local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f))" (identifier "local_64") (+ "+") (parenthesized_expression "((uint)*local_60 << ((byte)uVar15 & 0x1f))" (( "(") (binary_expression "(uint)*local_60 << ((byte)uVar15 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "local_60")) (<< "<<") (parenthesized_expression "((byte)uVar15 & 0x1f)" (( "(") (binary_expression "(byte)uVar15 & 0x1f" (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15")) (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" (identifier "local_60") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar14 = local_64 & 0xffff;" (assignment_expression "uVar14 = local_64 & 0xffff" (identifier "uVar14") (= "=") (binary_expression "local_64 & 0xffff" (identifier "local_64") (& "&") (number_literal "0xffff"))) (; ";")) (if_statement "if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }" (if "if") (parenthesized_expression "(uVar14 != (local_64 >> 0x10 ^ 0xffff))" (( "(") (binary_expression "uVar14 != (local_64 >> 0x10 ^ 0xffff)" (identifier "uVar14") (!= "!=") (parenthesized_expression "(local_64 >> 0x10 ^ 0xffff)" (( "(") (binary_expression "local_64 >> 0x10 ^ 0xffff" (binary_expression "local_64 >> 0x10" (identifier "local_64") (>> ">>") (number_literal "0x10")) (^ "^") (number_literal "0xffff")) () ")"))) () ")")) (compound_statement "{\n          pcVar6 = "invalid stored block lengths";\n          goto LAB_00017b45;\n        }" ({ "{") (expression_statement "pcVar6 = "invalid stored block lengths";" (assignment_expression "pcVar6 = "invalid stored block lengths"" (identifier "pcVar6") (= "=") (string_literal ""invalid stored block lengths"" (" """) (string_content "invalid stored block lengths") (" """))) (; ";")) (goto_statement "goto LAB_00017b45;" (goto "goto") (statement_identifier "LAB_00017b45") (; ";")) (} "}"))) (expression_statement "*(uint *)(uVar2 + 0x44) = uVar14;" (assignment_expression "*(uint *)(uVar2 + 0x44) = uVar14" (pointer_expression "*(uint *)(uVar2 + 0x44)" (* "*") (cast_expression "(uint *)(uVar2 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (identifier "uVar14")) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f42;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f42" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f42")) (; ";")) (if_statement "if (param_2 == 6) {\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }" (if "if") (parenthesized_expression "(param_2 == 6)" (( "(") (binary_expression "param_2 == 6" (identifier "param_2") (== "==") (number_literal "6")) () ")")) (compound_statement "{\n          uVar21 = 0;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f32;\n        }" ({ "{") (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" (identifier "local_64") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00017f32;" (goto "goto") (statement_identifier "LAB_00017f32") (; ";")) (} "}"))) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" (identifier "local_64") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00018557:\n        *(undefined4 *)(uVar2 + 4) = 0x3f43;" (statement_identifier "LAB_00018557") (: ":") (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f43;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f43" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f43")) (; ";"))) (labeled_statement "code_r0x00018562:\n        if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }" (statement_identifier "code_r0x00018562") (: ":") (if_statement "if (uVar14 == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }" (if "if") (parenthesized_expression "(uVar14 == 0)" (( "(") (binary_expression "uVar14 == 0" (identifier "uVar14") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }" ({ "{") (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3f;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3f" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f3f")) (; ";")) (goto_statement "goto LAB_00017f13;" (goto "goto") (statement_identifier "LAB_00017f13") (; ";")) (} "}")))) (if_statement "if (local_6c <= uVar14) {\n          uVar14 = local_6c;\n        }" (if "if") (parenthesized_expression "(local_6c <= uVar14)" (( "(") (binary_expression "local_6c <= uVar14" (identifier "local_6c") (<= "<=") (identifier "uVar14")) () ")")) (compound_statement "{\n          uVar14 = local_6c;\n        }" ({ "{") (expression_statement "uVar14 = local_6c;" (assignment_expression "uVar14 = local_6c" (identifier "uVar14") (= "=") (identifier "local_6c")) (; ";")) (} "}"))) (if_statement "if (local_5c < uVar14) {\n          uVar14 = local_5c;\n        }" (if "if") (parenthesized_expression "(local_5c < uVar14)" (( "(") (binary_expression "local_5c < uVar14" (identifier "local_5c") (< "<") (identifier "uVar14")) () ")")) (compound_statement "{\n          uVar14 = local_5c;\n        }" ({ "{") (expression_statement "uVar14 = local_5c;" (assignment_expression "uVar14 = local_5c" (identifier "uVar14") (= "=") (identifier "local_5c")) (; ";")) (} "}"))) (if_statement "if (uVar14 == 0) goto LAB_00017f30;" (if "if") (parenthesized_expression "(uVar14 == 0)" (( "(") (binary_expression "uVar14 == 0" (identifier "uVar14") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017f30;" (goto "goto") (statement_identifier "LAB_00017f30") (; ";"))) (expression_statement "memcpy(__dest,local_60,uVar14);" (call_expression "memcpy(__dest,local_60,uVar14)" (identifier "memcpy") (argument_list "(__dest,local_60,uVar14)" (( "(") (identifier "__dest") (, ",") (identifier "local_60") (, ",") (identifier "uVar14") () ")"))) (; ";")) (expression_statement "local_6c = local_6c - uVar14;" (assignment_expression "local_6c = local_6c - uVar14" (identifier "local_6c") (= "=") (binary_expression "local_6c - uVar14" (identifier "local_6c") (- "-") (identifier "uVar14"))) (; ";")) (expression_statement "local_60 = local_60 + uVar14;" (assignment_expression "local_60 = local_60 + uVar14" (identifier "local_60") (= "=") (binary_expression "local_60 + uVar14" (identifier "local_60") (+ "+") (identifier "uVar14"))) (; ";")) (expression_statement "local_5c = local_5c - uVar14;" (assignment_expression "local_5c = local_5c - uVar14" (identifier "local_5c") (= "=") (binary_expression "local_5c - uVar14" (identifier "local_5c") (- "-") (identifier "uVar14"))) (; ";")) (expression_statement "*(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;" (assignment_expression "*(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14" (pointer_expression "*(int *)(uVar2 + 0x44)" (* "*") (cast_expression "(int *)(uVar2 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (binary_expression "*(int *)(uVar2 + 0x44) - uVar14" (pointer_expression "*(int *)(uVar2 + 0x44)" (* "*") (cast_expression "(int *)(uVar2 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")")))) (- "-") (identifier "uVar14"))) (; ";")) (expression_statement "iVar5 = *(int *)(uVar2 + 4);" (assignment_expression "iVar5 = *(int *)(uVar2 + 4)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(uVar2 + 4)" (* "*") (cast_expression "(int *)(uVar2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar21 = extraout_ECX_00;" (assignment_expression "uVar21 = extraout_ECX_00" (identifier "uVar21") (= "=") (identifier "extraout_ECX_00")) (; ";")) (expression_statement "__dest = __dest + uVar14;" (assignment_expression "__dest = __dest + uVar14" (identifier "__dest") (= "=") (binary_expression "__dest + uVar14" (identifier "__dest") (+ "+") (identifier "uVar14"))) (; ";")) (goto_statement "goto LAB_000178c9;" (goto "goto") (statement_identifier "LAB_000178c9") (; ";"))) (case_statement "case 0x3f35:\n        goto joined_r0x0001879b;" (case "case") (number_literal "0x3f35") (: ":") (goto_statement "goto joined_r0x0001879b;" (goto "goto") (statement_identifier "joined_r0x0001879b") (; ";"))) (case_statement "case 0x3f36:\n        goto joined_r0x00018053;" (case "case") (number_literal "0x3f36") (: ":") (goto_statement "goto joined_r0x00018053;" (goto "goto") (statement_identifier "joined_r0x00018053") (; ";"))) (case_statement "case 0x3f37:\n        goto joined_r0x000180e3;" (case "case") (number_literal "0x3f37") (: ":") (goto_statement "goto joined_r0x000180e3;" (goto "goto") (statement_identifier "joined_r0x000180e3") (; ";"))) (case_statement "case 0x3f38:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;\n        if (uVar15 < 0x10) goto code_r0x0001829d;\n        goto code_r0x000182ea;" (case "case") (number_literal "0x3f38") (: ":") (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x14)" (* "*") (cast_expression "(uint *)(uVar2 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x14)" (( "(") (binary_expression "uVar2 + 0x14" (identifier "uVar2") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;" (if "if") (parenthesized_expression "((uVar21 & 0x400) == 0)" (( "(") (binary_expression "(uVar21 & 0x400) == 0" (parenthesized_expression "(uVar21 & 0x400)" (( "(") (binary_expression "uVar21 & 0x400" (identifier "uVar21") (& "&") (number_literal "0x400")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto code_r0x000181ae;" (goto "goto") (statement_identifier "code_r0x000181ae") (; ";"))) (if_statement "if (uVar15 < 0x10) goto code_r0x0001829d;" (if "if") (parenthesized_expression "(uVar15 < 0x10)" (( "(") (binary_expression "uVar15 < 0x10" (identifier "uVar15") (< "<") (number_literal "0x10")) () ")")) (goto_statement "goto code_r0x0001829d;" (goto "goto") (statement_identifier "code_r0x0001829d") (; ";"))) (goto_statement "goto code_r0x000182ea;" (goto "goto") (statement_identifier "code_r0x000182ea") (; ";"))) (case_statement "case 0x3f39:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x000181cb;" (case "case") (number_literal "0x3f39") (: ":") (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x14)" (* "*") (cast_expression "(uint *)(uVar2 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x14)" (( "(") (binary_expression "uVar2 + 0x14" (identifier "uVar2") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (goto_statement "goto code_r0x000181cb;" (goto "goto") (statement_identifier "code_r0x000181cb") (; ";"))) (case_statement "case 0x3f3a:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001832f;" (case "case") (number_literal "0x3f3a") (: ":") (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x14)" (* "*") (cast_expression "(uint *)(uVar2 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x14)" (( "(") (binary_expression "uVar2 + 0x14" (identifier "uVar2") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (goto_statement "goto code_r0x0001832f;" (goto "goto") (statement_identifier "code_r0x0001832f") (; ";"))) (case_statement "case 0x3f3b:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x0001835c;" (case "case") (number_literal "0x3f3b") (: ":") (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x14)" (* "*") (cast_expression "(uint *)(uVar2 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x14)" (( "(") (binary_expression "uVar2 + 0x14" (identifier "uVar2") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (goto_statement "goto code_r0x0001835c;" (goto "goto") (statement_identifier "code_r0x0001835c") (; ";"))) (case_statement "case 0x3f3c:\n        uVar21 = *(uint *)(uVar2 + 0x14);\n        goto code_r0x00018382;" (case "case") (number_literal "0x3f3c") (: ":") (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x14)" (* "*") (cast_expression "(uint *)(uVar2 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x14)" (( "(") (binary_expression "uVar2 + 0x14" (identifier "uVar2") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (goto_statement "goto code_r0x00018382;" (goto "goto") (statement_identifier "code_r0x00018382") (; ";"))) (case_statement "case 0x3f3d:\n        uVar21 = local_64;\n        goto joined_r0x00017e43;" (case "case") (number_literal "0x3f3d") (: ":") (expression_statement "uVar21 = local_64;" (assignment_expression "uVar21 = local_64" (identifier "uVar21") (= "=") (identifier "local_64")) (; ";")) (goto_statement "goto joined_r0x00017e43;" (goto "goto") (statement_identifier "joined_r0x00017e43") (; ";"))) (case_statement "case 0x3f3e:\n        goto code_r0x00017eda;" (case "case") (number_literal "0x3f3e") (: ":") (goto_statement "goto code_r0x00017eda;" (goto "goto") (statement_identifier "code_r0x00017eda") (; ";"))) (case_statement "case 0x3f3f:\n        goto LAB_00017f13;" (case "case") (number_literal "0x3f3f") (: ":") (goto_statement "goto LAB_00017f13;" (goto "goto") (statement_identifier "LAB_00017f13") (; ";"))) (case_statement "case 0x3f41:\n        goto code_r0x00017ac6;" (case "case") (number_literal "0x3f41") (: ":") (goto_statement "goto code_r0x00017ac6;" (goto "goto") (statement_identifier "code_r0x00017ac6") (; ";"))) (case_statement "case 0x3f42:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto LAB_00018557;" (case "case") (number_literal "0x3f42") (: ":") (expression_statement "uVar14 = *(uint *)(uVar2 + 0x44);" (assignment_expression "uVar14 = *(uint *)(uVar2 + 0x44)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x44)" (* "*") (cast_expression "(uint *)(uVar2 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (goto_statement "goto LAB_00018557;" (goto "goto") (statement_identifier "LAB_00018557") (; ";"))) (case_statement "case 0x3f43:\n        uVar14 = *(uint *)(uVar2 + 0x44);\n        goto code_r0x00018562;" (case "case") (number_literal "0x3f43") (: ":") (expression_statement "uVar14 = *(uint *)(uVar2 + 0x44);" (assignment_expression "uVar14 = *(uint *)(uVar2 + 0x44)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x44)" (* "*") (cast_expression "(uint *)(uVar2 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (goto_statement "goto code_r0x00018562;" (goto "goto") (statement_identifier "code_r0x00018562") (; ";"))) (case_statement "case 0x3f44:\n        goto code_r0x00018840;" (case "case") (number_literal "0x3f44") (: ":") (goto_statement "goto code_r0x00018840;" (goto "goto") (statement_identifier "code_r0x00018840") (; ";"))) (case_statement "case 0x3f45:\n        uVar21 = *(uint *)(uVar2 + 0x6c);\n        uVar14 = *(uint *)(uVar2 + 0x60);\n        if (uVar14 <= uVar21) goto code_r0x00019253;\n        goto LAB_000184b2;" (case "case") (number_literal "0x3f45") (: ":") (expression_statement "uVar21 = *(uint *)(uVar2 + 0x6c);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x6c)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x6c)" (* "*") (cast_expression "(uint *)(uVar2 + 0x6c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x6c)" (( "(") (binary_expression "uVar2 + 0x6c" (identifier "uVar2") (+ "+") (number_literal "0x6c")) () ")"))))) (; ";")) (expression_statement "uVar14 = *(uint *)(uVar2 + 0x60);" (assignment_expression "uVar14 = *(uint *)(uVar2 + 0x60)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x60)" (* "*") (cast_expression "(uint *)(uVar2 + 0x60)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x60)" (( "(") (binary_expression "uVar2 + 0x60" (identifier "uVar2") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (if_statement "if (uVar14 <= uVar21) goto code_r0x00019253;" (if "if") (parenthesized_expression "(uVar14 <= uVar21)" (( "(") (binary_expression "uVar14 <= uVar21" (identifier "uVar14") (<= "<=") (identifier "uVar21")) () ")")) (goto_statement "goto code_r0x00019253;" (goto "goto") (statement_identifier "code_r0x00019253") (; ";"))) (goto_statement "goto LAB_000184b2;" (goto "goto") (statement_identifier "LAB_000184b2") (; ";"))) (case_statement "case 0x3f46:\n        uStack_48 = *(uint *)(uVar2 + 0x6c);\n        goto LAB_000185db;" (case "case") (number_literal "0x3f46") (: ":") (expression_statement "uStack_48 = *(uint *)(uVar2 + 0x6c);" (assignment_expression "uStack_48 = *(uint *)(uVar2 + 0x6c)" (identifier "uStack_48") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x6c)" (* "*") (cast_expression "(uint *)(uVar2 + 0x6c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x6c)" (( "(") (binary_expression "uVar2 + 0x6c" (identifier "uVar2") (+ "+") (number_literal "0x6c")) () ")"))))) (; ";")) (goto_statement "goto LAB_000185db;" (goto "goto") (statement_identifier "LAB_000185db") (; ";"))) (case_statement "case 0x3f47:\n        goto LAB_00017c70;" (case "case") (number_literal "0x3f47") (: ":") (goto_statement "goto LAB_00017c70;" (goto "goto") (statement_identifier "LAB_00017c70") (; ";"))) (case_statement "case 0x3f48:\n        goto LAB_00017b90;" (case "case") (number_literal "0x3f48") (: ":") (goto_statement "goto LAB_00017b90;" (goto "goto") (statement_identifier "LAB_00017b90") (; ";"))) (case_statement "case 0x3f49:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017d07;" (case "case") (number_literal "0x3f49") (: ":") (expression_statement "uVar21 = *(uint *)(uVar2 + 0x4c);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x4c)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x4c)" (* "*") (cast_expression "(uint *)(uVar2 + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x4c)" (( "(") (binary_expression "uVar2 + 0x4c" (identifier "uVar2") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (goto_statement "goto LAB_00017d07;" (goto "goto") (statement_identifier "LAB_00017d07") (; ";"))) (case_statement "case 0x3f4a:\n        goto code_r0x00017d27;" (case "case") (number_literal "0x3f4a") (: ":") (goto_statement "goto code_r0x00017d27;" (goto "goto") (statement_identifier "code_r0x00017d27") (; ";"))) (case_statement "case 0x3f4b:\n        uVar21 = *(uint *)(uVar2 + 0x4c);\n        goto LAB_00017c87;" (case "case") (number_literal "0x3f4b") (: ":") (expression_statement "uVar21 = *(uint *)(uVar2 + 0x4c);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x4c)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x4c)" (* "*") (cast_expression "(uint *)(uVar2 + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x4c)" (( "(") (binary_expression "uVar2 + 0x4c" (identifier "uVar2") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (goto_statement "goto LAB_00017c87;" (goto "goto") (statement_identifier "LAB_00017c87") (; ";"))) (case_statement "case 0x3f4c:\n        goto code_r0x00017c9a;" (case "case") (number_literal "0x3f4c") (: ":") (goto_statement "goto code_r0x00017c9a;" (goto "goto") (statement_identifier "code_r0x00017c9a") (; ";"))) (case_statement "case 0x3f4d:\n        goto LAB_00017b6a;" (case "case") (number_literal "0x3f4d") (: ":") (goto_statement "goto LAB_00017b6a;" (goto "goto") (statement_identifier "LAB_00017b6a") (; ";"))) (case_statement "case 0x3f4e:\ncode_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        if (uVar21 == 0) goto LAB_00018e20;\n        if (0x1f < uVar15) goto LAB_00017996;\n        if (local_6c != 0) goto LAB_00017970;\n        goto LAB_00017f30;" (case "case") (number_literal "0x3f4e") (: ":") (labeled_statement "code_r0x00017930:\n        uVar21 = *(uint *)(uVar2 + 0xc);" (statement_identifier "code_r0x00017930") (: ":") (expression_statement "uVar21 = *(uint *)(uVar2 + 0xc);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0xc)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(uVar2 + 0xc)" (* "*") (cast_expression "(uint *)(uVar2 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0xc)" (( "(") (binary_expression "uVar2 + 0xc" (identifier "uVar2") (+ "+") (number_literal "0xc")) () ")"))))) (; ";"))) (if_statement "if (uVar21 == 0) goto LAB_00018e20;" (if "if") (parenthesized_expression "(uVar21 == 0)" (( "(") (binary_expression "uVar21 == 0" (identifier "uVar21") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00018e20;" (goto "goto") (statement_identifier "LAB_00018e20") (; ";"))) (if_statement "if (0x1f < uVar15) goto LAB_00017996;" (if "if") (parenthesized_expression "(0x1f < uVar15)" (( "(") (binary_expression "0x1f < uVar15" (number_literal "0x1f") (< "<") (identifier "uVar15")) () ")")) (goto_statement "goto LAB_00017996;" (goto "goto") (statement_identifier "LAB_00017996") (; ";"))) (if_statement "if (local_6c != 0) goto LAB_00017970;" (if "if") (parenthesized_expression "(local_6c != 0)" (( "(") (binary_expression "local_6c != 0" (identifier "local_6c") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017970;" (goto "goto") (statement_identifier "LAB_00017970") (; ";"))) (goto_statement "goto LAB_00017f30;" (goto "goto") (statement_identifier "LAB_00017f30") (; ";"))) (case_statement "case 0x3f4f:\n        uVar21 = *(uint *)(uVar2 + 0xc);\n        goto LAB_000183ff;" (case "case") (number_literal "0x3f4f") (: ":") (expression_statement "uVar21 = *(uint *)(uVar2 + 0xc);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0xc)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(uVar2 + 0xc)" (* "*") (cast_expression "(uint *)(uVar2 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0xc)" (( "(") (binary_expression "uVar2 + 0xc" (identifier "uVar2") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (goto_statement "goto LAB_000183ff;" (goto "goto") (statement_identifier "LAB_000183ff") (; ";"))) (case_statement "case 0x3f50:\n        uVar21 = 1;\n        goto LAB_00017f32;" (case "case") (number_literal "0x3f50") (: ":") (expression_statement "uVar21 = 1;" (assignment_expression "uVar21 = 1" (identifier "uVar21") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_00017f32;" (goto "goto") (statement_identifier "LAB_00017f32") (; ";"))) (case_statement "case 0x3f51:\n        goto LAB_00018817;" (case "case") (number_literal "0x3f51") (: ":") (goto_statement "goto LAB_00018817;" (goto "goto") (statement_identifier "LAB_00018817") (; ";"))) (case_statement "case 0x3f52:\n        goto code_r0x00018770;" (case "case") (number_literal "0x3f52") (: ":") (goto_statement "goto code_r0x00018770;" (goto "goto") (statement_identifier "code_r0x00018770") (; ";"))) (} "}")))) (} "}"))) (} "}"))) (expression_statement "uVar21 = 0xfffffffe;" (assignment_expression "uVar21 = 0xfffffffe" (identifier "uVar21") (= "=") (number_literal "0xfffffffe")) (; ";")) (goto_statement "goto LAB_00018778;" (goto "goto") (statement_identifier "LAB_00018778") (; ";")) (while_statement "while (local_6c != 0) {\ncode_r0x00018ea0:\n    pbVar20 = local_60 + 1;\n    local_6c = local_6c - 1;\n    bVar12 = (byte)uVar15;\n    uVar15 = uVar15 + 8;\n    local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n    local_60 = pbVar20;\n    if (0xf < uVar15) goto code_r0x00018ec6;\n  }" (while "while") (parenthesized_expression "(local_6c != 0)" (( "(") (binary_expression "local_6c != 0" (identifier "local_6c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\ncode_r0x00018ea0:\n    pbVar20 = local_60 + 1;\n    local_6c = local_6c - 1;\n    bVar12 = (byte)uVar15;\n    uVar15 = uVar15 + 8;\n    local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n    local_60 = pbVar20;\n    if (0xf < uVar15) goto code_r0x00018ec6;\n  }" ({ "{") (labeled_statement "code_r0x00018ea0:\n    pbVar20 = local_60 + 1;" (statement_identifier "code_r0x00018ea0") (: ":") (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" (identifier "pbVar20") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" (identifier "local_6c") (= "=") (binary_expression "local_6c - 1" (identifier "local_6c") (- "-") (number_literal "1"))) (; ";")) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" (identifier "bVar12") (= "=") (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15"))) (; ";")) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 8" (identifier "uVar15") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "local_64") (= "=") (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "local_64") (+ "+") (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" (( "(") (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "local_60")) (<< "<<") (parenthesized_expression "(bVar12 & 0x1f)" (( "(") (binary_expression "bVar12 & 0x1f" (identifier "bVar12") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" (identifier "local_60") (= "=") (identifier "pbVar20")) (; ";")) (if_statement "if (0xf < uVar15) goto code_r0x00018ec6;" (if "if") (parenthesized_expression "(0xf < uVar15)" (( "(") (binary_expression "0xf < uVar15" (number_literal "0xf") (< "<") (identifier "uVar15")) () ")")) (goto_statement "goto code_r0x00018ec6;" (goto "goto") (statement_identifier "code_r0x00018ec6") (; ";"))) (} "}"))) (goto_statement "goto LAB_000190a2;" (goto "goto") (statement_identifier "LAB_000190a2") (; ";")) (identifier "code_r0x00018ec6") (: ":") (if "if") (parenthesized_expression "(((uVar21 & 2) == 0) || (local_64 != 0x8b1f))" (( "(") (binary_expression "((uVar21 & 2) == 0) || (local_64 != 0x8b1f)" (parenthesized_expression "((uVar21 & 2) == 0)" (( "(") (binary_expression "(uVar21 & 2) == 0" (parenthesized_expression "(uVar21 & 2)" (( "(") (binary_expression "uVar21 & 2" (identifier "uVar21") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(local_64 != 0x8b1f)" (( "(") (binary_expression "local_64 != 0x8b1f" (identifier "local_64") (!= "!=") (number_literal "0x8b1f")) () ")"))) () ")")) (compound_statement "{\n    *(undefined4 *)(uVar2 + 0x14) = 0;\n    if (*(int *)(uVar2 + 0x24) != 0) {\n      *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30) = 0xffffffff;\n    }\n    if (((uVar21 & 1) == 0) ||\n       (uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8), uVar21 != (uVar21 / 0x1f) * 0x1f)) {\n      pcVar6 = "incorrect header check";\nLAB_000188eb:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }\n    else {\n      if ((local_64 & 0xf) == 8) {\n        local_64 = local_64 >> 4;\n        uVar15 = uVar15 - 4;\n        uVar21 = (local_64 & 0xf) + 8;\n        if (*(uint *)(uVar2 + 0x28) == 0) {\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;\n        iVar5 = 1 << (sbyte)uVar21;\n        *(int *)(uVar2 + 0x18) = iVar5;\n        iVar5 = adler32(0,0,0,iVar5);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        if ((local_64 & 0x200) == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }\n        local_64 = 0;\n        uVar15 = 0;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3d;\n        do {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        } while (uVar15 < 0x20);\n        uVar15 = 0;\n        local_64 = 0;\n        iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3e;\ncode_r0x00017eda:\n        if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        uVar21 = 2;\n        param_1[3] = (int)__dest;\n        param_1[4] = local_5c;\n        *param_1 = (int)local_60;\n        param_1[1] = local_6c;\n        *(uint *)(uVar2 + 0x40) = uVar15;\n        *(uint *)(uVar2 + 0x3c) = local_64;\n        goto LAB_00018778;\n      }\n      pcVar6 = "unknown compression method";\nLAB_00017b45:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }\n  }" ({ "{") (expression_statement "*(undefined4 *)(uVar2 + 0x14) = 0;" (assignment_expression "*(undefined4 *)(uVar2 + 0x14) = 0" (pointer_expression "*(undefined4 *)(uVar2 + 0x14)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x14)" (( "(") (binary_expression "uVar2 + 0x14" (identifier "uVar2") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(int *)(uVar2 + 0x24) != 0) {\n      *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30) = 0xffffffff;\n    }" (if "if") (parenthesized_expression "(*(int *)(uVar2 + 0x24) != 0)" (( "(") (binary_expression "*(int *)(uVar2 + 0x24) != 0" (pointer_expression "*(int *)(uVar2 + 0x24)" (* "*") (cast_expression "(int *)(uVar2 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x24)" (( "(") (binary_expression "uVar2 + 0x24" (identifier "uVar2") (+ "+") (number_literal "0x24")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30) = 0xffffffff;\n    }" ({ "{") (expression_statement "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30) = 0xffffffff;" (assignment_expression "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30) = 0xffffffff" (pointer_expression "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30)" (* "*") (cast_expression "(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(uVar2 + 0x24) + 0x30)" (( "(") (binary_expression "*(int *)(uVar2 + 0x24) + 0x30" (pointer_expression "*(int *)(uVar2 + 0x24)" (* "*") (cast_expression "(int *)(uVar2 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x24)" (( "(") (binary_expression "uVar2 + 0x24" (identifier "uVar2") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (number_literal "0x30")) () ")")))) (= "=") (number_literal "0xffffffff")) (; ";")) (} "}"))) (if_statement "if (((uVar21 & 1) == 0) ||\n       (uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8), uVar21 != (uVar21 / 0x1f) * 0x1f)) {\n      pcVar6 = "incorrect header check";\nLAB_000188eb:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }\n    else {\n      if ((local_64 & 0xf) == 8) {\n        local_64 = local_64 >> 4;\n        uVar15 = uVar15 - 4;\n        uVar21 = (local_64 & 0xf) + 8;\n        if (*(uint *)(uVar2 + 0x28) == 0) {\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;\n        iVar5 = 1 << (sbyte)uVar21;\n        *(int *)(uVar2 + 0x18) = iVar5;\n        iVar5 = adler32(0,0,0,iVar5);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        if ((local_64 & 0x200) == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }\n        local_64 = 0;\n        uVar15 = 0;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3d;\n        do {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        } while (uVar15 < 0x20);\n        uVar15 = 0;\n        local_64 = 0;\n        iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3e;\ncode_r0x00017eda:\n        if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        uVar21 = 2;\n        param_1[3] = (int)__dest;\n        param_1[4] = local_5c;\n        *param_1 = (int)local_60;\n        param_1[1] = local_6c;\n        *(uint *)(uVar2 + 0x40) = uVar15;\n        *(uint *)(uVar2 + 0x3c) = local_64;\n        goto LAB_00018778;\n      }\n      pcVar6 = "unknown compression method";\nLAB_00017b45:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }" (if "if") (parenthesized_expression "(((uVar21 & 1) == 0) ||\n       (uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8), uVar21 != (uVar21 / 0x1f) * 0x1f))" (( "(") (binary_expression "((uVar21 & 1) == 0) ||\n       (uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8), uVar21 != (uVar21 / 0x1f) * 0x1f)" (parenthesized_expression "((uVar21 & 1) == 0)" (( "(") (binary_expression "(uVar21 & 1) == 0" (parenthesized_expression "(uVar21 & 1)" (( "(") (binary_expression "uVar21 & 1" (identifier "uVar21") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8), uVar21 != (uVar21 / 0x1f) * 0x1f)" (( "(") (comma_expression "uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8), uVar21 != (uVar21 / 0x1f) * 0x1f" (assignment_expression "uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8)" (identifier "uVar21") (= "=") (binary_expression "(local_64 & 0xff) * 0x100 + (local_64 >> 8)" (binary_expression "(local_64 & 0xff) * 0x100" (parenthesized_expression "(local_64 & 0xff)" (( "(") (binary_expression "local_64 & 0xff" (identifier "local_64") (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "0x100")) (+ "+") (parenthesized_expression "(local_64 >> 8)" (( "(") (binary_expression "local_64 >> 8" (identifier "local_64") (>> ">>") (number_literal "8")) () ")")))) (, ",") (binary_expression "uVar21 != (uVar21 / 0x1f) * 0x1f" (identifier "uVar21") (!= "!=") (binary_expression "(uVar21 / 0x1f) * 0x1f" (parenthesized_expression "(uVar21 / 0x1f)" (( "(") (binary_expression "uVar21 / 0x1f" (identifier "uVar21") (/ "/") (number_literal "0x1f")) () ")")) (* "*") (number_literal "0x1f")))) () ")"))) () ")")) (compound_statement "{\n      pcVar6 = "incorrect header check";\nLAB_000188eb:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }" ({ "{") (expression_statement "pcVar6 = "incorrect header check";" (assignment_expression "pcVar6 = "incorrect header check"" (identifier "pcVar6") (= "=") (string_literal ""incorrect header check"" (" """) (string_content "incorrect header check") (" """))) (; ";")) (labeled_statement "LAB_000188eb:\n      uVar21 = 0xfffffffd;" (statement_identifier "LAB_000188eb") (: ":") (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" (identifier "uVar21") (= "=") (number_literal "0xfffffffd")) (; ";"))) (expression_statement "param_1[6] = (int)pcVar6;" (assignment_expression "param_1[6] = (int)pcVar6" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (cast_expression "(int)pcVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar6"))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f51")) (; ";")) (} "}")) (else_clause "else {\n      if ((local_64 & 0xf) == 8) {\n        local_64 = local_64 >> 4;\n        uVar15 = uVar15 - 4;\n        uVar21 = (local_64 & 0xf) + 8;\n        if (*(uint *)(uVar2 + 0x28) == 0) {\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;\n        iVar5 = 1 << (sbyte)uVar21;\n        *(int *)(uVar2 + 0x18) = iVar5;\n        iVar5 = adler32(0,0,0,iVar5);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        if ((local_64 & 0x200) == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }\n        local_64 = 0;\n        uVar15 = 0;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3d;\n        do {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        } while (uVar15 < 0x20);\n        uVar15 = 0;\n        local_64 = 0;\n        iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3e;\ncode_r0x00017eda:\n        if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        uVar21 = 2;\n        param_1[3] = (int)__dest;\n        param_1[4] = local_5c;\n        *param_1 = (int)local_60;\n        param_1[1] = local_6c;\n        *(uint *)(uVar2 + 0x40) = uVar15;\n        *(uint *)(uVar2 + 0x3c) = local_64;\n        goto LAB_00018778;\n      }\n      pcVar6 = "unknown compression method";\nLAB_00017b45:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }" (else "else") (compound_statement "{\n      if ((local_64 & 0xf) == 8) {\n        local_64 = local_64 >> 4;\n        uVar15 = uVar15 - 4;\n        uVar21 = (local_64 & 0xf) + 8;\n        if (*(uint *)(uVar2 + 0x28) == 0) {\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;\n        iVar5 = 1 << (sbyte)uVar21;\n        *(int *)(uVar2 + 0x18) = iVar5;\n        iVar5 = adler32(0,0,0,iVar5);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        if ((local_64 & 0x200) == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }\n        local_64 = 0;\n        uVar15 = 0;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3d;\n        do {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        } while (uVar15 < 0x20);\n        uVar15 = 0;\n        local_64 = 0;\n        iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3e;\ncode_r0x00017eda:\n        if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        uVar21 = 2;\n        param_1[3] = (int)__dest;\n        param_1[4] = local_5c;\n        *param_1 = (int)local_60;\n        param_1[1] = local_6c;\n        *(uint *)(uVar2 + 0x40) = uVar15;\n        *(uint *)(uVar2 + 0x3c) = local_64;\n        goto LAB_00018778;\n      }\n      pcVar6 = "unknown compression method";\nLAB_00017b45:\n      uVar21 = 0xfffffffd;\n      param_1[6] = (int)pcVar6;\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n    }" ({ "{") (if_statement "if ((local_64 & 0xf) == 8) {\n        local_64 = local_64 >> 4;\n        uVar15 = uVar15 - 4;\n        uVar21 = (local_64 & 0xf) + 8;\n        if (*(uint *)(uVar2 + 0x28) == 0) {\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;\n        iVar5 = 1 << (sbyte)uVar21;\n        *(int *)(uVar2 + 0x18) = iVar5;\n        iVar5 = adler32(0,0,0,iVar5);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        if ((local_64 & 0x200) == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }\n        local_64 = 0;\n        uVar15 = 0;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3d;\n        do {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        } while (uVar15 < 0x20);\n        uVar15 = 0;\n        local_64 = 0;\n        iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3e;\ncode_r0x00017eda:\n        if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        uVar21 = 2;\n        param_1[3] = (int)__dest;\n        param_1[4] = local_5c;\n        *param_1 = (int)local_60;\n        param_1[1] = local_6c;\n        *(uint *)(uVar2 + 0x40) = uVar15;\n        *(uint *)(uVar2 + 0x3c) = local_64;\n        goto LAB_00018778;\n      }" (if "if") (parenthesized_expression "((local_64 & 0xf) == 8)" (( "(") (binary_expression "(local_64 & 0xf) == 8" (parenthesized_expression "(local_64 & 0xf)" (( "(") (binary_expression "local_64 & 0xf" (identifier "local_64") (& "&") (number_literal "0xf")) () ")")) (== "==") (number_literal "8")) () ")")) (compound_statement "{\n        local_64 = local_64 >> 4;\n        uVar15 = uVar15 - 4;\n        uVar21 = (local_64 & 0xf) + 8;\n        if (*(uint *)(uVar2 + 0x28) == 0) {\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;\n        iVar5 = 1 << (sbyte)uVar21;\n        *(int *)(uVar2 + 0x18) = iVar5;\n        iVar5 = adler32(0,0,0,iVar5);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        if ((local_64 & 0x200) == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }\n        local_64 = 0;\n        uVar15 = 0;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3d;\n        do {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        } while (uVar15 < 0x20);\n        uVar15 = 0;\n        local_64 = 0;\n        iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);\n        *(int *)(uVar2 + 0x1c) = iVar5;\n        param_1[0xc] = iVar5;\n        *(undefined4 *)(uVar2 + 4) = 0x3f3e;\ncode_r0x00017eda:\n        if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }\n        uVar21 = 2;\n        param_1[3] = (int)__dest;\n        param_1[4] = local_5c;\n        *param_1 = (int)local_60;\n        param_1[1] = local_6c;\n        *(uint *)(uVar2 + 0x40) = uVar15;\n        *(uint *)(uVar2 + 0x3c) = local_64;\n        goto LAB_00018778;\n      }" ({ "{") (expression_statement "local_64 = local_64 >> 4;" (assignment_expression "local_64 = local_64 >> 4" (identifier "local_64") (= "=") (binary_expression "local_64 >> 4" (identifier "local_64") (>> ">>") (number_literal "4"))) (; ";")) (expression_statement "uVar15 = uVar15 - 4;" (assignment_expression "uVar15 = uVar15 - 4" (identifier "uVar15") (= "=") (binary_expression "uVar15 - 4" (identifier "uVar15") (- "-") (number_literal "4"))) (; ";")) (expression_statement "uVar21 = (local_64 & 0xf) + 8;" (assignment_expression "uVar21 = (local_64 & 0xf) + 8" (identifier "uVar21") (= "=") (binary_expression "(local_64 & 0xf) + 8" (parenthesized_expression "(local_64 & 0xf)" (( "(") (binary_expression "local_64 & 0xf" (identifier "local_64") (& "&") (number_literal "0xf")) () ")")) (+ "+") (number_literal "8"))) (; ";")) (if_statement "if (*(uint *)(uVar2 + 0x28) == 0) {\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }\n        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;" (if "if") (parenthesized_expression "(*(uint *)(uVar2 + 0x28) == 0)" (( "(") (binary_expression "*(uint *)(uVar2 + 0x28) == 0" (pointer_expression "*(uint *)(uVar2 + 0x28)" (* "*") (cast_expression "(uint *)(uVar2 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x28)" (( "(") (binary_expression "uVar2 + 0x28" (identifier "uVar2") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          *(uint *)(uVar2 + 0x28) = uVar21;\n          if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }\n        }" ({ "{") (expression_statement "*(uint *)(uVar2 + 0x28) = uVar21;" (assignment_expression "*(uint *)(uVar2 + 0x28) = uVar21" (pointer_expression "*(uint *)(uVar2 + 0x28)" (* "*") (cast_expression "(uint *)(uVar2 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x28)" (( "(") (binary_expression "uVar2 + 0x28" (identifier "uVar2") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "uVar21")) (; ";")) (if_statement "if (0xf < uVar21) {\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }" (if "if") (parenthesized_expression "(0xf < uVar21)" (( "(") (binary_expression "0xf < uVar21" (number_literal "0xf") (< "<") (identifier "uVar21")) () ")")) (compound_statement "{\ncode_r0x00019879:\n            pcVar6 = "invalid window size";\n            goto LAB_00017b45;\n          }" ({ "{") (labeled_statement "code_r0x00019879:\n            pcVar6 = "invalid window size";" (statement_identifier "code_r0x00019879") (: ":") (expression_statement "pcVar6 = "invalid window size";" (assignment_expression "pcVar6 = "invalid window size"" (identifier "pcVar6") (= "=") (string_literal ""invalid window size"" (" """) (string_content "invalid window size") (" """))) (; ";"))) (goto_statement "goto LAB_00017b45;" (goto "goto") (statement_identifier "LAB_00017b45") (; ";")) (} "}"))) (} "}")) (else_clause "else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;" (else "else") (if_statement "if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;" (if "if") (parenthesized_expression "((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21))" (( "(") (binary_expression "(0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)" (parenthesized_expression "(0xf < uVar21)" (( "(") (binary_expression "0xf < uVar21" (number_literal "0xf") (< "<") (identifier "uVar21")) () ")")) (|| "||") (parenthesized_expression "(*(uint *)(uVar2 + 0x28) < uVar21)" (( "(") (binary_expression "*(uint *)(uVar2 + 0x28) < uVar21" (pointer_expression "*(uint *)(uVar2 + 0x28)" (* "*") (cast_expression "(uint *)(uVar2 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x28)" (( "(") (binary_expression "uVar2 + 0x28" (identifier "uVar2") (+ "+") (number_literal "0x28")) () ")")))) (< "<") (identifier "uVar21")) () ")"))) () ")")) (goto_statement "goto code_r0x00019879;" (goto "goto") (statement_identifier "code_r0x00019879") (; ";"))))) (expression_statement "iVar5 = 1 << (sbyte)uVar21;" (assignment_expression "iVar5 = 1 << (sbyte)uVar21" (identifier "iVar5") (= "=") (binary_expression "1 << (sbyte)uVar21" (number_literal "1") (<< "<<") (cast_expression "(sbyte)uVar21" (( "(") (type_descriptor "sbyte" (type_identifier "sbyte")) () ")") (identifier "uVar21")))) (; ";")) (expression_statement "*(int *)(uVar2 + 0x18) = iVar5;" (assignment_expression "*(int *)(uVar2 + 0x18) = iVar5" (pointer_expression "*(int *)(uVar2 + 0x18)" (* "*") (cast_expression "(int *)(uVar2 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x18)" (( "(") (binary_expression "uVar2 + 0x18" (identifier "uVar2") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "iVar5 = adler32(0,0,0,iVar5);" (assignment_expression "iVar5 = adler32(0,0,0,iVar5)" (identifier "iVar5") (= "=") (call_expression "adler32(0,0,0,iVar5)" (identifier "adler32") (argument_list "(0,0,0,iVar5)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "iVar5") () ")")))) (; ";")) (expression_statement "*(int *)(uVar2 + 0x1c) = iVar5;" (assignment_expression "*(int *)(uVar2 + 0x1c) = iVar5" (pointer_expression "*(int *)(uVar2 + 0x1c)" (* "*") (cast_expression "(int *)(uVar2 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "param_1[0xc] = iVar5;" (assignment_expression "param_1[0xc] = iVar5" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "iVar5")) (; ";")) (if_statement "if ((local_64 & 0x200) == 0) {\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }" (if "if") (parenthesized_expression "((local_64 & 0x200) == 0)" (( "(") (binary_expression "(local_64 & 0x200) == 0" (parenthesized_expression "(local_64 & 0x200)" (( "(") (binary_expression "local_64 & 0x200" (identifier "local_64") (& "&") (number_literal "0x200")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          uVar15 = 0;\n          local_64 = 0;\n          goto LAB_00017f13;\n        }" ({ "{") (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3f;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3f" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f3f")) (; ";")) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" (identifier "local_64") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00017f13;" (goto "goto") (statement_identifier "LAB_00017f13") (; ";")) (} "}"))) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" (identifier "local_64") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3d;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3d" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f3d")) (; ";")) (do_statement "do {\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        } while (uVar15 < 0x20);" (do "do") (compound_statement "{\n          if (local_6c == 0) goto LAB_00017f30;\n          local_6c = local_6c - 1;\n          bVar12 = (byte)uVar15;\n          uVar15 = uVar15 + 8;\n          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n          local_60 = local_60 + 1;\njoined_r0x00017e43:\n          local_64 = uVar21;\n        }" ({ "{") (if_statement "if (local_6c == 0) goto LAB_00017f30;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017f30;" (goto "goto") (statement_identifier "LAB_00017f30") (; ";"))) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" (identifier "local_6c") (= "=") (binary_expression "local_6c - 1" (identifier "local_6c") (- "-") (number_literal "1"))) (; ";")) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" (identifier "bVar12") (= "=") (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15"))) (; ";")) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 8" (identifier "uVar15") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "uVar21") (= "=") (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "local_64") (+ "+") (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" (( "(") (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "local_60")) (<< "<<") (parenthesized_expression "(bVar12 & 0x1f)" (( "(") (binary_expression "bVar12 & 0x1f" (identifier "bVar12") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" (identifier "local_60") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";")) (labeled_statement "joined_r0x00017e43:\n          local_64 = uVar21;" (statement_identifier "joined_r0x00017e43") (: ":") (expression_statement "local_64 = uVar21;" (assignment_expression "local_64 = uVar21" (identifier "local_64") (= "=") (identifier "uVar21")) (; ";"))) (} "}")) (while "while") (parenthesized_expression "(uVar15 < 0x20)" (( "(") (binary_expression "uVar15 < 0x20" (identifier "uVar15") (< "<") (number_literal "0x20")) () ")")) (; ";")) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" (identifier "local_64") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);" (assignment_expression "iVar5 = (uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00)" (identifier "iVar5") (= "=") (binary_expression "(uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00)" (binary_expression "(uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000 + (uVar21 >> 0x18)" (binary_expression "(uVar21 & 0xff00) * 0x100 +\n                uVar21 * 0x1000000" (binary_expression "(uVar21 & 0xff00) * 0x100" (parenthesized_expression "(uVar21 & 0xff00)" (( "(") (binary_expression "uVar21 & 0xff00" (identifier "uVar21") (& "&") (number_literal "0xff00")) () ")")) (* "*") (number_literal "0x100")) (+ "+") (binary_expression "uVar21 * 0x1000000" (identifier "uVar21") (* "*") (number_literal "0x1000000"))) (+ "+") (parenthesized_expression "(uVar21 >> 0x18)" (( "(") (binary_expression "uVar21 >> 0x18" (identifier "uVar21") (>> ">>") (number_literal "0x18")) () ")"))) (+ "+") (parenthesized_expression "(uVar21 >> 8 & 0xff00)" (( "(") (binary_expression "uVar21 >> 8 & 0xff00" (binary_expression "uVar21 >> 8" (identifier "uVar21") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff00")) () ")")))) (; ";")) (expression_statement "*(int *)(uVar2 + 0x1c) = iVar5;" (assignment_expression "*(int *)(uVar2 + 0x1c) = iVar5" (pointer_expression "*(int *)(uVar2 + 0x1c)" (* "*") (cast_expression "(int *)(uVar2 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "param_1[0xc] = iVar5;" (assignment_expression "param_1[0xc] = iVar5" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3e;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3e" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f3e")) (; ";")) (labeled_statement "code_r0x00017eda:\n        if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }" (statement_identifier "code_r0x00017eda") (: ":") (if_statement "if (*(int *)(uVar2 + 0x10) != 0) {\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }" (if "if") (parenthesized_expression "(*(int *)(uVar2 + 0x10) != 0)" (( "(") (binary_expression "*(int *)(uVar2 + 0x10) != 0" (pointer_expression "*(int *)(uVar2 + 0x10)" (* "*") (cast_expression "(int *)(uVar2 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x10)" (( "(") (binary_expression "uVar2 + 0x10" (identifier "uVar2") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          iVar5 = adler32(0,0,0);\n          *(int *)(uVar2 + 0x1c) = iVar5;\n          param_1[0xc] = iVar5;\n          *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n          goto LAB_00017f13;\n        }" ({ "{") (expression_statement "iVar5 = adler32(0,0,0);" (assignment_expression "iVar5 = adler32(0,0,0)" (identifier "iVar5") (= "=") (call_expression "adler32(0,0,0)" (identifier "adler32") (argument_list "(0,0,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "*(int *)(uVar2 + 0x1c) = iVar5;" (assignment_expression "*(int *)(uVar2 + 0x1c) = iVar5" (pointer_expression "*(int *)(uVar2 + 0x1c)" (* "*") (cast_expression "(int *)(uVar2 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "param_1[0xc] = iVar5;" (assignment_expression "param_1[0xc] = iVar5" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3f;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3f" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f3f")) (; ";")) (goto_statement "goto LAB_00017f13;" (goto "goto") (statement_identifier "LAB_00017f13") (; ";")) (} "}")))) (expression_statement "uVar21 = 2;" (assignment_expression "uVar21 = 2" (identifier "uVar21") (= "=") (number_literal "2")) (; ";")) (expression_statement "param_1[3] = (int)__dest;" (assignment_expression "param_1[3] = (int)__dest" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(int)__dest" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__dest"))) (; ";")) (expression_statement "param_1[4] = local_5c;" (assignment_expression "param_1[4] = local_5c" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "local_5c")) (; ";")) (expression_statement "*param_1 = (int)local_60;" (assignment_expression "*param_1 = (int)local_60" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(int)local_60" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_60"))) (; ";")) (expression_statement "param_1[1] = local_6c;" (assignment_expression "param_1[1] = local_6c" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_6c")) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x40) = uVar15;" (assignment_expression "*(uint *)(uVar2 + 0x40) = uVar15" (pointer_expression "*(uint *)(uVar2 + 0x40)" (* "*") (cast_expression "(uint *)(uVar2 + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x40)" (( "(") (binary_expression "uVar2 + 0x40" (identifier "uVar2") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "uVar15")) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x3c) = local_64;" (assignment_expression "*(uint *)(uVar2 + 0x3c) = local_64" (pointer_expression "*(uint *)(uVar2 + 0x3c)" (* "*") (cast_expression "(uint *)(uVar2 + 0x3c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x3c)" (( "(") (binary_expression "uVar2 + 0x3c" (identifier "uVar2") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (identifier "local_64")) (; ";")) (goto_statement "goto LAB_00018778;" (goto "goto") (statement_identifier "LAB_00018778") (; ";")) (} "}"))) (expression_statement "pcVar6 = "unknown compression method";" (assignment_expression "pcVar6 = "unknown compression method"" (identifier "pcVar6") (= "=") (string_literal ""unknown compression method"" (" """) (string_content "unknown compression method") (" """))) (; ";")) (labeled_statement "LAB_00017b45:\n      uVar21 = 0xfffffffd;" (statement_identifier "LAB_00017b45") (: ":") (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" (identifier "uVar21") (= "=") (number_literal "0xfffffffd")) (; ";"))) (expression_statement "param_1[6] = (int)pcVar6;" (assignment_expression "param_1[6] = (int)pcVar6" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (cast_expression "(int)pcVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar6"))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f51")) (; ";")) (} "}")))) (} "}")) (else "else") ({ "{") (if_statement "if (*(int *)(uVar2 + 0x28) == 0) {\n      *(undefined4 *)(uVar2 + 0x28) = 0xf;\n    }" (if "if") (parenthesized_expression "(*(int *)(uVar2 + 0x28) == 0)" (( "(") (binary_expression "*(int *)(uVar2 + 0x28) == 0" (pointer_expression "*(int *)(uVar2 + 0x28)" (* "*") (cast_expression "(int *)(uVar2 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x28)" (( "(") (binary_expression "uVar2 + 0x28" (identifier "uVar2") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      *(undefined4 *)(uVar2 + 0x28) = 0xf;\n    }" ({ "{") (expression_statement "*(undefined4 *)(uVar2 + 0x28) = 0xf;" (assignment_expression "*(undefined4 *)(uVar2 + 0x28) = 0xf" (pointer_expression "*(undefined4 *)(uVar2 + 0x28)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x28)" (( "(") (binary_expression "uVar2 + 0x28" (identifier "uVar2") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (number_literal "0xf")) (; ";")) (} "}"))) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar9 = crc32(0,0,0);" (assignment_expression "uVar9 = crc32(0,0,0)" (identifier "uVar9") (= "=") (call_expression "crc32(0,0,0)" (identifier "crc32") (argument_list "(0,0,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "uStack_24 = 0x8b1f;" (assignment_expression "uStack_24 = 0x8b1f" (identifier "uStack_24") (= "=") (number_literal "0x8b1f")) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "uVar9 = crc32(uVar9,&uStack_24,2);" (assignment_expression "uVar9 = crc32(uVar9,&uStack_24,2)" (identifier "uVar9") (= "=") (call_expression "crc32(uVar9,&uStack_24,2)" (identifier "crc32") (argument_list "(uVar9,&uStack_24,2)" (( "(") (identifier "uVar9") (, ",") (pointer_expression "&uStack_24" (& "&") (identifier "uStack_24")) (, ",") (number_literal "2") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f35;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f35" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f35")) (; ";")) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" (identifier "local_64") (= "=") (number_literal "0")) (; ";")) (do "do") ({ "{") (if_statement "if (local_6c == 0) goto LAB_00017f30;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017f30;" (goto "goto") (statement_identifier "LAB_00017f30") (; ";"))) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" (identifier "local_6c") (= "=") (binary_expression "local_6c - 1" (identifier "local_6c") (- "-") (number_literal "1"))) (; ";")) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" (identifier "bVar12") (= "=") (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15"))) (; ";")) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 8" (identifier "uVar15") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "local_64") (= "=") (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "local_64") (+ "+") (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" (( "(") (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "local_60")) (<< "<<") (parenthesized_expression "(bVar12 & 0x1f)" (( "(") (binary_expression "bVar12 & 0x1f" (identifier "bVar12") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" (identifier "local_60") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";")) (labeled_statement "joined_r0x0001879b:\n    } while (uVar15 < 0x10);" (statement_identifier "joined_r0x0001879b") (: ":") (ERROR "}" (} "}")) (while_statement "while (uVar15 < 0x10);" (while "while") (parenthesized_expression "(uVar15 < 0x10)" (( "(") (binary_expression "uVar15 < 0x10" (identifier "uVar15") (< "<") (number_literal "0x10")) () ")")) (expression_statement ";" (; ";")))) (expression_statement "*(uint *)(uVar2 + 0x14) = local_64;" (assignment_expression "*(uint *)(uVar2 + 0x14) = local_64" (pointer_expression "*(uint *)(uVar2 + 0x14)" (* "*") (cast_expression "(uint *)(uVar2 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x14)" (( "(") (binary_expression "uVar2 + 0x14" (identifier "uVar2") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "local_64")) (; ";")) (if "if") (parenthesized_expression "((char)local_64 == '\b')" (( "(") (binary_expression "(char)local_64 == '\b'" (cast_expression "(char)local_64" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_64")) (== "==") (char_literal "'\b'" (' "'") (escape_sequence "\b") (' "'"))) () ")")) ({ "{") (if_statement "if ((local_64 & 0xe000) != 0) {\n        pcVar6 = "unknown header flags set";\n        goto LAB_000188eb;\n      }" (if "if") (parenthesized_expression "((local_64 & 0xe000) != 0)" (( "(") (binary_expression "(local_64 & 0xe000) != 0" (parenthesized_expression "(local_64 & 0xe000)" (( "(") (binary_expression "local_64 & 0xe000" (identifier "local_64") (& "&") (number_literal "0xe000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        pcVar6 = "unknown header flags set";\n        goto LAB_000188eb;\n      }" ({ "{") (expression_statement "pcVar6 = "unknown header flags set";" (assignment_expression "pcVar6 = "unknown header flags set"" (identifier "pcVar6") (= "=") (string_literal ""unknown header flags set"" (" """) (string_content "unknown header flags set") (" """))) (; ";")) (goto_statement "goto LAB_000188eb;" (goto "goto") (statement_identifier "LAB_000188eb") (; ";")) (} "}"))) (if_statement "if (*(uint **)(uVar2 + 0x24) != (uint *)0x0) {\n        **(uint **)(uVar2 + 0x24) = local_64 >> 8 & 1;\n      }" (if "if") (parenthesized_expression "(*(uint **)(uVar2 + 0x24) != (uint *)0x0)" (( "(") (binary_expression "*(uint **)(uVar2 + 0x24) != (uint *)0x0" (pointer_expression "*(uint **)(uVar2 + 0x24)" (* "*") (cast_expression "(uint **)(uVar2 + 0x24)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(uVar2 + 0x24)" (( "(") (binary_expression "uVar2 + 0x24" (identifier "uVar2") (+ "+") (number_literal "0x24")) () ")")))) (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        **(uint **)(uVar2 + 0x24) = local_64 >> 8 & 1;\n      }" ({ "{") (expression_statement "**(uint **)(uVar2 + 0x24) = local_64 >> 8 & 1;" (assignment_expression "**(uint **)(uVar2 + 0x24) = local_64 >> 8 & 1" (pointer_expression "**(uint **)(uVar2 + 0x24)" (* "*") (pointer_expression "*(uint **)(uVar2 + 0x24)" (* "*") (cast_expression "(uint **)(uVar2 + 0x24)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(uVar2 + 0x24)" (( "(") (binary_expression "uVar2 + 0x24" (identifier "uVar2") (+ "+") (number_literal "0x24")) () ")"))))) (= "=") (binary_expression "local_64 >> 8 & 1" (binary_expression "local_64 >> 8" (identifier "local_64") (>> ">>") (number_literal "8")) (& "&") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if (((local_64 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uStack_24 = (undefined2)local_64;\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2,uVar2);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" (if "if") (parenthesized_expression "(((local_64 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0))" (( "(") (binary_expression "((local_64 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)" (parenthesized_expression "((local_64 & 0x200) != 0)" (( "(") (binary_expression "(local_64 & 0x200) != 0" (parenthesized_expression "(local_64 & 0x200)" (( "(") (binary_expression "local_64 & 0x200" (identifier "local_64") (& "&") (number_literal "0x200")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) != 0)" (( "(") (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" (( "(") (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" (* "*") (cast_expression "(byte *)(uVar2 + 0xc)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0xc)" (( "(") (binary_expression "uVar2 + 0xc" (identifier "uVar2") (+ "+") (number_literal "0xc")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        uStack_24 = (undefined2)local_64;\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2,uVar2);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" ({ "{") (expression_statement "uStack_24 = (undefined2)local_64;" (assignment_expression "uStack_24 = (undefined2)local_64" (identifier "uStack_24") (= "=") (cast_expression "(undefined2)local_64" (( "(") (type_descriptor "undefined2" (type_identifier "undefined2")) () ")") (identifier "local_64"))) (; ";")) (expression_statement "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2,uVar2);" (assignment_expression "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2,uVar2)" (identifier "uVar9") (= "=") (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2,uVar2)" (identifier "crc32") (argument_list "(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2,uVar2)" (( "(") (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (, ",") (pointer_expression "&uStack_24" (& "&") (identifier "uStack_24")) (, ",") (number_literal "2") (, ",") (identifier "uVar2") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (} "}"))) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" (identifier "local_64") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f36;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f36" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f36")) (; ";")) (do "do") ({ "{") (if_statement "if (local_6c == 0) goto LAB_00017f30;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017f30;" (goto "goto") (statement_identifier "LAB_00017f30") (; ";"))) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" (identifier "local_6c") (= "=") (binary_expression "local_6c - 1" (identifier "local_6c") (- "-") (number_literal "1"))) (; ";")) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" (identifier "bVar12") (= "=") (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15"))) (; ";")) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 8" (identifier "uVar15") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "local_64") (= "=") (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "local_64") (+ "+") (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" (( "(") (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "local_60")) (<< "<<") (parenthesized_expression "(bVar12 & 0x1f)" (( "(") (binary_expression "bVar12 & 0x1f" (identifier "bVar12") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" (identifier "local_60") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";")) (labeled_statement "joined_r0x00018053:\n      } while (uVar15 < 0x20);" (statement_identifier "joined_r0x00018053") (: ":") (ERROR "}" (} "}")) (while_statement "while (uVar15 < 0x20);" (while "while") (parenthesized_expression "(uVar15 < 0x20)" (( "(") (binary_expression "uVar15 < 0x20" (identifier "uVar15") (< "<") (number_literal "0x20")) () ")")) (expression_statement ";" (; ";")))) (if_statement "if (*(int *)(uVar2 + 0x24) != 0) {\n        *(uint *)(*(int *)(uVar2 + 0x24) + 4) = local_64;\n      }" (if "if") (parenthesized_expression "(*(int *)(uVar2 + 0x24) != 0)" (( "(") (binary_expression "*(int *)(uVar2 + 0x24) != 0" (pointer_expression "*(int *)(uVar2 + 0x24)" (* "*") (cast_expression "(int *)(uVar2 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x24)" (( "(") (binary_expression "uVar2 + 0x24" (identifier "uVar2") (+ "+") (number_literal "0x24")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        *(uint *)(*(int *)(uVar2 + 0x24) + 4) = local_64;\n      }" ({ "{") (expression_statement "*(uint *)(*(int *)(uVar2 + 0x24) + 4) = local_64;" (assignment_expression "*(uint *)(*(int *)(uVar2 + 0x24) + 4) = local_64" (pointer_expression "*(uint *)(*(int *)(uVar2 + 0x24) + 4)" (* "*") (cast_expression "(uint *)(*(int *)(uVar2 + 0x24) + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(uVar2 + 0x24) + 4)" (( "(") (binary_expression "*(int *)(uVar2 + 0x24) + 4" (pointer_expression "*(int *)(uVar2 + 0x24)" (* "*") (cast_expression "(int *)(uVar2 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x24)" (( "(") (binary_expression "uVar2 + 0x24" (identifier "uVar2") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "local_64")) (; ";")) (} "}"))) (if_statement "if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uStack_24 = (undefined2)local_64;\n        uStack_22 = (undefined1)(local_64 >> 0x10);\n        uStack_21 = (undefined1)(local_64 >> 0x18);\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,4);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" (if "if") (parenthesized_expression "(((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0))" (( "(") (binary_expression "((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)" (parenthesized_expression "((*(byte *)(uVar2 + 0x15) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(uVar2 + 0x15) & 2) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0x15) & 2)" (( "(") (binary_expression "*(byte *)(uVar2 + 0x15) & 2" (pointer_expression "*(byte *)(uVar2 + 0x15)" (* "*") (cast_expression "(byte *)(uVar2 + 0x15)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x15)" (( "(") (binary_expression "uVar2 + 0x15" (identifier "uVar2") (+ "+") (number_literal "0x15")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) != 0)" (( "(") (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" (( "(") (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" (* "*") (cast_expression "(byte *)(uVar2 + 0xc)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0xc)" (( "(") (binary_expression "uVar2 + 0xc" (identifier "uVar2") (+ "+") (number_literal "0xc")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        uStack_24 = (undefined2)local_64;\n        uStack_22 = (undefined1)(local_64 >> 0x10);\n        uStack_21 = (undefined1)(local_64 >> 0x18);\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,4);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" ({ "{") (expression_statement "uStack_24 = (undefined2)local_64;" (assignment_expression "uStack_24 = (undefined2)local_64" (identifier "uStack_24") (= "=") (cast_expression "(undefined2)local_64" (( "(") (type_descriptor "undefined2" (type_identifier "undefined2")) () ")") (identifier "local_64"))) (; ";")) (expression_statement "uStack_22 = (undefined1)(local_64 >> 0x10);" (assignment_expression "uStack_22 = (undefined1)(local_64 >> 0x10)" (identifier "uStack_22") (= "=") (call_expression "(undefined1)(local_64 >> 0x10)" (parenthesized_expression "(undefined1)" (( "(") (identifier "undefined1") () ")")) (argument_list "(local_64 >> 0x10)" (( "(") (binary_expression "local_64 >> 0x10" (identifier "local_64") (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "uStack_21 = (undefined1)(local_64 >> 0x18);" (assignment_expression "uStack_21 = (undefined1)(local_64 >> 0x18)" (identifier "uStack_21") (= "=") (call_expression "(undefined1)(local_64 >> 0x18)" (parenthesized_expression "(undefined1)" (( "(") (identifier "undefined1") () ")")) (argument_list "(local_64 >> 0x18)" (( "(") (binary_expression "local_64 >> 0x18" (identifier "local_64") (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,4);" (assignment_expression "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,4)" (identifier "uVar9") (= "=") (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,4)" (identifier "crc32") (argument_list "(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,4)" (( "(") (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (, ",") (pointer_expression "&uStack_24" (& "&") (identifier "uStack_24")) (, ",") (number_literal "4") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (} "}"))) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" (identifier "local_64") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f37;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f37" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f37")) (; ";")) (do "do") (ERROR "{\n        if (local_6c == 0) goto LAB_00017f30;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = local_60 + 1;\njoined_r0x000180e3:\n      } while (uVar15 < 0x10);\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(uint *)(iVar5 + 8) = local_64 & 0xff;\n        *(uint *)(iVar5 + 0xc) = local_64 >> 8;\n      }\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uStack_24 = (undefined2)local_64;\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      *(undefined4 *)(uVar2 + 4) = 0x3f38;\n      if ((uVar21 & 0x400) == 0) {\n        uVar15 = 0;\n        local_64 = 0;\ncode_r0x000181ae:\n        if (*(int *)(uVar2 + 0x24) != 0) {\n          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;\n        }\n        goto code_r0x000181c0;\n      }\n      local_64 = 0;\n      uVar15 = 0;\ncode_r0x0001829d:\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x000182ea;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }\n    else {\n      param_1[6] = (int)"unknown compression method";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\nLAB_00018817:\n      uVar21 = 0xfffffffd;\n    }\n  }\n  goto LAB_00017f32;\ncode_r0x000182ea:\n  *(uint *)(uVar2 + 0x44) = local_64;\n  if (*(int *)(uVar2 + 0x24) != 0) {\n    *(uint *)(*(int *)(uVar2 + 0x24) + 0x14) = local_64;\n  }\n  if (((uVar21 & 0x200) == 0) || ((*(byte *)(uVar2 + 0xc) & 4) == 0)) {\n    uVar15 = 0;\n    local_64 = 0;\n  }\n  else {\n    uVar15 = 0;\n    uStack_24 = (undefined2)local_64;\n    uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n    *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n    local_64 = 0;\n    uVar21 = *(uint *)(uVar2 + 0x14);\n  }\ncode_r0x000181c0:\n  *(undefined4 *)(uVar2 + 4) = 0x3f39;\ncode_r0x000181cb:\n  if ((uVar21 & 0x400) == 0) {\ncode_r0x0001826a:\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3a;\ncode_r0x0001832f:\n    if ((uVar21 & 0x800) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3b;\ncode_r0x0001835c:\n    if ((uVar21 & 0x1000) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 4) = 0x3f3c;\ncode_r0x00018382:\n    if ((uVar21 & 0x200) == 0) {\ncode_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }\n      iVar5 = crc32(0,0,0);\n      *(int *)(uVar2 + 0x1c) = iVar5;\n      param_1[0xc] = iVar5;\n      *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n      goto LAB_00017f13;\n    }\n    if (uVar15 < 0x10) {\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }\n    else {\ncode_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }\n      param_1[6] = (int)"header crc mismatch";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n    }\n  }\n  else {\n    uVar14 = *(uint *)(uVar2 + 0x44);\n    uVar17 = local_6c;\n    if (uVar14 < local_6c) {\n      uVar17 = uVar14;\n    }\n    if (uVar17 != 0) {\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_6c = local_6c - uVar17;\n      local_60 = local_60 + uVar17;\n      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;\n      *(uint *)(uVar2 + 0x44) = uVar14;\n    }\n    if (uVar14 == 0) {\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      goto code_r0x0001826a;\n    }\nLAB_00017f30:\n    uVar21 = 0;\n  }\n  goto LAB_00017f32;\nLAB_00017996:\n  iVar5 = local_50 - local_5c;\n  param_1[5] = param_1[5] + iVar5;\n  *(int *)(uVar2 + 0x20) = *(int *)(uVar2 + 0x20) + iVar5;\n  uVar14 = uVar21 & 4;\n  if ((uVar14 != 0) && (iVar5 != 0)) {\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    else {\n      iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    *(int *)(uVar2 + 0x1c) = iVar5;\n    param_1[0xc] = iVar5;\n    uVar21 = *(uint *)(uVar2 + 0xc);\n    uVar14 = uVar21 & 4;\n  }\n  if (uVar14 != 0) {\n    uVar14 = local_64;\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100;\n    }\n    if (*(uint *)(uVar2 + 0x1c) != uVar14) {\n      param_1[6] = (int)"incorrect data check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      local_50 = local_5c;\n      goto LAB_00017f32;\n    }\n  }\n  uVar15 = 0;\n  local_64 = 0;\n  local_50 = local_5c;\nLAB_00018e20:\n  *(undefined4 *)(uVar2 + 4) = 0x3f4f;\nLAB_000183ff:\n  if ((uVar21 != 0) && (*(int *)(uVar2 + 0x14) != 0)) {\n    for (; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n      if (local_6c == 0) goto LAB_00017f30;\n      local_6c = local_6c - 1;\n      local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n      local_60 = local_60 + 1;\n    }\n    if (*(uint *)(uVar2 + 0x20) != local_64) {\n      param_1[6] = (int)"incorrect length check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      goto LAB_00017f32;\n    }\n    uVar15 = 0;\n    local_64 = 0;\n  }\n  uVar21 = 1;\n  *(undefined4 *)(uVar2 + 4) = 0x3f50;\n  goto LAB_00017f32;\nLAB_00018d40:\n  uVar21 = 0;\n  local_60 = pbVar20;\n  goto LAB_00017f32;\ncode_r0x00018d1f:\n  *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;\n  *(undefined4 *)(uVar2 + 4) = 0x3f3f;\nLAB_00017f13:\n  if (param_2 - 5U < 2) goto LAB_00017f30;\n  goto LAB_0001790a;\n  while (local_6c != 0) {\nLAB_00017970:\n    pbVar20 = local_60 + 1;\n    local_6c = local_6c - 1;\n    bVar25 = (byte)uVar15;\n    uVar15 = uVar15 + 8;\n    local_64 = local_64 + ((uint)*local_60 << (bVar25 & 0x1f));\n    local_60 = pbVar20;\n    if (0x1f < uVar15) goto LAB_00017996;\n  }\nLAB_000190a2:\n  uVar21 = 0;\n  local_60 = pbVar20;\nLAB_00017f32:\n  *param_1 = (int)local_60;\n  param_1[3] = (int)__dest;\n  param_1[1] = local_6c;\n  param_1[4] = local_5c;\n  *(uint *)(uVar2 + 0x3c) = local_64;\n  *(uint *)(uVar2 + 0x40) = uVar15;\n  if ((*(int *)(uVar2 + 0x2c) != 0) ||\n     (((local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&\n      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)))))) {\n    iVar5 = FUN_000172e0();\n    if (iVar5 != 0) {\n      *(undefined4 *)(uVar2 + 4) = 0x3f52;\ncode_r0x00018770:\n      uVar21 = 0xfffffffc;\n      goto LAB_00018778;\n    }\n    local_6c = param_1[1];\n    local_5c = param_1[4];\n  }\n  iVar5 = local_50 - local_5c;\n  param_1[2] = param_1[2] + (uVar1 - local_6c);\n  param_1[5] = param_1[5] + iVar5;\n  *(int *)(uVar2 + 0x20) = *(int *)(uVar2 + 0x20) + iVar5;\n  if (((*(byte *)(uVar2 + 0xc) & 4) != 0) && (iVar5 != 0)) {\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    else {\n      iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    *(int *)(uVar2 + 0x1c) = iVar7;\n    param_1[0xc] = iVar7;\n  }\n  iVar7 = *(int *)(uVar2 + 0x40);\n  if (*(int *)(uVar2 + 8) != 0) {\n    iVar7 = iVar7 + 0x40;\n  }\n  iVar3 = *(int *)(uVar2 + 4);\n  local_4c = 0;\n  if (iVar3 == 0x3f3f) {\n    iVar7 = iVar7 + 0x80;\n  }\n  else if ((iVar3 == 0x3f47) || (iVar3 == 0x3f42)) {\n    local_4c = 0x100;\n  }\n  param_1[0xb] = iVar7 + local_4c;\n  if (((uVar1 - local_6c == 0 && iVar5 == 0) || (param_2 == 4)) && (uVar21 == 0)) {\n    uVar21 = 0xfffffffb;\n  }\nLAB_00018778:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar21;\n  }" (compound_statement "{\n        if (local_6c == 0) goto LAB_00017f30;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = local_60 + 1;\njoined_r0x000180e3:\n      } while (uVar15 < 0x10);\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(uint *)(iVar5 + 8) = local_64 & 0xff;\n        *(uint *)(iVar5 + 0xc) = local_64 >> 8;\n      }\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uStack_24 = (undefined2)local_64;\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      *(undefined4 *)(uVar2 + 4) = 0x3f38;\n      if ((uVar21 & 0x400) == 0) {\n        uVar15 = 0;\n        local_64 = 0;\ncode_r0x000181ae:\n        if (*(int *)(uVar2 + 0x24) != 0) {\n          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;\n        }\n        goto code_r0x000181c0;\n      }\n      local_64 = 0;\n      uVar15 = 0;\ncode_r0x0001829d:\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x000182ea;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }" ({ "{") (if_statement "if (local_6c == 0) goto LAB_00017f30;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017f30;" (goto "goto") (statement_identifier "LAB_00017f30") (; ";"))) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" (identifier "local_6c") (= "=") (binary_expression "local_6c - 1" (identifier "local_6c") (- "-") (number_literal "1"))) (; ";")) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" (identifier "bVar12") (= "=") (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15"))) (; ";")) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 8" (identifier "uVar15") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "local_64") (= "=") (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "local_64") (+ "+") (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" (( "(") (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "local_60")) (<< "<<") (parenthesized_expression "(bVar12 & 0x1f)" (( "(") (binary_expression "bVar12 & 0x1f" (identifier "bVar12") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" (identifier "local_60") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";")) (labeled_statement "joined_r0x000180e3:\n      } while (uVar15 < 0x10);" (statement_identifier "joined_r0x000180e3") (: ":") (ERROR "}" (} "}")) (while_statement "while (uVar15 < 0x10);" (while "while") (parenthesized_expression "(uVar15 < 0x10)" (( "(") (binary_expression "uVar15 < 0x10" (identifier "uVar15") (< "<") (number_literal "0x10")) () ")")) (expression_statement ";" (; ";")))) (expression_statement "iVar5 = *(int *)(uVar2 + 0x24);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x24)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(uVar2 + 0x24)" (* "*") (cast_expression "(int *)(uVar2 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x24)" (( "(") (binary_expression "uVar2 + 0x24" (identifier "uVar2") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (if_statement "if (iVar5 != 0) {\n        *(uint *)(iVar5 + 8) = local_64 & 0xff;\n        *(uint *)(iVar5 + 0xc) = local_64 >> 8;\n      }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        *(uint *)(iVar5 + 8) = local_64 & 0xff;\n        *(uint *)(iVar5 + 0xc) = local_64 >> 8;\n      }" ({ "{") (expression_statement "*(uint *)(iVar5 + 8) = local_64 & 0xff;" (assignment_expression "*(uint *)(iVar5 + 8) = local_64 & 0xff" (pointer_expression "*(uint *)(iVar5 + 8)" (* "*") (cast_expression "(uint *)(iVar5 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 8)" (( "(") (binary_expression "iVar5 + 8" (identifier "iVar5") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "local_64 & 0xff" (identifier "local_64") (& "&") (number_literal "0xff"))) (; ";")) (expression_statement "*(uint *)(iVar5 + 0xc) = local_64 >> 8;" (assignment_expression "*(uint *)(iVar5 + 0xc) = local_64 >> 8" (pointer_expression "*(uint *)(iVar5 + 0xc)" (* "*") (cast_expression "(uint *)(iVar5 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0xc)" (( "(") (binary_expression "iVar5 + 0xc" (identifier "iVar5") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "local_64 >> 8" (identifier "local_64") (>> ">>") (number_literal "8"))) (; ";")) (} "}"))) (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x14)" (* "*") (cast_expression "(uint *)(uVar2 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x14)" (( "(") (binary_expression "uVar2 + 0x14" (identifier "uVar2") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uStack_24 = (undefined2)local_64;\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }" (if "if") (parenthesized_expression "(((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0))" (( "(") (binary_expression "((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)" (parenthesized_expression "((uVar21 & 0x200) != 0)" (( "(") (binary_expression "(uVar21 & 0x200) != 0" (parenthesized_expression "(uVar21 & 0x200)" (( "(") (binary_expression "uVar21 & 0x200" (identifier "uVar21") (& "&") (number_literal "0x200")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) != 0)" (( "(") (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" (( "(") (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" (* "*") (cast_expression "(byte *)(uVar2 + 0xc)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0xc)" (( "(") (binary_expression "uVar2 + 0xc" (identifier "uVar2") (+ "+") (number_literal "0xc")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        uStack_24 = (undefined2)local_64;\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }" ({ "{") (expression_statement "uStack_24 = (undefined2)local_64;" (assignment_expression "uStack_24 = (undefined2)local_64" (identifier "uStack_24") (= "=") (cast_expression "(undefined2)local_64" (( "(") (type_descriptor "undefined2" (type_identifier "undefined2")) () ")") (identifier "local_64"))) (; ";")) (expression_statement "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);" (assignment_expression "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2)" (identifier "uVar9") (= "=") (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2)" (identifier "crc32") (argument_list "(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2)" (( "(") (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (, ",") (pointer_expression "&uStack_24" (& "&") (identifier "uStack_24")) (, ",") (number_literal "2") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x14)" (* "*") (cast_expression "(uint *)(uVar2 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x14)" (( "(") (binary_expression "uVar2 + 0x14" (identifier "uVar2") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f38;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f38" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f38")) (; ";")) (if_statement "if ((uVar21 & 0x400) == 0) {\n        uVar15 = 0;\n        local_64 = 0;\ncode_r0x000181ae:\n        if (*(int *)(uVar2 + 0x24) != 0) {\n          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;\n        }\n        goto code_r0x000181c0;\n      }" (if "if") (parenthesized_expression "((uVar21 & 0x400) == 0)" (( "(") (binary_expression "(uVar21 & 0x400) == 0" (parenthesized_expression "(uVar21 & 0x400)" (( "(") (binary_expression "uVar21 & 0x400" (identifier "uVar21") (& "&") (number_literal "0x400")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar15 = 0;\n        local_64 = 0;\ncode_r0x000181ae:\n        if (*(int *)(uVar2 + 0x24) != 0) {\n          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;\n        }\n        goto code_r0x000181c0;\n      }" ({ "{") (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" (identifier "local_64") (= "=") (number_literal "0")) (; ";")) (labeled_statement "code_r0x000181ae:\n        if (*(int *)(uVar2 + 0x24) != 0) {\n          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;\n        }" (statement_identifier "code_r0x000181ae") (: ":") (if_statement "if (*(int *)(uVar2 + 0x24) != 0) {\n          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;\n        }" (if "if") (parenthesized_expression "(*(int *)(uVar2 + 0x24) != 0)" (( "(") (binary_expression "*(int *)(uVar2 + 0x24) != 0" (pointer_expression "*(int *)(uVar2 + 0x24)" (* "*") (cast_expression "(int *)(uVar2 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x24)" (( "(") (binary_expression "uVar2 + 0x24" (identifier "uVar2") (+ "+") (number_literal "0x24")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;\n        }" ({ "{") (expression_statement "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;" (assignment_expression "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0" (pointer_expression "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10)" (* "*") (cast_expression "(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(uVar2 + 0x24) + 0x10)" (( "(") (binary_expression "*(int *)(uVar2 + 0x24) + 0x10" (pointer_expression "*(int *)(uVar2 + 0x24)" (* "*") (cast_expression "(int *)(uVar2 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x24)" (( "(") (binary_expression "uVar2 + 0x24" (identifier "uVar2") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")))) (goto_statement "goto code_r0x000181c0;" (goto "goto") (statement_identifier "code_r0x000181c0") (; ";")) (} "}"))) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" (identifier "local_64") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (labeled_statement "code_r0x0001829d:\n      if (local_6c == 0) goto LAB_00017f30;" (statement_identifier "code_r0x0001829d") (: ":") (if_statement "if (local_6c == 0) goto LAB_00017f30;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017f30;" (goto "goto") (statement_identifier "LAB_00017f30") (; ";")))) (do_statement "do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x000182ea;\n      } while (local_6c != 0);" (do "do") (compound_statement "{\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x000182ea;\n      }" ({ "{") (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" (identifier "pbVar20") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" (identifier "local_6c") (= "=") (binary_expression "local_6c - 1" (identifier "local_6c") (- "-") (number_literal "1"))) (; ";")) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" (identifier "bVar12") (= "=") (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15"))) (; ";")) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 8" (identifier "uVar15") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "local_64") (= "=") (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "local_64") (+ "+") (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" (( "(") (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "local_60")) (<< "<<") (parenthesized_expression "(bVar12 & 0x1f)" (( "(") (binary_expression "bVar12 & 0x1f" (identifier "bVar12") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" (identifier "local_60") (= "=") (identifier "pbVar20")) (; ";")) (if_statement "if (0xf < uVar15) goto code_r0x000182ea;" (if "if") (parenthesized_expression "(0xf < uVar15)" (( "(") (binary_expression "0xf < uVar15" (number_literal "0xf") (< "<") (identifier "uVar15")) () ")")) (goto_statement "goto code_r0x000182ea;" (goto "goto") (statement_identifier "code_r0x000182ea") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(local_6c != 0)" (( "(") (binary_expression "local_6c != 0" (identifier "local_6c") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";")) (} "}")) (else "else") (compound_statement "{\n      param_1[6] = (int)"unknown compression method";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\nLAB_00018817:\n      uVar21 = 0xfffffffd;\n    }" ({ "{") (expression_statement "param_1[6] = (int)"unknown compression method";" (assignment_expression "param_1[6] = (int)"unknown compression method"" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (cast_expression "(int)"unknown compression method"" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (string_literal ""unknown compression method"" (" """) (string_content "unknown compression method") (" """)))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f51")) (; ";")) (labeled_statement "LAB_00018817:\n      uVar21 = 0xfffffffd;" (statement_identifier "LAB_00018817") (: ":") (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" (identifier "uVar21") (= "=") (number_literal "0xfffffffd")) (; ";"))) (} "}")) (} "}") (goto_statement "goto LAB_00017f32;" (goto "goto") (statement_identifier "LAB_00017f32") (; ";")) (labeled_statement "code_r0x000182ea:\n  *(uint *)(uVar2 + 0x44) = local_64;" (statement_identifier "code_r0x000182ea") (: ":") (expression_statement "*(uint *)(uVar2 + 0x44) = local_64;" (assignment_expression "*(uint *)(uVar2 + 0x44) = local_64" (pointer_expression "*(uint *)(uVar2 + 0x44)" (* "*") (cast_expression "(uint *)(uVar2 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (identifier "local_64")) (; ";"))) (if_statement "if (*(int *)(uVar2 + 0x24) != 0) {\n    *(uint *)(*(int *)(uVar2 + 0x24) + 0x14) = local_64;\n  }" (if "if") (parenthesized_expression "(*(int *)(uVar2 + 0x24) != 0)" (( "(") (binary_expression "*(int *)(uVar2 + 0x24) != 0" (pointer_expression "*(int *)(uVar2 + 0x24)" (* "*") (cast_expression "(int *)(uVar2 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x24)" (( "(") (binary_expression "uVar2 + 0x24" (identifier "uVar2") (+ "+") (number_literal "0x24")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    *(uint *)(*(int *)(uVar2 + 0x24) + 0x14) = local_64;\n  }" ({ "{") (expression_statement "*(uint *)(*(int *)(uVar2 + 0x24) + 0x14) = local_64;" (assignment_expression "*(uint *)(*(int *)(uVar2 + 0x24) + 0x14) = local_64" (pointer_expression "*(uint *)(*(int *)(uVar2 + 0x24) + 0x14)" (* "*") (cast_expression "(uint *)(*(int *)(uVar2 + 0x24) + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(uVar2 + 0x24) + 0x14)" (( "(") (binary_expression "*(int *)(uVar2 + 0x24) + 0x14" (pointer_expression "*(int *)(uVar2 + 0x24)" (* "*") (cast_expression "(int *)(uVar2 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x24)" (( "(") (binary_expression "uVar2 + 0x24" (identifier "uVar2") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "local_64")) (; ";")) (} "}"))) (if_statement "if (((uVar21 & 0x200) == 0) || ((*(byte *)(uVar2 + 0xc) & 4) == 0)) {\n    uVar15 = 0;\n    local_64 = 0;\n  }\n  else {\n    uVar15 = 0;\n    uStack_24 = (undefined2)local_64;\n    uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n    *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n    local_64 = 0;\n    uVar21 = *(uint *)(uVar2 + 0x14);\n  }" (if "if") (parenthesized_expression "(((uVar21 & 0x200) == 0) || ((*(byte *)(uVar2 + 0xc) & 4) == 0))" (( "(") (binary_expression "((uVar21 & 0x200) == 0) || ((*(byte *)(uVar2 + 0xc) & 4) == 0)" (parenthesized_expression "((uVar21 & 0x200) == 0)" (( "(") (binary_expression "(uVar21 & 0x200) == 0" (parenthesized_expression "(uVar21 & 0x200)" (( "(") (binary_expression "uVar21 & 0x200" (identifier "uVar21") (& "&") (number_literal "0x200")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) == 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" (( "(") (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" (* "*") (cast_expression "(byte *)(uVar2 + 0xc)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0xc)" (( "(") (binary_expression "uVar2 + 0xc" (identifier "uVar2") (+ "+") (number_literal "0xc")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    uVar15 = 0;\n    local_64 = 0;\n  }" ({ "{") (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" (identifier "local_64") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    uVar15 = 0;\n    uStack_24 = (undefined2)local_64;\n    uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n    *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n    local_64 = 0;\n    uVar21 = *(uint *)(uVar2 + 0x14);\n  }" (else "else") (compound_statement "{\n    uVar15 = 0;\n    uStack_24 = (undefined2)local_64;\n    uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);\n    *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n    local_64 = 0;\n    uVar21 = *(uint *)(uVar2 + 0x14);\n  }" ({ "{") (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_24 = (undefined2)local_64;" (assignment_expression "uStack_24 = (undefined2)local_64" (identifier "uStack_24") (= "=") (cast_expression "(undefined2)local_64" (( "(") (type_descriptor "undefined2" (type_identifier "undefined2")) () ")") (identifier "local_64"))) (; ";")) (expression_statement "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);" (assignment_expression "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2)" (identifier "uVar9") (= "=") (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2)" (identifier "crc32") (argument_list "(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2)" (( "(") (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (, ",") (pointer_expression "&uStack_24" (& "&") (identifier "uStack_24")) (, ",") (number_literal "2") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" (identifier "local_64") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x14)" (* "*") (cast_expression "(uint *)(uVar2 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x14)" (( "(") (binary_expression "uVar2 + 0x14" (identifier "uVar2") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (} "}")))) (labeled_statement "code_r0x000181c0:\n  *(undefined4 *)(uVar2 + 4) = 0x3f39;" (statement_identifier "code_r0x000181c0") (: ":") (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f39;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f39" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f39")) (; ";"))) (labeled_statement "code_r0x000181cb:\n  if ((uVar21 & 0x400) == 0) {\ncode_r0x0001826a:\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3a;\ncode_r0x0001832f:\n    if ((uVar21 & 0x800) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3b;\ncode_r0x0001835c:\n    if ((uVar21 & 0x1000) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 4) = 0x3f3c;\ncode_r0x00018382:\n    if ((uVar21 & 0x200) == 0) {\ncode_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }\n      iVar5 = crc32(0,0,0);\n      *(int *)(uVar2 + 0x1c) = iVar5;\n      param_1[0xc] = iVar5;\n      *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n      goto LAB_00017f13;\n    }\n    if (uVar15 < 0x10) {\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }\n    else {\ncode_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }\n      param_1[6] = (int)"header crc mismatch";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n    }\n  }\n  else {\n    uVar14 = *(uint *)(uVar2 + 0x44);\n    uVar17 = local_6c;\n    if (uVar14 < local_6c) {\n      uVar17 = uVar14;\n    }\n    if (uVar17 != 0) {\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_6c = local_6c - uVar17;\n      local_60 = local_60 + uVar17;\n      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;\n      *(uint *)(uVar2 + 0x44) = uVar14;\n    }\n    if (uVar14 == 0) {\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      goto code_r0x0001826a;\n    }\nLAB_00017f30:\n    uVar21 = 0;\n  }" (statement_identifier "code_r0x000181cb") (: ":") (if_statement "if ((uVar21 & 0x400) == 0) {\ncode_r0x0001826a:\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3a;\ncode_r0x0001832f:\n    if ((uVar21 & 0x800) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3b;\ncode_r0x0001835c:\n    if ((uVar21 & 0x1000) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 4) = 0x3f3c;\ncode_r0x00018382:\n    if ((uVar21 & 0x200) == 0) {\ncode_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }\n      iVar5 = crc32(0,0,0);\n      *(int *)(uVar2 + 0x1c) = iVar5;\n      param_1[0xc] = iVar5;\n      *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n      goto LAB_00017f13;\n    }\n    if (uVar15 < 0x10) {\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }\n    else {\ncode_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }\n      param_1[6] = (int)"header crc mismatch";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n    }\n  }\n  else {\n    uVar14 = *(uint *)(uVar2 + 0x44);\n    uVar17 = local_6c;\n    if (uVar14 < local_6c) {\n      uVar17 = uVar14;\n    }\n    if (uVar17 != 0) {\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_6c = local_6c - uVar17;\n      local_60 = local_60 + uVar17;\n      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;\n      *(uint *)(uVar2 + 0x44) = uVar14;\n    }\n    if (uVar14 == 0) {\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      goto code_r0x0001826a;\n    }\nLAB_00017f30:\n    uVar21 = 0;\n  }" (if "if") (parenthesized_expression "((uVar21 & 0x400) == 0)" (( "(") (binary_expression "(uVar21 & 0x400) == 0" (parenthesized_expression "(uVar21 & 0x400)" (( "(") (binary_expression "uVar21 & 0x400" (identifier "uVar21") (& "&") (number_literal "0x400")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\ncode_r0x0001826a:\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3a;\ncode_r0x0001832f:\n    if ((uVar21 & 0x800) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 0x44) = 0;\n    *(undefined4 *)(uVar2 + 4) = 0x3f3b;\ncode_r0x0001835c:\n    if ((uVar21 & 0x1000) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }\n    *(undefined4 *)(uVar2 + 4) = 0x3f3c;\ncode_r0x00018382:\n    if ((uVar21 & 0x200) == 0) {\ncode_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }\n      iVar5 = crc32(0,0,0);\n      *(int *)(uVar2 + 0x1c) = iVar5;\n      param_1[0xc] = iVar5;\n      *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n      goto LAB_00017f13;\n    }\n    if (uVar15 < 0x10) {\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }\n    else {\ncode_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }\n      param_1[6] = (int)"header crc mismatch";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n    }\n  }" ({ "{") (labeled_statement "code_r0x0001826a:\n    *(undefined4 *)(uVar2 + 0x44) = 0;" (statement_identifier "code_r0x0001826a") (: ":") (expression_statement "*(undefined4 *)(uVar2 + 0x44) = 0;" (assignment_expression "*(undefined4 *)(uVar2 + 0x44) = 0" (pointer_expression "*(undefined4 *)(uVar2 + 0x44)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (number_literal "0")) (; ";"))) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3a;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3a" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f3a")) (; ";")) (labeled_statement "code_r0x0001832f:\n    if ((uVar21 & 0x800) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }" (statement_identifier "code_r0x0001832f") (: ":") (if_statement "if ((uVar21 & 0x800) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }" (if "if") (parenthesized_expression "((uVar21 & 0x800) == 0)" (( "(") (binary_expression "(uVar21 & 0x800) == 0" (parenthesized_expression "(uVar21 & 0x800)" (( "(") (binary_expression "uVar21 & 0x800" (identifier "uVar21") (& "&") (number_literal "0x800")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }\n    }" ({ "{") (if_statement "if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }" (if "if") (parenthesized_expression "(*(int *)(uVar2 + 0x24) != 0)" (( "(") (binary_expression "*(int *)(uVar2 + 0x24) != 0" (pointer_expression "*(int *)(uVar2 + 0x24)" (* "*") (cast_expression "(int *)(uVar2 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x24)" (( "(") (binary_expression "uVar2 + 0x24" (identifier "uVar2") (+ "+") (number_literal "0x24")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;\n      }" ({ "{") (expression_statement "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;" (assignment_expression "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0" (pointer_expression "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c)" (* "*") (cast_expression "(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(uVar2 + 0x24) + 0x1c)" (( "(") (binary_expression "*(int *)(uVar2 + 0x24) + 0x1c" (pointer_expression "*(int *)(uVar2 + 0x24)" (* "*") (cast_expression "(int *)(uVar2 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x24)" (( "(") (binary_expression "uVar2 + 0x24" (identifier "uVar2") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }" (else "else") (compound_statement "{\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }" ({ "{") (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_6c == 0) goto LAB_00017f32;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017f32;" (goto "goto") (statement_identifier "LAB_00017f32") (; ";"))) (do_statement "do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));" (do "do") (compound_statement "{\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      }" ({ "{") (expression_statement "iVar5 = *(int *)(uVar2 + 0x24);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x24)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(uVar2 + 0x24)" (* "*") (cast_expression "(int *)(uVar2 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x24)" (( "(") (binary_expression "uVar2 + 0x24" (identifier "uVar2") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "uVar14 = uVar21 + 1;" (assignment_expression "uVar14 = uVar21 + 1" (identifier "uVar14") (= "=") (binary_expression "uVar21 + 1" (identifier "uVar21") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar12 = local_60[uVar21];" (assignment_expression "bVar12 = local_60[uVar21]" (identifier "bVar12") (= "=") (subscript_expression "local_60[uVar21]" (identifier "local_60") ([ "[") (identifier "uVar21") (] "]"))) (; ";")) (if_statement "if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }" (if "if") (parenthesized_expression "(((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20)))" (( "(") (binary_expression "((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))" (parenthesized_expression "((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0))" (( "(") (binary_expression "(iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)" (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)" (( "(") (comma_expression "iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0" (assignment_expression "iVar7 = *(int *)(iVar5 + 0x1c)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar5 + 0x1c)" (* "*") (cast_expression "(int *)(iVar5 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x1c)" (( "(") (binary_expression "iVar5 + 0x1c" (identifier "iVar5") (+ "+") (number_literal "0x1c")) () ")"))))) (, ",") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))" (( "(") (comma_expression "uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20)" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x44)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x44)" (* "*") (cast_expression "(uint *)(uVar2 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")"))))) (, ",") (binary_expression "uVar21 < *(uint *)(iVar5 + 0x20)" (identifier "uVar21") (< "<") (pointer_expression "*(uint *)(iVar5 + 0x20)" (* "*") (cast_expression "(uint *)(iVar5 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x20)" (( "(") (binary_expression "iVar5 + 0x20" (identifier "iVar5") (+ "+") (number_literal "0x20")) () ")")))))) () ")"))) () ")")) (compound_statement "{\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }" ({ "{") (expression_statement "*(uint *)(uVar2 + 0x44) = uVar21 + 1;" (assignment_expression "*(uint *)(uVar2 + 0x44) = uVar21 + 1" (pointer_expression "*(uint *)(uVar2 + 0x44)" (* "*") (cast_expression "(uint *)(uVar2 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (binary_expression "uVar21 + 1" (identifier "uVar21") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(byte *)(iVar7 + uVar21) = bVar12;" (assignment_expression "*(byte *)(iVar7 + uVar21) = bVar12" (pointer_expression "*(byte *)(iVar7 + uVar21)" (* "*") (cast_expression "(byte *)(iVar7 + uVar21)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + uVar21)" (( "(") (binary_expression "iVar7 + uVar21" (identifier "iVar7") (+ "+") (identifier "uVar21")) () ")")))) (= "=") (identifier "bVar12")) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c))" (( "(") (binary_expression "(bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c)" (parenthesized_expression "(bVar12 != 0)" (( "(") (binary_expression "bVar12 != 0" (identifier "bVar12") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar21 = uVar14, uVar14 < local_6c)" (( "(") (comma_expression "uVar21 = uVar14, uVar14 < local_6c" (assignment_expression "uVar21 = uVar14" (identifier "uVar21") (= "=") (identifier "uVar14")) (, ",") (binary_expression "uVar14 < local_6c" (identifier "uVar14") (< "<") (identifier "local_6c"))) () ")"))) () ")")) (; ";")) (if_statement "if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" (if "if") (parenthesized_expression "(((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0))" (( "(") (binary_expression "((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)" (parenthesized_expression "((*(byte *)(uVar2 + 0x15) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(uVar2 + 0x15) & 2) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0x15) & 2)" (( "(") (binary_expression "*(byte *)(uVar2 + 0x15) & 2" (pointer_expression "*(byte *)(uVar2 + 0x15)" (* "*") (cast_expression "(byte *)(uVar2 + 0x15)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x15)" (( "(") (binary_expression "uVar2 + 0x15" (identifier "uVar2") (+ "+") (number_literal "0x15")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) != 0)" (( "(") (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" (( "(") (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" (* "*") (cast_expression "(byte *)(uVar2 + 0xc)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0xc)" (( "(") (binary_expression "uVar2 + 0xc" (identifier "uVar2") (+ "+") (number_literal "0xc")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" ({ "{") (expression_statement "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);" (assignment_expression "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14)" (identifier "uVar9") (= "=") (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14)" (identifier "crc32") (argument_list "(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14)" (( "(") (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (, ",") (identifier "local_60") (, ",") (identifier "uVar14") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (} "}"))) (expression_statement "local_60 = local_60 + uVar14;" (assignment_expression "local_60 = local_60 + uVar14" (identifier "local_60") (= "=") (binary_expression "local_60 + uVar14" (identifier "local_60") (+ "+") (identifier "uVar14"))) (; ";")) (expression_statement "local_6c = local_6c - uVar14;" (assignment_expression "local_6c = local_6c - uVar14" (identifier "local_6c") (= "=") (binary_expression "local_6c - uVar14" (identifier "local_6c") (- "-") (identifier "uVar14"))) (; ";")) (if_statement "if (bVar12 != 0) goto LAB_00017f30;" (if "if") (parenthesized_expression "(bVar12 != 0)" (( "(") (binary_expression "bVar12 != 0" (identifier "bVar12") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017f30;" (goto "goto") (statement_identifier "LAB_00017f30") (; ";"))) (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x14)" (* "*") (cast_expression "(uint *)(uVar2 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x14)" (( "(") (binary_expression "uVar2 + 0x14" (identifier "uVar2") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (} "}"))))) (expression_statement "*(undefined4 *)(uVar2 + 0x44) = 0;" (assignment_expression "*(undefined4 *)(uVar2 + 0x44) = 0" (pointer_expression "*(undefined4 *)(uVar2 + 0x44)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3b;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3b" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f3b")) (; ";")) (labeled_statement "code_r0x0001835c:\n    if ((uVar21 & 0x1000) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }" (statement_identifier "code_r0x0001835c") (: ":") (if_statement "if ((uVar21 & 0x1000) == 0) {\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }\n    }\n    else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }" (if "if") (parenthesized_expression "((uVar21 & 0x1000) == 0)" (( "(") (binary_expression "(uVar21 & 0x1000) == 0" (parenthesized_expression "(uVar21 & 0x1000)" (( "(") (binary_expression "uVar21 & 0x1000" (identifier "uVar21") (& "&") (number_literal "0x1000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }\n    }" ({ "{") (if_statement "if (*(int *)(uVar2 + 0x24) != 0) {\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }" (if "if") (parenthesized_expression "(*(int *)(uVar2 + 0x24) != 0)" (( "(") (binary_expression "*(int *)(uVar2 + 0x24) != 0" (pointer_expression "*(int *)(uVar2 + 0x24)" (* "*") (cast_expression "(int *)(uVar2 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x24)" (( "(") (binary_expression "uVar2 + 0x24" (identifier "uVar2") (+ "+") (number_literal "0x24")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;\n      }" ({ "{") (expression_statement "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;" (assignment_expression "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0" (pointer_expression "*(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24)" (* "*") (cast_expression "(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(uVar2 + 0x24) + 0x24)" (( "(") (binary_expression "*(int *)(uVar2 + 0x24) + 0x24" (pointer_expression "*(int *)(uVar2 + 0x24)" (* "*") (cast_expression "(int *)(uVar2 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x24)" (( "(") (binary_expression "uVar2 + 0x24" (identifier "uVar2") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (number_literal "0x24")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }" (else "else") (compound_statement "{\n      uVar21 = 0;\n      if (local_6c == 0) goto LAB_00017f32;\n      do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));\n      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_60 = local_60 + uVar14;\n      local_6c = local_6c - uVar14;\n      if (bVar12 != 0) goto LAB_00017f30;\n      uVar21 = *(uint *)(uVar2 + 0x14);\n    }" ({ "{") (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_6c == 0) goto LAB_00017f32;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017f32;" (goto "goto") (statement_identifier "LAB_00017f32") (; ";"))) (do_statement "do {\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));" (do "do") (compound_statement "{\n        iVar5 = *(int *)(uVar2 + 0x24);\n        uVar14 = uVar21 + 1;\n        bVar12 = local_60[uVar21];\n        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }\n      }" ({ "{") (expression_statement "iVar5 = *(int *)(uVar2 + 0x24);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x24)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(uVar2 + 0x24)" (* "*") (cast_expression "(int *)(uVar2 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x24)" (( "(") (binary_expression "uVar2 + 0x24" (identifier "uVar2") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "uVar14 = uVar21 + 1;" (assignment_expression "uVar14 = uVar21 + 1" (identifier "uVar14") (= "=") (binary_expression "uVar21 + 1" (identifier "uVar21") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar12 = local_60[uVar21];" (assignment_expression "bVar12 = local_60[uVar21]" (identifier "bVar12") (= "=") (subscript_expression "local_60[uVar21]" (identifier "local_60") ([ "[") (identifier "uVar21") (] "]"))) (; ";")) (if_statement "if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }" (if "if") (parenthesized_expression "(((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28)))" (( "(") (binary_expression "((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&\n           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))" (parenthesized_expression "((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0))" (( "(") (binary_expression "(iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)" (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)" (( "(") (comma_expression "iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0" (assignment_expression "iVar7 = *(int *)(iVar5 + 0x24)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar5 + 0x24)" (* "*") (cast_expression "(int *)(iVar5 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x24)" (( "(") (binary_expression "iVar5 + 0x24" (identifier "iVar5") (+ "+") (number_literal "0x24")) () ")"))))) (, ",") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))" (( "(") (comma_expression "uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28)" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x44)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x44)" (* "*") (cast_expression "(uint *)(uVar2 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")"))))) (, ",") (binary_expression "uVar21 < *(uint *)(iVar5 + 0x28)" (identifier "uVar21") (< "<") (pointer_expression "*(uint *)(iVar5 + 0x28)" (* "*") (cast_expression "(uint *)(iVar5 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x28)" (( "(") (binary_expression "iVar5 + 0x28" (identifier "iVar5") (+ "+") (number_literal "0x28")) () ")")))))) () ")"))) () ")")) (compound_statement "{\n          *(uint *)(uVar2 + 0x44) = uVar21 + 1;\n          *(byte *)(iVar7 + uVar21) = bVar12;\n        }" ({ "{") (expression_statement "*(uint *)(uVar2 + 0x44) = uVar21 + 1;" (assignment_expression "*(uint *)(uVar2 + 0x44) = uVar21 + 1" (pointer_expression "*(uint *)(uVar2 + 0x44)" (* "*") (cast_expression "(uint *)(uVar2 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (binary_expression "uVar21 + 1" (identifier "uVar21") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(byte *)(iVar7 + uVar21) = bVar12;" (assignment_expression "*(byte *)(iVar7 + uVar21) = bVar12" (pointer_expression "*(byte *)(iVar7 + uVar21)" (* "*") (cast_expression "(byte *)(iVar7 + uVar21)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + uVar21)" (( "(") (binary_expression "iVar7 + uVar21" (identifier "iVar7") (+ "+") (identifier "uVar21")) () ")")))) (= "=") (identifier "bVar12")) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c))" (( "(") (binary_expression "(bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c)" (parenthesized_expression "(bVar12 != 0)" (( "(") (binary_expression "bVar12 != 0" (identifier "bVar12") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar21 = uVar14, uVar14 < local_6c)" (( "(") (comma_expression "uVar21 = uVar14, uVar14 < local_6c" (assignment_expression "uVar21 = uVar14" (identifier "uVar21") (= "=") (identifier "uVar14")) (, ",") (binary_expression "uVar14 < local_6c" (identifier "uVar14") (< "<") (identifier "local_6c"))) () ")"))) () ")")) (; ";")) (if_statement "if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" (if "if") (parenthesized_expression "(((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0))" (( "(") (binary_expression "((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)" (parenthesized_expression "((*(byte *)(uVar2 + 0x15) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(uVar2 + 0x15) & 2) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0x15) & 2)" (( "(") (binary_expression "*(byte *)(uVar2 + 0x15) & 2" (pointer_expression "*(byte *)(uVar2 + 0x15)" (* "*") (cast_expression "(byte *)(uVar2 + 0x15)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x15)" (( "(") (binary_expression "uVar2 + 0x15" (identifier "uVar2") (+ "+") (number_literal "0x15")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) != 0)" (( "(") (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" (( "(") (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" (* "*") (cast_expression "(byte *)(uVar2 + 0xc)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0xc)" (( "(") (binary_expression "uVar2 + 0xc" (identifier "uVar2") (+ "+") (number_literal "0xc")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" ({ "{") (expression_statement "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);" (assignment_expression "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14)" (identifier "uVar9") (= "=") (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14)" (identifier "crc32") (argument_list "(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14)" (( "(") (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (, ",") (identifier "local_60") (, ",") (identifier "uVar14") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (} "}"))) (expression_statement "local_60 = local_60 + uVar14;" (assignment_expression "local_60 = local_60 + uVar14" (identifier "local_60") (= "=") (binary_expression "local_60 + uVar14" (identifier "local_60") (+ "+") (identifier "uVar14"))) (; ";")) (expression_statement "local_6c = local_6c - uVar14;" (assignment_expression "local_6c = local_6c - uVar14" (identifier "local_6c") (= "=") (binary_expression "local_6c - uVar14" (identifier "local_6c") (- "-") (identifier "uVar14"))) (; ";")) (if_statement "if (bVar12 != 0) goto LAB_00017f30;" (if "if") (parenthesized_expression "(bVar12 != 0)" (( "(") (binary_expression "bVar12 != 0" (identifier "bVar12") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017f30;" (goto "goto") (statement_identifier "LAB_00017f30") (; ";"))) (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x14)" (* "*") (cast_expression "(uint *)(uVar2 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x14)" (( "(") (binary_expression "uVar2 + 0x14" (identifier "uVar2") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (} "}"))))) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3c;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3c" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f3c")) (; ";")) (labeled_statement "code_r0x00018382:\n    if ((uVar21 & 0x200) == 0) {\ncode_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }\n      iVar5 = crc32(0,0,0);\n      *(int *)(uVar2 + 0x1c) = iVar5;\n      param_1[0xc] = iVar5;\n      *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n      goto LAB_00017f13;\n    }" (statement_identifier "code_r0x00018382") (: ":") (if_statement "if ((uVar21 & 0x200) == 0) {\ncode_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }\n      iVar5 = crc32(0,0,0);\n      *(int *)(uVar2 + 0x1c) = iVar5;\n      param_1[0xc] = iVar5;\n      *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n      goto LAB_00017f13;\n    }" (if "if") (parenthesized_expression "((uVar21 & 0x200) == 0)" (( "(") (binary_expression "(uVar21 & 0x200) == 0" (parenthesized_expression "(uVar21 & 0x200)" (( "(") (binary_expression "uVar21 & 0x200" (identifier "uVar21") (& "&") (number_literal "0x200")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\ncode_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }\n      iVar5 = crc32(0,0,0);\n      *(int *)(uVar2 + 0x1c) = iVar5;\n      param_1[0xc] = iVar5;\n      *(undefined4 *)(uVar2 + 4) = 0x3f3f;\n      goto LAB_00017f13;\n    }" ({ "{") (labeled_statement "code_r0x0001838b:\n      iVar5 = *(int *)(uVar2 + 0x24);" (statement_identifier "code_r0x0001838b") (: ":") (expression_statement "iVar5 = *(int *)(uVar2 + 0x24);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x24)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(uVar2 + 0x24)" (* "*") (cast_expression "(int *)(uVar2 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x24)" (( "(") (binary_expression "uVar2 + 0x24" (identifier "uVar2") (+ "+") (number_literal "0x24")) () ")"))))) (; ";"))) (if_statement "if (iVar5 != 0) {\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        *(undefined4 *)(iVar5 + 0x30) = 1;\n        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;\n      }" ({ "{") (expression_statement "*(undefined4 *)(iVar5 + 0x30) = 1;" (assignment_expression "*(undefined4 *)(iVar5 + 0x30) = 1" (pointer_expression "*(undefined4 *)(iVar5 + 0x30)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x30)" (( "(") (binary_expression "iVar5 + 0x30" (identifier "iVar5") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;" (assignment_expression "*(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1" (pointer_expression "*(uint *)(iVar5 + 0x2c)" (* "*") (cast_expression "(uint *)(iVar5 + 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x2c)" (( "(") (binary_expression "iVar5 + 0x2c" (identifier "iVar5") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (binary_expression "(int)uVar21 >> 9 & 1" (binary_expression "(int)uVar21 >> 9" (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21")) (>> ">>") (number_literal "9")) (& "&") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "iVar5 = crc32(0,0,0);" (assignment_expression "iVar5 = crc32(0,0,0)" (identifier "iVar5") (= "=") (call_expression "crc32(0,0,0)" (identifier "crc32") (argument_list "(0,0,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "*(int *)(uVar2 + 0x1c) = iVar5;" (assignment_expression "*(int *)(uVar2 + 0x1c) = iVar5" (pointer_expression "*(int *)(uVar2 + 0x1c)" (* "*") (cast_expression "(int *)(uVar2 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "param_1[0xc] = iVar5;" (assignment_expression "param_1[0xc] = iVar5" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3f;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3f" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f3f")) (; ";")) (goto_statement "goto LAB_00017f13;" (goto "goto") (statement_identifier "LAB_00017f13") (; ";")) (} "}")))) (if_statement "if (uVar15 < 0x10) {\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }\n    else {\ncode_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }\n      param_1[6] = (int)"header crc mismatch";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n    }" (if "if") (parenthesized_expression "(uVar15 < 0x10)" (( "(") (binary_expression "uVar15 < 0x10" (identifier "uVar15") (< "<") (number_literal "0x10")) () ")")) (compound_statement "{\n      if (local_6c == 0) goto LAB_00017f30;\n      do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      } while (local_6c != 0);\n      uVar21 = 0;\n    }" ({ "{") (if_statement "if (local_6c == 0) goto LAB_00017f30;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017f30;" (goto "goto") (statement_identifier "LAB_00017f30") (; ";"))) (do_statement "do {\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      } while (local_6c != 0);" (do "do") (compound_statement "{\n        pbVar20 = local_60 + 1;\n        local_6c = local_6c - 1;\n        bVar12 = (byte)uVar15;\n        uVar15 = uVar15 + 8;\n        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));\n        local_60 = pbVar20;\n        if (0xf < uVar15) goto code_r0x00018a2e;\n      }" ({ "{") (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" (identifier "pbVar20") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" (identifier "local_6c") (= "=") (binary_expression "local_6c - 1" (identifier "local_6c") (- "-") (number_literal "1"))) (; ";")) (expression_statement "bVar12 = (byte)uVar15;" (assignment_expression "bVar12 = (byte)uVar15" (identifier "bVar12") (= "=") (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15"))) (; ";")) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 8" (identifier "uVar15") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "local_64") (= "=") (binary_expression "local_64 + ((uint)*local_60 << (bVar12 & 0x1f))" (identifier "local_64") (+ "+") (parenthesized_expression "((uint)*local_60 << (bVar12 & 0x1f))" (( "(") (binary_expression "(uint)*local_60 << (bVar12 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "local_60")) (<< "<<") (parenthesized_expression "(bVar12 & 0x1f)" (( "(") (binary_expression "bVar12 & 0x1f" (identifier "bVar12") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" (identifier "local_60") (= "=") (identifier "pbVar20")) (; ";")) (if_statement "if (0xf < uVar15) goto code_r0x00018a2e;" (if "if") (parenthesized_expression "(0xf < uVar15)" (( "(") (binary_expression "0xf < uVar15" (number_literal "0xf") (< "<") (identifier "uVar15")) () ")")) (goto_statement "goto code_r0x00018a2e;" (goto "goto") (statement_identifier "code_r0x00018a2e") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(local_6c != 0)" (( "(") (binary_expression "local_6c != 0" (identifier "local_6c") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\ncode_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }\n      param_1[6] = (int)"header crc mismatch";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n    }" (else "else") (compound_statement "{\ncode_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }\n      param_1[6] = (int)"header crc mismatch";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n    }" ({ "{") (labeled_statement "code_r0x00018a2e:\n      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }" (statement_identifier "code_r0x00018a2e") (: ":") (if_statement "if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }" (if "if") (parenthesized_expression "(((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64))" (( "(") (binary_expression "((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)" (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) == 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" (( "(") (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" (* "*") (cast_expression "(byte *)(uVar2 + 0xc)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0xc)" (( "(") (binary_expression "uVar2 + 0xc" (identifier "uVar2") (+ "+") (number_literal "0xc")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(ushort *)(uVar2 + 0x1c) == local_64)" (( "(") (binary_expression "*(ushort *)(uVar2 + 0x1c) == local_64" (pointer_expression "*(ushort *)(uVar2 + 0x1c)" (* "*") (cast_expression "(ushort *)(uVar2 + 0x1c)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (== "==") (identifier "local_64")) () ")"))) () ")")) (compound_statement "{\n        uVar15 = 0;\n        local_64 = 0;\n        goto code_r0x0001838b;\n      }" ({ "{") (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" (identifier "local_64") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto code_r0x0001838b;" (goto "goto") (statement_identifier "code_r0x0001838b") (; ";")) (} "}")))) (expression_statement "param_1[6] = (int)"header crc mismatch";" (assignment_expression "param_1[6] = (int)"header crc mismatch"" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (cast_expression "(int)"header crc mismatch"" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (string_literal ""header crc mismatch"" (" """) (string_content "header crc mismatch") (" """)))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f51")) (; ";")) (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" (identifier "uVar21") (= "=") (number_literal "0xfffffffd")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    uVar14 = *(uint *)(uVar2 + 0x44);\n    uVar17 = local_6c;\n    if (uVar14 < local_6c) {\n      uVar17 = uVar14;\n    }\n    if (uVar17 != 0) {\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_6c = local_6c - uVar17;\n      local_60 = local_60 + uVar17;\n      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;\n      *(uint *)(uVar2 + 0x44) = uVar14;\n    }\n    if (uVar14 == 0) {\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      goto code_r0x0001826a;\n    }\nLAB_00017f30:\n    uVar21 = 0;\n  }" (else "else") (compound_statement "{\n    uVar14 = *(uint *)(uVar2 + 0x44);\n    uVar17 = local_6c;\n    if (uVar14 < local_6c) {\n      uVar17 = uVar14;\n    }\n    if (uVar17 != 0) {\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_6c = local_6c - uVar17;\n      local_60 = local_60 + uVar17;\n      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;\n      *(uint *)(uVar2 + 0x44) = uVar14;\n    }\n    if (uVar14 == 0) {\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      goto code_r0x0001826a;\n    }\nLAB_00017f30:\n    uVar21 = 0;\n  }" ({ "{") (expression_statement "uVar14 = *(uint *)(uVar2 + 0x44);" (assignment_expression "uVar14 = *(uint *)(uVar2 + 0x44)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x44)" (* "*") (cast_expression "(uint *)(uVar2 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (expression_statement "uVar17 = local_6c;" (assignment_expression "uVar17 = local_6c" (identifier "uVar17") (= "=") (identifier "local_6c")) (; ";")) (if_statement "if (uVar14 < local_6c) {\n      uVar17 = uVar14;\n    }" (if "if") (parenthesized_expression "(uVar14 < local_6c)" (( "(") (binary_expression "uVar14 < local_6c" (identifier "uVar14") (< "<") (identifier "local_6c")) () ")")) (compound_statement "{\n      uVar17 = uVar14;\n    }" ({ "{") (expression_statement "uVar17 = uVar14;" (assignment_expression "uVar17 = uVar14" (identifier "uVar17") (= "=") (identifier "uVar14")) (; ";")) (} "}"))) (if_statement "if (uVar17 != 0) {\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_6c = local_6c - uVar17;\n      local_60 = local_60 + uVar17;\n      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;\n      *(uint *)(uVar2 + 0x44) = uVar14;\n    }" (if "if") (parenthesized_expression "(uVar17 != 0)" (( "(") (binary_expression "uVar17 != 0" (identifier "uVar17") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar5 = *(int *)(uVar2 + 0x24);\n      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }\n      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }\n      local_6c = local_6c - uVar17;\n      local_60 = local_60 + uVar17;\n      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;\n      *(uint *)(uVar2 + 0x44) = uVar14;\n    }" ({ "{") (expression_statement "iVar5 = *(int *)(uVar2 + 0x24);" (assignment_expression "iVar5 = *(int *)(uVar2 + 0x24)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(uVar2 + 0x24)" (* "*") (cast_expression "(int *)(uVar2 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x24)" (( "(") (binary_expression "uVar2 + 0x24" (identifier "uVar2") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (if_statement "if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }" (if "if") (parenthesized_expression "((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0))" (( "(") (binary_expression "(iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)" (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(iVar5 + 0x10) != 0)" (( "(") (binary_expression "*(int *)(iVar5 + 0x10) != 0" (pointer_expression "*(int *)(iVar5 + 0x10)" (* "*") (cast_expression "(int *)(iVar5 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x10)" (( "(") (binary_expression "iVar5 + 0x10" (identifier "iVar5") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;\n        __n = *(uint *)(iVar5 + 0x18) - iVar7;\n        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }\n        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);\n        uVar21 = *(uint *)(uVar2 + 0x14);\n      }" ({ "{") (expression_statement "iVar7 = *(int *)(iVar5 + 0x14) - uVar14;" (assignment_expression "iVar7 = *(int *)(iVar5 + 0x14) - uVar14" (identifier "iVar7") (= "=") (binary_expression "*(int *)(iVar5 + 0x14) - uVar14" (pointer_expression "*(int *)(iVar5 + 0x14)" (* "*") (cast_expression "(int *)(iVar5 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x14)" (( "(") (binary_expression "iVar5 + 0x14" (identifier "iVar5") (+ "+") (number_literal "0x14")) () ")")))) (- "-") (identifier "uVar14"))) (; ";")) (expression_statement "__n = *(uint *)(iVar5 + 0x18) - iVar7;" (assignment_expression "__n = *(uint *)(iVar5 + 0x18) - iVar7" (identifier "__n") (= "=") (binary_expression "*(uint *)(iVar5 + 0x18) - iVar7" (pointer_expression "*(uint *)(iVar5 + 0x18)" (* "*") (cast_expression "(uint *)(iVar5 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x18)" (( "(") (binary_expression "iVar5 + 0x18" (identifier "iVar5") (+ "+") (number_literal "0x18")) () ")")))) (- "-") (identifier "iVar7"))) (; ";")) (if_statement "if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {\n          __n = uVar17;\n        }" (if "if") (parenthesized_expression "(uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18))" (( "(") (binary_expression "uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)" (binary_expression "uVar17 + iVar7" (identifier "uVar17") (+ "+") (identifier "iVar7")) (<= "<=") (pointer_expression "*(uint *)(iVar5 + 0x18)" (* "*") (cast_expression "(uint *)(iVar5 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x18)" (( "(") (binary_expression "iVar5 + 0x18" (identifier "iVar5") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (compound_statement "{\n          __n = uVar17;\n        }" ({ "{") (expression_statement "__n = uVar17;" (assignment_expression "__n = uVar17" (identifier "__n") (= "=") (identifier "uVar17")) (; ";")) (} "}"))) (expression_statement "memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);" (call_expression "memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n)" (identifier "memcpy") (argument_list "((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n)" (( "(") (cast_expression "(void *)(iVar7 + *(int *)(iVar5 + 0x10))" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + *(int *)(iVar5 + 0x10))" (( "(") (binary_expression "iVar7 + *(int *)(iVar5 + 0x10)" (identifier "iVar7") (+ "+") (pointer_expression "*(int *)(iVar5 + 0x10)" (* "*") (cast_expression "(int *)(iVar5 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x10)" (( "(") (binary_expression "iVar5 + 0x10" (identifier "iVar5") (+ "+") (number_literal "0x10")) () ")"))))) () ")"))) (, ",") (identifier "local_60") (, ",") (identifier "__n") () ")"))) (; ";")) (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x14)" (* "*") (cast_expression "(uint *)(uVar2 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x14)" (( "(") (binary_expression "uVar2 + 0x14" (identifier "uVar2") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" (if "if") (parenthesized_expression "(((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0))" (( "(") (binary_expression "((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)" (parenthesized_expression "((uVar21 & 0x200) != 0)" (( "(") (binary_expression "(uVar21 & 0x200) != 0" (parenthesized_expression "(uVar21 & 0x200)" (( "(") (binary_expression "uVar21 & 0x200" (identifier "uVar21") (& "&") (number_literal "0x200")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) != 0)" (( "(") (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" (( "(") (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" (* "*") (cast_expression "(byte *)(uVar2 + 0xc)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0xc)" (( "(") (binary_expression "uVar2 + 0xc" (identifier "uVar2") (+ "+") (number_literal "0xc")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);\n        *(undefined4 *)(uVar2 + 0x1c) = uVar9;\n      }" ({ "{") (expression_statement "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);" (assignment_expression "uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17)" (identifier "uVar9") (= "=") (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17)" (identifier "crc32") (argument_list "(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17)" (( "(") (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (, ",") (identifier "local_60") (, ",") (identifier "uVar17") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 0x1c) = uVar9;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1c) = uVar9" (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (} "}"))) (expression_statement "local_6c = local_6c - uVar17;" (assignment_expression "local_6c = local_6c - uVar17" (identifier "local_6c") (= "=") (binary_expression "local_6c - uVar17" (identifier "local_6c") (- "-") (identifier "uVar17"))) (; ";")) (expression_statement "local_60 = local_60 + uVar17;" (assignment_expression "local_60 = local_60 + uVar17" (identifier "local_60") (= "=") (binary_expression "local_60 + uVar17" (identifier "local_60") (+ "+") (identifier "uVar17"))) (; ";")) (expression_statement "uVar14 = *(int *)(uVar2 + 0x44) - uVar17;" (assignment_expression "uVar14 = *(int *)(uVar2 + 0x44) - uVar17" (identifier "uVar14") (= "=") (binary_expression "*(int *)(uVar2 + 0x44) - uVar17" (pointer_expression "*(int *)(uVar2 + 0x44)" (* "*") (cast_expression "(int *)(uVar2 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")")))) (- "-") (identifier "uVar17"))) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x44) = uVar14;" (assignment_expression "*(uint *)(uVar2 + 0x44) = uVar14" (pointer_expression "*(uint *)(uVar2 + 0x44)" (* "*") (cast_expression "(uint *)(uVar2 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x44)" (( "(") (binary_expression "uVar2 + 0x44" (identifier "uVar2") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (identifier "uVar14")) (; ";")) (} "}"))) (if_statement "if (uVar14 == 0) {\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      goto code_r0x0001826a;\n    }" (if "if") (parenthesized_expression "(uVar14 == 0)" (( "(") (binary_expression "uVar14 == 0" (identifier "uVar14") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar21 = *(uint *)(uVar2 + 0x14);\n      goto code_r0x0001826a;\n    }" ({ "{") (expression_statement "uVar21 = *(uint *)(uVar2 + 0x14);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0x14)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(uVar2 + 0x14)" (* "*") (cast_expression "(uint *)(uVar2 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x14)" (( "(") (binary_expression "uVar2 + 0x14" (identifier "uVar2") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (goto_statement "goto code_r0x0001826a;" (goto "goto") (statement_identifier "code_r0x0001826a") (; ";")) (} "}"))) (labeled_statement "LAB_00017f30:\n    uVar21 = 0;" (statement_identifier "LAB_00017f30") (: ":") (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";"))) (} "}"))))) (goto "goto") (identifier "LAB_00017f32") (; ";") (identifier "LAB_00017996") (: ":") (identifier "iVar5") (= "=") (identifier "local_50") (- "-") (identifier "local_5c") (; ";") (identifier "param_1") ([ "[") (number_literal "5") (] "]") (= "=") (identifier "param_1") ([ "[") (number_literal "5") (] "]") (+ "+") (identifier "iVar5") (; ";") (* "*") (( "(") (primitive_type "int") (* "*") () ")") (( "(") (identifier "uVar2") (+ "+") (number_literal "0x20") () ")") (= "=") (* "*") (( "(") (primitive_type "int") (* "*") () ")") (( "(") (identifier "uVar2") (+ "+") (number_literal "0x20") () ")") (+ "+") (identifier "iVar5") (; ";") (identifier "uVar14") (= "=") (identifier "uVar21") (& "&") (number_literal "4") (; ";") (if_statement "if ((uVar14 != 0) && (iVar5 != 0)) {\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    else {\n      iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    *(int *)(uVar2 + 0x1c) = iVar5;\n    param_1[0xc] = iVar5;\n    uVar21 = *(uint *)(uVar2 + 0xc);\n    uVar14 = uVar21 & 4;\n  }" (if "if") (parenthesized_expression "((uVar14 != 0) && (iVar5 != 0))" (( "(") (binary_expression "(uVar14 != 0) && (iVar5 != 0)" (parenthesized_expression "(uVar14 != 0)" (( "(") (binary_expression "uVar14 != 0" (identifier "uVar14") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    else {\n      iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    *(int *)(uVar2 + 0x1c) = iVar5;\n    param_1[0xc] = iVar5;\n    uVar21 = *(uint *)(uVar2 + 0xc);\n    uVar14 = uVar21 & 4;\n  }" ({ "{") (if_statement "if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }\n    else {\n      iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }" (if "if") (parenthesized_expression "(*(int *)(uVar2 + 0x14) == 0)" (( "(") (binary_expression "*(int *)(uVar2 + 0x14) == 0" (pointer_expression "*(int *)(uVar2 + 0x14)" (* "*") (cast_expression "(int *)(uVar2 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x14)" (( "(") (binary_expression "uVar2 + 0x14" (identifier "uVar2") (+ "+") (number_literal "0x14")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }" ({ "{") (expression_statement "iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);" (assignment_expression "iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5)" (identifier "iVar5") (= "=") (call_expression "adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5)" (identifier "adler32") (argument_list "(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5)" (( "(") (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (, ",") (binary_expression "(int)__dest - iVar5" (cast_expression "(int)__dest" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__dest")) (- "-") (identifier "iVar5")) (, ",") (identifier "iVar5") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }" (else "else") (compound_statement "{\n      iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);\n    }" ({ "{") (expression_statement "iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);" (assignment_expression "iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5)" (identifier "iVar5") (= "=") (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5)" (identifier "crc32") (argument_list "(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5)" (( "(") (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (, ",") (binary_expression "(int)__dest - iVar5" (cast_expression "(int)__dest" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__dest")) (- "-") (identifier "iVar5")) (, ",") (identifier "iVar5") () ")")))) (; ";")) (} "}")))) (expression_statement "*(int *)(uVar2 + 0x1c) = iVar5;" (assignment_expression "*(int *)(uVar2 + 0x1c) = iVar5" (pointer_expression "*(int *)(uVar2 + 0x1c)" (* "*") (cast_expression "(int *)(uVar2 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "param_1[0xc] = iVar5;" (assignment_expression "param_1[0xc] = iVar5" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "uVar21 = *(uint *)(uVar2 + 0xc);" (assignment_expression "uVar21 = *(uint *)(uVar2 + 0xc)" (identifier "uVar21") (= "=") (pointer_expression "*(uint *)(uVar2 + 0xc)" (* "*") (cast_expression "(uint *)(uVar2 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0xc)" (( "(") (binary_expression "uVar2 + 0xc" (identifier "uVar2") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar14 = uVar21 & 4;" (assignment_expression "uVar14 = uVar21 & 4" (identifier "uVar14") (= "=") (binary_expression "uVar21 & 4" (identifier "uVar21") (& "&") (number_literal "4"))) (; ";")) (} "}"))) (if_statement "if (uVar14 != 0) {\n    uVar14 = local_64;\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100;\n    }\n    if (*(uint *)(uVar2 + 0x1c) != uVar14) {\n      param_1[6] = (int)"incorrect data check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      local_50 = local_5c;\n      goto LAB_00017f32;\n    }\n  }" (if "if") (parenthesized_expression "(uVar14 != 0)" (( "(") (binary_expression "uVar14 != 0" (identifier "uVar14") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar14 = local_64;\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100;\n    }\n    if (*(uint *)(uVar2 + 0x1c) != uVar14) {\n      param_1[6] = (int)"incorrect data check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      local_50 = local_5c;\n      goto LAB_00017f32;\n    }\n  }" ({ "{") (expression_statement "uVar14 = local_64;" (assignment_expression "uVar14 = local_64" (identifier "uVar14") (= "=") (identifier "local_64")) (; ";")) (if_statement "if (*(int *)(uVar2 + 0x14) == 0) {\n      uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100;\n    }" (if "if") (parenthesized_expression "(*(int *)(uVar2 + 0x14) == 0)" (( "(") (binary_expression "*(int *)(uVar2 + 0x14) == 0" (pointer_expression "*(int *)(uVar2 + 0x14)" (* "*") (cast_expression "(int *)(uVar2 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x14)" (( "(") (binary_expression "uVar2 + 0x14" (identifier "uVar2") (+ "+") (number_literal "0x14")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100;\n    }" ({ "{") (expression_statement "uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100;" (assignment_expression "uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100" (identifier "uVar14") (= "=") (binary_expression "(local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +\n               (local_64 & 0xff00) * 0x100" (binary_expression "(local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00)" (binary_expression "(local_64 >> 0x18) + local_64 * 0x1000000" (parenthesized_expression "(local_64 >> 0x18)" (( "(") (binary_expression "local_64 >> 0x18" (identifier "local_64") (>> ">>") (number_literal "0x18")) () ")")) (+ "+") (binary_expression "local_64 * 0x1000000" (identifier "local_64") (* "*") (number_literal "0x1000000"))) (+ "+") (parenthesized_expression "(local_64 >> 8 & 0xff00)" (( "(") (binary_expression "local_64 >> 8 & 0xff00" (binary_expression "local_64 >> 8" (identifier "local_64") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff00")) () ")"))) (+ "+") (binary_expression "(local_64 & 0xff00) * 0x100" (parenthesized_expression "(local_64 & 0xff00)" (( "(") (binary_expression "local_64 & 0xff00" (identifier "local_64") (& "&") (number_literal "0xff00")) () ")")) (* "*") (number_literal "0x100")))) (; ";")) (} "}"))) (if_statement "if (*(uint *)(uVar2 + 0x1c) != uVar14) {\n      param_1[6] = (int)"incorrect data check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      local_50 = local_5c;\n      goto LAB_00017f32;\n    }" (if "if") (parenthesized_expression "(*(uint *)(uVar2 + 0x1c) != uVar14)" (( "(") (binary_expression "*(uint *)(uVar2 + 0x1c) != uVar14" (pointer_expression "*(uint *)(uVar2 + 0x1c)" (* "*") (cast_expression "(uint *)(uVar2 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (!= "!=") (identifier "uVar14")) () ")")) (compound_statement "{\n      param_1[6] = (int)"incorrect data check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      local_50 = local_5c;\n      goto LAB_00017f32;\n    }" ({ "{") (expression_statement "param_1[6] = (int)"incorrect data check";" (assignment_expression "param_1[6] = (int)"incorrect data check"" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (cast_expression "(int)"incorrect data check"" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (string_literal ""incorrect data check"" (" """) (string_content "incorrect data check") (" """)))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f51")) (; ";")) (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" (identifier "uVar21") (= "=") (number_literal "0xfffffffd")) (; ";")) (expression_statement "local_50 = local_5c;" (assignment_expression "local_50 = local_5c" (identifier "local_50") (= "=") (identifier "local_5c")) (; ";")) (goto_statement "goto LAB_00017f32;" (goto "goto") (statement_identifier "LAB_00017f32") (; ";")) (} "}"))) (} "}"))) (identifier "uVar15") (= "=") (number_literal "0") (; ";") (identifier "local_64") (= "=") (number_literal "0") (; ";") (identifier "local_50") (= "=") (identifier "local_5c") (; ";") (labeled_statement "LAB_00018e20:\n  *(undefined4 *)(uVar2 + 4) = 0x3f4f;" (statement_identifier "LAB_00018e20") (: ":") (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f4f;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f4f" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f4f")) (; ";"))) (labeled_statement "LAB_000183ff:\n  if ((uVar21 != 0) && (*(int *)(uVar2 + 0x14) != 0)) {\n    for (; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n      if (local_6c == 0) goto LAB_00017f30;\n      local_6c = local_6c - 1;\n      local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n      local_60 = local_60 + 1;\n    }\n    if (*(uint *)(uVar2 + 0x20) != local_64) {\n      param_1[6] = (int)"incorrect length check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      goto LAB_00017f32;\n    }\n    uVar15 = 0;\n    local_64 = 0;\n  }" (statement_identifier "LAB_000183ff") (: ":") (if_statement "if ((uVar21 != 0) && (*(int *)(uVar2 + 0x14) != 0)) {\n    for (; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n      if (local_6c == 0) goto LAB_00017f30;\n      local_6c = local_6c - 1;\n      local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n      local_60 = local_60 + 1;\n    }\n    if (*(uint *)(uVar2 + 0x20) != local_64) {\n      param_1[6] = (int)"incorrect length check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      goto LAB_00017f32;\n    }\n    uVar15 = 0;\n    local_64 = 0;\n  }" (if "if") (parenthesized_expression "((uVar21 != 0) && (*(int *)(uVar2 + 0x14) != 0))" (( "(") (binary_expression "(uVar21 != 0) && (*(int *)(uVar2 + 0x14) != 0)" (parenthesized_expression "(uVar21 != 0)" (( "(") (binary_expression "uVar21 != 0" (identifier "uVar21") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(uVar2 + 0x14) != 0)" (( "(") (binary_expression "*(int *)(uVar2 + 0x14) != 0" (pointer_expression "*(int *)(uVar2 + 0x14)" (* "*") (cast_expression "(int *)(uVar2 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x14)" (( "(") (binary_expression "uVar2 + 0x14" (identifier "uVar2") (+ "+") (number_literal "0x14")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    for (; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n      if (local_6c == 0) goto LAB_00017f30;\n      local_6c = local_6c - 1;\n      local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n      local_60 = local_60 + 1;\n    }\n    if (*(uint *)(uVar2 + 0x20) != local_64) {\n      param_1[6] = (int)"incorrect length check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      goto LAB_00017f32;\n    }\n    uVar15 = 0;\n    local_64 = 0;\n  }" ({ "{") (for_statement "for (; uVar15 < 0x20; uVar15 = uVar15 + 8) {\n      if (local_6c == 0) goto LAB_00017f30;\n      local_6c = local_6c - 1;\n      local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n      local_60 = local_60 + 1;\n    }" (for "for") (( "(") (; ";") (binary_expression "uVar15 < 0x20" (identifier "uVar15") (< "<") (number_literal "0x20")) (; ";") (assignment_expression "uVar15 = uVar15 + 8" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 8" (identifier "uVar15") (+ "+") (number_literal "8"))) () ")") (compound_statement "{\n      if (local_6c == 0) goto LAB_00017f30;\n      local_6c = local_6c - 1;\n      local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));\n      local_60 = local_60 + 1;\n    }" ({ "{") (if_statement "if (local_6c == 0) goto LAB_00017f30;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017f30;" (goto "goto") (statement_identifier "LAB_00017f30") (; ";"))) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" (identifier "local_6c") (= "=") (binary_expression "local_6c - 1" (identifier "local_6c") (- "-") (number_literal "1"))) (; ";")) (expression_statement "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f))" (identifier "local_64") (= "=") (binary_expression "local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f))" (identifier "local_64") (+ "+") (parenthesized_expression "((uint)*local_60 << ((byte)uVar15 & 0x1f))" (( "(") (binary_expression "(uint)*local_60 << ((byte)uVar15 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "local_60")) (<< "<<") (parenthesized_expression "((byte)uVar15 & 0x1f)" (( "(") (binary_expression "(byte)uVar15 & 0x1f" (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15")) (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" (identifier "local_60") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if (*(uint *)(uVar2 + 0x20) != local_64) {\n      param_1[6] = (int)"incorrect length check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      goto LAB_00017f32;\n    }" (if "if") (parenthesized_expression "(*(uint *)(uVar2 + 0x20) != local_64)" (( "(") (binary_expression "*(uint *)(uVar2 + 0x20) != local_64" (pointer_expression "*(uint *)(uVar2 + 0x20)" (* "*") (cast_expression "(uint *)(uVar2 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x20)" (( "(") (binary_expression "uVar2 + 0x20" (identifier "uVar2") (+ "+") (number_literal "0x20")) () ")")))) (!= "!=") (identifier "local_64")) () ")")) (compound_statement "{\n      param_1[6] = (int)"incorrect length check";\n      *(undefined4 *)(uVar2 + 4) = 0x3f51;\n      uVar21 = 0xfffffffd;\n      goto LAB_00017f32;\n    }" ({ "{") (expression_statement "param_1[6] = (int)"incorrect length check";" (assignment_expression "param_1[6] = (int)"incorrect length check"" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (cast_expression "(int)"incorrect length check"" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (string_literal ""incorrect length check"" (" """) (string_content "incorrect length check") (" """)))) (; ";")) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f51;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f51" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f51")) (; ";")) (expression_statement "uVar21 = 0xfffffffd;" (assignment_expression "uVar21 = 0xfffffffd" (identifier "uVar21") (= "=") (number_literal "0xfffffffd")) (; ";")) (goto_statement "goto LAB_00017f32;" (goto "goto") (statement_identifier "LAB_00017f32") (; ";")) (} "}"))) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" (identifier "local_64") (= "=") (number_literal "0")) (; ";")) (} "}")))) (identifier "uVar21") (= "=") (number_literal "1") (; ";") (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f50;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f50" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f50")) (; ";")) (goto_statement "goto LAB_00017f32;" (goto "goto") (statement_identifier "LAB_00017f32") (; ";")) (labeled_statement "LAB_00018d40:\n  uVar21 = 0;" (statement_identifier "LAB_00018d40") (: ":") (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";"))) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" (identifier "local_60") (= "=") (identifier "pbVar20")) (; ";")) (goto_statement "goto LAB_00017f32;" (goto "goto") (statement_identifier "LAB_00017f32") (; ";")) (labeled_statement "code_r0x00018d1f:\n  *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;" (statement_identifier "code_r0x00018d1f") (: ":") (expression_statement "*(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;" (assignment_expression "*(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff" (pointer_expression "*(undefined4 *)(uVar2 + 0x1bc8)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x1bc8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1bc8)" (( "(") (binary_expression "uVar2 + 0x1bc8" (identifier "uVar2") (+ "+") (number_literal "0x1bc8")) () ")")))) (= "=") (number_literal "0xffffffff")) (; ";"))) (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f3f;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f3f" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f3f")) (; ";")) (labeled_statement "LAB_00017f13:\n  if (param_2 - 5U < 2) goto LAB_00017f30;" (statement_identifier "LAB_00017f13") (: ":") (if_statement "if (param_2 - 5U < 2) goto LAB_00017f30;" (if "if") (parenthesized_expression "(param_2 - 5U < 2)" (( "(") (binary_expression "param_2 - 5U < 2" (binary_expression "param_2 - 5U" (identifier "param_2") (- "-") (number_literal "5U")) (< "<") (number_literal "2")) () ")")) (goto_statement "goto LAB_00017f30;" (goto "goto") (statement_identifier "LAB_00017f30") (; ";")))) (goto_statement "goto LAB_0001790a;" (goto "goto") (statement_identifier "LAB_0001790a") (; ";")) (while "while") (parenthesized_expression "(local_6c != 0)" (( "(") (binary_expression "local_6c != 0" (identifier "local_6c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00017970:\n    pbVar20 = local_60 + 1;\n    local_6c = local_6c - 1;\n    bVar25 = (byte)uVar15;\n    uVar15 = uVar15 + 8;\n    local_64 = local_64 + ((uint)*local_60 << (bVar25 & 0x1f));\n    local_60 = pbVar20;\n    if (0x1f < uVar15) goto LAB_00017996;\n  }" ({ "{") (labeled_statement "LAB_00017970:\n    pbVar20 = local_60 + 1;" (statement_identifier "LAB_00017970") (: ":") (expression_statement "pbVar20 = local_60 + 1;" (assignment_expression "pbVar20 = local_60 + 1" (identifier "pbVar20") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "local_6c = local_6c - 1;" (assignment_expression "local_6c = local_6c - 1" (identifier "local_6c") (= "=") (binary_expression "local_6c - 1" (identifier "local_6c") (- "-") (number_literal "1"))) (; ";")) (expression_statement "bVar25 = (byte)uVar15;" (assignment_expression "bVar25 = (byte)uVar15" (identifier "bVar25") (= "=") (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15"))) (; ";")) (expression_statement "uVar15 = uVar15 + 8;" (assignment_expression "uVar15 = uVar15 + 8" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 8" (identifier "uVar15") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "local_64 = local_64 + ((uint)*local_60 << (bVar25 & 0x1f));" (assignment_expression "local_64 = local_64 + ((uint)*local_60 << (bVar25 & 0x1f))" (identifier "local_64") (= "=") (binary_expression "local_64 + ((uint)*local_60 << (bVar25 & 0x1f))" (identifier "local_64") (+ "+") (parenthesized_expression "((uint)*local_60 << (bVar25 & 0x1f))" (( "(") (binary_expression "(uint)*local_60 << (bVar25 & 0x1f)" (binary_expression "(uint)*local_60" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "local_60")) (<< "<<") (parenthesized_expression "(bVar25 & 0x1f)" (( "(") (binary_expression "bVar25 & 0x1f" (identifier "bVar25") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" (identifier "local_60") (= "=") (identifier "pbVar20")) (; ";")) (if_statement "if (0x1f < uVar15) goto LAB_00017996;" (if "if") (parenthesized_expression "(0x1f < uVar15)" (( "(") (binary_expression "0x1f < uVar15" (number_literal "0x1f") (< "<") (identifier "uVar15")) () ")")) (goto_statement "goto LAB_00017996;" (goto "goto") (statement_identifier "LAB_00017996") (; ";"))) (} "}")) (labeled_statement "LAB_000190a2:\n  uVar21 = 0;" (statement_identifier "LAB_000190a2") (: ":") (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";"))) (expression_statement "local_60 = pbVar20;" (assignment_expression "local_60 = pbVar20" (identifier "local_60") (= "=") (identifier "pbVar20")) (; ";")) (labeled_statement "LAB_00017f32:\n  *param_1 = (int)local_60;" (statement_identifier "LAB_00017f32") (: ":") (expression_statement "*param_1 = (int)local_60;" (assignment_expression "*param_1 = (int)local_60" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(int)local_60" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_60"))) (; ";"))) (expression_statement "param_1[3] = (int)__dest;" (assignment_expression "param_1[3] = (int)__dest" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(int)__dest" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__dest"))) (; ";")) (expression_statement "param_1[1] = local_6c;" (assignment_expression "param_1[1] = local_6c" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_6c")) (; ";")) (expression_statement "param_1[4] = local_5c;" (assignment_expression "param_1[4] = local_5c" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "local_5c")) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x3c) = local_64;" (assignment_expression "*(uint *)(uVar2 + 0x3c) = local_64" (pointer_expression "*(uint *)(uVar2 + 0x3c)" (* "*") (cast_expression "(uint *)(uVar2 + 0x3c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x3c)" (( "(") (binary_expression "uVar2 + 0x3c" (identifier "uVar2") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (identifier "local_64")) (; ";")) (expression_statement "*(uint *)(uVar2 + 0x40) = uVar15;" (assignment_expression "*(uint *)(uVar2 + 0x40) = uVar15" (pointer_expression "*(uint *)(uVar2 + 0x40)" (* "*") (cast_expression "(uint *)(uVar2 + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x40)" (( "(") (binary_expression "uVar2 + 0x40" (identifier "uVar2") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "uVar15")) (; ";")) (if_statement "if ((*(int *)(uVar2 + 0x2c) != 0) ||\n     (((local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&\n      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)))))) {\n    iVar5 = FUN_000172e0();\n    if (iVar5 != 0) {\n      *(undefined4 *)(uVar2 + 4) = 0x3f52;\ncode_r0x00018770:\n      uVar21 = 0xfffffffc;\n      goto LAB_00018778;\n    }\n    local_6c = param_1[1];\n    local_5c = param_1[4];\n  }" (if "if") (parenthesized_expression "((*(int *)(uVar2 + 0x2c) != 0) ||\n     (((local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&\n      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4))))))" (( "(") (binary_expression "(*(int *)(uVar2 + 0x2c) != 0) ||\n     (((local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&\n      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)))))" (parenthesized_expression "(*(int *)(uVar2 + 0x2c) != 0)" (( "(") (binary_expression "*(int *)(uVar2 + 0x2c) != 0" (pointer_expression "*(int *)(uVar2 + 0x2c)" (* "*") (cast_expression "(int *)(uVar2 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x2c)" (( "(") (binary_expression "uVar2 + 0x2c" (identifier "uVar2") (+ "+") (number_literal "0x2c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(((local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&\n      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)))))" (( "(") (parenthesized_expression "((local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&\n      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4))))" (( "(") (binary_expression "(local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&\n      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)))" (parenthesized_expression "(local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51))" (( "(") (binary_expression "local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)" (binary_expression "local_5c != local_50" (identifier "local_5c") (!= "!=") (identifier "local_50")) (&& "&&") (parenthesized_expression "(*(uint *)(uVar2 + 4) < 0x3f51)" (( "(") (binary_expression "*(uint *)(uVar2 + 4) < 0x3f51" (pointer_expression "*(uint *)(uVar2 + 4)" (* "*") (cast_expression "(uint *)(uVar2 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (< "<") (number_literal "0x3f51")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)))" (( "(") (parenthesized_expression "(*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4))" (( "(") (binary_expression "*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)" (binary_expression "*(uint *)(uVar2 + 4) < 0x3f4e" (pointer_expression "*(uint *)(uVar2 + 4)" (* "*") (cast_expression "(uint *)(uVar2 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (< "<") (number_literal "0x3f4e")) (|| "||") (parenthesized_expression "(param_2 != 4)" (( "(") (binary_expression "param_2 != 4" (identifier "param_2") (!= "!=") (number_literal "4")) () ")"))) () ")")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    iVar5 = FUN_000172e0();\n    if (iVar5 != 0) {\n      *(undefined4 *)(uVar2 + 4) = 0x3f52;\ncode_r0x00018770:\n      uVar21 = 0xfffffffc;\n      goto LAB_00018778;\n    }\n    local_6c = param_1[1];\n    local_5c = param_1[4];\n  }" ({ "{") (expression_statement "iVar5 = FUN_000172e0();" (assignment_expression "iVar5 = FUN_000172e0()" (identifier "iVar5") (= "=") (call_expression "FUN_000172e0()" (identifier "FUN_000172e0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar5 != 0) {\n      *(undefined4 *)(uVar2 + 4) = 0x3f52;\ncode_r0x00018770:\n      uVar21 = 0xfffffffc;\n      goto LAB_00018778;\n    }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      *(undefined4 *)(uVar2 + 4) = 0x3f52;\ncode_r0x00018770:\n      uVar21 = 0xfffffffc;\n      goto LAB_00018778;\n    }" ({ "{") (expression_statement "*(undefined4 *)(uVar2 + 4) = 0x3f52;" (assignment_expression "*(undefined4 *)(uVar2 + 4) = 0x3f52" (pointer_expression "*(undefined4 *)(uVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x3f52")) (; ";")) (labeled_statement "code_r0x00018770:\n      uVar21 = 0xfffffffc;" (statement_identifier "code_r0x00018770") (: ":") (expression_statement "uVar21 = 0xfffffffc;" (assignment_expression "uVar21 = 0xfffffffc" (identifier "uVar21") (= "=") (number_literal "0xfffffffc")) (; ";"))) (goto_statement "goto LAB_00018778;" (goto "goto") (statement_identifier "LAB_00018778") (; ";")) (} "}"))) (expression_statement "local_6c = param_1[1];" (assignment_expression "local_6c = param_1[1]" (identifier "local_6c") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_5c = param_1[4];" (assignment_expression "local_5c = param_1[4]" (identifier "local_5c") (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (} "}"))) (expression_statement "iVar5 = local_50 - local_5c;" (assignment_expression "iVar5 = local_50 - local_5c" (identifier "iVar5") (= "=") (binary_expression "local_50 - local_5c" (identifier "local_50") (- "-") (identifier "local_5c"))) (; ";")) (expression_statement "param_1[2] = param_1[2] + (uVar1 - local_6c);" (assignment_expression "param_1[2] = param_1[2] + (uVar1 - local_6c)" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "param_1[2] + (uVar1 - local_6c)" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (+ "+") (parenthesized_expression "(uVar1 - local_6c)" (( "(") (binary_expression "uVar1 - local_6c" (identifier "uVar1") (- "-") (identifier "local_6c")) () ")")))) (; ";")) (expression_statement "param_1[5] = param_1[5] + iVar5;" (assignment_expression "param_1[5] = param_1[5] + iVar5" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "param_1[5] + iVar5" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (+ "+") (identifier "iVar5"))) (; ";")) (expression_statement "*(int *)(uVar2 + 0x20) = *(int *)(uVar2 + 0x20) + iVar5;" (assignment_expression "*(int *)(uVar2 + 0x20) = *(int *)(uVar2 + 0x20) + iVar5" (pointer_expression "*(int *)(uVar2 + 0x20)" (* "*") (cast_expression "(int *)(uVar2 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x20)" (( "(") (binary_expression "uVar2 + 0x20" (identifier "uVar2") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (binary_expression "*(int *)(uVar2 + 0x20) + iVar5" (pointer_expression "*(int *)(uVar2 + 0x20)" (* "*") (cast_expression "(int *)(uVar2 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x20)" (( "(") (binary_expression "uVar2 + 0x20" (identifier "uVar2") (+ "+") (number_literal "0x20")) () ")")))) (+ "+") (identifier "iVar5"))) (; ";")) (if_statement "if (((*(byte *)(uVar2 + 0xc) & 4) != 0) && (iVar5 != 0)) {\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    else {\n      iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    *(int *)(uVar2 + 0x1c) = iVar7;\n    param_1[0xc] = iVar7;\n  }" (if "if") (parenthesized_expression "(((*(byte *)(uVar2 + 0xc) & 4) != 0) && (iVar5 != 0))" (( "(") (binary_expression "((*(byte *)(uVar2 + 0xc) & 4) != 0) && (iVar5 != 0)" (parenthesized_expression "((*(byte *)(uVar2 + 0xc) & 4) != 0)" (( "(") (binary_expression "(*(byte *)(uVar2 + 0xc) & 4) != 0" (parenthesized_expression "(*(byte *)(uVar2 + 0xc) & 4)" (( "(") (binary_expression "*(byte *)(uVar2 + 0xc) & 4" (pointer_expression "*(byte *)(uVar2 + 0xc)" (* "*") (cast_expression "(byte *)(uVar2 + 0xc)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0xc)" (( "(") (binary_expression "uVar2 + 0xc" (identifier "uVar2") (+ "+") (number_literal "0xc")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    else {\n      iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    *(int *)(uVar2 + 0x1c) = iVar7;\n    param_1[0xc] = iVar7;\n  }" ({ "{") (if_statement "if (*(int *)(uVar2 + 0x14) == 0) {\n      iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }\n    else {\n      iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }" (if "if") (parenthesized_expression "(*(int *)(uVar2 + 0x14) == 0)" (( "(") (binary_expression "*(int *)(uVar2 + 0x14) == 0" (pointer_expression "*(int *)(uVar2 + 0x14)" (* "*") (cast_expression "(int *)(uVar2 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x14)" (( "(") (binary_expression "uVar2 + 0x14" (identifier "uVar2") (+ "+") (number_literal "0x14")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }" ({ "{") (expression_statement "iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);" (assignment_expression "iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5)" (identifier "iVar7") (= "=") (call_expression "adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5)" (identifier "adler32") (argument_list "(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5)" (( "(") (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (, ",") (binary_expression "param_1[3] - iVar5" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (- "-") (identifier "iVar5")) (, ",") (identifier "iVar5") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }" (else "else") (compound_statement "{\n      iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);\n    }" ({ "{") (expression_statement "iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);" (assignment_expression "iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5)" (identifier "iVar7") (= "=") (call_expression "crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5)" (identifier "crc32") (argument_list "(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5)" (( "(") (pointer_expression "*(undefined4 *)(uVar2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(uVar2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (, ",") (binary_expression "param_1[3] - iVar5" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (- "-") (identifier "iVar5")) (, ",") (identifier "iVar5") () ")")))) (; ";")) (} "}")))) (expression_statement "*(int *)(uVar2 + 0x1c) = iVar7;" (assignment_expression "*(int *)(uVar2 + 0x1c) = iVar7" (pointer_expression "*(int *)(uVar2 + 0x1c)" (* "*") (cast_expression "(int *)(uVar2 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x1c)" (( "(") (binary_expression "uVar2 + 0x1c" (identifier "uVar2") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "param_1[0xc] = iVar7;" (assignment_expression "param_1[0xc] = iVar7" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "iVar7")) (; ";")) (} "}"))) (expression_statement "iVar7 = *(int *)(uVar2 + 0x40);" (assignment_expression "iVar7 = *(int *)(uVar2 + 0x40)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(uVar2 + 0x40)" (* "*") (cast_expression "(int *)(uVar2 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 0x40)" (( "(") (binary_expression "uVar2 + 0x40" (identifier "uVar2") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (if_statement "if (*(int *)(uVar2 + 8) != 0) {\n    iVar7 = iVar7 + 0x40;\n  }" (if "if") (parenthesized_expression "(*(int *)(uVar2 + 8) != 0)" (( "(") (binary_expression "*(int *)(uVar2 + 8) != 0" (pointer_expression "*(int *)(uVar2 + 8)" (* "*") (cast_expression "(int *)(uVar2 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 8)" (( "(") (binary_expression "uVar2 + 8" (identifier "uVar2") (+ "+") (number_literal "8")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar7 = iVar7 + 0x40;\n  }" ({ "{") (expression_statement "iVar7 = iVar7 + 0x40;" (assignment_expression "iVar7 = iVar7 + 0x40" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 0x40" (identifier "iVar7") (+ "+") (number_literal "0x40"))) (; ";")) (} "}"))) (expression_statement "iVar3 = *(int *)(uVar2 + 4);" (assignment_expression "iVar3 = *(int *)(uVar2 + 4)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(uVar2 + 4)" (* "*") (cast_expression "(int *)(uVar2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + 4)" (( "(") (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" (identifier "local_4c") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar3 == 0x3f3f) {\n    iVar7 = iVar7 + 0x80;\n  }\n  else if ((iVar3 == 0x3f47) || (iVar3 == 0x3f42)) {\n    local_4c = 0x100;\n  }" (if "if") (parenthesized_expression "(iVar3 == 0x3f3f)" (( "(") (binary_expression "iVar3 == 0x3f3f" (identifier "iVar3") (== "==") (number_literal "0x3f3f")) () ")")) (compound_statement "{\n    iVar7 = iVar7 + 0x80;\n  }" ({ "{") (expression_statement "iVar7 = iVar7 + 0x80;" (assignment_expression "iVar7 = iVar7 + 0x80" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 0x80" (identifier "iVar7") (+ "+") (number_literal "0x80"))) (; ";")) (} "}")) (else_clause "else if ((iVar3 == 0x3f47) || (iVar3 == 0x3f42)) {\n    local_4c = 0x100;\n  }" (else "else") (if_statement "if ((iVar3 == 0x3f47) || (iVar3 == 0x3f42)) {\n    local_4c = 0x100;\n  }" (if "if") (parenthesized_expression "((iVar3 == 0x3f47) || (iVar3 == 0x3f42))" (( "(") (binary_expression "(iVar3 == 0x3f47) || (iVar3 == 0x3f42)" (parenthesized_expression "(iVar3 == 0x3f47)" (( "(") (binary_expression "iVar3 == 0x3f47" (identifier "iVar3") (== "==") (number_literal "0x3f47")) () ")")) (|| "||") (parenthesized_expression "(iVar3 == 0x3f42)" (( "(") (binary_expression "iVar3 == 0x3f42" (identifier "iVar3") (== "==") (number_literal "0x3f42")) () ")"))) () ")")) (compound_statement "{\n    local_4c = 0x100;\n  }" ({ "{") (expression_statement "local_4c = 0x100;" (assignment_expression "local_4c = 0x100" (identifier "local_4c") (= "=") (number_literal "0x100")) (; ";")) (} "}"))))) (expression_statement "param_1[0xb] = iVar7 + local_4c;" (assignment_expression "param_1[0xb] = iVar7 + local_4c" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "iVar7 + local_4c" (identifier "iVar7") (+ "+") (identifier "local_4c"))) (; ";")) (if_statement "if (((uVar1 - local_6c == 0 && iVar5 == 0) || (param_2 == 4)) && (uVar21 == 0)) {\n    uVar21 = 0xfffffffb;\n  }" (if "if") (parenthesized_expression "(((uVar1 - local_6c == 0 && iVar5 == 0) || (param_2 == 4)) && (uVar21 == 0))" (( "(") (binary_expression "((uVar1 - local_6c == 0 && iVar5 == 0) || (param_2 == 4)) && (uVar21 == 0)" (parenthesized_expression "((uVar1 - local_6c == 0 && iVar5 == 0) || (param_2 == 4))" (( "(") (binary_expression "(uVar1 - local_6c == 0 && iVar5 == 0) || (param_2 == 4)" (parenthesized_expression "(uVar1 - local_6c == 0 && iVar5 == 0)" (( "(") (binary_expression "uVar1 - local_6c == 0 && iVar5 == 0" (binary_expression "uVar1 - local_6c == 0" (binary_expression "uVar1 - local_6c" (identifier "uVar1") (- "-") (identifier "local_6c")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0"))) () ")")) (|| "||") (parenthesized_expression "(param_2 == 4)" (( "(") (binary_expression "param_2 == 4" (identifier "param_2") (== "==") (number_literal "4")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(uVar21 == 0)" (( "(") (binary_expression "uVar21 == 0" (identifier "uVar21") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    uVar21 = 0xfffffffb;\n  }" ({ "{") (expression_statement "uVar21 = 0xfffffffb;" (assignment_expression "uVar21 = 0xfffffffb" (identifier "uVar21") (= "=") (number_literal "0xfffffffb")) (; ";")) (} "}"))) (labeled_statement "LAB_00018778:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar21;\n  }" (statement_identifier "LAB_00018778") (: ":") (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar21;\n  }" (if "if") (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return uVar21;\n  }" ({ "{") (return_statement "return uVar21;" (return "return") (identifier "uVar21") (; ";")) (} "}"))))) (expression_statement "FUN_0001eba0();" (call_expression "FUN_0001eba0()" (identifier "FUN_0001eba0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Unknown calling convention */

int inflate(z_streamp strm,int flush)

{
  int iVar1;
  Posf *pPVar2;
  internal_state *piVar3;
  uInt uVar4;
  byte bVar5;
  int iVar6;
  uint uVar7;
  char *pcVar8;
  Posf *pPVar9;
  ct_data_s cVar10;
  int iVar11;
  Bytef *pBVar12;
  gz_headerp pgVar13;
  ct_data_s cVar14;
  ushort *puVar15;
  byte bVar16;
  byte bVar17;
  undefined2 uVar18;
  uint uVar19;
  ct_data_s cVar20;
  ct_data_s cVar21;
  ct_data_s cVar22;
  undefined2 *puVar23;
  uint uVar24;
  ushort uVar25;
  byte *pbVar26;
  Posf *pPVar27;
  Bytef *pBVar28;
  uInt uVar29;
  Bytef *end;
  byte *pbVar31;
  int in_GS_OFFSET;
  byte bVar32;
  Posf *local_6c;
  gz_headerp local_64;
  byte *local_60;
  Posf *local_5c;
  Posf *local_50;
  int local_4c;
  uInt local_48;
  Posf *local_40;
  ct_data_s local_38;
  uchar hbuf [4];
  Bytef *pBVar30;
  
  bVar32 = 0;
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  if ((((strm != (z_streamp)0x0) && (strm->zalloc != (alloc_func)0x0)) &&
      (strm->zfree != (free_func)0x0)) &&
     ((iVar6 = inflateStateCheck(strm), iVar6 == 0 && (end = strm->next_out, end != (Bytef *)0x0))))
  {
    local_60 = strm->next_in;
    pPVar2 = (Posf *)strm->avail_in;
    if ((local_60 != (byte *)0x0) || (pPVar2 == (Posf *)0x0)) {
      piVar3 = strm->state;
      iVar6 = piVar3->status;
      if (iVar6 == 0x3f3f) {
        piVar3->status = 0x3f40;
        iVar6 = 0x3f40;
      }
      local_50 = (Posf *)strm->avail_out;
      local_64 = (gz_headerp)piVar3->window_size;
      cVar20 = (ct_data_s)piVar3->prev;
      local_6c = pPVar2;
      local_5c = local_50;
LAB_000178c9:
      switch(iVar6) {
      case 0x3f34:
        uVar7 = piVar3->pending_buf_size;
        if (uVar7 != 0) {
          if (0xf < (uint)cVar20) goto LAB_00018ec6;
          if (local_6c != (Posf *)0x0) goto LAB_00018ea0;
          goto LAB_00017f30;
        }
        piVar3->status = 0x3f40;
      case 0x3f40:
_L106:
        bVar16 = cVar20.fc;
        if (piVar3->pending_buf != (Bytef *)0x0) {
          cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8);
          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 7));
          piVar3->status = 0x3f4e;
          goto _L120;
        }
        pPVar27 = (Posf *)0x0;
        if ((uint)cVar20 < 3) {
          if (local_6c == (Posf *)0x0) goto LAB_00017f32;
          local_6c = (Posf *)((int)local_6c - 1);
          cVar20 = (ct_data_s)((int)cVar20 + 8);
          bVar17 = *local_60;
          local_60 = local_60 + 1;
          local_64 = (gz_headerp)((int)&local_64->text + ((uint)bVar17 << (bVar16 & 0x1f)));
        }
        piVar3->pending_buf = (Bytef *)((uint)local_64 & 1);
        uVar7 = (uint)local_64 >> 1 & 3;
        if (uVar7 == 2) {
          local_64 = (gz_headerp)((uint)local_64 >> 3);
          cVar20 = (ct_data_s)((int)cVar20 - 3);
          piVar3->status = 0x3f44;
_L110:
          for (; (uint)cVar20 < 0xe; cVar20 = (ct_data_s)((int)cVar20 + 8)) {
            if (local_6c == (Posf *)0x0) goto LAB_00017f30;
            local_6c = (Posf *)((int)local_6c - 1);
            local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));
            local_60 = local_60 + 1;
          }
          cVar20 = (ct_data_s)((int)cVar20 - 0xe);
          uVar24 = ((uint)local_64 & 0x1f) + 0x101;
          uVar7 = ((uint)local_64 >> 5 & 0x1f) + 1;
          uVar19 = ((uint)local_64 >> 10 & 0xf) + 4;
          local_64 = (gz_headerp)((uint)local_64 >> 0xe);
          piVar3->prev_match = uVar24;
          piVar3->match_available = uVar7;
          piVar3->match_length = uVar19;
          if ((uVar7 < 0x1f) && (uVar24 < 0x11f)) {
            uVar7 = 0;
            piVar3->strstart = 0;
            piVar3->status = 0x3f45;
LAB_000184b2:
            uVar24 = uVar7 + 1;
            do {
              uVar7 = uVar24;
              if ((uint)cVar20 < 3) {
                if (local_6c == (Posf *)0x0) {
                  pPVar27 = (Posf *)0x0;
                  local_6c = (Posf *)0x0;
                  goto LAB_00017f32;
                }
                local_6c = (Posf *)((int)local_6c - 1);
                bVar16 = cVar20.fc;
                cVar20 = (ct_data_s)((int)cVar20 + 8);
                local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))
                ;
                local_60 = local_60 + 1;
              }
              cVar20 = (ct_data_s)((int)cVar20 - 3);
              piVar3->strstart = uVar7;
              pgVar13 = (gz_headerp)((uint)local_64 >> 3);
              *(ushort *)
               ((int)(piVar3->dyn_ltree + -8) +
               (uint)*(ushort *)(lenfix_3685 + uVar7 * 2 + 0x7fe) * 2) = (ushort)local_64 & 7;
              local_64 = pgVar13;
              uVar24 = uVar7 + 1;
            } while (uVar19 + 1 != uVar7 + 1);
LAB_00019253:
            if (uVar7 < 0x13) {
              puVar15 = inflate::order + uVar7;
              do {
                uVar25 = *puVar15;
                puVar15 = puVar15 + 1;
                *(undefined2 *)((int)(piVar3->dyn_ltree + -8) + (uint)uVar25 * 2) = 0;
              } while (puVar15 != (ushort *)&UNK_000221e6);
              piVar3->strstart = 0x13;
            }
            piVar3->hash_shift = 7;
            piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);
            piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);
            iVar6 = inflate_table(CODES,(ushort *)&piVar3->lookahead,0x13,
                                  (code **)&piVar3->match_start,&piVar3->hash_shift,
                                  (ushort *)(piVar3->dyn_ltree + 0x98));
            if (iVar6 == 0) {
              local_48 = 0;
              piVar3->strstart = 0;
              piVar3->status = 0x3f46;
LAB_000185db:
              uVar7 = piVar3->prev_match;
              uVar19 = uVar7 + piVar3->match_available;
              while (local_48 < uVar19) {
                uVar24 = ~(-1 << ((byte)piVar3->hash_shift & 0x1f));
                iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;
                cVar21._1_3_ = 0;
                cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);
                uVar25 = *(ushort *)(iVar6 + 2);
                if ((uint)cVar20 < (uint)cVar21) {
                  if (local_6c != (Posf *)0x0) {
                    while( true ) {
                      pbVar26 = local_60 + 1;
                      local_6c = (Posf *)((int)local_6c - 1);
                      bVar16 = cVar20.fc;
                      cVar20 = (ct_data_s)((int)cVar20 + 8);
                      local_64 = (gz_headerp)
                                 ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));
                      iVar6 = piVar3->hash_bits + (uVar24 & (uint)local_64) * 4;
                      cVar21._1_3_ = 0;
                      cVar21.fc.freq._0_1_ = *(byte *)(iVar6 + 1);
                      uVar25 = *(ushort *)(iVar6 + 2);
                      local_60 = pbVar26;
                      if ((uint)cVar21 <= (uint)cVar20) break;
                      if (local_6c == (Posf *)0x0) goto LAB_00018d40;
                    }
                    goto LAB_00018694;
                  }
LAB_000192ef:
                  pPVar27 = (Posf *)0x0;
                  goto LAB_00017f32;
                }
LAB_00018694:
                bVar16 = cVar21.fc;
                if (uVar25 < 0x10) {
                  local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));
                  cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);
                  piVar3->strstart = local_48 + 1;
                  *(ushort *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2) = uVar25;
                  local_48 = local_48 + 1;
                }
                else {
                  if (uVar25 == 0x10) {
                    if ((uint)cVar20 < (int)cVar21 + 2U) {
                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;
                      while( true ) {
                        pbVar26 = local_60 + 1;
                        local_6c = (Posf *)((int)local_6c - 1);
                        bVar17 = cVar20.fc;
                        cVar20 = (ct_data_s)((int)cVar20 + 8);
                        local_64 = (gz_headerp)
                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));
                        local_60 = pbVar26;
                        if ((int)cVar21 + 2U <= (uint)cVar20) break;
                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;
                      }
                    }
                    cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);
                    local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));
                    if (local_48 == 0) {
                      strm->msg = "invalid bit length repeat";
                      piVar3->status = 0x3f51;
                      goto _L590;
                    }
                    uVar24 = (uint)local_64 & 3;
                    local_64 = (gz_headerp)((uint)local_64 >> 2);
                    cVar20 = (ct_data_s)((int)cVar20 - 2);
                    uVar18 = *(undefined2 *)((int)piVar3->dyn_ltree + local_48 * 2 + -0x22);
                    iVar6 = uVar24 + 3;
                  }
                  else if (uVar25 == 0x11) {
                    if ((uint)cVar20 < (int)cVar21 + 3U) {
                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;
                      while( true ) {
                        pbVar26 = local_60 + 1;
                        local_6c = (Posf *)((int)local_6c - 1);
                        bVar17 = cVar20.fc;
                        cVar20 = (ct_data_s)((int)cVar20 + 8);
                        local_64 = (gz_headerp)
                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));
                        local_60 = pbVar26;
                        if ((int)cVar21 + 3U <= (uint)cVar20) break;
                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;
                      }
                    }
                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);
                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 3);
                    iVar6 = (uVar24 & 7) + 3;
                    uVar18 = 0;
                    local_64 = (gz_headerp)(uVar24 >> 3);
                  }
                  else {
                    if ((uint)cVar20 < (int)cVar21 + 7U) {
                      if (local_6c == (Posf *)0x0) goto LAB_000192ef;
                      while( true ) {
                        pbVar26 = local_60 + 1;
                        local_6c = (Posf *)((int)local_6c - 1);
                        bVar17 = cVar20.fc;
                        cVar20 = (ct_data_s)((int)cVar20 + 8);
                        local_64 = (gz_headerp)
                                   ((int)&local_64->text + ((uint)*local_60 << (bVar17 & 0x1f)));
                        local_60 = pbVar26;
                        if ((int)cVar21 + 7U <= (uint)cVar20) break;
                        if (local_6c == (Posf *)0x0) goto LAB_00018d40;
                      }
                    }
                    uVar24 = (uint)local_64 >> (bVar16 & 0x1f);
                    cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar21) - 7);
                    iVar6 = (uVar24 & 0x7f) + 0xb;
                    uVar18 = 0;
                    local_64 = (gz_headerp)(uVar24 >> 7);
                  }
                  uVar24 = iVar6 + local_48;
                  if (uVar19 < uVar24) {
                    strm->msg = "invalid bit length repeat";
                    piVar3->status = 0x3f51;
                    goto _L590;
                  }
                  puVar23 = (undefined2 *)((int)(piVar3->dyn_ltree + -8) + local_48 * 2);
                  do {
                    *puVar23 = uVar18;
                    puVar23 = puVar23 + 1;
                  } while (puVar23 != (undefined2 *)((int)(piVar3->dyn_ltree + -8) + uVar24 * 2));
                  piVar3->strstart = uVar24;
                  local_48 = uVar24;
                }
              }
              if (piVar3->status == 0x3f51) goto _L590;
              if (piVar3->dyn_ltree[0x78].fc.freq != 0) {
                piVar3->hash_shift = 9;
                piVar3->match_start = (uInt)(piVar3->dyn_ltree + 0x128);
                piVar3->hash_bits = (uInt)(piVar3->dyn_ltree + 0x128);
                iVar6 = inflate_table(LENS,(ushort *)&piVar3->lookahead,uVar7,
                                      (code **)&piVar3->match_start,&piVar3->hash_shift,
                                      (ushort *)(piVar3->dyn_ltree + 0x98));
                if (iVar6 == 0) {
                  piVar3->block_start = 6;
                  piVar3->hash_mask = piVar3->match_start;
                  iVar6 = inflate_table(DISTS,(ushort *)
                                              ((int)&piVar3->lookahead + piVar3->prev_match * 2),
                                        piVar3->match_available,(code **)&piVar3->match_start,
                                        (uint *)&piVar3->block_start,
                                        (ushort *)(piVar3->dyn_ltree + 0x98));
                  if (iVar6 == 0) {
                    piVar3->status = 0x3f47;
                    if (flush != 6) {
_L113:
                      do {
                        piVar3->status = 0x3f48;
_L114:
                        if (((Posf *)0x5 < local_6c) && ((Posf *)0x101 < local_5c)) {
                          strm->next_out = end;
                          strm->avail_out = (uInt)local_5c;
                          strm->avail_in = (uInt)local_6c;
                          strm->next_in = local_60;
                          piVar3->prev = (Posf *)cVar20;
                          piVar3->window_size = (ulg)local_64;
                          inflate_fast(strm,(uint)local_50);
                          end = strm->next_out;
                          local_5c = (Posf *)strm->avail_out;
                          cVar20 = (ct_data_s)piVar3->prev;
                          local_60 = strm->next_in;
                          local_6c = (Posf *)strm->avail_in;
                          local_64 = (gz_headerp)piVar3->window_size;
                          iVar6 = piVar3->status;
                          if (iVar6 != 0x3f3f) goto LAB_000178c9;
                          piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;
                          piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;
                          goto _L105;
                        }
                        uVar29 = piVar3->hash_shift;
                        uVar4 = piVar3->hash_bits;
                        piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
                        piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
                        uVar7 = ~(-1 << ((byte)uVar29 & 0x1f));
                        pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);
                        bVar16 = pbVar26[1];
                        cVar22._1_3_ = 0;
                        cVar22.fc.freq._0_1_ = bVar16;
                        bVar17 = *pbVar26;
                        uVar25 = *(ushort *)(pbVar26 + 2);
                        cVar21 = cVar20;
                        if ((uint)cVar20 < (uint)cVar22) {
                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;
                          while( true ) {
                            pbVar31 = local_60 + 1;
                            local_6c = (Posf *)((int)local_6c - 1);
                            bVar16 = cVar20.fc;
                            cVar20 = (ct_data_s)((int)cVar20 + 8);
                            local_64 = (gz_headerp)
                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))
                            ;
                            pbVar26 = (byte *)(uVar4 + (uVar7 & (uint)local_64) * 4);
                            bVar16 = pbVar26[1];
                            cVar22._1_3_ = 0;
                            cVar22.fc.freq._0_1_ = bVar16;
                            bVar17 = *pbVar26;
                            uVar25 = *(ushort *)(pbVar26 + 2);
                            cVar21 = cVar20;
                            local_60 = pbVar31;
                            if ((uint)cVar22 <= (uint)cVar20) break;
                            if (local_6c == (Posf *)0x0) {
                              pPVar27 = (Posf *)0x0;
                              goto LAB_00017f32;
                            }
                          }
                        }
                        pPVar27 = (Posf *)(uint)uVar25;
                        if (bVar17 == 0) {
                          local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));
                          cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);
                          piVar3[1].dyn_ltree[0x11c] = cVar22;
                          piVar3->head = pPVar27;
LAB_000191a7:
                          piVar3->status = 0x3f4d;
LAB_00017b6a:
                          if (local_5c == (Posf *)0x0) goto LAB_00017f30;
                          local_5c = (Posf *)((int)local_5c - 1);
                          *end = (Bytef)piVar3->head;
                          piVar3->status = 0x3f48;
                          end = end + 1;
                          goto _L114;
                        }
                        bVar16 = cVar22.fc;
                        if ((bVar17 & 0xf0) == 0) {
                          uVar19 = ~(-1 << (bVar17 + bVar16 & 0x1f));
                          pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >> (bVar16 & 0x1f))
                                                     + (int)pPVar27) * 4);
                          uVar25 = *(ushort *)(pbVar26 + 2);
                          bVar17 = *pbVar26;
                          uVar7 = (uint)pbVar26[1];
                          local_38 = (ct_data_s)(uVar7 + (int)cVar22);
                          cVar20 = cVar21;
                          if ((uint)cVar21 < (uint)local_38) {
                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;
                            while( true ) {
                              pbVar31 = local_60 + 1;
                              cVar20 = (ct_data_s)((int)cVar21 + 8);
                              local_6c = (Posf *)((int)local_6c - 1);
                              local_64 = (gz_headerp)
                                         ((int)&local_64->text +
                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));
                              pbVar26 = (byte *)(uVar4 + (((uVar19 & (uint)local_64) >>
                                                          (bVar16 & 0x1f)) + (int)pPVar27) * 4);
                              uVar25 = *(ushort *)(pbVar26 + 2);
                              bVar17 = *pbVar26;
                              uVar7 = (uint)pbVar26[1];
                              local_38 = (ct_data_s)((int)cVar22 + uVar7);
                              local_60 = pbVar31;
                              if ((uint)local_38 <= (uint)cVar20) break;
                              cVar21 = cVar20;
                              if (local_6c == (Posf *)0x0) {
                                pPVar27 = (Posf *)0x0;
                                goto LAB_00017f32;
                              }
                            }
                          }
                          local_40 = (Posf *)(uint)uVar25;
                          cVar20 = (ct_data_s)(((int)cVar20 - (int)cVar22) - uVar7);
                          local_64 = (gz_headerp)
                                     (((uint)local_64 >> (bVar16 & 0x1f)) >> ((byte)uVar7 & 0x1f));
                          piVar3[1].dyn_ltree[0x11c] = local_38;
                          piVar3->head = local_40;
                          if (bVar17 != 0) goto LAB_00018d16;
                          goto LAB_000191a7;
                        }
                        local_64 = (gz_headerp)((uint)local_64 >> (bVar16 & 0x1f));
                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar22);
                        piVar3[1].dyn_ltree[0x11c] = cVar22;
                        piVar3->head = pPVar27;
LAB_00018d16:
                        if ((bVar17 & 0x20) != 0) goto code_r0x00018d1f;
                        if ((bVar17 & 0x40) != 0) {
                          pcVar8 = "invalid literal/length code";
                          goto LAB_000188eb;
                        }
                        cVar21 = (ct_data_s)(bVar17 & 0xf);
                        piVar3->hash_size = (uInt)cVar21;
                        piVar3->status = 0x3f49;
LAB_00017d07:
                        if (cVar21 == (ct_data_s)0x0) {
                          cVar22 = (ct_data_s)piVar3->head;
                        }
                        else {
                          if ((uint)cVar20 < (uint)cVar21) {
                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;
                            while( true ) {
                              pbVar26 = local_60 + 1;
                              local_6c = (Posf *)((int)local_6c - 1);
                              bVar16 = cVar20.fc;
                              cVar20 = (ct_data_s)((int)cVar20 + 8);
                              local_64 = (gz_headerp)
                                         ((int)&local_64->text +
                                         ((uint)*local_60 << (bVar16 & 0x1f)));
                              local_60 = pbVar26;
                              if ((uint)cVar21 <= (uint)cVar20) break;
                              if (local_6c == (Posf *)0x0) goto LAB_000190a2;
                            }
                          }
                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);
                          piVar3[1].dyn_ltree[0x11c] =
                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);
                          cVar22 = (ct_data_s)
                                   ((~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64) +
                                   (int)piVar3->head);
                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));
                          piVar3->head = (Posf *)cVar22;
                        }
                        piVar3[1].dyn_ltree[0x11d] = cVar22;
                        piVar3->status = 0x3f4a;
_L116:
                        uVar29 = piVar3->hash_mask;
                        uVar7 = ~(-1 << ((byte)piVar3->block_start & 0x1f));
                        pbVar26 = (byte *)(uVar29 + ((uint)local_64 & uVar7) * 4);
                        bVar16 = pbVar26[1];
                        bVar17 = *pbVar26;
                        uVar25 = *(ushort *)(pbVar26 + 2);
                        cVar10._1_3_ = 0;
                        cVar10.fc.freq._0_1_ = bVar16;
                        cVar21 = cVar20;
                        if ((uint)cVar20 < (uint)cVar10) {
                          if (local_6c == (Posf *)0x0) goto LAB_00017f30;
                          while( true ) {
                            pbVar31 = local_60 + 1;
                            local_6c = (Posf *)((int)local_6c - 1);
                            bVar16 = cVar20.fc;
                            cVar20 = (ct_data_s)((int)cVar20 + 8);
                            local_64 = (gz_headerp)
                                       ((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)))
                            ;
                            pbVar26 = (byte *)(uVar29 + (uVar7 & (uint)local_64) * 4);
                            bVar16 = pbVar26[1];
                            bVar17 = *pbVar26;
                            uVar25 = *(ushort *)(pbVar26 + 2);
                            cVar10._1_3_ = 0;
                            cVar10.fc.freq._0_1_ = bVar16;
                            cVar21 = cVar20;
                            local_60 = pbVar31;
                            if ((uint)cVar10 <= (uint)cVar20) break;
                            if (local_6c == (Posf *)0x0) {
                              pPVar27 = (Posf *)0x0;
                              goto LAB_00017f32;
                            }
                          }
                        }
                        local_48 = (uInt)uVar25;
                        if ((bVar17 & 0xf0) == 0) {
                          bVar5 = cVar10.fc;
                          uVar7 = ~(-1 << (bVar17 + bVar5 & 0x1f));
                          pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >> (bVar16 & 0x1f))
                                                      + local_48) * 4);
                          uVar25 = *(ushort *)(pbVar26 + 2);
                          bVar17 = *pbVar26;
                          cVar14._1_3_ = 0;
                          cVar14.fc.freq._0_1_ = pbVar26[1];
                          cVar20 = cVar21;
                          if ((uint)cVar21 < (uint)((int)cVar14 + (int)cVar10)) {
                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;
                            while( true ) {
                              pbVar31 = local_60 + 1;
                              cVar20 = (ct_data_s)((int)cVar21 + 8);
                              local_6c = (Posf *)((int)local_6c - 1);
                              local_64 = (gz_headerp)
                                         ((int)&local_64->text +
                                         ((uint)*local_60 << (cVar21.fc & 0x1f)));
                              pbVar26 = (byte *)(uVar29 + (((uVar7 & (uint)local_64) >>
                                                           (bVar5 & 0x1f)) + local_48) * 4);
                              bVar17 = *pbVar26;
                              uVar25 = *(ushort *)(pbVar26 + 2);
                              cVar14._1_3_ = 0;
                              cVar14.fc.freq._0_1_ = pbVar26[1];
                              local_60 = pbVar31;
                              if ((uint)((int)cVar14 + (int)cVar10) <= (uint)cVar20) break;
                              cVar21 = cVar20;
                              if (local_6c == (Posf *)0x0) {
                                pPVar27 = (Posf *)0x0;
                                goto LAB_00017f32;
                              }
                            }
                          }
                          local_48 = (uInt)uVar25;
                          cVar21 = (ct_data_s)((int)cVar20 - (int)cVar10);
                          local_64 = (gz_headerp)((uint)local_64 >> (bVar5 & 0x1f));
                          cVar22 = (ct_data_s)((int)cVar10 + (int)piVar3[1].dyn_ltree[0x11c]);
                        }
                        else {
                          cVar22 = piVar3[1].dyn_ltree[0x11c];
                          cVar14 = cVar10;
                        }
                        local_64 = (gz_headerp)((uint)local_64 >> (cVar14.fc & 0x1f));
                        cVar20 = (ct_data_s)((int)cVar21 - (int)cVar14);
                        piVar3[1].dyn_ltree[0x11c] = (ct_data_s)((int)cVar14 + (int)cVar22);
                        if ((bVar17 & 0x40) != 0) {
                          strm->msg = "invalid distance code";
                          piVar3->status = 0x3f51;
                          pPVar27 = (Posf *)0xfffffffd;
                          goto LAB_00017f32;
                        }
                        cVar21 = (ct_data_s)(bVar17 & 0xf);
                        piVar3->hash_size = (uInt)cVar21;
                        piVar3->status = 0x3f4b;
                        piVar3->ins_h = local_48;
LAB_00017c87:
                        if (cVar21 != (ct_data_s)0x0) {
                          if ((uint)cVar20 < (uint)cVar21) {
                            if (local_6c == (Posf *)0x0) goto LAB_00017f30;
                            while( true ) {
                              pbVar26 = local_60 + 1;
                              local_6c = (Posf *)((int)local_6c - 1);
                              bVar16 = cVar20.fc;
                              cVar20 = (ct_data_s)((int)cVar20 + 8);
                              local_64 = (gz_headerp)
                                         ((int)&local_64->text +
                                         ((uint)*local_60 << (bVar16 & 0x1f)));
                              local_60 = pbVar26;
                              if ((uint)cVar21 <= (uint)cVar20) break;
                              if (local_6c == (Posf *)0x0) {
                                pPVar27 = (Posf *)0x0;
                                goto LAB_00017f32;
                              }
                            }
                          }
                          cVar20 = (ct_data_s)((int)cVar20 - (int)cVar21);
                          uVar7 = ~(-1 << (cVar21.fc & 0x1f)) & (uint)local_64;
                          local_64 = (gz_headerp)((uint)local_64 >> (cVar21.fc & 0x1f));
                          piVar3->ins_h = piVar3->ins_h + uVar7;
                          piVar3[1].dyn_ltree[0x11c] =
                               (ct_data_s)((int)piVar3[1].dyn_ltree[0x11c] + (int)cVar21);
                        }
                        piVar3->status = 0x3f4c;
_L118:
                        if (local_5c == (Posf *)0x0) goto LAB_00017f30;
                        uVar7 = piVar3->ins_h;
                        if ((uint)((int)local_50 - (int)local_5c) < uVar7) {
                          pPVar9 = (Posf *)(uVar7 - ((int)local_50 - (int)local_5c));
                          if (((Posf *)piVar3->w_bits < pPVar9) &&
                             (piVar3[1].dyn_ltree[0x11b] != (ct_data_s)0x0)) {
                            strm->msg = "invalid distance too far back";
                            piVar3->status = 0x3f51;
                            pPVar27 = (Posf *)0xfffffffd;
                            goto LAB_00017f32;
                          }
                          pPVar27 = (Posf *)piVar3->w_mask;
                          if (pPVar27 < pPVar9) {
                            pPVar9 = (Posf *)((int)pPVar9 - (int)pPVar27);
                            iVar6 = piVar3->w_size - (int)pPVar9;
                          }
                          else {
                            iVar6 = (int)pPVar27 - (int)pPVar9;
                          }
                          pBVar28 = piVar3->window + iVar6;
                          pPVar27 = piVar3->head;
                          if (pPVar27 <= pPVar9) {
                            pPVar9 = pPVar27;
                          }
                        }
                        else {
                          pBVar28 = end + -uVar7;
                          pPVar9 = piVar3->head;
                          pPVar27 = pPVar9;
                        }
                        if (local_5c < pPVar9) {
                          pPVar9 = local_5c;
                        }
                        local_5c = (Posf *)((int)local_5c - (int)pPVar9);
                        pBVar12 = (Bytef *)((int)pPVar9 + (int)end);
                        piVar3->head = (Posf *)((int)pPVar27 - (int)pPVar9);
                        pBVar30 = end;
                        do {
                          end = pBVar30 + (uint)bVar32 * -2 + 1;
                          *pBVar30 = *pBVar28;
                          pBVar28 = pBVar28 + (uint)bVar32 * -2 + 1;
                          pBVar30 = end;
                        } while (end != pBVar12);
                        if (piVar3->head != (Posf *)0x0) {
                          iVar6 = piVar3->status;
                          goto LAB_000178c9;
                        }
                      } while( true );
                    }
                    pPVar27 = (Posf *)0x0;
                  }
                  else {
                    pPVar27 = (Posf *)0xfffffffd;
                    strm->msg = "invalid distances set";
                    piVar3->status = 0x3f51;
                  }
                  goto LAB_00017f32;
                }
                pcVar8 = "invalid literal/lengths set";
                goto LAB_00017b45;
              }
              pPVar27 = (Posf *)0xfffffffd;
              strm->msg = "invalid code -- missing end-of-block";
              piVar3->status = 0x3f51;
            }
            else {
              strm->msg = "invalid code lengths set";
              piVar3->status = 0x3f51;
              pPVar27 = (Posf *)0xfffffffd;
            }
            goto LAB_00017f32;
          }
          pcVar8 = "too many length or distance symbols";
          goto LAB_000188eb;
        }
        if (uVar7 == 3) {
          cVar20 = (ct_data_s)((int)cVar20 - 3);
          local_64 = (gz_headerp)((uint)local_64 >> 3);
          pPVar27 = (Posf *)0xfffffffd;
          strm->msg = "invalid block type";
          piVar3->status = 0x3f51;
          goto LAB_00017f32;
        }
        if (uVar7 == 1) {
          piVar3->hash_shift = 9;
          piVar3->block_start = 5;
          piVar3->status = 0x3f47;
          piVar3->hash_bits = (uInt)lenfix_3685;
          piVar3->hash_mask = (uInt)distfix_3686;
          if (flush != 6) {
            local_64 = (gz_headerp)((uint)local_64 >> 3);
            cVar20 = (ct_data_s)((int)cVar20 - 3);
            goto _L113;
          }
          local_64 = (gz_headerp)((uint)local_64 >> 3);
          cVar20 = (ct_data_s)((int)cVar20 - 3);
          goto LAB_00017f32;
        }
        local_64 = (gz_headerp)((uint)local_64 >> 3);
        piVar3->status = 0x3f41;
        cVar20 = (ct_data_s)((int)cVar20 - 3);
_L107:
        local_64 = (gz_headerp)((uint)local_64 >> (cVar20.fc & 7));
        for (cVar20 = (ct_data_s)((uint)cVar20 & 0xfffffff8); (uint)cVar20 < 0x20;
            cVar20 = (ct_data_s)((int)cVar20 + 8)) {
          if (local_6c == (Posf *)0x0) goto LAB_00017f30;
          local_6c = (Posf *)((int)local_6c - 1);
          local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));
          local_60 = local_60 + 1;
        }
        pPVar27 = (Posf *)((uint)local_64 & 0xffff);
        if (pPVar27 != (Posf *)((uint)local_64 >> 0x10 ^ 0xffff)) {
          pcVar8 = "invalid stored block lengths";
          goto LAB_00017b45;
        }
        piVar3->head = pPVar27;
        piVar3->status = 0x3f42;
        if (flush == 6) {
          pPVar27 = (Posf *)0x0;
          cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
          cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
          local_64 = (gz_headerp)0x0;
          goto LAB_00017f32;
        }
        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
        local_64 = (gz_headerp)0x0;
LAB_00018557:
        piVar3->status = 0x3f43;
LAB_00018562:
        if (pPVar27 == (Posf *)0x0) {
          piVar3->status = 0x3f3f;
          goto _L105;
        }
        if (local_6c <= pPVar27) {
          pPVar27 = local_6c;
        }
        if (local_5c < pPVar27) {
          pPVar27 = local_5c;
        }
        if (pPVar27 == (Posf *)0x0) goto LAB_00017f30;
        memcpy(end,local_60,(size_t)pPVar27);
        local_6c = (Posf *)((int)local_6c - (int)pPVar27);
        local_60 = local_60 + (int)pPVar27;
        local_5c = (Posf *)((int)local_5c - (int)pPVar27);
        piVar3->head = (Posf *)((int)piVar3->head - (int)pPVar27);
        iVar6 = piVar3->status;
        end = end + (int)pPVar27;
        goto LAB_000178c9;
      case 0x3f35:
        goto joined_r0x0001879b;
      case 0x3f36:
        goto joined_r0x00018053;
      case 0x3f37:
        goto joined_r0x000180e3;
      case 0x3f38:
        uVar7 = piVar3->pending;
        if ((uVar7 & 0x400) == 0) goto LAB_000181ae;
        if ((uint)cVar20 < 0x10) goto LAB_0001829d;
        goto LAB_000182ea;
      case 0x3f39:
        uVar7 = piVar3->pending;
        goto LAB_000181cb;
      case 0x3f3a:
        uVar7 = piVar3->pending;
        goto LAB_0001832f;
      case 0x3f3b:
        uVar7 = piVar3->pending;
        goto LAB_0001835c;
      case 0x3f3c:
        uVar7 = piVar3->pending;
        goto LAB_00018382;
      case 0x3f3d:
        pgVar13 = local_64;
        goto joined_r0x00017e43;
      case 0x3f3e:
        goto _L104;
      case 0x3f3f:
        goto _L105;
      case 0x3f41:
        goto _L107;
      case 0x3f42:
        pPVar27 = piVar3->head;
        goto LAB_00018557;
      case 0x3f43:
        pPVar27 = piVar3->head;
        goto LAB_00018562;
      case 0x3f44:
        goto _L110;
      case 0x3f45:
        uVar7 = piVar3->strstart;
        uVar19 = piVar3->match_length;
        if (uVar19 <= uVar7) goto LAB_00019253;
        goto LAB_000184b2;
      case 0x3f46:
        local_48 = piVar3->strstart;
        goto LAB_000185db;
      case 0x3f47:
        goto _L113;
      case 0x3f48:
        goto _L114;
      case 0x3f49:
        cVar21 = (ct_data_s)piVar3->hash_size;
        goto LAB_00017d07;
      case 0x3f4a:
        goto _L116;
      case 0x3f4b:
        cVar21 = (ct_data_s)piVar3->hash_size;
        goto LAB_00017c87;
      case 0x3f4c:
        goto _L118;
      case 0x3f4d:
        goto LAB_00017b6a;
      case 0x3f4e:
_L120:
        uVar7 = piVar3->pending_buf_size;
        if (uVar7 == 0) goto LAB_00018e20;
        if (0x1f < (uint)cVar20) goto LAB_00017996;
        if (local_6c != (Posf *)0x0) goto LAB_00017970;
        goto LAB_00017f30;
      case 0x3f4f:
        uVar7 = piVar3->pending_buf_size;
        goto LAB_000183ff;
      case 0x3f50:
        pPVar27 = (Posf *)0x1;
        goto LAB_00017f32;
      case 0x3f51:
        goto _L590;
      case 0x3f52:
        goto _L593;
      }
    }
  }
  pPVar27 = (Posf *)0xfffffffe;
  goto LAB_00018778;
  while (local_6c != (Posf *)0x0) {
LAB_00018ea0:
    pbVar26 = local_60 + 1;
    local_6c = (Posf *)((int)local_6c - 1);
    bVar16 = cVar20.fc;
    cVar20 = (ct_data_s)((int)cVar20 + 8);
    local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));
    local_60 = pbVar26;
    if (0xf < (uint)cVar20) goto LAB_00018ec6;
  }
  goto LAB_000190a2;
LAB_00018ec6:
  if (((uVar7 & 2) == 0) || (local_64 != (gz_headerp)0x8b1f)) {
    piVar3->pending = 0;
    if (*(int *)&piVar3->method != 0) {
      *(undefined4 *)(*(int *)&piVar3->method + 0x30) = 0xffffffff;
    }
    if (((uVar7 & 1) == 0) ||
       (uVar7 = ((uint)local_64 & 0xff) * 0x100 + ((uint)local_64 >> 8),
       uVar7 != (uVar7 / 0x1f) * 0x1f)) {
      pcVar8 = "incorrect header check";
LAB_000188eb:
      pPVar27 = (Posf *)0xfffffffd;
      strm->msg = pcVar8;
      piVar3->status = 0x3f51;
    }
    else {
      if (((uint)local_64 & 0xf) == 8) {
        local_64 = (gz_headerp)((uint)local_64 >> 4);
        cVar20 = (ct_data_s)((int)cVar20 - 4);
        uVar7 = ((uint)local_64 & 0xf) + 8;
        if (piVar3->last_flush == 0) {
          piVar3->last_flush = uVar7;
          if (0xf < uVar7) {
LAB_00019879:
            pcVar8 = "invalid window size";
            goto LAB_00017b45;
          }
        }
        else if ((0xf < uVar7) || ((uint)piVar3->last_flush < uVar7)) goto LAB_00019879;
        piVar3->wrap = 1 << (sbyte)uVar7;
        pgVar13 = (gz_headerp)adler32(0,(Bytef *)0x0,0);
        piVar3->gzhead = pgVar13;
        strm->adler = (uLong)pgVar13;
        if (((uint)local_64 & 0x200) == 0) {
          piVar3->status = 0x3f3f;
          cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
          cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
          local_64 = (gz_headerp)0x0;
          goto _L105;
        }
        local_64 = (gz_headerp)0x0;
        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
        piVar3->status = 0x3f3d;
        do {
          if (local_6c == (Posf *)0x0) goto LAB_00017f30;
          local_6c = (Posf *)((int)local_6c - 1);
          bVar16 = cVar20.fc;
          cVar20 = (ct_data_s)((int)cVar20 + 8);
          pgVar13 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));
          local_60 = local_60 + 1;
joined_r0x00017e43:
          local_64 = pgVar13;
        } while ((uint)cVar20 < 0x20);
        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
        local_64 = (gz_headerp)0x0;
        pgVar13 = (gz_headerp)
                  (((uint)pgVar13 & 0xff00) * 0x100 +
                  (int)pgVar13 * 0x1000000 + ((uint)pgVar13 >> 0x18) + ((uint)pgVar13 >> 8 & 0xff00)
                  );
        piVar3->gzhead = pgVar13;
        strm->adler = (uLong)pgVar13;
        piVar3->status = 0x3f3e;
_L104:
        if (piVar3->pending_out != (Bytef *)0x0) {
          pgVar13 = (gz_headerp)adler32(0,(Bytef *)0x0,0);
          piVar3->gzhead = pgVar13;
          strm->adler = (uLong)pgVar13;
          piVar3->status = 0x3f3f;
          goto _L105;
        }
        pPVar27 = (Posf *)0x2;
        strm->next_out = end;
        strm->avail_out = (uInt)local_5c;
        strm->next_in = local_60;
        strm->avail_in = (uInt)local_6c;
        piVar3->prev = (Posf *)cVar20;
        piVar3->window_size = (ulg)local_64;
        goto LAB_00018778;
      }
      pcVar8 = "unknown compression method";
LAB_00017b45:
      pPVar27 = (Posf *)0xfffffffd;
      strm->msg = pcVar8;
      piVar3->status = 0x3f51;
    }
  }
  else {
    if (piVar3->last_flush == 0) {
      piVar3->last_flush = 0xf;
    }
    cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
    cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
    pgVar13 = (gz_headerp)crc32(0,(uchar *)0x0,0);
    hbuf[0] = '\x1f';
    hbuf[1] = 0x8b;
    piVar3->gzhead = pgVar13;
    pgVar13 = (gz_headerp)crc32((ulong)pgVar13,hbuf,2);
    piVar3->gzhead = pgVar13;
    piVar3->status = 0x3f35;
    local_64 = (gz_headerp)0x0;
    do {
      if (local_6c == (Posf *)0x0) goto LAB_00017f30;
      local_6c = (Posf *)((int)local_6c - 1);
      bVar16 = cVar20.fc;
      cVar20 = (ct_data_s)((int)cVar20 + 8);
      local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));
      local_60 = local_60 + 1;
joined_r0x0001879b:
    } while ((uint)cVar20 < 0x10);
    piVar3->pending = (ulg)local_64;
    if ((char)local_64 == '\b') {
      if (((uint)local_64 & 0xe000) != 0) {
        pcVar8 = "unknown header flags set";
        goto LAB_000188eb;
      }
      if (*(uint **)&piVar3->method != (uint *)0x0) {
        **(uint **)&piVar3->method = (uint)local_64 >> 8 & 1;
      }
      if ((((uint)local_64 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {
        hbuf._0_2_ = SUB42(local_64,0);
        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2);
        piVar3->gzhead = pgVar13;
      }
      local_64 = (gz_headerp)0x0;
      cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
      cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
      piVar3->status = 0x3f36;
      do {
        if (local_6c == (Posf *)0x0) goto LAB_00017f30;
        local_6c = (Posf *)((int)local_6c - 1);
        bVar16 = cVar20.fc;
        cVar20 = (ct_data_s)((int)cVar20 + 8);
        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));
        local_60 = local_60 + 1;
joined_r0x00018053:
      } while ((uint)cVar20 < 0x20);
      if (*(int *)&piVar3->method != 0) {
        *(gz_headerp *)(*(int *)&piVar3->method + 4) = local_64;
      }
      if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {
        hbuf._0_2_ = SUB42(local_64,0);
        hbuf[2] = (uchar)((uint)local_64 >> 0x10);
        hbuf[3] = (uchar)((uint)local_64 >> 0x18);
        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,4);
        piVar3->gzhead = pgVar13;
      }
      local_64 = (gz_headerp)0x0;
      cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
      cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
      piVar3->status = 0x3f37;
      do {
        if (local_6c == (Posf *)0x0) goto LAB_00017f30;
        local_6c = (Posf *)((int)local_6c - 1);
        bVar16 = cVar20.fc;
        cVar20 = (ct_data_s)((int)cVar20 + 8);
        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));
        local_60 = local_60 + 1;
joined_r0x000180e3:
      } while ((uint)cVar20 < 0x10);
      iVar6 = *(int *)&piVar3->method;
      if (iVar6 != 0) {
        *(uint *)(iVar6 + 8) = (uint)local_64 & 0xff;
        *(uint *)(iVar6 + 0xc) = (uint)local_64 >> 8;
      }
      uVar7 = piVar3->pending;
      if (((uVar7 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {
        hbuf._0_2_ = SUB42(local_64,0);
        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2);
        piVar3->gzhead = pgVar13;
        uVar7 = piVar3->pending;
      }
      piVar3->status = 0x3f38;
      if ((uVar7 & 0x400) == 0) {
        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
        local_64 = (gz_headerp)0x0;
LAB_000181ae:
        if (*(int *)&piVar3->method != 0) {
          *(undefined4 *)(*(int *)&piVar3->method + 0x10) = 0;
        }
        goto LAB_000181c0;
      }
      local_64 = (gz_headerp)0x0;
      cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
      cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
LAB_0001829d:
      if (local_6c == (Posf *)0x0) goto LAB_00017f30;
      do {
        pbVar26 = local_60 + 1;
        local_6c = (Posf *)((int)local_6c - 1);
        bVar16 = cVar20.fc;
        cVar20 = (ct_data_s)((int)cVar20 + 8);
        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));
        local_60 = pbVar26;
        if (0xf < (uint)cVar20) goto LAB_000182ea;
      } while (local_6c != (Posf *)0x0);
      pPVar27 = (Posf *)0x0;
    }
    else {
      strm->msg = "unknown compression method";
      piVar3->status = 0x3f51;
_L590:
      pPVar27 = (Posf *)0xfffffffd;
    }
  }
  goto LAB_00017f32;
LAB_000182ea:
  piVar3->head = (Posf *)local_64;
  if (*(int *)&piVar3->method != 0) {
    *(gz_headerp *)(*(int *)&piVar3->method + 0x14) = local_64;
  }
  if (((uVar7 & 0x200) == 0) || ((piVar3->pending_buf_size & 4) == 0)) {
    cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
    cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
    local_64 = (gz_headerp)0x0;
  }
  else {
    cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
    cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
    hbuf._0_2_ = SUB42(local_64,0);
    pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,hbuf,2);
    piVar3->gzhead = pgVar13;
    local_64 = (gz_headerp)0x0;
    uVar7 = piVar3->pending;
  }
LAB_000181c0:
  piVar3->status = 0x3f39;
LAB_000181cb:
  if ((uVar7 & 0x400) == 0) {
LAB_0001826a:
    piVar3->head = (Posf *)0x0;
    piVar3->status = 0x3f3a;
LAB_0001832f:
    if ((uVar7 & 0x800) == 0) {
      if (*(int *)&piVar3->method != 0) {
        *(undefined4 *)(*(int *)&piVar3->method + 0x1c) = 0;
      }
    }
    else {
      pPVar27 = (Posf *)0x0;
      if (local_6c == (Posf *)0x0) goto LAB_00017f32;
      do {
        iVar6 = *(int *)&piVar3->method;
        pPVar27 = (Posf *)((int)pPVar27 + 1);
        bVar16 = (local_60 + -1)[(int)pPVar27];
        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x1c), iVar11 != 0)) &&
           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x20))) {
          piVar3->head = (Posf *)((int)pPVar9 + 1);
          *(byte *)(iVar11 + (int)pPVar9) = bVar16;
        }
      } while ((bVar16 != 0) && (pPVar27 < local_6c));
      if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {
        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);
        piVar3->gzhead = pgVar13;
      }
      local_60 = local_60 + (int)pPVar27;
      local_6c = (Posf *)((int)local_6c - (int)pPVar27);
      if (bVar16 != 0) goto LAB_00017f30;
      uVar7 = piVar3->pending;
    }
    piVar3->head = (Posf *)0x0;
    piVar3->status = 0x3f3b;
LAB_0001835c:
    if ((uVar7 & 0x1000) == 0) {
      if (*(int *)&piVar3->method != 0) {
        *(undefined4 *)(*(int *)&piVar3->method + 0x24) = 0;
      }
    }
    else {
      pPVar27 = (Posf *)0x0;
      if (local_6c == (Posf *)0x0) goto LAB_00017f32;
      do {
        iVar6 = *(int *)&piVar3->method;
        pPVar27 = (Posf *)((int)pPVar27 + 1);
        bVar16 = (local_60 + -1)[(int)pPVar27];
        if (((iVar6 != 0) && (iVar11 = *(int *)(iVar6 + 0x24), iVar11 != 0)) &&
           (pPVar9 = piVar3->head, pPVar9 < *(Posf **)(iVar6 + 0x28))) {
          piVar3->head = (Posf *)((int)pPVar9 + 1);
          *(byte *)(iVar11 + (int)pPVar9) = bVar16;
        }
      } while ((bVar16 != 0) && (pPVar27 < local_6c));
      if (((piVar3->pending & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {
        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar27);
        piVar3->gzhead = pgVar13;
      }
      local_60 = local_60 + (int)pPVar27;
      local_6c = (Posf *)((int)local_6c - (int)pPVar27);
      if (bVar16 != 0) goto LAB_00017f30;
      uVar7 = piVar3->pending;
    }
    piVar3->status = 0x3f3c;
LAB_00018382:
    if ((uVar7 & 0x200) == 0) {
LAB_0001838b:
      iVar6 = *(int *)&piVar3->method;
      if (iVar6 != 0) {
        *(undefined4 *)(iVar6 + 0x30) = 1;
        *(uint *)(iVar6 + 0x2c) = (int)uVar7 >> 9 & 1;
      }
      pgVar13 = (gz_headerp)crc32(0,(uchar *)0x0,0);
      piVar3->gzhead = pgVar13;
      strm->adler = (uLong)pgVar13;
      piVar3->status = 0x3f3f;
      goto _L105;
    }
    if ((uint)cVar20 < 0x10) {
      if (local_6c == (Posf *)0x0) goto LAB_00017f30;
      do {
        pbVar26 = local_60 + 1;
        local_6c = (Posf *)((int)local_6c - 1);
        bVar16 = cVar20.fc;
        cVar20 = (ct_data_s)((int)cVar20 + 8);
        local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar16 & 0x1f)));
        local_60 = pbVar26;
        if (0xf < (uint)cVar20) goto LAB_00018a2e;
      } while (local_6c != (Posf *)0x0);
      pPVar27 = (Posf *)0x0;
    }
    else {
LAB_00018a2e:
      if (((piVar3->pending_buf_size & 4) == 0) ||
         ((gz_headerp)(uint)*(ushort *)&piVar3->gzhead == local_64)) {
        cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
        cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
        local_64 = (gz_headerp)0x0;
        goto LAB_0001838b;
      }
      strm->msg = "header crc mismatch";
      piVar3->status = 0x3f51;
      pPVar27 = (Posf *)0xfffffffd;
    }
  }
  else {
    pPVar27 = piVar3->head;
    pPVar9 = local_6c;
    if (pPVar27 < local_6c) {
      pPVar9 = pPVar27;
    }
    if (pPVar9 != (Posf *)0x0) {
      iVar6 = *(int *)&piVar3->method;
      if ((iVar6 != 0) && (*(int *)(iVar6 + 0x10) != 0)) {
        iVar11 = *(int *)(iVar6 + 0x14) - (int)pPVar27;
        pPVar27 = (Posf *)(*(uint *)(iVar6 + 0x18) - iVar11);
        if ((uint)((int)pPVar9 + iVar11) <= *(uint *)(iVar6 + 0x18)) {
          pPVar27 = pPVar9;
        }
        memcpy((void *)(iVar11 + *(int *)(iVar6 + 0x10)),local_60,(size_t)pPVar27);
        uVar7 = piVar3->pending;
      }
      if (((uVar7 & 0x200) != 0) && ((piVar3->pending_buf_size & 4) != 0)) {
        pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,local_60,(uInt)pPVar9);
        piVar3->gzhead = pgVar13;
      }
      local_6c = (Posf *)((int)local_6c - (int)pPVar9);
      local_60 = local_60 + (int)pPVar9;
      pPVar27 = (Posf *)((int)piVar3->head - (int)pPVar9);
      piVar3->head = pPVar27;
    }
    if (pPVar27 == (Posf *)0x0) {
      uVar7 = piVar3->pending;
      goto LAB_0001826a;
    }
LAB_00017f30:
    pPVar27 = (Posf *)0x0;
  }
  goto LAB_00017f32;
LAB_00017996:
  uVar29 = (int)local_50 - (int)local_5c;
  strm->total_out = strm->total_out + uVar29;
  piVar3->gzindex = piVar3->gzindex + uVar29;
  uVar19 = uVar7 & 4;
  if ((uVar19 != 0) && (uVar29 != 0)) {
    if (piVar3->pending == 0) {
      pgVar13 = (gz_headerp)adler32((uLong)piVar3->gzhead,end + -uVar29,uVar29);
    }
    else {
      pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,end + -uVar29,uVar29);
    }
    piVar3->gzhead = pgVar13;
    strm->adler = (uLong)pgVar13;
    uVar7 = piVar3->pending_buf_size;
    uVar19 = uVar7 & 4;
  }
  if (uVar19 != 0) {
    pgVar13 = local_64;
    if (piVar3->pending == 0) {
      pgVar13 = (gz_headerp)
                (((uint)local_64 >> 0x18) + (int)local_64 * 0x1000000 +
                 ((uint)local_64 >> 8 & 0xff00) + ((uint)local_64 & 0xff00) * 0x100);
    }
    if (piVar3->gzhead != pgVar13) {
      strm->msg = "incorrect data check";
      piVar3->status = 0x3f51;
      pPVar27 = (Posf *)0xfffffffd;
      local_50 = local_5c;
      goto LAB_00017f32;
    }
  }
  cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
  cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
  local_64 = (gz_headerp)0x0;
  local_50 = local_5c;
LAB_00018e20:
  piVar3->status = 0x3f4f;
LAB_000183ff:
  if ((uVar7 != 0) && (piVar3->pending != 0)) {
    for (; (uint)cVar20 < 0x20; cVar20 = (ct_data_s)((int)cVar20 + 8)) {
      if (local_6c == (Posf *)0x0) goto LAB_00017f30;
      local_6c = (Posf *)((int)local_6c - 1);
      local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (cVar20.fc & 0x1f)));
      local_60 = local_60 + 1;
    }
    if ((gz_headerp)piVar3->gzindex != local_64) {
      strm->msg = "incorrect length check";
      piVar3->status = 0x3f51;
      pPVar27 = (Posf *)0xfffffffd;
      goto LAB_00017f32;
    }
    cVar20.fc = (anon_union_2_2_314cc5cc_for_fc)0x0;
    cVar20.dl = (anon_union_2_2_43a7fb4f_for_dl)0x0;
    local_64 = (gz_headerp)0x0;
  }
  pPVar27 = (Posf *)0x1;
  piVar3->status = 0x3f50;
  goto LAB_00017f32;
LAB_00018d40:
  pPVar27 = (Posf *)0x0;
  local_60 = pbVar26;
  goto LAB_00017f32;
code_r0x00018d1f:
  piVar3[1].dyn_ltree[0x11c].fc = (anon_union_2_2_314cc5cc_for_fc)0xffff;
  piVar3[1].dyn_ltree[0x11c].dl = (anon_union_2_2_43a7fb4f_for_dl)0xffff;
  piVar3->status = 0x3f3f;
_L105:
  if (flush - 5U < 2) goto LAB_00017f30;
  goto _L106;
  while (local_6c != (Posf *)0x0) {
LAB_00017970:
    pbVar26 = local_60 + 1;
    local_6c = (Posf *)((int)local_6c - 1);
    bVar32 = cVar20.fc;
    cVar20 = (ct_data_s)((int)cVar20 + 8);
    local_64 = (gz_headerp)((int)&local_64->text + ((uint)*local_60 << (bVar32 & 0x1f)));
    local_60 = pbVar26;
    if (0x1f < (uint)cVar20) goto LAB_00017996;
  }
LAB_000190a2:
  pPVar27 = (Posf *)0x0;
  local_60 = pbVar26;
LAB_00017f32:
  strm->next_in = local_60;
  strm->next_out = end;
  strm->avail_in = (uInt)local_6c;
  strm->avail_out = (uInt)local_5c;
  piVar3->window_size = (ulg)local_64;
  piVar3->prev = (Posf *)cVar20;
  if ((piVar3->w_size != 0) ||
     (((local_5c != local_50 && ((uint)piVar3->status < 0x3f51)) &&
      (((uint)piVar3->status < 0x3f4e || (flush != 4)))))) {
    iVar6 = updatewindow(strm,end,(int)local_50 - (int)local_5c);
    if (iVar6 != 0) {
      piVar3->status = 0x3f52;
_L593:
      pPVar27 = (Posf *)0xfffffffc;
      goto LAB_00018778;
    }
    local_6c = (Posf *)strm->avail_in;
    local_5c = (Posf *)strm->avail_out;
  }
  uVar29 = (int)local_50 - (int)local_5c;
  strm->total_in = strm->total_in + ((int)pPVar2 - (int)local_6c);
  strm->total_out = strm->total_out + uVar29;
  piVar3->gzindex = piVar3->gzindex + uVar29;
  if (((piVar3->pending_buf_size & 4) != 0) && (uVar29 != 0)) {
    if (piVar3->pending == 0) {
      pgVar13 = (gz_headerp)adler32((uLong)piVar3->gzhead,strm->next_out + -uVar29,uVar29);
    }
    else {
      pgVar13 = (gz_headerp)crc32((ulong)piVar3->gzhead,strm->next_out + -uVar29,uVar29);
    }
    piVar3->gzhead = pgVar13;
    strm->adler = (uLong)pgVar13;
  }
  pPVar9 = piVar3->prev;
  if (piVar3->pending_buf != (Bytef *)0x0) {
    pPVar9 = pPVar9 + 0x20;
  }
  iVar6 = piVar3->status;
  local_4c = 0;
  if (iVar6 == 0x3f3f) {
    pPVar9 = pPVar9 + 0x40;
  }
  else if ((iVar6 == 0x3f47) || (iVar6 == 0x3f42)) {
    local_4c = 0x100;
  }
  strm->data_type = (int)pPVar9 + local_4c;
  if ((((int)pPVar2 - (int)local_6c == 0 && uVar29 == 0) || (flush == 4)) &&
     (pPVar27 == (Posf *)0x0)) {
    pPVar27 = (Posf *)0xfffffffb;
  }
LAB_00018778:
  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {
    return (int)pPVar27;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}


(ERROR type: (type_identifier) (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) 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: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) 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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) 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: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (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: (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: (parenthesized_expression (binary_expression left: (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 (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (parenthesized_expression (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (switch_statement condition: (parenthesized_expression (identifier)) body: (compound_statement (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (case_statement value: (number_literal) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (goto_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 (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) 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: (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)))) (expression_statement (assignment_expression left: (identifier) 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: (number_literal))))) right: (number_literal))) (labeled_statement label: (statement_identifier) (for_statement condition: (binary_expression left: (identifier) right: (number_literal)) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) (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: (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: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (labeled_statement label: (statement_identifier) (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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (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: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) 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: (number_literal)) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal)))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) right: (number_literal)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (binary_expression left: (identifier) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_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: (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)))))))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (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: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (while_statement condition: (parenthesized_expression (true)) 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: (identifier) 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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (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: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (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: (identifier))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) 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: (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: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (while_statement condition: (parenthesized_expression (true)) 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: (identifier) 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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (string_literal (string_content))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (while_statement condition: (parenthesized_expression (true)) 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: (identifier) 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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (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: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) 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))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (while_statement condition: (parenthesized_expression (true)) 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: (identifier) 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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (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: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) 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: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (string_literal (string_content))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (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: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_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: (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: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (binary_expression left: (identifier) right: (number_literal)) (identifier) (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (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))))) (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)) (identifier) (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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)) value: (parenthesized_expression (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))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_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: (subscript_expression argument: (identifier) index: (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: (identifier)))) (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: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (while_statement condition: (parenthesized_expression (true)) 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: (identifier) 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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (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: (parenthesized_expression (binary_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: (subscript_expression argument: (identifier) index: (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: (identifier)))) (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: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_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: (identifier)))) (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (while_statement condition: (parenthesized_expression (true)) 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: (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: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) 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: (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: (number_literal))) (labeled_statement label: (statement_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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (while_statement condition: (parenthesized_expression (true)) 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: (identifier) 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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (parenthesized_expression (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: (identifier))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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: (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)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) right: (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: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (labeled_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: (unary_expression argument: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_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: (subscript_expression argument: (identifier) index: (number_literal)))) (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: (type_identifier) 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)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (while_statement condition: (parenthesized_expression (true)) 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: (identifier) 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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (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: (parenthesized_expression (binary_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: (subscript_expression argument: (identifier) index: (number_literal)))) (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: (type_identifier) 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)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_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: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (while_statement condition: (parenthesized_expression (true)) 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: (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: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) right: (number_literal))))))) (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: (type_identifier) 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)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (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))))))))) 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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) 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: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (string_literal (string_content))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (while_statement condition: (parenthesized_expression (true)) 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: (identifier) 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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (parenthesized_expression (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: (identifier))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) 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: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (unary_expression argument: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (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))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (labeled_statement label: (statement_identifier) (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) right: (parenthesized_expression (binary_expression left: (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))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (string_literal (string_content))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (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: (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: (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: (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: (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))))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (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)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (unary_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (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: (identifier))) consequence: (compound_statement (expression_statement (assignment_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: (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: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) 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: (identifier))) (goto_statement label: (statement_identifier))))) condition: (parenthesized_expression (true)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (string_literal (string_content))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (string_literal (string_content))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (string_literal (string_content))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (goto_statement label: (statement_identifier)))) (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)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (string_literal (string_content))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (goto_statement label: (statement_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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_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)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) 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: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))))))) (for_statement initializer: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) condition: (binary_expression left: (identifier) right: (number_literal)) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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: (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))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (labeled_statement label: (statement_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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (goto_statement label: (statement_identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (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: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (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: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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: (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)))) (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (labeled_statement label: (statement_identifier) (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: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (goto_statement label: (statement_identifier)))))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (labeled_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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (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: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))) (goto_statement label: (statement_identifier)) (identifier) (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (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))) 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: (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))))) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) 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: (identifier) right: (number_literal))))) right: (number_literal)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) (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: (identifier) right: (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: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content))))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (number_literal) (number_literal) (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: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (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: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_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: (number_literal))))) right: (number_literal))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) 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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) condition: (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))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (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))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (number_literal) (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))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) 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: (identifier) right: (number_literal))))) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (identifier) right: (number_literal))))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (number_literal) (number_literal))))) (expression_statement (assignment_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: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) 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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (ERROR) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) body: (expression_statement))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (char_literal (escape_sequence)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (goto_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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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))))) (pointer_expression argument: (identifier)) (number_literal) (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_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: (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: (binary_expression left: (identifier) 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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (ERROR) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) body: (expression_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (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))))) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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))))) (pointer_expression argument: (identifier)) (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_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: (number_literal))))) right: (number_literal))) (ERROR (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) 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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (ERROR) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) body: (expression_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))))))) (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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))))) (pointer_expression argument: (identifier)) (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (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: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (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))))) right: (number_literal)))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_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: (binary_expression left: (identifier) 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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (goto_statement label: (statement_identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (string_literal (string_content))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (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))))) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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))))) (pointer_expression argument: (identifier)) (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (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))))) right: (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (do_statement body: (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (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)))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (binary_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: (identifier) right: (number_literal)))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) 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: (identifier) right: (identifier))))) right: (identifier)))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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))))) (identifier) (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) 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: (identifier)))) (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (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))))) right: (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (do_statement body: (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (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)))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (binary_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: (identifier) right: (number_literal)))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) 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: (identifier) right: (identifier))))) right: (identifier)))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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))))) (identifier) (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) 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: (identifier)))) (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (labeled_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)))))))) (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (number_literal) (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))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (goto_statement label: (statement_identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_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: (binary_expression left: (identifier) 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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (goto_statement label: (statement_identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (string_literal (string_content))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (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))))) consequence: (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: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (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))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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)))))))) (identifier) (identifier)))) (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: (identifier) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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))))) (identifier) (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) 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: (identifier)))) (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: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) (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: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))))) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (number_literal) (identifier) (number_literal) (identifier) (primitive_type) (identifier) (number_literal) (primitive_type) (identifier) (number_literal) (identifier) (identifier) (identifier) (number_literal) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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))))) (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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))))) (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) (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: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (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: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) (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: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (string_literal (string_content))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))))) (identifier) (number_literal) (identifier) (number_literal) (identifier) (identifier) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) consequence: (compound_statement (for_statement condition: (binary_expression left: (identifier) right: (number_literal)) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (string_literal (string_content))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (identifier) (number_literal) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier)) (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) (compound_statement (labeled_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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (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: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (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))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (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: (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: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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))))) (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)) (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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))))) (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)) (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: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (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: (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))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (labeled_statement label: (statement_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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (return_statement (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

uint MASKED(int *param_1,int param_2)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  byte bVar4;
  int iVar5;
  char *pcVar6;
  int iVar7;
  undefined1 *puVar8;
  undefined4 uVar9;
  uint uVar10;
  ushort *puVar11;
  byte bVar12;
  byte bVar13;
  uint uVar14;
  uint extraout_ECX;
  size_t __n;
  uint uVar15;
  uint extraout_ECX_00;
  uint extraout_ECX_01;
  undefined2 *puVar16;
  uint uVar17;
  uint uVar18;
  ushort uVar19;
  byte *pbVar20;
  uint uVar21;
  undefined1 *puVar22;
  undefined1 *__dest;
  byte *pbVar24;
  int in_GS_OFFSET;
  byte bVar25;
  uint local_6c;
  uint local_64;
  byte *local_60;
  uint local_5c;
  uint local_50;
  int local_4c;
  uint uStack_48;
  uint uStack_40;
  uint uStack_38;
  undefined2 uStack_24;
  undefined1 uStack_22;
  undefined1 uStack_21;
  int local_20;
  undefined4 uStack_14;
  undefined1 *puVar23;
  
  bVar25 = 0;
  uStack_14 = 0x17809;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if ((((param_1 != (int *)0x0) && (param_1[8] != 0)) && (param_1[9] != 0)) &&
     ((iVar5 = FUN_00017420(), iVar5 == 0 &&
      (__dest = (undefined1 *)param_1[3], __dest != (undefined1 *)0x0)))) {
    local_60 = (byte *)*param_1;
    uVar1 = param_1[1];
    if ((local_60 != (byte *)0x0) || (uVar1 == 0)) {
      uVar2 = param_1[7];
      iVar5 = *(int *)(uVar2 + 4);
      if (iVar5 == 0x3f3f) {
        *(undefined4 *)(uVar2 + 4) = 0x3f40;
        iVar5 = 0x3f40;
      }
      local_50 = param_1[4];
      local_64 = *(uint *)(uVar2 + 0x3c);
      uVar15 = *(uint *)(uVar2 + 0x40);
      uVar21 = uVar2;
      local_6c = uVar1;
      local_5c = local_50;
LAB_000178c9:
      switch(iVar5) {
      case 0x3f34:
        uVar21 = *(uint *)(uVar2 + 0xc);
        if (uVar21 != 0) {
          if (0xf < uVar15) goto code_r0x00018ec6;
          if (local_6c != 0) goto code_r0x00018ea0;
          goto LAB_00017f30;
        }
        *(undefined4 *)(uVar2 + 4) = 0x3f40;
      case 0x3f40:
LAB_0001790a:
        bVar12 = (byte)uVar15;
        if (*(int *)(uVar2 + 8) != 0) {
          uVar15 = uVar15 & 0xfffffff8;
          local_64 = local_64 >> (bVar12 & 7);
          *(undefined4 *)(uVar2 + 4) = 0x3f4e;
          goto code_r0x00017930;
        }
        uVar21 = 0;
        if (uVar15 < 3) {
          if (local_6c == 0) goto LAB_00017f32;
          local_6c = local_6c - 1;
          uVar15 = uVar15 + 8;
          bVar13 = *local_60;
          local_60 = local_60 + 1;
          local_64 = local_64 + ((uint)bVar13 << (bVar12 & 0x1f));
        }
        *(uint *)(uVar2 + 8) = local_64 & 1;
        uVar14 = local_64 >> 1 & 3;
        if (uVar14 == 2) {
          local_64 = local_64 >> 3;
          uVar15 = uVar15 - 3;
          *(undefined4 *)(uVar2 + 4) = 0x3f44;
code_r0x00018840:
          for (; uVar15 < 0xe; uVar15 = uVar15 + 8) {
            if (local_6c == 0) goto LAB_00017f30;
            local_6c = local_6c - 1;
            local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));
            local_60 = local_60 + 1;
          }
          uVar15 = uVar15 - 0xe;
          uVar17 = (local_64 & 0x1f) + 0x101;
          uVar21 = (local_64 >> 5 & 0x1f) + 1;
          uVar14 = (local_64 >> 10 & 0xf) + 4;
          local_64 = local_64 >> 0xe;
          *(uint *)(uVar2 + 100) = uVar17;
          *(uint *)(uVar2 + 0x68) = uVar21;
          *(uint *)(uVar2 + 0x60) = uVar14;
          if ((uVar21 < 0x1f) && (uVar17 < 0x11f)) {
            uVar21 = 0;
            *(undefined4 *)(uVar2 + 0x6c) = 0;
            *(undefined4 *)(uVar2 + 4) = 0x3f45;
LAB_000184b2:
            uVar17 = uVar21 + 1;
            do {
              uVar21 = uVar17;
              if (uVar15 < 3) {
                if (local_6c == 0) {
                  uVar21 = 0;
                  local_6c = 0;
                  goto LAB_00017f32;
                }
                local_6c = local_6c - 1;
                bVar12 = (byte)uVar15;
                uVar15 = uVar15 + 8;
                local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
                local_60 = local_60 + 1;
              }
              uVar15 = uVar15 - 3;
              *(uint *)(uVar2 + 0x6c) = uVar21;
              uVar17 = local_64 >> 3;
              *(ushort *)(uVar2 + 0x74 + (uint)*(ushort *)(&UNK_000221be + uVar21 * 2) * 2) =
                   (ushort)local_64 & 7;
              local_64 = uVar17;
              uVar17 = uVar21 + 1;
            } while (uVar14 + 1 != uVar21 + 1);
code_r0x00019253:
            if (uVar21 < 0x13) {
              puVar11 = (ushort *)(&UNK_000221c0 + uVar21 * 2);
              do {
                uVar19 = *puVar11;
                puVar11 = puVar11 + 1;
                *(undefined2 *)(uVar2 + 0x74 + (uint)uVar19 * 2) = 0;
              } while (puVar11 != (ushort *)&UNK_000221e6);
              *(undefined4 *)(uVar2 + 0x6c) = 0x13;
            }
            *(undefined4 *)(uVar2 + 0x58) = 7;
            *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;
            *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;
            iVar5 = FUN_0001a270(0,uVar2 + 0x74,0x13,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4);
            if (iVar5 == 0) {
              uStack_48 = 0;
              *(undefined4 *)(uVar2 + 0x6c) = 0;
              *(undefined4 *)(uVar2 + 4) = 0x3f46;
              uVar21 = extraout_ECX_01;
LAB_000185db:
              iVar5 = *(int *)(uVar2 + 100);
              uVar14 = iVar5 + *(int *)(uVar2 + 0x68);
              while (uStack_48 < uVar14) {
                uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));
                iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;
                uVar21 = (uint)*(byte *)(iVar7 + 1);
                uVar19 = *(ushort *)(iVar7 + 2);
                if (uVar15 < uVar21) {
                  if (local_6c != 0) {
                    while( true ) {
                      pbVar20 = local_60 + 1;
                      local_6c = local_6c - 1;
                      bVar12 = (byte)uVar15;
                      uVar15 = uVar15 + 8;
                      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
                      iVar7 = *(int *)(uVar2 + 0x50) + (uVar17 & local_64) * 4;
                      uVar21 = (uint)*(byte *)(iVar7 + 1);
                      uVar19 = *(ushort *)(iVar7 + 2);
                      local_60 = pbVar20;
                      if (uVar21 <= uVar15) break;
                      if (local_6c == 0) goto LAB_00018d40;
                    }
                    goto LAB_00018694;
                  }
LAB_000192ef:
                  uVar21 = 0;
                  goto LAB_00017f32;
                }
LAB_00018694:
                bVar12 = (byte)uVar21;
                if (uVar19 < 0x10) {
                  local_64 = local_64 >> (bVar12 & 0x1f);
                  uVar15 = uVar15 - uVar21;
                  *(uint *)(uVar2 + 0x6c) = uStack_48 + 1;
                  *(ushort *)(uVar2 + 0x74 + uStack_48 * 2) = uVar19;
                  uVar21 = uStack_48;
                  uStack_48 = uStack_48 + 1;
                }
                else {
                  if (uVar19 == 0x10) {
                    if (uVar15 < uVar21 + 2) {
                      if (local_6c == 0) goto LAB_000192ef;
                      while( true ) {
                        pbVar20 = local_60 + 1;
                        local_6c = local_6c - 1;
                        bVar13 = (byte)uVar15;
                        uVar15 = uVar15 + 8;
                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));
                        local_60 = pbVar20;
                        if (uVar21 + 2 <= uVar15) break;
                        if (local_6c == 0) goto LAB_00018d40;
                      }
                    }
                    uVar15 = uVar15 - uVar21;
                    local_64 = local_64 >> (bVar12 & 0x1f);
                    if (uStack_48 == 0) {
                      param_1[6] = (int)"invalid bit length repeat";
                      *(undefined4 *)(uVar2 + 4) = 0x3f51;
                      goto LAB_00018817;
                    }
                    uVar17 = local_64 & 3;
                    local_64 = local_64 >> 2;
                    uVar15 = uVar15 - 2;
                    uVar21 = (uint)*(ushort *)(uVar2 + 0x72 + uStack_48 * 2);
                    iVar7 = uVar17 + 3;
                  }
                  else if (uVar19 == 0x11) {
                    if (uVar15 < uVar21 + 3) {
                      if (local_6c == 0) goto LAB_000192ef;
                      while( true ) {
                        pbVar20 = local_60 + 1;
                        local_6c = local_6c - 1;
                        bVar13 = (byte)uVar15;
                        uVar15 = uVar15 + 8;
                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));
                        local_60 = pbVar20;
                        if (uVar21 + 3 <= uVar15) break;
                        if (local_6c == 0) goto LAB_00018d40;
                      }
                    }
                    local_64 = local_64 >> (bVar12 & 0x1f);
                    uVar15 = (uVar15 - uVar21) - 3;
                    iVar7 = (local_64 & 7) + 3;
                    uVar21 = 0;
                    local_64 = local_64 >> 3;
                  }
                  else {
                    if (uVar15 < uVar21 + 7) {
                      if (local_6c == 0) goto LAB_000192ef;
                      while( true ) {
                        pbVar20 = local_60 + 1;
                        local_6c = local_6c - 1;
                        bVar13 = (byte)uVar15;
                        uVar15 = uVar15 + 8;
                        local_64 = local_64 + ((uint)*local_60 << (bVar13 & 0x1f));
                        local_60 = pbVar20;
                        if (uVar21 + 7 <= uVar15) break;
                        if (local_6c == 0) goto LAB_00018d40;
                      }
                    }
                    local_64 = local_64 >> (bVar12 & 0x1f);
                    uVar15 = (uVar15 - uVar21) - 7;
                    iVar7 = (local_64 & 0x7f) + 0xb;
                    uVar21 = 0;
                    local_64 = local_64 >> 7;
                  }
                  uVar17 = iVar7 + uStack_48;
                  if (uVar14 < uVar17) {
                    param_1[6] = (int)"invalid bit length repeat";
                    *(undefined4 *)(uVar2 + 4) = 0x3f51;
                    goto LAB_00018817;
                  }
                  puVar16 = (undefined2 *)(uVar2 + 0x74 + uStack_48 * 2);
                  do {
                    *puVar16 = (short)uVar21;
                    puVar16 = puVar16 + 1;
                  } while (puVar16 != (undefined2 *)(uVar2 + 0x74 + uVar17 * 2));
                  *(uint *)(uVar2 + 0x6c) = uVar17;
                  uStack_48 = uVar17;
                }
              }
              if (*(int *)(uVar2 + 4) == 0x3f51) goto LAB_00018817;
              if (*(short *)(uVar2 + 0x274) != 0) {
                *(undefined4 *)(uVar2 + 0x58) = 9;
                *(uint *)(uVar2 + 0x70) = uVar2 + 0x534;
                *(uint *)(uVar2 + 0x50) = uVar2 + 0x534;
                iVar5 = FUN_0001a270(1,uVar2 + 0x74,iVar5,uVar2 + 0x70,uVar2 + 0x58,uVar2 + 0x2f4,
                                     uVar21,uVar21);
                if (iVar5 == 0) {
                  uVar9 = *(undefined4 *)(uVar2 + 0x70);
                  *(undefined4 *)(uVar2 + 0x5c) = 6;
                  *(undefined4 *)(uVar2 + 0x54) = uVar9;
                  iVar5 = FUN_0001a270(2,uVar2 + 0x74 + *(int *)(uVar2 + 100) * 2,
                                       *(undefined4 *)(uVar2 + 0x68),uVar2 + 0x70,uVar2 + 0x5c,
                                       uVar2 + 0x2f4,uVar9,uVar9);
                  if (iVar5 == 0) {
                    *(undefined4 *)(uVar2 + 4) = 0x3f47;
                    if (param_2 != 6) {
LAB_00017c70:
                      do {
                        *(undefined4 *)(uVar2 + 4) = 0x3f48;
LAB_00017b90:
                        if ((5 < local_6c) && (0x101 < local_5c)) {
                          param_1[3] = (int)__dest;
                          param_1[4] = local_5c;
                          param_1[1] = local_6c;
                          *param_1 = (int)local_60;
                          *(uint *)(uVar2 + 0x40) = uVar15;
                          *(uint *)(uVar2 + 0x3c) = local_64;
                          FUN_00016d10(param_1,local_50);
                          __dest = (undefined1 *)param_1[3];
                          local_5c = param_1[4];
                          uVar15 = *(uint *)(uVar2 + 0x40);
                          local_60 = (byte *)*param_1;
                          local_6c = param_1[1];
                          local_64 = *(uint *)(uVar2 + 0x3c);
                          iVar5 = *(int *)(uVar2 + 4);
                          uVar21 = extraout_ECX;
                          if (iVar5 != 0x3f3f) goto LAB_000178c9;
                          *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;
                          goto LAB_00017f13;
                        }
                        iVar5 = *(int *)(uVar2 + 0x50);
                        *(undefined4 *)(uVar2 + 0x1bc8) = 0;
                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x58) & 0x1f));
                        pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);
                        bVar12 = pbVar20[1];
                        uVar14 = (uint)bVar12;
                        bVar13 = *pbVar20;
                        uVar19 = *(ushort *)(pbVar20 + 2);
                        uVar21 = uVar15;
                        if (uVar15 < uVar14) {
                          if (local_6c == 0) goto LAB_00017f30;
                          while( true ) {
                            pbVar24 = local_60 + 1;
                            local_6c = local_6c - 1;
                            bVar12 = (byte)uVar15;
                            uVar15 = uVar15 + 8;
                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);
                            bVar12 = pbVar20[1];
                            uVar14 = (uint)bVar12;
                            bVar13 = *pbVar20;
                            uVar19 = *(ushort *)(pbVar20 + 2);
                            uVar21 = uVar15;
                            local_60 = pbVar24;
                            if (uVar14 <= uVar15) break;
                            if (local_6c == 0) {
                              uVar21 = 0;
                              goto LAB_00017f32;
                            }
                          }
                        }
                        uVar17 = (uint)uVar19;
                        if (bVar13 == 0) {
                          local_64 = local_64 >> (bVar12 & 0x1f);
                          uVar15 = uVar21 - uVar14;
                          *(uint *)(uVar2 + 0x1bc8) = uVar14;
                          *(uint *)(uVar2 + 0x44) = uVar17;
LAB_000191a7:
                          *(undefined4 *)(uVar2 + 4) = 0x3f4d;
LAB_00017b6a:
                          if (local_5c == 0) goto LAB_00017f30;
                          local_5c = local_5c - 1;
                          *__dest = (char)*(undefined4 *)(uVar2 + 0x44);
                          *(undefined4 *)(uVar2 + 4) = 0x3f48;
                          __dest = __dest + 1;
                          goto LAB_00017b90;
                        }
                        bVar12 = (byte)uVar14;
                        if ((bVar13 & 0xf0) == 0) {
                          uVar18 = ~(-1 << (bVar13 + bVar12 & 0x1f));
                          pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +
                                                     uVar17) * 4);
                          uVar19 = *(ushort *)(pbVar20 + 2);
                          bVar13 = *pbVar20;
                          uVar10 = (uint)pbVar20[1];
                          uStack_38 = uVar10 + uVar14;
                          uVar15 = uVar21;
                          if (uVar21 < uStack_38) {
                            if (local_6c == 0) goto LAB_00017f30;
                            while( true ) {
                              pbVar24 = local_60 + 1;
                              uVar15 = uVar21 + 8;
                              local_6c = local_6c - 1;
                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));
                              pbVar20 = (byte *)(iVar5 + (((uVar18 & local_64) >> (bVar12 & 0x1f)) +
                                                         uVar17) * 4);
                              uVar19 = *(ushort *)(pbVar20 + 2);
                              bVar13 = *pbVar20;
                              uVar10 = (uint)pbVar20[1];
                              uStack_38 = uVar14 + uVar10;
                              local_60 = pbVar24;
                              if (uStack_38 <= uVar15) break;
                              uVar21 = uVar15;
                              if (local_6c == 0) {
                                uVar21 = 0;
                                goto LAB_00017f32;
                              }
                            }
                          }
                          uStack_40 = (uint)uVar19;
                          uVar15 = (uVar15 - uVar14) - uVar10;
                          local_64 = (local_64 >> (bVar12 & 0x1f)) >> ((byte)uVar10 & 0x1f);
                          *(uint *)(uVar2 + 0x1bc8) = uStack_38;
                          *(uint *)(uVar2 + 0x44) = uStack_40;
                          if (bVar13 != 0) goto LAB_00018d16;
                          goto LAB_000191a7;
                        }
                        local_64 = local_64 >> (bVar12 & 0x1f);
                        uVar15 = uVar21 - uVar14;
                        *(uint *)(uVar2 + 0x1bc8) = uVar14;
                        *(uint *)(uVar2 + 0x44) = uVar17;
LAB_00018d16:
                        if ((bVar13 & 0x20) != 0) goto code_r0x00018d1f;
                        if ((bVar13 & 0x40) != 0) {
                          pcVar6 = "invalid literal/length code";
                          goto LAB_000188eb;
                        }
                        uVar21 = bVar13 & 0xf;
                        *(uint *)(uVar2 + 0x4c) = uVar21;
                        *(undefined4 *)(uVar2 + 4) = 0x3f49;
LAB_00017d07:
                        if (uVar21 == 0) {
                          iVar5 = *(int *)(uVar2 + 0x44);
                        }
                        else {
                          if (uVar15 < uVar21) {
                            if (local_6c == 0) goto LAB_00017f30;
                            while( true ) {
                              pbVar20 = local_60 + 1;
                              local_6c = local_6c - 1;
                              bVar12 = (byte)uVar15;
                              uVar15 = uVar15 + 8;
                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
                              local_60 = pbVar20;
                              if (uVar21 <= uVar15) break;
                              if (local_6c == 0) goto LAB_000190a2;
                            }
                          }
                          uVar15 = uVar15 - uVar21;
                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;
                          iVar5 = (~(-1 << ((byte)uVar21 & 0x1f)) & local_64) +
                                  *(int *)(uVar2 + 0x44);
                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);
                          *(int *)(uVar2 + 0x44) = iVar5;
                        }
                        *(int *)(uVar2 + 0x1bcc) = iVar5;
                        *(undefined4 *)(uVar2 + 4) = 0x3f4a;
code_r0x00017d27:
                        iVar5 = *(int *)(uVar2 + 0x54);
                        uVar17 = ~(-1 << ((byte)*(undefined4 *)(uVar2 + 0x5c) & 0x1f));
                        pbVar20 = (byte *)(iVar5 + (local_64 & uVar17) * 4);
                        bVar12 = pbVar20[1];
                        bVar13 = *pbVar20;
                        uVar19 = *(ushort *)(pbVar20 + 2);
                        uVar14 = (uint)bVar12;
                        uVar21 = uVar15;
                        if (uVar15 < uVar14) {
                          if (local_6c == 0) goto LAB_00017f30;
                          while( true ) {
                            pbVar24 = local_60 + 1;
                            local_6c = local_6c - 1;
                            bVar12 = (byte)uVar15;
                            uVar15 = uVar15 + 8;
                            local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
                            pbVar20 = (byte *)(iVar5 + (uVar17 & local_64) * 4);
                            bVar12 = pbVar20[1];
                            bVar13 = *pbVar20;
                            uVar19 = *(ushort *)(pbVar20 + 2);
                            uVar14 = (uint)bVar12;
                            uVar21 = uVar15;
                            local_60 = pbVar24;
                            if (uVar14 <= uVar15) break;
                            if (local_6c == 0) {
                              uVar21 = 0;
                              goto LAB_00017f32;
                            }
                          }
                        }
                        uStack_48 = (uint)uVar19;
                        if ((bVar13 & 0xf0) == 0) {
                          bVar4 = (byte)uVar14;
                          uVar10 = ~(-1 << (bVar13 + bVar4 & 0x1f));
                          pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar12 & 0x1f)) +
                                                     uStack_48) * 4);
                          uVar19 = *(ushort *)(pbVar20 + 2);
                          bVar13 = *pbVar20;
                          uVar17 = (uint)pbVar20[1];
                          uVar15 = uVar21;
                          if (uVar21 < uVar17 + uVar14) {
                            if (local_6c == 0) goto LAB_00017f30;
                            while( true ) {
                              pbVar24 = local_60 + 1;
                              uVar15 = uVar21 + 8;
                              local_6c = local_6c - 1;
                              local_64 = local_64 + ((uint)*local_60 << ((byte)uVar21 & 0x1f));
                              pbVar20 = (byte *)(iVar5 + (((uVar10 & local_64) >> (bVar4 & 0x1f)) +
                                                         uStack_48) * 4);
                              bVar13 = *pbVar20;
                              uVar19 = *(ushort *)(pbVar20 + 2);
                              uVar17 = (uint)pbVar20[1];
                              local_60 = pbVar24;
                              if (uVar17 + uVar14 <= uVar15) break;
                              uVar21 = uVar15;
                              if (local_6c == 0) {
                                uVar21 = 0;
                                goto LAB_00017f32;
                              }
                            }
                          }
                          uStack_48 = (uint)uVar19;
                          uVar21 = uVar15 - uVar14;
                          local_64 = local_64 >> (bVar4 & 0x1f);
                          iVar5 = uVar14 + *(int *)(uVar2 + 0x1bc8);
                        }
                        else {
                          iVar5 = *(int *)(uVar2 + 0x1bc8);
                          uVar17 = uVar14;
                        }
                        local_64 = local_64 >> ((byte)uVar17 & 0x1f);
                        uVar15 = uVar21 - uVar17;
                        *(uint *)(uVar2 + 0x1bc8) = uVar17 + iVar5;
                        if ((bVar13 & 0x40) != 0) {
                          param_1[6] = (int)"invalid distance code";
                          *(undefined4 *)(uVar2 + 4) = 0x3f51;
                          uVar21 = 0xfffffffd;
                          goto LAB_00017f32;
                        }
                        uVar21 = bVar13 & 0xf;
                        *(uint *)(uVar2 + 0x4c) = uVar21;
                        *(undefined4 *)(uVar2 + 4) = 0x3f4b;
                        *(uint *)(uVar2 + 0x48) = uStack_48;
LAB_00017c87:
                        if (uVar21 != 0) {
                          if (uVar15 < uVar21) {
                            if (local_6c == 0) goto LAB_00017f30;
                            while( true ) {
                              pbVar20 = local_60 + 1;
                              local_6c = local_6c - 1;
                              bVar12 = (byte)uVar15;
                              uVar15 = uVar15 + 8;
                              local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
                              local_60 = pbVar20;
                              if (uVar21 <= uVar15) break;
                              if (local_6c == 0) {
                                uVar21 = 0;
                                goto LAB_00017f32;
                              }
                            }
                          }
                          uVar15 = uVar15 - uVar21;
                          uVar14 = ~(-1 << ((byte)uVar21 & 0x1f)) & local_64;
                          local_64 = local_64 >> ((byte)uVar21 & 0x1f);
                          *(int *)(uVar2 + 0x48) = *(int *)(uVar2 + 0x48) + uVar14;
                          *(int *)(uVar2 + 0x1bc8) = *(int *)(uVar2 + 0x1bc8) + uVar21;
                        }
                        *(undefined4 *)(uVar2 + 4) = 0x3f4c;
code_r0x00017c9a:
                        if (local_5c == 0) goto LAB_00017f30;
                        uVar21 = *(uint *)(uVar2 + 0x48);
                        if (local_50 - local_5c < uVar21) {
                          uVar21 = uVar21 - (local_50 - local_5c);
                          if ((*(uint *)(uVar2 + 0x30) < uVar21) && (*(int *)(uVar2 + 0x1bc4) != 0))
                          {
                            param_1[6] = (int)"invalid distance too far back";
                            *(undefined4 *)(uVar2 + 4) = 0x3f51;
                            uVar21 = 0xfffffffd;
                            goto LAB_00017f32;
                          }
                          uVar14 = *(uint *)(uVar2 + 0x34);
                          if (uVar14 < uVar21) {
                            uVar21 = uVar21 - uVar14;
                            puVar22 = (undefined1 *)
                                      ((*(int *)(uVar2 + 0x38) - uVar21) + *(int *)(uVar2 + 0x2c));
                          }
                          else {
                            puVar22 = (undefined1 *)(*(int *)(uVar2 + 0x38) + (uVar14 - uVar21));
                          }
                          uVar14 = *(uint *)(uVar2 + 0x44);
                          if (uVar14 <= uVar21) {
                            uVar21 = uVar14;
                          }
                        }
                        else {
                          puVar22 = __dest + -uVar21;
                          uVar21 = *(uint *)(uVar2 + 0x44);
                          uVar14 = uVar21;
                        }
                        if (local_5c < uVar21) {
                          uVar21 = local_5c;
                        }
                        local_5c = local_5c - uVar21;
                        puVar8 = __dest + uVar21;
                        *(uint *)(uVar2 + 0x44) = uVar14 - uVar21;
                        puVar23 = __dest;
                        do {
                          __dest = puVar23 + (uint)bVar25 * -2 + 1;
                          *puVar23 = *puVar22;
                          puVar22 = puVar22 + (uint)bVar25 * -2 + 1;
                          puVar23 = __dest;
                        } while (__dest != puVar8);
                        if (*(int *)(uVar2 + 0x44) != 0) {
                          iVar5 = *(int *)(uVar2 + 4);
                          uVar21 = uVar2;
                          goto LAB_000178c9;
                        }
                      } while( true );
                    }
                    uVar21 = 0;
                  }
                  else {
                    uVar21 = 0xfffffffd;
                    param_1[6] = (int)"invalid distances set";
                    *(undefined4 *)(uVar2 + 4) = 0x3f51;
                  }
                  goto LAB_00017f32;
                }
                pcVar6 = "invalid literal/lengths set";
                goto LAB_00017b45;
              }
              uVar21 = 0xfffffffd;
              param_1[6] = (int)"invalid code -- missing end-of-block";
              *(undefined4 *)(uVar2 + 4) = 0x3f51;
            }
            else {
              param_1[6] = (int)"invalid code lengths set";
              *(undefined4 *)(uVar2 + 4) = 0x3f51;
              uVar21 = 0xfffffffd;
            }
            goto LAB_00017f32;
          }
          pcVar6 = "too many length or distance symbols";
          goto LAB_000188eb;
        }
        if (uVar14 == 3) {
          uVar15 = uVar15 - 3;
          local_64 = local_64 >> 3;
          uVar21 = 0xfffffffd;
          param_1[6] = (int)"invalid block type";
          *(undefined4 *)(uVar2 + 4) = 0x3f51;
          goto LAB_00017f32;
        }
        if (uVar14 == 1) {
          *(undefined4 *)(uVar2 + 0x58) = 9;
          *(undefined4 *)(uVar2 + 0x5c) = 5;
          *(undefined4 *)(uVar2 + 4) = 0x3f47;
          *(undefined **)(uVar2 + 0x50) = &UNK_000219c0;
          *(undefined **)(uVar2 + 0x54) = &UNK_00021940;
          if (param_2 != 6) {
            local_64 = local_64 >> 3;
            uVar15 = uVar15 - 3;
            goto LAB_00017c70;
          }
          local_64 = local_64 >> 3;
          uVar15 = uVar15 - 3;
          goto LAB_00017f32;
        }
        local_64 = local_64 >> 3;
        *(undefined4 *)(uVar2 + 4) = 0x3f41;
        uVar15 = uVar15 - 3;
code_r0x00017ac6:
        local_64 = local_64 >> ((byte)uVar15 & 7);
        for (uVar15 = uVar15 & 0xfffffff8; uVar15 < 0x20; uVar15 = uVar15 + 8) {
          if (local_6c == 0) goto LAB_00017f30;
          local_6c = local_6c - 1;
          local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));
          local_60 = local_60 + 1;
        }
        uVar14 = local_64 & 0xffff;
        if (uVar14 != (local_64 >> 0x10 ^ 0xffff)) {
          pcVar6 = "invalid stored block lengths";
          goto LAB_00017b45;
        }
        *(uint *)(uVar2 + 0x44) = uVar14;
        *(undefined4 *)(uVar2 + 4) = 0x3f42;
        if (param_2 == 6) {
          uVar21 = 0;
          uVar15 = 0;
          local_64 = 0;
          goto LAB_00017f32;
        }
        uVar15 = 0;
        local_64 = 0;
LAB_00018557:
        *(undefined4 *)(uVar2 + 4) = 0x3f43;
code_r0x00018562:
        if (uVar14 == 0) {
          *(undefined4 *)(uVar2 + 4) = 0x3f3f;
          goto LAB_00017f13;
        }
        if (local_6c <= uVar14) {
          uVar14 = local_6c;
        }
        if (local_5c < uVar14) {
          uVar14 = local_5c;
        }
        if (uVar14 == 0) goto LAB_00017f30;
        memcpy(__dest,local_60,uVar14);
        local_6c = local_6c - uVar14;
        local_60 = local_60 + uVar14;
        local_5c = local_5c - uVar14;
        *(int *)(uVar2 + 0x44) = *(int *)(uVar2 + 0x44) - uVar14;
        iVar5 = *(int *)(uVar2 + 4);
        uVar21 = extraout_ECX_00;
        __dest = __dest + uVar14;
        goto LAB_000178c9;
      case 0x3f35:
        goto joined_r0x0001879b;
      case 0x3f36:
        goto joined_r0x00018053;
      case 0x3f37:
        goto joined_r0x000180e3;
      case 0x3f38:
        uVar21 = *(uint *)(uVar2 + 0x14);
        if ((uVar21 & 0x400) == 0) goto code_r0x000181ae;
        if (uVar15 < 0x10) goto code_r0x0001829d;
        goto code_r0x000182ea;
      case 0x3f39:
        uVar21 = *(uint *)(uVar2 + 0x14);
        goto code_r0x000181cb;
      case 0x3f3a:
        uVar21 = *(uint *)(uVar2 + 0x14);
        goto code_r0x0001832f;
      case 0x3f3b:
        uVar21 = *(uint *)(uVar2 + 0x14);
        goto code_r0x0001835c;
      case 0x3f3c:
        uVar21 = *(uint *)(uVar2 + 0x14);
        goto code_r0x00018382;
      case 0x3f3d:
        uVar21 = local_64;
        goto joined_r0x00017e43;
      case 0x3f3e:
        goto code_r0x00017eda;
      case 0x3f3f:
        goto LAB_00017f13;
      case 0x3f41:
        goto code_r0x00017ac6;
      case 0x3f42:
        uVar14 = *(uint *)(uVar2 + 0x44);
        goto LAB_00018557;
      case 0x3f43:
        uVar14 = *(uint *)(uVar2 + 0x44);
        goto code_r0x00018562;
      case 0x3f44:
        goto code_r0x00018840;
      case 0x3f45:
        uVar21 = *(uint *)(uVar2 + 0x6c);
        uVar14 = *(uint *)(uVar2 + 0x60);
        if (uVar14 <= uVar21) goto code_r0x00019253;
        goto LAB_000184b2;
      case 0x3f46:
        uStack_48 = *(uint *)(uVar2 + 0x6c);
        goto LAB_000185db;
      case 0x3f47:
        goto LAB_00017c70;
      case 0x3f48:
        goto LAB_00017b90;
      case 0x3f49:
        uVar21 = *(uint *)(uVar2 + 0x4c);
        goto LAB_00017d07;
      case 0x3f4a:
        goto code_r0x00017d27;
      case 0x3f4b:
        uVar21 = *(uint *)(uVar2 + 0x4c);
        goto LAB_00017c87;
      case 0x3f4c:
        goto code_r0x00017c9a;
      case 0x3f4d:
        goto LAB_00017b6a;
      case 0x3f4e:
code_r0x00017930:
        uVar21 = *(uint *)(uVar2 + 0xc);
        if (uVar21 == 0) goto LAB_00018e20;
        if (0x1f < uVar15) goto LAB_00017996;
        if (local_6c != 0) goto LAB_00017970;
        goto LAB_00017f30;
      case 0x3f4f:
        uVar21 = *(uint *)(uVar2 + 0xc);
        goto LAB_000183ff;
      case 0x3f50:
        uVar21 = 1;
        goto LAB_00017f32;
      case 0x3f51:
        goto LAB_00018817;
      case 0x3f52:
        goto code_r0x00018770;
      }
    }
  }
  uVar21 = 0xfffffffe;
  goto LAB_00018778;
  while (local_6c != 0) {
code_r0x00018ea0:
    pbVar20 = local_60 + 1;
    local_6c = local_6c - 1;
    bVar12 = (byte)uVar15;
    uVar15 = uVar15 + 8;
    local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
    local_60 = pbVar20;
    if (0xf < uVar15) goto code_r0x00018ec6;
  }
  goto LAB_000190a2;
code_r0x00018ec6:
  if (((uVar21 & 2) == 0) || (local_64 != 0x8b1f)) {
    *(undefined4 *)(uVar2 + 0x14) = 0;
    if (*(int *)(uVar2 + 0x24) != 0) {
      *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x30) = 0xffffffff;
    }
    if (((uVar21 & 1) == 0) ||
       (uVar21 = (local_64 & 0xff) * 0x100 + (local_64 >> 8), uVar21 != (uVar21 / 0x1f) * 0x1f)) {
      pcVar6 = "incorrect header check";
LAB_000188eb:
      uVar21 = 0xfffffffd;
      param_1[6] = (int)pcVar6;
      *(undefined4 *)(uVar2 + 4) = 0x3f51;
    }
    else {
      if ((local_64 & 0xf) == 8) {
        local_64 = local_64 >> 4;
        uVar15 = uVar15 - 4;
        uVar21 = (local_64 & 0xf) + 8;
        if (*(uint *)(uVar2 + 0x28) == 0) {
          *(uint *)(uVar2 + 0x28) = uVar21;
          if (0xf < uVar21) {
code_r0x00019879:
            pcVar6 = "invalid window size";
            goto LAB_00017b45;
          }
        }
        else if ((0xf < uVar21) || (*(uint *)(uVar2 + 0x28) < uVar21)) goto code_r0x00019879;
        iVar5 = 1 << (sbyte)uVar21;
        *(int *)(uVar2 + 0x18) = iVar5;
        iVar5 = adler32(0,0,0,iVar5);
        *(int *)(uVar2 + 0x1c) = iVar5;
        param_1[0xc] = iVar5;
        if ((local_64 & 0x200) == 0) {
          *(undefined4 *)(uVar2 + 4) = 0x3f3f;
          uVar15 = 0;
          local_64 = 0;
          goto LAB_00017f13;
        }
        local_64 = 0;
        uVar15 = 0;
        *(undefined4 *)(uVar2 + 4) = 0x3f3d;
        do {
          if (local_6c == 0) goto LAB_00017f30;
          local_6c = local_6c - 1;
          bVar12 = (byte)uVar15;
          uVar15 = uVar15 + 8;
          uVar21 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
          local_60 = local_60 + 1;
joined_r0x00017e43:
          local_64 = uVar21;
        } while (uVar15 < 0x20);
        uVar15 = 0;
        local_64 = 0;
        iVar5 = (uVar21 & 0xff00) * 0x100 +
                uVar21 * 0x1000000 + (uVar21 >> 0x18) + (uVar21 >> 8 & 0xff00);
        *(int *)(uVar2 + 0x1c) = iVar5;
        param_1[0xc] = iVar5;
        *(undefined4 *)(uVar2 + 4) = 0x3f3e;
code_r0x00017eda:
        if (*(int *)(uVar2 + 0x10) != 0) {
          iVar5 = adler32(0,0,0);
          *(int *)(uVar2 + 0x1c) = iVar5;
          param_1[0xc] = iVar5;
          *(undefined4 *)(uVar2 + 4) = 0x3f3f;
          goto LAB_00017f13;
        }
        uVar21 = 2;
        param_1[3] = (int)__dest;
        param_1[4] = local_5c;
        *param_1 = (int)local_60;
        param_1[1] = local_6c;
        *(uint *)(uVar2 + 0x40) = uVar15;
        *(uint *)(uVar2 + 0x3c) = local_64;
        goto LAB_00018778;
      }
      pcVar6 = "unknown compression method";
LAB_00017b45:
      uVar21 = 0xfffffffd;
      param_1[6] = (int)pcVar6;
      *(undefined4 *)(uVar2 + 4) = 0x3f51;
    }
  }
  else {
    if (*(int *)(uVar2 + 0x28) == 0) {
      *(undefined4 *)(uVar2 + 0x28) = 0xf;
    }
    uVar15 = 0;
    uVar9 = crc32(0,0,0);
    uStack_24 = 0x8b1f;
    *(undefined4 *)(uVar2 + 0x1c) = uVar9;
    uVar9 = crc32(uVar9,&uStack_24,2);
    *(undefined4 *)(uVar2 + 0x1c) = uVar9;
    *(undefined4 *)(uVar2 + 4) = 0x3f35;
    local_64 = 0;
    do {
      if (local_6c == 0) goto LAB_00017f30;
      local_6c = local_6c - 1;
      bVar12 = (byte)uVar15;
      uVar15 = uVar15 + 8;
      local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
      local_60 = local_60 + 1;
joined_r0x0001879b:
    } while (uVar15 < 0x10);
    *(uint *)(uVar2 + 0x14) = local_64;
    if ((char)local_64 == '\b') {
      if ((local_64 & 0xe000) != 0) {
        pcVar6 = "unknown header flags set";
        goto LAB_000188eb;
      }
      if (*(uint **)(uVar2 + 0x24) != (uint *)0x0) {
        **(uint **)(uVar2 + 0x24) = local_64 >> 8 & 1;
      }
      if (((local_64 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {
        uStack_24 = (undefined2)local_64;
        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2,uVar2);
        *(undefined4 *)(uVar2 + 0x1c) = uVar9;
      }
      local_64 = 0;
      uVar15 = 0;
      *(undefined4 *)(uVar2 + 4) = 0x3f36;
      do {
        if (local_6c == 0) goto LAB_00017f30;
        local_6c = local_6c - 1;
        bVar12 = (byte)uVar15;
        uVar15 = uVar15 + 8;
        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
        local_60 = local_60 + 1;
joined_r0x00018053:
      } while (uVar15 < 0x20);
      if (*(int *)(uVar2 + 0x24) != 0) {
        *(uint *)(*(int *)(uVar2 + 0x24) + 4) = local_64;
      }
      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {
        uStack_24 = (undefined2)local_64;
        uStack_22 = (undefined1)(local_64 >> 0x10);
        uStack_21 = (undefined1)(local_64 >> 0x18);
        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,4);
        *(undefined4 *)(uVar2 + 0x1c) = uVar9;
      }
      local_64 = 0;
      uVar15 = 0;
      *(undefined4 *)(uVar2 + 4) = 0x3f37;
      do {
        if (local_6c == 0) goto LAB_00017f30;
        local_6c = local_6c - 1;
        bVar12 = (byte)uVar15;
        uVar15 = uVar15 + 8;
        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
        local_60 = local_60 + 1;
joined_r0x000180e3:
      } while (uVar15 < 0x10);
      iVar5 = *(int *)(uVar2 + 0x24);
      if (iVar5 != 0) {
        *(uint *)(iVar5 + 8) = local_64 & 0xff;
        *(uint *)(iVar5 + 0xc) = local_64 >> 8;
      }
      uVar21 = *(uint *)(uVar2 + 0x14);
      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {
        uStack_24 = (undefined2)local_64;
        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);
        *(undefined4 *)(uVar2 + 0x1c) = uVar9;
        uVar21 = *(uint *)(uVar2 + 0x14);
      }
      *(undefined4 *)(uVar2 + 4) = 0x3f38;
      if ((uVar21 & 0x400) == 0) {
        uVar15 = 0;
        local_64 = 0;
code_r0x000181ae:
        if (*(int *)(uVar2 + 0x24) != 0) {
          *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x10) = 0;
        }
        goto code_r0x000181c0;
      }
      local_64 = 0;
      uVar15 = 0;
code_r0x0001829d:
      if (local_6c == 0) goto LAB_00017f30;
      do {
        pbVar20 = local_60 + 1;
        local_6c = local_6c - 1;
        bVar12 = (byte)uVar15;
        uVar15 = uVar15 + 8;
        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
        local_60 = pbVar20;
        if (0xf < uVar15) goto code_r0x000182ea;
      } while (local_6c != 0);
      uVar21 = 0;
    }
    else {
      param_1[6] = (int)"unknown compression method";
      *(undefined4 *)(uVar2 + 4) = 0x3f51;
LAB_00018817:
      uVar21 = 0xfffffffd;
    }
  }
  goto LAB_00017f32;
code_r0x000182ea:
  *(uint *)(uVar2 + 0x44) = local_64;
  if (*(int *)(uVar2 + 0x24) != 0) {
    *(uint *)(*(int *)(uVar2 + 0x24) + 0x14) = local_64;
  }
  if (((uVar21 & 0x200) == 0) || ((*(byte *)(uVar2 + 0xc) & 4) == 0)) {
    uVar15 = 0;
    local_64 = 0;
  }
  else {
    uVar15 = 0;
    uStack_24 = (undefined2)local_64;
    uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),&uStack_24,2);
    *(undefined4 *)(uVar2 + 0x1c) = uVar9;
    local_64 = 0;
    uVar21 = *(uint *)(uVar2 + 0x14);
  }
code_r0x000181c0:
  *(undefined4 *)(uVar2 + 4) = 0x3f39;
code_r0x000181cb:
  if ((uVar21 & 0x400) == 0) {
code_r0x0001826a:
    *(undefined4 *)(uVar2 + 0x44) = 0;
    *(undefined4 *)(uVar2 + 4) = 0x3f3a;
code_r0x0001832f:
    if ((uVar21 & 0x800) == 0) {
      if (*(int *)(uVar2 + 0x24) != 0) {
        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x1c) = 0;
      }
    }
    else {
      uVar21 = 0;
      if (local_6c == 0) goto LAB_00017f32;
      do {
        iVar5 = *(int *)(uVar2 + 0x24);
        uVar14 = uVar21 + 1;
        bVar12 = local_60[uVar21];
        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x1c), iVar7 != 0)) &&
           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x20))) {
          *(uint *)(uVar2 + 0x44) = uVar21 + 1;
          *(byte *)(iVar7 + uVar21) = bVar12;
        }
      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));
      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {
        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);
        *(undefined4 *)(uVar2 + 0x1c) = uVar9;
      }
      local_60 = local_60 + uVar14;
      local_6c = local_6c - uVar14;
      if (bVar12 != 0) goto LAB_00017f30;
      uVar21 = *(uint *)(uVar2 + 0x14);
    }
    *(undefined4 *)(uVar2 + 0x44) = 0;
    *(undefined4 *)(uVar2 + 4) = 0x3f3b;
code_r0x0001835c:
    if ((uVar21 & 0x1000) == 0) {
      if (*(int *)(uVar2 + 0x24) != 0) {
        *(undefined4 *)(*(int *)(uVar2 + 0x24) + 0x24) = 0;
      }
    }
    else {
      uVar21 = 0;
      if (local_6c == 0) goto LAB_00017f32;
      do {
        iVar5 = *(int *)(uVar2 + 0x24);
        uVar14 = uVar21 + 1;
        bVar12 = local_60[uVar21];
        if (((iVar5 != 0) && (iVar7 = *(int *)(iVar5 + 0x24), iVar7 != 0)) &&
           (uVar21 = *(uint *)(uVar2 + 0x44), uVar21 < *(uint *)(iVar5 + 0x28))) {
          *(uint *)(uVar2 + 0x44) = uVar21 + 1;
          *(byte *)(iVar7 + uVar21) = bVar12;
        }
      } while ((bVar12 != 0) && (uVar21 = uVar14, uVar14 < local_6c));
      if (((*(byte *)(uVar2 + 0x15) & 2) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {
        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar14);
        *(undefined4 *)(uVar2 + 0x1c) = uVar9;
      }
      local_60 = local_60 + uVar14;
      local_6c = local_6c - uVar14;
      if (bVar12 != 0) goto LAB_00017f30;
      uVar21 = *(uint *)(uVar2 + 0x14);
    }
    *(undefined4 *)(uVar2 + 4) = 0x3f3c;
code_r0x00018382:
    if ((uVar21 & 0x200) == 0) {
code_r0x0001838b:
      iVar5 = *(int *)(uVar2 + 0x24);
      if (iVar5 != 0) {
        *(undefined4 *)(iVar5 + 0x30) = 1;
        *(uint *)(iVar5 + 0x2c) = (int)uVar21 >> 9 & 1;
      }
      iVar5 = crc32(0,0,0);
      *(int *)(uVar2 + 0x1c) = iVar5;
      param_1[0xc] = iVar5;
      *(undefined4 *)(uVar2 + 4) = 0x3f3f;
      goto LAB_00017f13;
    }
    if (uVar15 < 0x10) {
      if (local_6c == 0) goto LAB_00017f30;
      do {
        pbVar20 = local_60 + 1;
        local_6c = local_6c - 1;
        bVar12 = (byte)uVar15;
        uVar15 = uVar15 + 8;
        local_64 = local_64 + ((uint)*local_60 << (bVar12 & 0x1f));
        local_60 = pbVar20;
        if (0xf < uVar15) goto code_r0x00018a2e;
      } while (local_6c != 0);
      uVar21 = 0;
    }
    else {
code_r0x00018a2e:
      if (((*(byte *)(uVar2 + 0xc) & 4) == 0) || (*(ushort *)(uVar2 + 0x1c) == local_64)) {
        uVar15 = 0;
        local_64 = 0;
        goto code_r0x0001838b;
      }
      param_1[6] = (int)"header crc mismatch";
      *(undefined4 *)(uVar2 + 4) = 0x3f51;
      uVar21 = 0xfffffffd;
    }
  }
  else {
    uVar14 = *(uint *)(uVar2 + 0x44);
    uVar17 = local_6c;
    if (uVar14 < local_6c) {
      uVar17 = uVar14;
    }
    if (uVar17 != 0) {
      iVar5 = *(int *)(uVar2 + 0x24);
      if ((iVar5 != 0) && (*(int *)(iVar5 + 0x10) != 0)) {
        iVar7 = *(int *)(iVar5 + 0x14) - uVar14;
        __n = *(uint *)(iVar5 + 0x18) - iVar7;
        if (uVar17 + iVar7 <= *(uint *)(iVar5 + 0x18)) {
          __n = uVar17;
        }
        memcpy((void *)(iVar7 + *(int *)(iVar5 + 0x10)),local_60,__n);
        uVar21 = *(uint *)(uVar2 + 0x14);
      }
      if (((uVar21 & 0x200) != 0) && ((*(byte *)(uVar2 + 0xc) & 4) != 0)) {
        uVar9 = crc32(*(undefined4 *)(uVar2 + 0x1c),local_60,uVar17);
        *(undefined4 *)(uVar2 + 0x1c) = uVar9;
      }
      local_6c = local_6c - uVar17;
      local_60 = local_60 + uVar17;
      uVar14 = *(int *)(uVar2 + 0x44) - uVar17;
      *(uint *)(uVar2 + 0x44) = uVar14;
    }
    if (uVar14 == 0) {
      uVar21 = *(uint *)(uVar2 + 0x14);
      goto code_r0x0001826a;
    }
LAB_00017f30:
    uVar21 = 0;
  }
  goto LAB_00017f32;
LAB_00017996:
  iVar5 = local_50 - local_5c;
  param_1[5] = param_1[5] + iVar5;
  *(int *)(uVar2 + 0x20) = *(int *)(uVar2 + 0x20) + iVar5;
  uVar14 = uVar21 & 4;
  if ((uVar14 != 0) && (iVar5 != 0)) {
    if (*(int *)(uVar2 + 0x14) == 0) {
      iVar5 = adler32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);
    }
    else {
      iVar5 = crc32(*(undefined4 *)(uVar2 + 0x1c),(int)__dest - iVar5,iVar5);
    }
    *(int *)(uVar2 + 0x1c) = iVar5;
    param_1[0xc] = iVar5;
    uVar21 = *(uint *)(uVar2 + 0xc);
    uVar14 = uVar21 & 4;
  }
  if (uVar14 != 0) {
    uVar14 = local_64;
    if (*(int *)(uVar2 + 0x14) == 0) {
      uVar14 = (local_64 >> 0x18) + local_64 * 0x1000000 + (local_64 >> 8 & 0xff00) +
               (local_64 & 0xff00) * 0x100;
    }
    if (*(uint *)(uVar2 + 0x1c) != uVar14) {
      param_1[6] = (int)"incorrect data check";
      *(undefined4 *)(uVar2 + 4) = 0x3f51;
      uVar21 = 0xfffffffd;
      local_50 = local_5c;
      goto LAB_00017f32;
    }
  }
  uVar15 = 0;
  local_64 = 0;
  local_50 = local_5c;
LAB_00018e20:
  *(undefined4 *)(uVar2 + 4) = 0x3f4f;
LAB_000183ff:
  if ((uVar21 != 0) && (*(int *)(uVar2 + 0x14) != 0)) {
    for (; uVar15 < 0x20; uVar15 = uVar15 + 8) {
      if (local_6c == 0) goto LAB_00017f30;
      local_6c = local_6c - 1;
      local_64 = local_64 + ((uint)*local_60 << ((byte)uVar15 & 0x1f));
      local_60 = local_60 + 1;
    }
    if (*(uint *)(uVar2 + 0x20) != local_64) {
      param_1[6] = (int)"incorrect length check";
      *(undefined4 *)(uVar2 + 4) = 0x3f51;
      uVar21 = 0xfffffffd;
      goto LAB_00017f32;
    }
    uVar15 = 0;
    local_64 = 0;
  }
  uVar21 = 1;
  *(undefined4 *)(uVar2 + 4) = 0x3f50;
  goto LAB_00017f32;
LAB_00018d40:
  uVar21 = 0;
  local_60 = pbVar20;
  goto LAB_00017f32;
code_r0x00018d1f:
  *(undefined4 *)(uVar2 + 0x1bc8) = 0xffffffff;
  *(undefined4 *)(uVar2 + 4) = 0x3f3f;
LAB_00017f13:
  if (param_2 - 5U < 2) goto LAB_00017f30;
  goto LAB_0001790a;
  while (local_6c != 0) {
LAB_00017970:
    pbVar20 = local_60 + 1;
    local_6c = local_6c - 1;
    bVar25 = (byte)uVar15;
    uVar15 = uVar15 + 8;
    local_64 = local_64 + ((uint)*local_60 << (bVar25 & 0x1f));
    local_60 = pbVar20;
    if (0x1f < uVar15) goto LAB_00017996;
  }
LAB_000190a2:
  uVar21 = 0;
  local_60 = pbVar20;
LAB_00017f32:
  *param_1 = (int)local_60;
  param_1[3] = (int)__dest;
  param_1[1] = local_6c;
  param_1[4] = local_5c;
  *(uint *)(uVar2 + 0x3c) = local_64;
  *(uint *)(uVar2 + 0x40) = uVar15;
  if ((*(int *)(uVar2 + 0x2c) != 0) ||
     (((local_5c != local_50 && (*(uint *)(uVar2 + 4) < 0x3f51)) &&
      ((*(uint *)(uVar2 + 4) < 0x3f4e || (param_2 != 4)))))) {
    iVar5 = FUN_000172e0();
    if (iVar5 != 0) {
      *(undefined4 *)(uVar2 + 4) = 0x3f52;
code_r0x00018770:
      uVar21 = 0xfffffffc;
      goto LAB_00018778;
    }
    local_6c = param_1[1];
    local_5c = param_1[4];
  }
  iVar5 = local_50 - local_5c;
  param_1[2] = param_1[2] + (uVar1 - local_6c);
  param_1[5] = param_1[5] + iVar5;
  *(int *)(uVar2 + 0x20) = *(int *)(uVar2 + 0x20) + iVar5;
  if (((*(byte *)(uVar2 + 0xc) & 4) != 0) && (iVar5 != 0)) {
    if (*(int *)(uVar2 + 0x14) == 0) {
      iVar7 = adler32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);
    }
    else {
      iVar7 = crc32(*(undefined4 *)(uVar2 + 0x1c),param_1[3] - iVar5,iVar5);
    }
    *(int *)(uVar2 + 0x1c) = iVar7;
    param_1[0xc] = iVar7;
  }
  iVar7 = *(int *)(uVar2 + 0x40);
  if (*(int *)(uVar2 + 8) != 0) {
    iVar7 = iVar7 + 0x40;
  }
  iVar3 = *(int *)(uVar2 + 4);
  local_4c = 0;
  if (iVar3 == 0x3f3f) {
    iVar7 = iVar7 + 0x80;
  }
  else if ((iVar3 == 0x3f47) || (iVar3 == 0x3f42)) {
    local_4c = 0x100;
  }
  param_1[0xb] = iVar7 + local_4c;
  if (((uVar1 - local_6c == 0 && iVar5 == 0) || (param_2 == 4)) && (uVar21 == 0)) {
    uVar21 = 0xfffffffb;
  }
LAB_00018778:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return uVar21;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0001eba0();
}

