internal int Process(InflateBlocks blocks, int r) { ZlibCodec z = blocks._codec; int num1 = z.NextIn; int num2 = z.AvailableBytesIn; int number = blocks.bitb; int num3 = blocks.bitk; int num4 = blocks.write; int num5 = num4 < blocks.read ? blocks.read - num4 - 1 : blocks.end - num4; while (true) { switch (this.mode) { case 0: if (num5 >= 258 && num2 >= 10) { blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; r = this.InflateFast((int)this.lbits, (int)this.dbits, this.ltree, this.ltree_index, this.dtree, this.dtree_index, blocks, z); num1 = z.NextIn; num2 = z.AvailableBytesIn; number = blocks.bitb; num3 = blocks.bitk; num4 = blocks.write; num5 = num4 < blocks.read ? blocks.read - num4 - 1 : blocks.end - num4; if (r != 0) { this.mode = r == 1 ? 7 : 9; break; } } this.need = (int)this.lbits; this.tree = this.ltree; this.tree_index = this.ltree_index; this.mode = 1; goto case 1; case 1: int index1 = this.need; while (num3 < index1) { if (num2 != 0) { r = 0; --num2; number |= ((int)z.InputBuffer[num1++] & (int)byte.MaxValue) << num3; num3 += 8; } else { blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; return blocks.Flush(r); } } int index2 = (this.tree_index + (number & InflateCodes.inflate_mask[index1])) * 3; number = SharedUtils.URShift(number, this.tree[index2 + 1]); num3 -= this.tree[index2 + 1]; int num6 = this.tree[index2]; if (num6 == 0) { this.lit = this.tree[index2 + 2]; this.mode = 6; break; } else if ((num6 & 16) != 0) { this.get_Renamed = num6 & 15; this.len = this.tree[index2 + 2]; this.mode = 2; break; } else if ((num6 & 64) == 0) { this.need = num6; this.tree_index = index2 / 3 + this.tree[index2 + 2]; break; } else if ((num6 & 32) != 0) { this.mode = 7; break; } else goto label_18; case 2: int index3 = this.get_Renamed; while (num3 < index3) { if (num2 != 0) { r = 0; --num2; number |= ((int)z.InputBuffer[num1++] & (int)byte.MaxValue) << num3; num3 += 8; } else { blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; return blocks.Flush(r); } } this.len += number & InflateCodes.inflate_mask[index3]; number >>= index3; num3 -= index3; this.need = (int)this.dbits; this.tree = this.dtree; this.tree_index = this.dtree_index; this.mode = 3; goto case 3; case 3: int index4 = this.need; while (num3 < index4) { if (num2 != 0) { r = 0; --num2; number |= ((int)z.InputBuffer[num1++] & (int)byte.MaxValue) << num3; num3 += 8; } else { blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; return blocks.Flush(r); } } int index5 = (this.tree_index + (number & InflateCodes.inflate_mask[index4])) * 3; number >>= this.tree[index5 + 1]; num3 -= this.tree[index5 + 1]; int num7 = this.tree[index5]; if ((num7 & 16) != 0) { this.get_Renamed = num7 & 15; this.dist = this.tree[index5 + 2]; this.mode = 4; break; } else if ((num7 & 64) == 0) { this.need = num7; this.tree_index = index5 / 3 + this.tree[index5 + 2]; break; } else goto label_34; case 4: int index6 = this.get_Renamed; while (num3 < index6) { if (num2 != 0) { r = 0; --num2; number |= ((int)z.InputBuffer[num1++] & (int)byte.MaxValue) << num3; num3 += 8; } else { blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; return blocks.Flush(r); } } this.dist += number & InflateCodes.inflate_mask[index6]; number >>= index6; num3 -= index6; this.mode = 5; goto case 5; case 5: int num8 = num4 - this.dist; while (num8 < 0) num8 += blocks.end; for (; this.len != 0; --this.len) { if (num5 == 0) { if (num4 == blocks.end && blocks.read != 0) { num4 = 0; num5 = num4 < blocks.read ? blocks.read - num4 - 1 : blocks.end - num4; } if (num5 == 0) { blocks.write = num4; r = blocks.Flush(r); num4 = blocks.write; num5 = num4 < blocks.read ? blocks.read - num4 - 1 : blocks.end - num4; if (num4 == blocks.end && blocks.read != 0) { num4 = 0; num5 = num4 < blocks.read ? blocks.read - num4 - 1 : blocks.end - num4; } if (num5 == 0) { blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; return blocks.Flush(r); } } } blocks.window[num4++] = blocks.window[num8++]; --num5; if (num8 == blocks.end) num8 = 0; } this.mode = 0; break; case 6: if (num5 == 0) { if (num4 == blocks.end && blocks.read != 0) { num4 = 0; num5 = num4 < blocks.read ? blocks.read - num4 - 1 : blocks.end - num4; } if (num5 == 0) { blocks.write = num4; r = blocks.Flush(r); num4 = blocks.write; num5 = num4 < blocks.read ? blocks.read - num4 - 1 : blocks.end - num4; if (num4 == blocks.end && blocks.read != 0) { num4 = 0; num5 = num4 < blocks.read ? blocks.read - num4 - 1 : blocks.end - num4; } if (num5 == 0) goto label_65; } } r = 0; blocks.window[num4++] = (byte)this.lit; --num5; this.mode = 0; break; case 7: goto label_68; case 8: goto label_73; case 9: goto label_74; default: goto label_75; } } label_18: this.mode = 9; z.Message = "invalid literal/length code"; r = -3; blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; return blocks.Flush(r); label_34: this.mode = 9; z.Message = "invalid distance code"; r = -3; blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; return blocks.Flush(r); label_65: blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; return blocks.Flush(r); label_68: if (num3 > 7) { num3 -= 8; ++num2; --num1; } blocks.write = num4; r = blocks.Flush(r); num4 = blocks.write; int num9 = num4 < blocks.read ? blocks.read - num4 - 1 : blocks.end - num4; if (blocks.read != blocks.write) { blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; return blocks.Flush(r); } else this.mode = 8; label_73: r = 1; blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; return blocks.Flush(r); label_74: r = -3; blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; return blocks.Flush(r); label_75: r = -2; blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; return blocks.Flush(r); }
internal int Process(InflateBlocks blocks, int r) { ZlibCodec z = blocks._codec; int num1 = z.NextIn; int num2 = z.AvailableBytesIn; int number = blocks.bitb; int num3 = blocks.bitk; int num4 = blocks.write; int num5 = num4 < blocks.read ? blocks.read - num4 - 1 : blocks.end - num4; while (true) { switch (this.mode) { case 0: if (num5 >= 258 && num2 >= 10) { blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; r = this.InflateFast((int)this.lbits, (int)this.dbits, this.ltree, this.ltree_index, this.dtree, this.dtree_index, blocks, z); num1 = z.NextIn; num2 = z.AvailableBytesIn; number = blocks.bitb; num3 = blocks.bitk; num4 = blocks.write; num5 = num4 < blocks.read ? blocks.read - num4 - 1 : blocks.end - num4; if (r != 0) { this.mode = r == 1 ? 7 : 9; break; } } this.need = (int)this.lbits; this.tree = this.ltree; this.tree_index = this.ltree_index; this.mode = 1; goto case 1; case 1: int index1 = this.need; while (num3 < index1) { if (num2 != 0) { r = 0; --num2; number |= ((int)z.InputBuffer[num1++] & (int)byte.MaxValue) << num3; num3 += 8; } else { blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; return(blocks.Flush(r)); } } int index2 = (this.tree_index + (number & InflateCodes.inflate_mask[index1])) * 3; number = SharedUtils.URShift(number, this.tree[index2 + 1]); num3 -= this.tree[index2 + 1]; int num6 = this.tree[index2]; if (num6 == 0) { this.lit = this.tree[index2 + 2]; this.mode = 6; break; } else if ((num6 & 16) != 0) { this.get_Renamed = num6 & 15; this.len = this.tree[index2 + 2]; this.mode = 2; break; } else if ((num6 & 64) == 0) { this.need = num6; this.tree_index = index2 / 3 + this.tree[index2 + 2]; break; } else if ((num6 & 32) != 0) { this.mode = 7; break; } else { goto label_18; } case 2: int index3 = this.get_Renamed; while (num3 < index3) { if (num2 != 0) { r = 0; --num2; number |= ((int)z.InputBuffer[num1++] & (int)byte.MaxValue) << num3; num3 += 8; } else { blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; return(blocks.Flush(r)); } } this.len += number & InflateCodes.inflate_mask[index3]; number >>= index3; num3 -= index3; this.need = (int)this.dbits; this.tree = this.dtree; this.tree_index = this.dtree_index; this.mode = 3; goto case 3; case 3: int index4 = this.need; while (num3 < index4) { if (num2 != 0) { r = 0; --num2; number |= ((int)z.InputBuffer[num1++] & (int)byte.MaxValue) << num3; num3 += 8; } else { blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; return(blocks.Flush(r)); } } int index5 = (this.tree_index + (number & InflateCodes.inflate_mask[index4])) * 3; number >>= this.tree[index5 + 1]; num3 -= this.tree[index5 + 1]; int num7 = this.tree[index5]; if ((num7 & 16) != 0) { this.get_Renamed = num7 & 15; this.dist = this.tree[index5 + 2]; this.mode = 4; break; } else if ((num7 & 64) == 0) { this.need = num7; this.tree_index = index5 / 3 + this.tree[index5 + 2]; break; } else { goto label_34; } case 4: int index6 = this.get_Renamed; while (num3 < index6) { if (num2 != 0) { r = 0; --num2; number |= ((int)z.InputBuffer[num1++] & (int)byte.MaxValue) << num3; num3 += 8; } else { blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; return(blocks.Flush(r)); } } this.dist += number & InflateCodes.inflate_mask[index6]; number >>= index6; num3 -= index6; this.mode = 5; goto case 5; case 5: int num8 = num4 - this.dist; while (num8 < 0) { num8 += blocks.end; } for (; this.len != 0; --this.len) { if (num5 == 0) { if (num4 == blocks.end && blocks.read != 0) { num4 = 0; num5 = num4 < blocks.read ? blocks.read - num4 - 1 : blocks.end - num4; } if (num5 == 0) { blocks.write = num4; r = blocks.Flush(r); num4 = blocks.write; num5 = num4 < blocks.read ? blocks.read - num4 - 1 : blocks.end - num4; if (num4 == blocks.end && blocks.read != 0) { num4 = 0; num5 = num4 < blocks.read ? blocks.read - num4 - 1 : blocks.end - num4; } if (num5 == 0) { blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; return(blocks.Flush(r)); } } } blocks.window[num4++] = blocks.window[num8++]; --num5; if (num8 == blocks.end) { num8 = 0; } } this.mode = 0; break; case 6: if (num5 == 0) { if (num4 == blocks.end && blocks.read != 0) { num4 = 0; num5 = num4 < blocks.read ? blocks.read - num4 - 1 : blocks.end - num4; } if (num5 == 0) { blocks.write = num4; r = blocks.Flush(r); num4 = blocks.write; num5 = num4 < blocks.read ? blocks.read - num4 - 1 : blocks.end - num4; if (num4 == blocks.end && blocks.read != 0) { num4 = 0; num5 = num4 < blocks.read ? blocks.read - num4 - 1 : blocks.end - num4; } if (num5 == 0) { goto label_65; } } } r = 0; blocks.window[num4++] = (byte)this.lit; --num5; this.mode = 0; break; case 7: goto label_68; case 8: goto label_73; case 9: goto label_74; default: goto label_75; } } label_18: this.mode = 9; z.Message = "invalid literal/length code"; r = -3; blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; return(blocks.Flush(r)); label_34: this.mode = 9; z.Message = "invalid distance code"; r = -3; blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; return(blocks.Flush(r)); label_65: blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; return(blocks.Flush(r)); label_68: if (num3 > 7) { num3 -= 8; ++num2; --num1; } blocks.write = num4; r = blocks.Flush(r); num4 = blocks.write; int num9 = num4 < blocks.read ? blocks.read - num4 - 1 : blocks.end - num4; if (blocks.read != blocks.write) { blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; return(blocks.Flush(r)); } else { this.mode = 8; } label_73: r = 1; blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; return(blocks.Flush(r)); label_74: r = -3; blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; return(blocks.Flush(r)); label_75: r = -2; blocks.bitb = number; blocks.bitk = num3; z.AvailableBytesIn = num2; z.TotalBytesIn += (long)(num1 - z.NextIn); z.NextIn = num1; blocks.write = num4; return(blocks.Flush(r)); }
internal int Process(InflateBlocks blocks, int r) { int num7; int num11; int num15; ZlibCodec z = blocks._codec; int nextIn = z.NextIn; int availableBytesIn = z.AvailableBytesIn; int bitb = blocks.bitb; int bitk = blocks.bitk; int write = blocks.write; int num6 = (write < blocks.read) ? ((blocks.read - write) - 1) : (blocks.end - write); Label_004E: switch (this.mode) { case 0: if ((num6 < 0x102) || (availableBytesIn < 10)) { break; } blocks.bitb = bitb; blocks.bitk = bitk; z.AvailableBytesIn = availableBytesIn; z.TotalBytesIn += nextIn - z.NextIn; z.NextIn = nextIn; blocks.write = write; r = this.InflateFast(this.lbits, this.dbits, this.ltree, this.ltree_index, this.dtree, this.dtree_index, blocks, z); nextIn = z.NextIn; availableBytesIn = z.AvailableBytesIn; bitb = blocks.bitb; bitk = blocks.bitk; write = blocks.write; num6 = (write < blocks.read) ? ((blocks.read - write) - 1) : (blocks.end - write); if (r == 0) { break; } this.mode = (r == 1) ? 7 : 9; goto Label_004E; case 1: goto Label_0190; case 2: { int num10 = this.get_Renamed; while (bitk < num10) { if (availableBytesIn != 0) { r = 0; availableBytesIn--; bitb |= (z.InputBuffer[nextIn++] & 0xff) << bitk; bitk += 8; } else { blocks.bitb = bitb; blocks.bitk = bitk; z.AvailableBytesIn = availableBytesIn; z.TotalBytesIn += nextIn - z.NextIn; z.NextIn = nextIn; blocks.write = write; return(blocks.Flush(r)); } } this.len += bitb & inflate_mask[num10]; bitb = bitb >> num10; bitk -= num10; this.need = this.dbits; this.tree = this.dtree; this.tree_index = this.dtree_index; this.mode = 3; goto Label_03B3; } case 3: goto Label_03B3; case 4: { int num14 = this.get_Renamed; while (bitk < num14) { if (availableBytesIn != 0) { r = 0; availableBytesIn--; bitb |= (z.InputBuffer[nextIn++] & 0xff) << bitk; bitk += 8; } else { blocks.bitb = bitb; blocks.bitk = bitk; z.AvailableBytesIn = availableBytesIn; z.TotalBytesIn += nextIn - z.NextIn; z.NextIn = nextIn; blocks.write = write; return(blocks.Flush(r)); } } this.dist += bitb & inflate_mask[num14]; bitb = bitb >> num14; bitk -= num14; this.mode = 5; goto Label_057D; } case 5: goto Label_057D; case 6: if (num6 == 0) { if ((write == blocks.end) && (blocks.read != 0)) { write = 0; num6 = (write < blocks.read) ? ((blocks.read - write) - 1) : (blocks.end - write); } if (num6 == 0) { blocks.write = write; r = blocks.Flush(r); write = blocks.write; num6 = (write < blocks.read) ? ((blocks.read - write) - 1) : (blocks.end - write); if ((write == blocks.end) && (blocks.read != 0)) { write = 0; num6 = (write < blocks.read) ? ((blocks.read - write) - 1) : (blocks.end - write); } if (num6 == 0) { blocks.bitb = bitb; blocks.bitk = bitk; z.AvailableBytesIn = availableBytesIn; z.TotalBytesIn += nextIn - z.NextIn; z.NextIn = nextIn; blocks.write = write; return(blocks.Flush(r)); } } } r = 0; blocks.window[write++] = (byte)this.lit; num6--; this.mode = 0; goto Label_004E; case 7: if (bitk > 7) { bitk -= 8; availableBytesIn++; nextIn--; } blocks.write = write; r = blocks.Flush(r); write = blocks.write; if (write >= blocks.read) { int end = blocks.end; } else { int read = blocks.read; } if (blocks.read != blocks.write) { blocks.bitb = bitb; blocks.bitk = bitk; z.AvailableBytesIn = availableBytesIn; z.TotalBytesIn += nextIn - z.NextIn; z.NextIn = nextIn; blocks.write = write; return(blocks.Flush(r)); } this.mode = 8; goto Label_096B; case 8: goto Label_096B; case 9: r = -3; blocks.bitb = bitb; blocks.bitk = bitk; z.AvailableBytesIn = availableBytesIn; z.TotalBytesIn += nextIn - z.NextIn; z.NextIn = nextIn; blocks.write = write; return(blocks.Flush(r)); default: r = -2; blocks.bitb = bitb; blocks.bitk = bitk; z.AvailableBytesIn = availableBytesIn; z.TotalBytesIn += nextIn - z.NextIn; z.NextIn = nextIn; blocks.write = write; return(blocks.Flush(r)); } this.need = this.lbits; this.tree = this.ltree; this.tree_index = this.ltree_index; this.mode = 1; Label_0190: num7 = this.need; while (bitk < num7) { if (availableBytesIn != 0) { r = 0; availableBytesIn--; bitb |= (z.InputBuffer[nextIn++] & 0xff) << bitk; bitk += 8; } else { blocks.bitb = bitb; blocks.bitk = bitk; z.AvailableBytesIn = availableBytesIn; z.TotalBytesIn += nextIn - z.NextIn; z.NextIn = nextIn; blocks.write = write; return(blocks.Flush(r)); } } int index = (this.tree_index + (bitb & inflate_mask[num7])) * 3; bitb = SharedUtils.URShift(bitb, this.tree[index + 1]); bitk -= this.tree[index + 1]; int num9 = this.tree[index]; if (num9 == 0) { this.lit = this.tree[index + 2]; this.mode = 6; } else if ((num9 & 0x10) != 0) { this.get_Renamed = num9 & 15; this.len = this.tree[index + 2]; this.mode = 2; } else if ((num9 & 0x40) == 0) { this.need = num9; this.tree_index = (index / 3) + this.tree[index + 2]; } else { if ((num9 & 0x20) == 0) { this.mode = 9; z.Message = "invalid literal/length code"; r = -3; blocks.bitb = bitb; blocks.bitk = bitk; z.AvailableBytesIn = availableBytesIn; z.TotalBytesIn += nextIn - z.NextIn; z.NextIn = nextIn; blocks.write = write; return(blocks.Flush(r)); } this.mode = 7; } goto Label_004E; Label_03B3: num11 = this.need; while (bitk < num11) { if (availableBytesIn != 0) { r = 0; availableBytesIn--; bitb |= (z.InputBuffer[nextIn++] & 0xff) << bitk; bitk += 8; } else { blocks.bitb = bitb; blocks.bitk = bitk; z.AvailableBytesIn = availableBytesIn; z.TotalBytesIn += nextIn - z.NextIn; z.NextIn = nextIn; blocks.write = write; return(blocks.Flush(r)); } } int num12 = (this.tree_index + (bitb & inflate_mask[num11])) * 3; bitb = bitb >> this.tree[num12 + 1]; bitk -= this.tree[num12 + 1]; int num13 = this.tree[num12]; if ((num13 & 0x10) != 0) { this.get_Renamed = num13 & 15; this.dist = this.tree[num12 + 2]; this.mode = 4; } else { if ((num13 & 0x40) != 0) { this.mode = 9; z.Message = "invalid distance code"; r = -3; blocks.bitb = bitb; blocks.bitk = bitk; z.AvailableBytesIn = availableBytesIn; z.TotalBytesIn += nextIn - z.NextIn; z.NextIn = nextIn; blocks.write = write; return(blocks.Flush(r)); } this.need = num13; this.tree_index = (num12 / 3) + this.tree[num12 + 2]; } goto Label_004E; Label_057D: num15 = write - this.dist; while (num15 < 0) { num15 += blocks.end; } while (this.len != 0) { if (num6 == 0) { if ((write == blocks.end) && (blocks.read != 0)) { write = 0; num6 = (write < blocks.read) ? ((blocks.read - write) - 1) : (blocks.end - write); } if (num6 == 0) { blocks.write = write; r = blocks.Flush(r); write = blocks.write; num6 = (write < blocks.read) ? ((blocks.read - write) - 1) : (blocks.end - write); if ((write == blocks.end) && (blocks.read != 0)) { write = 0; num6 = (write < blocks.read) ? ((blocks.read - write) - 1) : (blocks.end - write); } if (num6 == 0) { blocks.bitb = bitb; blocks.bitk = bitk; z.AvailableBytesIn = availableBytesIn; z.TotalBytesIn += nextIn - z.NextIn; z.NextIn = nextIn; blocks.write = write; return(blocks.Flush(r)); } } } blocks.window[write++] = blocks.window[num15++]; num6--; if (num15 == blocks.end) { num15 = 0; } this.len--; } this.mode = 0; goto Label_004E; Label_096B: r = 1; blocks.bitb = bitb; blocks.bitk = bitk; z.AvailableBytesIn = availableBytesIn; z.TotalBytesIn += nextIn - z.NextIn; z.NextIn = nextIn; blocks.write = write; return(blocks.Flush(r)); }