decord/source/13137_inflate_fast.js
2026-08-25 06:04:03 +00:00

374 lines
11 KiB
JavaScript

// Module ID: 13137
// Function ID: 13138
// Name: inflate_fast
// Dependencies: []
// Module 13137 (inflate_fast)
export default function inflate_fast(avail_in) {
({ state, next_in, input } = avail_in);
let sum = next_in + (avail_in.avail_in - 5);
({ next_out, output } = avail_in);
const sum1 = next_out + (avail_in.avail_out - 257);
({ wsize, wnext, window: _window, hold, bits, lencode, distcode } = state);
while (true) {
let tmp8 = bits;
let tmp9 = hold;
let tmp10 = next_out;
let tmp11 = next_in;
let sum4 = hold;
let sum3 = next_in;
let sum5 = bits;
if (bits < 15) {
let tmp15 = +next_in;
let sum2 = bits + 8;
let tmp17 = +tmp15 + 1;
sum3 = tmp17 + 1;
sum4 = hold + (input[tmp15] << bits) + (input[tmp17] << sum2);
sum5 = sum2 + 8;
}
let tmp18 = lencode[sum4 & tmp6];
let tmp19 = tmp18 >>> 24;
let tmp20 = sum4 >>> tmp19;
let diff = sum5 - tmp19;
let tmp22 = tmp18 >>> 16 & 255;
let tmp23 = tmp18;
while (0 !== tmp22) {
if (16 & tmp22) {
let tmp28 = 65535 & tmp18;
let tmp29 = tmp22 & 15;
let sum9 = tmp28;
let diff1 = diff;
let tmp32 = tmp20;
let tmp33 = sum3;
if (tmp29) {
let sum8 = diff;
let sum7 = tmp20;
let sum6 = sum3;
if (diff < tmp29) {
let tmp37 = +sum3;
sum6 = tmp37 + 1;
sum7 = tmp20 + (input[tmp37] << diff);
sum8 = diff + 8;
}
sum9 = tmp28 + (sum7 & (1 << tmp29) - 1);
tmp32 = sum7 >>> tmp29;
diff1 = sum8 - tmp29;
tmp33 = sum6;
}
let sum12 = tmp32;
let sum11 = tmp33;
let sum13 = diff1;
if (diff1 < 15) {
let tmp41 = +tmp33;
let sum10 = diff1 + 8;
let tmp43 = +tmp41 + 1;
sum11 = tmp43 + 1;
sum12 = tmp32 + (input[tmp41] << diff1) + (input[tmp43] << sum10);
sum13 = sum10 + 8;
}
let tmp44 = distcode[sum12 & tmp7];
let tmp45 = tmp44 >>> 24;
let tmp46 = sum12 >>> tmp45;
let diff2 = sum13 - tmp45;
let tmp48 = tmp44 >>> 16 & 255;
let tmp49 = tmp44;
while (!(16 & tmp48)) {
if (64 & tmp48) {
let str2 = "invalid distance code";
avail_in.msg = "invalid distance code";
let num4 = 30;
state.mode = 30;
let tmp24 = diff2;
let tmp25 = tmp46;
let tmp26 = next_out;
let tmp27 = sum11;
} else {
sum13 = diff2;
sum12 = tmp46;
continue;
}
sum = tmp24 >> 3;
sum = tmp27 - sum;
avail_in.next_in = sum;
avail_in.next_out = tmp26;
if (sum < sum) {
sum = sum - sum + 5;
} else {
sum = 5 - (sum - sum);
}
avail_in.avail_in = sum;
if (tmp26 < sum1) {
sum = sum1 - tmp26 + 257;
} else {
sum = 257 - (tmp26 - sum1);
}
sum = tmp24 - (sum << 3);
avail_in.avail_out = sum;
state.hold = tmp25 & (1 << sum) - 1;
state.bits = sum;
}
let tmp51 = tmp48 & 15;
let tmp52 = diff2;
let tmp53 = tmp46;
let tmp54 = sum11;
let tmp50 = 65535 & tmp44;
if (diff2 < tmp51) {
let tmp55 = +sum11;
let sum14 = tmp55 + 1;
let sum15 = tmp46 + (input[tmp55] << diff2);
let sum16 = diff2 + 8;
let sum18 = sum15;
let sum17 = sum14;
let sum19 = sum16;
if (sum16 < tmp51) {
let tmp62 = +sum14;
sum17 = tmp62 + 1;
sum18 = sum15 + (input[tmp62] << sum16);
sum19 = sum16 + 8;
}
tmp52 = sum19;
tmp53 = sum18;
tmp54 = sum17;
}
let sum20 = tmp50 + (tmp53 & (1 << tmp51) - 1);
if (sum20 > tmp4) {
let str4 = "invalid distance too far back";
avail_in.msg = "invalid distance too far back";
let num8 = 30;
state.mode = 30;
tmp24 = tmp52;
tmp25 = tmp53;
tmp26 = next_out;
tmp27 = tmp54;
} else {
sum = tmp53 >>> tmp51;
sum = tmp52 - tmp51;
sum = next_out - tmp2;
if (sum20 > sum) {
let diff3 = sum20 - sum;
if (diff3 > tmp5) {
if (state.sane) {
let str3 = "invalid distance too far back";
avail_in.msg = "invalid distance too far back";
let num7 = 30;
state.mode = 30;
tmp24 = sum;
tmp25 = sum;
tmp26 = next_out;
tmp27 = tmp54;
}
}
if (0 === wnext) {
sum = wsize - diff3;
let tmp85 = _window;
let num5 = sum;
let diff4 = sum9;
let tmp87 = next_out;
if (diff3 < sum9) {
sum = diff3;
sum = next_out;
do {
sum = +sum;
sum = sum + 1;
output[sum] = _window[sum];
sum = sum - 1;
sum = sum + 1;
} while (sum);
diff4 = sum9 - diff3;
num5 = sum - sum20;
tmp85 = output;
tmp87 = sum;
}
} else if (wnext < diff3) {
let diff5 = wsize + wnext - diff3;
let diff6 = diff3 - wnext;
tmp85 = _window;
num5 = diff5;
tmp87 = next_out;
diff4 = sum9;
if (diff6 < sum9) {
let diff7 = diff6;
let tmp97 = next_out;
do {
let tmp94 = +tmp97;
let sum21 = tmp94 + 1;
output[tmp94] = _window[diff5];
diff7 = diff7 - 1;
diff5 = diff5 + 1;
tmp97 = sum21;
} while (diff7);
let diff8 = sum9 - diff6;
tmp85 = _window;
num5 = 0;
diff4 = diff8;
tmp87 = sum21;
if (wnext < diff8) {
let num6 = 0;
sum = wnext;
let diff9 = diff8 - wnext;
do {
sum = +sum21;
sum = sum + 1;
output[sum] = _window[num6];
sum = sum - 1;
num6 = num6 + 1;
sum21 = sum;
} while (sum);
num5 = sum - sum20;
tmp85 = output;
diff4 = diff9;
tmp87 = sum;
}
}
} else {
let diff10 = wnext - diff3;
tmp85 = _window;
num5 = diff10;
diff4 = sum9;
tmp87 = next_out;
if (diff3 < sum9) {
let diff11 = diff3;
let tmp91 = next_out;
do {
let tmp88 = +tmp91;
let sum22 = tmp88 + 1;
output[tmp88] = _window[diff10];
diff11 = diff11 - 1;
diff10 = diff10 + 1;
tmp91 = sum22;
} while (diff11);
diff4 = sum9 - diff3;
num5 = sum22 - sum20;
tmp85 = output;
tmp87 = sum22;
}
}
sum = num5;
sum = diff4;
sum = tmp87;
sum = num5;
sum = tmp87;
sum = diff4;
if (2 < diff4) {
do {
sum = +sum;
sum = sum + 1;
output[sum] = tmp85[sum];
sum = +sum + 1;
sum = sum + 1;
output[sum] = tmp85[sum];
sum = +sum + 1;
sum = sum + 1;
sum = sum + 1;
output[sum] = tmp85[sum];
sum = sum - 3;
} while (2 < sum);
}
let tmp75 = sum;
let tmp76 = sum;
let sum29 = sum;
let tmp78 = tmp54;
if (sum) {
sum = +sum;
sum = sum + 1;
output[sum] = tmp85[sum];
if (1 < sum) {
sum = +sum;
sum = sum + 1;
output[sum] = tmp85[sum + 1];
}
sum29 = sum;
tmp75 = sum;
tmp76 = sum;
tmp78 = tmp54;
}
} else {
let diff12 = next_out - sum20;
let tmp74 = sum9;
let tmp73 = next_out;
do {
let tmp64 = +tmp73;
let sum23 = diff12 + 1;
output[tmp64] = output[diff12];
let tmp66 = +tmp64 + 1;
let sum24 = sum23 + 1;
output[tmp66] = output[sum23];
let tmp68 = +tmp66 + 1;
let sum25 = tmp68 + 1;
let sum26 = sum24 + 1;
output[tmp68] = output[sum24];
diff13 = tmp74 - 3;
diff12 = sum26;
tmp73 = sum25;
tmp74 = diff13;
} while (2 < diff13);
tmp75 = sum;
tmp76 = sum;
sum29 = sum25;
tmp78 = tmp54;
if (diff13) {
let tmp79 = +sum25;
let sum27 = tmp79 + 1;
output[tmp79] = output[sum26];
let sum28 = sum27;
if (1 < diff13) {
let tmp82 = +sum27;
sum28 = tmp82 + 1;
output[tmp82] = output[sum26 + 1];
}
sum29 = sum28;
tmp75 = sum;
tmp76 = sum;
tmp78 = tmp54;
}
}
tmp24 = tmp75;
tmp25 = tmp76;
tmp26 = sum29;
tmp27 = tmp78;
if (tmp78 < sum) {
bits = tmp75;
hold = tmp76;
next_out = sum29;
next_in = tmp78;
tmp24 = tmp75;
tmp25 = tmp76;
tmp26 = sum29;
tmp27 = tmp78;
}
}
} else if (64 & tmp22) {
let num = 32;
if (32 & tmp22) {
let num3 = 12;
state.mode = 12;
tmp24 = diff;
tmp25 = tmp20;
tmp26 = next_out;
tmp27 = sum3;
} else {
let str = "invalid literal/length code";
avail_in.msg = "invalid literal/length code";
let num2 = 30;
state.mode = 30;
tmp24 = diff;
tmp25 = tmp20;
tmp26 = next_out;
tmp27 = sum3;
}
} else {
sum5 = diff;
sum4 = tmp20;
continue;
}
continue;
}
sum = +next_out;
sum29 = sum + 1;
output[sum] = 65535 & tmp18;
tmp75 = diff;
tmp76 = tmp20;
tmp78 = sum3;
}
};