{"version":3,"file":"title64.mjs","names":["TITLE_X8664","PatchTitle","titleMatchA","PatchTitle64","title64","_addr_","check","shdr","i","d","_findFuzzyCode","v","DataView","buffer","byteOffset","byteLength","addr","shAddr","BigInt","rip","ptr","getUint32","len","str","_readCstr","length","test","patch","_theShdrForAddress","data","Number","setUint32","_titleA","_titleL"],"sources":["../../../../src/util/internal/linux/title64.ts"],"sourcesContent":["/* eslint-disable max-classes-per-file */\n\nimport {TITLE_X8664} from './asm.ts';\nimport {Elf64} from './elf.ts';\nimport {PatchTitle, titleMatchA} from './title.ts';\n\n/**\n * PatchTitle64 object.\n */\nexport abstract class PatchTitle64 extends PatchTitle<Elf64> {}\n\n/**\n * Patch objects.\n */\nexport const title64 = [\n\t/**\n\t * 24.0.0.186 x86_64.\n\t */\n\tclass extends PatchTitle64 {\n\t\tprivate _addr_ = 0n;\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic check() {\n\t\t\tfor (const [shdr, i, d] of this._findFuzzyCode(TITLE_X8664['24'])) {\n\t\t\t\tconst v = new DataView(d.buffer, d.byteOffset, d.byteLength);\n\t\t\t\tconst addr = shdr.shAddr + BigInt(i);\n\t\t\t\tconst rip = addr + 7n;\n\t\t\t\tconst ptr = rip + BigInt(v.getUint32(i + 3, true));\n\t\t\t\tconst len = v.getUint32(i + 8, true);\n\t\t\t\tconst str = this._readCstr(ptr);\n\t\t\t\tif (!str || str.length !== len || !titleMatchA.test(str)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (this._addr_) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis._addr_ = addr;\n\t\t\t}\n\t\t\treturn !!this._addr_;\n\t\t}\n\n\t\t/**\n\t\t * @inheritDoc\n\t\t */\n\t\tpublic patch() {\n\t\t\tconst addr = this._addr_;\n\t\t\tconst shdr = this._theShdrForAddress(addr);\n\t\t\tconst v = new DataView(shdr.data);\n\t\t\tconst i = Number(addr - shdr.shAddr);\n\t\t\tconst rip = shdr.shAddr + BigInt(i + 7);\n\t\t\tv.setUint32(i + 3, Number(this._titleA - rip), true);\n\t\t\tv.setUint32(i + 8, this._titleL, true);\n\t\t}\n\t}\n] as (new (elf: Elf64, titleA: bigint, titleL: number) => PatchTitle64)[];\n"],"mappings":"AAAA;;AAEA,SAAQA,WAAW,QAAO,WAAU;AAEpC,SAAQC,UAAU,EAAEC,WAAW,QAAO,aAAY;;AAElD;AACA;AACA;AACA,OAAO,MAAeC,YAAY,SAASF,UAAU,CAAQ;;AAE7D;AACA;AACA;AACA,OAAO,MAAMG,OAAO,GAAG;AACtB;AACD;AACA;AACC,cAAcD,YAAY,CAAC;EAClBE,MAAM,GAAG,EAAE;;EAEnB;AACF;AACA;EACSC,KAAKA,CAAA,EAAG;IACd,KAAK,MAAM,CAACC,IAAI,EAAEC,CAAC,EAAEC,CAAC,CAAC,IAAI,IAAI,CAACC,cAAc,CAACV,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE;MAClE,MAAMW,CAAC,GAAG,IAAIC,QAAQ,CAACH,CAAC,CAACI,MAAM,EAAEJ,CAAC,CAACK,UAAU,EAAEL,CAAC,CAACM,UAAU,CAAC;MAC5D,MAAMC,IAAI,GAAGT,IAAI,CAACU,MAAM,GAAGC,MAAM,CAACV,CAAC,CAAC;MACpC,MAAMW,GAAG,GAAGH,IAAI,GAAG,EAAE;MACrB,MAAMI,GAAG,GAAGD,GAAG,GAAGD,MAAM,CAACP,CAAC,CAACU,SAAS,CAACb,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;MAClD,MAAMc,GAAG,GAAGX,CAAC,CAACU,SAAS,CAACb,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;MACpC,MAAMe,GAAG,GAAG,IAAI,CAACC,SAAS,CAACJ,GAAG,CAAC;MAC/B,IAAI,CAACG,GAAG,IAAIA,GAAG,CAACE,MAAM,KAAKH,GAAG,IAAI,CAACpB,WAAW,CAACwB,IAAI,CAACH,GAAG,CAAC,EAAE;QACzD;MACD;MACA,IAAI,IAAI,CAAClB,MAAM,EAAE;QAChB,OAAO,KAAK;MACb;MACA,IAAI,CAACA,MAAM,GAAGW,IAAI;IACnB;IACA,OAAO,CAAC,CAAC,IAAI,CAACX,MAAM;EACrB;;EAEA;AACF;AACA;EACSsB,KAAKA,CAAA,EAAG;IACd,MAAMX,IAAI,GAAG,IAAI,CAACX,MAAM;IACxB,MAAME,IAAI,GAAG,IAAI,CAACqB,kBAAkB,CAACZ,IAAI,CAAC;IAC1C,MAAML,CAAC,GAAG,IAAIC,QAAQ,CAACL,IAAI,CAACsB,IAAI,CAAC;IACjC,MAAMrB,CAAC,GAAGsB,MAAM,CAACd,IAAI,GAAGT,IAAI,CAACU,MAAM,CAAC;IACpC,MAAME,GAAG,GAAGZ,IAAI,CAACU,MAAM,GAAGC,MAAM,CAACV,CAAC,GAAG,CAAC,CAAC;IACvCG,CAAC,CAACoB,SAAS,CAACvB,CAAC,GAAG,CAAC,EAAEsB,MAAM,CAAC,IAAI,CAACE,OAAO,GAAGb,GAAG,CAAC,EAAE,IAAI,CAAC;IACpDR,CAAC,CAACoB,SAAS,CAACvB,CAAC,GAAG,CAAC,EAAE,IAAI,CAACyB,OAAO,EAAE,IAAI,CAAC;EACvC;AACD,CAAC,CACuE","ignoreList":[]}