Files
discord-decomp/_bundle/Module4812.js
T
2026-11-01 12:12:55 +02:00

157 lines
4.9 KiB
JavaScript

// Metro module 4812 (f4813).
import { get64BitValue } from "./Module4813";
export function parseItemLocationBox(a0, a1, a2, a3) {
let r2, r31, r125, baseOffset2, extentCount, extentIndex, extentLength2, extentOffset2, items2;
const offsetSize = a2 + 3;
const r23 = {
item: {
dataReferenceIndex: 2,
extentCount: 2,
extent: {}
}
};
if (a1 < 2) {
r23.itemCount = 2;
r23.item.itemId = 2;
} else if (a1 === 2) {
r23.itemCount = 4;
r23.item.itemId = 4;
}
const item = r23.item;
const r15 = a1 === 1;
item.constructionMethod = r15 ? 2 : a1 === 2 ? 2 : 0;
const baseOffsetSize = offsetSize + 1;
const r41 = {
offsetSize,
lengthSize: offsetSize,
baseOffsetSize,
indexSize: baseOffsetSize,
itemCount: offsetSize + 2
};
r41.items = r41.itemCount + r23.itemCount;
r41.item = {
itemId: 0
};
r41.item.constructionMethod = r41.item.itemId + r23.item.itemId;
r41.item.dataReferenceIndex = r41.item.constructionMethod + r23.item.constructionMethod;
const extentOffset = a0.getUint8(r41.offsetSize) >> 4;
r23.item.extent.extentOffset = extentOffset;
const extentLength = 15 & a0.getUint8(r41.lengthSize);
r23.item.extent.extentLength = extentLength;
r23.item.baseOffset = a0.getUint8(r41.baseOffsetSize) >> 4;
const indexSize = r41.indexSize;
const r14 = r15 ? 15 & a0.getUint8(indexSize) : a1 === 2 ? 15 & a0.getUint8(indexSize) : void 0;
r23.item.extent.extentIndex = r14 !== void 0 ? r14 : 0;
const itemCount = r41.itemCount;
const r21 = a1 < 2 ? a0.getUint16(itemCount) : a1 === 2 ? a0.getUint32(itemCount) : void 0;
if (r21 === void 0) {
items2 = [];
} else {
const r20 = [];
let items = r41.items;
const r82 = 0 < r21;
const r84 = "This file uses an 8-bit offset which is currently not supported by ExifReader. Contact the maintainer to get it fixed.";
let r85 = 0;
items2 = r20;
if (r82) {
do {
const r5 = r85;
const itemId = a1 < 2 ? a0.getUint16(items) : a1 === 2 ? a0.getUint32(items) : void 0;
const r91 = items + r23.item.itemId;
const constructionMethod = r15 ? 15 & a0.getUint16(r91) : a1 === 2 ? 15 & a0.getUint16(r91) : void 0;
const r97 = r91 + r23.item.constructionMethod;
const r28 = {
extents: [],
itemId,
constructionMethod,
dataReferenceIndex: a0.getUint16(r97)
};
const r102 = r97 + r23.item.dataReferenceIndex;
const baseOffset = r23.item.baseOffset;
if (baseOffset === 4) {
baseOffset2 = a0.getUint32(r102);
} else {
baseOffset2 = 0;
if (baseOffset === 8) {
console.warn(r84);
baseOffset2 = get64BitValue(a0, r102);
}
}
r28.baseOffset = baseOffset2;
const r116 = r102 + r23.item.baseOffset;
r28.extentCount = a0.getUint16(r116);
let r121 = r116 + r23.item.extentCount;
const r123 = 0 < r28.extentCount;
let r0 = 0;
let r124 = r121;
if (r123) {
do {
L41: {
r2 = r0;
r125 = r121;
if (!r15) {
extentIndex = void 0;
if (a1 !== 2) {
break L41;
}
}
extentIndex = void 0;
if (r14 > 0) {
if (r14 === 4) {
r31 = a0.getUint32(r125);
} else {
r31 = 0;
if (r14 === 8) {
console.warn(r84);
r31 = get64BitValue(a0, r125);
}
}
extentIndex = r31;
}
}
const r138 = r125 + r23.item.extent.extentIndex;
if (extentOffset === 4) {
extentOffset2 = a0.getUint32(r138);
} else {
extentOffset2 = 0;
if (extentOffset === 8) {
console.warn(r84);
extentOffset2 = get64BitValue(a0, r138);
}
}
const r152 = r138 + r23.item.extent.extentOffset;
if (extentLength === 4) {
extentLength2 = a0.getUint32(r152);
} else {
extentLength2 = 0;
if (extentLength === 8) {
console.warn(r84);
extentLength2 = get64BitValue(a0, r152);
}
}
const r134 = {
extentIndex,
extentOffset: extentOffset2,
extentLength: extentLength2
};
r121 = r152 + r23.item.extent.extentLength;
r28.extents.push(r134);
r0 = r2 + 1;
extentCount = r28.extentCount;
r124 = r121;
} while (r0 < extentCount);
}
r20.push(r28);
r85 = r5 + 1;
items = r124;
items2 = r20;
} while (r85 < r21);
}
}
return {
type: "iloc",
items: items2,
length: a3
};
}