295 lines
9.7 KiB
JavaScript
295 lines
9.7 KiB
JavaScript
// Metro module 12723 (f12724).
|
|
import { Buf16 } from "./Module12712";
|
|
let c8767_2 = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0];
|
|
let c8767_3 = [16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78];
|
|
let c8767_4 = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0];
|
|
let c8767_5 = [16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64];
|
|
module.exports = function inflate_table(a0, a1, a2, a3, a4, a5, a6, a7) {
|
|
let r48, r72, r78, r115, r132;
|
|
let bits = a7.bits;
|
|
const buf16 = new Buf16(16);
|
|
const buf162 = new Buf16(16);
|
|
let r5 = 0;
|
|
while (true) {
|
|
buf16[r5] = 0;
|
|
r5 = r5 + 1;
|
|
if (!(r5 <= 15)) {
|
|
const r64 = 0 < a3;
|
|
let r65 = 0;
|
|
if (r64) {
|
|
do {
|
|
const r67 = a1[a2 + r65];
|
|
buf16[r67] = buf16[r67] + 1;
|
|
r65 = r65 + 1;
|
|
} while (r65 < a3);
|
|
}
|
|
const r70 = buf16[15];
|
|
let r71 = 15;
|
|
let r18 = 15;
|
|
if (r70 === 0) {
|
|
do {
|
|
const r8 = r71 - 1;
|
|
r18 = r8;
|
|
if (!(1 <= r8)) {
|
|
break;
|
|
}
|
|
r72 = buf16[r8];
|
|
r71 = r8;
|
|
r18 = r71;
|
|
} while (r72 === 0);
|
|
}
|
|
if (bits > r18) {
|
|
bits = r18;
|
|
}
|
|
if (r18 === 0) {
|
|
const r172 = +a5;
|
|
a4[r172] = 20971520;
|
|
a4[+(r172 + 1)] = 20971520;
|
|
a7.bits = 1;
|
|
return 0;
|
|
}
|
|
let r0 = 1;
|
|
if (1 < r18) {
|
|
const r75 = buf16[1];
|
|
let r76 = 1;
|
|
r0 = 1;
|
|
if (r75 === 0) {
|
|
do {
|
|
const r77 = r76 + 1;
|
|
r0 = r77;
|
|
if (!(r77 < r18)) {
|
|
break;
|
|
}
|
|
r78 = buf16[r77];
|
|
r76 = r77;
|
|
r0 = r76;
|
|
} while (r78 === 0);
|
|
}
|
|
}
|
|
if (bits < r0) {
|
|
bits = r0;
|
|
}
|
|
let r11 = 1;
|
|
let r79 = 1;
|
|
while (true) {
|
|
const r82 = (r11 << 1) - buf16[r79];
|
|
const r12 = r79;
|
|
if (r82 < 0) {
|
|
return -1;
|
|
}
|
|
r79 = r12 + 1;
|
|
r11 = r82;
|
|
if (!(r79 <= 15)) {
|
|
L22: {
|
|
if (0 < r82) {
|
|
if (a0 !== 0 && r18 === 1) {
|
|
break L22;
|
|
}
|
|
return -1;
|
|
}
|
|
}
|
|
buf162[1] = 0;
|
|
let r85 = 1;
|
|
while (true) {
|
|
const r86 = r85 + 1;
|
|
buf162[r86] = buf162[r85] + buf16[r85];
|
|
r85 = r86;
|
|
if (!(r85 < 15)) {
|
|
const r89 = 0 < a3;
|
|
let r90 = 0;
|
|
if (r89) {
|
|
do {
|
|
const r92 = a1[a2 + r90];
|
|
const r93 = r90;
|
|
if (r92 !== 0) {
|
|
const r39 = a1[a2 + r93];
|
|
const r96 = +buf162[r39];
|
|
buf162[r39] = r96 + 1;
|
|
a6[r96] = r93;
|
|
}
|
|
r90 = r93 + 1;
|
|
} while (r90 < a3);
|
|
}
|
|
let r20 = 19;
|
|
let r19 = 0;
|
|
let r41 = a6;
|
|
let r21 = 0;
|
|
let r40 = a6;
|
|
if (a0 !== 0) {
|
|
if (a0 === 1) {
|
|
r40 = c8767_2;
|
|
r41 = c8767_3;
|
|
r19 = -257;
|
|
r20 = 256;
|
|
r21 = -257;
|
|
} else {
|
|
r40 = c8767_4;
|
|
r41 = c8767_5;
|
|
r20 = -1;
|
|
r19 = 0;
|
|
r21 = 0;
|
|
}
|
|
}
|
|
L66: {
|
|
const r98 = 1 << bits;
|
|
const r22 = r98 - 1;
|
|
const r28 = a0 === 1;
|
|
if (!(r28 && 852 < r98)) {
|
|
const r101 = a0 === 2;
|
|
let r14 = 0;
|
|
let r103 = r98;
|
|
let r104 = 0;
|
|
let r105 = bits;
|
|
let r106 = 0;
|
|
let r107 = r0;
|
|
let r108 = a5;
|
|
let r109 = -1;
|
|
if (r101) {
|
|
r14 = 0;
|
|
r104 = 0;
|
|
r105 = bits;
|
|
r106 = 0;
|
|
r107 = r0;
|
|
r108 = a5;
|
|
r109 = -1;
|
|
r103 = r98;
|
|
if (592 < r103) {
|
|
break L66;
|
|
}
|
|
}
|
|
loop36: while (true) {
|
|
const r49 = r107 - r104;
|
|
const r47 = a6[r106];
|
|
const r9 = r14;
|
|
const r15 = r103;
|
|
const r110 = r104;
|
|
const r46 = r105;
|
|
const r111 = r106;
|
|
const r112 = r107;
|
|
const r113 = r108;
|
|
const r6 = r109;
|
|
if (r47 < r20) {
|
|
r48 = a6[r111];
|
|
r115 = 0;
|
|
} else {
|
|
const r26 = a6[r111] > r20;
|
|
r48 = 0;
|
|
r115 = 96;
|
|
if (r26) {
|
|
r115 = r41[r19 + a6[r111]];
|
|
r48 = r40[r21 + a6[r111]];
|
|
}
|
|
}
|
|
const r119 = 1 << r112 - r110;
|
|
const r4 = 1 << r46;
|
|
let r120 = r4;
|
|
while (true) {
|
|
const r121 = r113 + (r9 >> r110);
|
|
const r122 = r120 - r119;
|
|
a4[r121 + r122] = r49 << 24 | r115 << 16 | r48;
|
|
r120 = r122;
|
|
if (r120 === 0) {
|
|
const r127 = 1 << r112 - 1;
|
|
const r128 = r9 & r127;
|
|
let r129 = r127;
|
|
let r130 = r129;
|
|
if (r128) {
|
|
do {
|
|
const r131 = r129 >> 1;
|
|
r132 = r9 & r131;
|
|
r129 = r131;
|
|
r130 = r129;
|
|
} while (r132);
|
|
}
|
|
const r133 = r130 !== 0 ? (r9 & r130 - 1) + r130 : 0;
|
|
const r136 = r111 + 1;
|
|
const r138 = buf16[r112] - 1;
|
|
buf16[r112] = r138;
|
|
let r139 = r112;
|
|
if (r138 == 0) {
|
|
if (r112 === r18) {
|
|
if (r133 !== 0) {
|
|
a4[r113 + r133] = 4194304 | r112 - r110 << 24;
|
|
}
|
|
a7.bits = bits;
|
|
return 0;
|
|
}
|
|
r139 = a1[a2 + a6[r136]];
|
|
}
|
|
r14 = r133;
|
|
r103 = r15;
|
|
r104 = r110;
|
|
r105 = r46;
|
|
r106 = r136;
|
|
r107 = r139;
|
|
r108 = r113;
|
|
r109 = r6;
|
|
if (!(r139 > bits)) {
|
|
continue loop36;
|
|
}
|
|
const r142 = r133 & r22;
|
|
r14 = r133;
|
|
r103 = r15;
|
|
r104 = r110;
|
|
r105 = r46;
|
|
r106 = r136;
|
|
r107 = r139;
|
|
r108 = r113;
|
|
r109 = r6;
|
|
if (r142 === r109) {
|
|
continue loop36;
|
|
}
|
|
let r143 = r110;
|
|
if (r143 === 0) {
|
|
r143 = bits;
|
|
}
|
|
const r144 = r113 + r4;
|
|
const r145 = r139 - r143;
|
|
const r146 = 1 << r145;
|
|
const r147 = r145 + r143;
|
|
let r148 = r145;
|
|
if (r147 < r18) {
|
|
let r151 = r146 - buf16[r145 + r143];
|
|
let r152 = r145;
|
|
r148 = r152;
|
|
while (!(r151 <= 0)) {
|
|
const r153 = r152 + 1;
|
|
const r52 = r153 + r143;
|
|
const r154 = r151;
|
|
r148 = r153;
|
|
if (!(r52 < r18)) {
|
|
break;
|
|
}
|
|
r151 = (r154 << 1) - buf16[r153 + r143];
|
|
r152 = r153;
|
|
r148 = r152;
|
|
}
|
|
}
|
|
const r159 = r15 + (1 << r148);
|
|
if (!(r28 && 852 < r159) && !(r101 && 592 < r159)) {
|
|
a4[r142] = bits << 24 | r148 << 16 | r144 - a5;
|
|
r14 = r133;
|
|
r103 = r159;
|
|
r104 = r143;
|
|
r105 = r148;
|
|
r106 = r136;
|
|
r107 = r139;
|
|
r108 = r144;
|
|
r109 = r142;
|
|
continue loop36;
|
|
}
|
|
return 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|