From 887ce06302dcff921ee400627f16f29a2bba3916 Mon Sep 17 00:00:00 2001 From: Graham Date: Sun, 9 Aug 2020 18:02:52 +0100 Subject: [PATCH] Refactor unpackclass's Bzip2 decompressor Signed-off-by: Graham --- share/deob/map/unpackclass.yaml | 439 ++++++++++++++++---------------- 1 file changed, 217 insertions(+), 222 deletions(-) diff --git a/share/deob/map/unpackclass.yaml b/share/deob/map/unpackclass.yaml index bab9783e..3ad344d3 100644 --- a/share/deob/map/unpackclass.yaml +++ b/share/deob/map/unpackclass.yaml @@ -6,7 +6,7 @@ classes: unpackclass!e: "Buffer" unpackclass!f: "Class202" unpackclass!g: "Class203" - unpackclass!h: "Class204" + unpackclass!h: "Bzip2DState" unpackclass!i: "Class205" unpackclass!j: "Class206" unpackclass!k: "Class207" @@ -17,7 +17,7 @@ classes: unpackclass!q: "TracingException" unpackclass!r: "Class211" unpackclass!s: "Class201_Sub2" - unpackclass!u: "Class212" + unpackclass!u: "Bzip2Decompressor" unpackclass!unpackclass: "unpackclass" unpackclass!w: "Node" fields: @@ -124,104 +124,104 @@ fields: owner: "Class203" name: "aClass206Array1" unpackclass!h.A [B: - owner: "Class204" - name: "aByteArray83" + owner: "Bzip2DState" + name: "selectorMtf" unpackclass!h.B [[B: - owner: "Class204" - name: "aByteArrayArray58" + owner: "Bzip2DState" + name: "len" unpackclass!h.C [[I: - owner: "Class204" - name: "anIntArrayArray53" + owner: "Bzip2DState" + name: "limit" unpackclass!h.D [[I: - owner: "Class204" - name: "anIntArrayArray54" + owner: "Bzip2DState" + name: "base" unpackclass!h.E [[I: - owner: "Class204" - name: "anIntArrayArray55" + owner: "Bzip2DState" + name: "perm" unpackclass!h.F [I: - owner: "Class204" - name: "anIntArray694" + owner: "Bzip2DState" + name: "minLens" unpackclass!h.G I: - owner: "Class204" - name: "anInt6135" + owner: "Bzip2DState" + name: "saveNblock" unpackclass!h.a [B: - owner: "Class204" - name: "aByteArray78" + owner: "Bzip2DState" + name: "strmNextIn" unpackclass!h.b I: - owner: "Class204" - name: "anInt6121" + owner: "Bzip2DState" + name: "strmNextInPtr" unpackclass!h.c I: - owner: "Class204" - name: "anInt6122" + owner: "Bzip2DState" + name: "strmTotalInLo32" unpackclass!h.d [B: - owner: "Class204" - name: "aByteArray79" + owner: "Bzip2DState" + name: "strmNextOut" unpackclass!h.e I: - owner: "Class204" - name: "anInt6123" + owner: "Bzip2DState" + name: "strmNextOutPtr" unpackclass!h.f I: - owner: "Class204" - name: "anInt6124" + owner: "Bzip2DState" + name: "strmAvailOut" unpackclass!h.g I: - owner: "Class204" - name: "anInt6125" + owner: "Bzip2DState" + name: "strmTotalOutLo32" unpackclass!h.h B: - owner: "Class204" - name: "aByte28" + owner: "Bzip2DState" + name: "stateOutCh" unpackclass!h.i I: - owner: "Class204" - name: "anInt6126" + owner: "Bzip2DState" + name: "stateOutLen" unpackclass!h.j I: - owner: "Class204" - name: "anInt6127" + owner: "Bzip2DState" + name: "bsBuff" unpackclass!h.k I: - owner: "Class204" - name: "anInt6128" + owner: "Bzip2DState" + name: "bsLive" unpackclass!h.l I: - owner: "Class204" - name: "anInt6129" + owner: "Bzip2DState" + name: "blockSize100k" unpackclass!h.m I: - owner: "Class204" - name: "anInt6130" + owner: "Bzip2DState" + name: "origPtr" unpackclass!h.n I: - owner: "Class204" - name: "anInt6131" + owner: "Bzip2DState" + name: "tPos" unpackclass!h.o I: - owner: "Class204" - name: "anInt6132" + owner: "Bzip2DState" + name: "k0" unpackclass!h.p [I: - owner: "Class204" - name: "anIntArray690" + owner: "Bzip2DState" + name: "unfztab" unpackclass!h.q I: - owner: "Class204" - name: "anInt6133" + owner: "Bzip2DState" + name: "nblockUsed" unpackclass!h.r [I: - owner: "Class204" - name: "anIntArray691" + owner: "Bzip2DState" + name: "cftab" unpackclass!h.s [I: - owner: "Class204" - name: "anIntArray692" + owner: "Bzip2DState" + name: "tt" unpackclass!h.t I: - owner: "Class204" - name: "anInt6134" + owner: "Bzip2DState" + name: "nInUse" unpackclass!h.u [Z: - owner: "Class204" - name: "aBooleanArray26" + owner: "Bzip2DState" + name: "inUse" unpackclass!h.v [Z: - owner: "Class204" - name: "aBooleanArray27" + owner: "Bzip2DState" + name: "inUse16" unpackclass!h.w [B: - owner: "Class204" - name: "aByteArray80" + owner: "Bzip2DState" + name: "seqToUnseq" unpackclass!h.x [B: - owner: "Class204" - name: "aByteArray81" + owner: "Bzip2DState" + name: "mtfa" unpackclass!h.y [I: - owner: "Class204" - name: "anIntArray693" + owner: "Bzip2DState" + name: "mtfbase" unpackclass!h.z [B: - owner: "Class204" - name: "aByteArray82" + owner: "Bzip2DState" + name: "selector" unpackclass!i.a [I: owner: "Class205" name: "anIntArray695" @@ -292,8 +292,8 @@ fields: owner: "Class201_Sub2" name: "anInt6149" unpackclass!u.a Lunpackclass!h;: - owner: "Class212" - name: "aClass204_1" + owner: "Bzip2Decompressor" + name: "state" unpackclass!unpackclass.A [Lunpackclass!s;: owner: "unpackclass" name: "aClass201_Sub2Array11" @@ -816,181 +816,176 @@ methods: locals: 5: "ex" unpackclass!u.a (ILunpackclass!h;)I: - owner: "Class212" - name: "method4945" + owner: "Bzip2Decompressor" + name: "getBits" arguments: - 0: "arg0" - 1: "arg1" + 0: "nnn" + 1: "state" locals: - 17: "local17" + 17: "vvv" unpackclass!u.a (Lunpackclass!h;)V: - owner: "Class212" - name: "method4941" + owner: "Bzip2Decompressor" + name: "unRleObufToOutputFast" arguments: - 0: "arg0" + 0: "state" locals: - 2: "local2" - 5: "local5" - 8: "local8" - 11: "local11" - 13: "local13" - 16: "local16" - 19: "local19" - 22: "local22" - 25: "local25" - 27: "local27" - 32: "local32" - 60: "local60" - 76: "local76" - 81: "local81" - 130: "local130" - 135: "local135" - 155: "local155" - 160: "local160" - 178: "local178" - 183: "local183" - 188: "local188" - 212: "local212" + 2: "cStateOutCh" + 5: "cStateOutLen" + 8: "cNblockUsed" + 11: "cK0" + 13: "cTt" + 16: "cTPos" + 19: "csNextOut" + 22: "csNextOutPtr" + 25: "csAvailOut" + 27: "csAvailOutOld" + 32: "sSaveNblockPp" + 60: "gotoReturnNotr" + 76: "cTPos2" + 81: "k1" + 130: "cTPos2" + 135: "k1" + 155: "cTPos3" + 160: "k12" + 178: "cTPos4" + 183: "k13" + 188: "cNblockUsed2" + 212: "totalOutLo32Old" unpackclass!u.a ([BI[BII)I: - owner: "Class212" - name: "method4940" + owner: "Bzip2Decompressor" + name: "bunzip2" arguments: - 0: "arg0" - 1: "arg1" - 2: "arg2" - 3: "arg3" + 0: "dest" + 1: "destLen" + 2: "src" + 3: "srcLen" locals: {} unpackclass!u.a ([I[I[I[BIII)V: - owner: "Class212" - name: "method4947" + owner: "Bzip2Decompressor" + name: "hbCreateDecodeTables" arguments: - 0: "arg0" - 1: "arg1" - 2: "arg2" - 3: "arg3" - 4: "arg4" - 5: "arg5" - 6: "arg6" + 0: "limit" + 1: "base" + 2: "perm" + 3: "length" + 4: "minLen" + 5: "maxLen" + 6: "alphaSize" locals: - 1: "local1" - 3: "local3" - 6: "local6" - 27: "local27" - 38: "local38" - 56: "local56" - 74: "local74" - 85: "local85" - 87: "local87" - 100: "local100" - 118: "local118" + 1: "pp" + 3: "i" + 6: "j" + 27: "i" + 38: "i" + 56: "i" + 74: "i" + 85: "vec" + 87: "i" + 100: "vec2" + 118: "i" unpackclass!u.b (Lunpackclass!h;)V: - owner: "Class212" - name: "method4942" + owner: "Bzip2Decompressor" + name: "decompress" arguments: - 0: "arg0" + 0: "state" locals: - 56: "local56" - 60: "local60" - 67: "local67" - 138: "local138" - 142: "local142" - 162: "local162" - 174: "local174" - 182: "local182" - 186: "local186" - 213: "local213" - 217: "local217" - 221: "local221" - 223: "local223" - 226: "local226" - 229: "local229" - 246: "local246" - 248: "local248" - 263: "local263" - 269: "local269" - 273: "local273" - 304: "local304" - 309: "local309" - 311: "local311" - 315: "local315" - 320: "local320" - 344: "local344" - 347: "local347" - 349: "local349" - 351: "local351" - 420: "local420" - 422: "local422" - 426: "local426" - 438: "local438" - 440: "local440" - 443: "local443" - 470: "local470" - 473: "local473" - 475: "local475" - 480: "local480" - 485: "local485" - 490: "local490" - 495: "local495" - 500: "local500" - 501: "local501" - 503: "local503" - 507: "local507" - 516: "local516" - 531: "local531" - 541: "local541" - 543: "local543" - 573: "local573" - 596: "local596" - 600: "local600" - 609: "local609" - 630: "local630" - 643: "local643" - 645: "local645" - 669: "local669" - 677: "local677" - 684: "local684" - 689: "local689" - 767: "local767" - 771: "local771" - 778: "local778" - 806: "local806" - 815: "local815" - 846: "local846" - 864: "local864" - 866: "local866" - 869: "local869" - 909: "local909" - 934: "local934" - 957: "local957" - 961: "local961" - 970: "local970" - 999: "local999" - 1016: "local1016" - 1019: "local1019" - 1036: "local1036" - 1044: "local1044" - 1045: "local1045" - 1051: "local1051" - 1065: "local1065" + 56: "gotoBzXBlkhdr1" + 60: "uc" + 67: "uc2" + 138: "i" + 142: "uc3" + 162: "i" + 174: "i" + 182: "j" + 186: "uc3" + 213: "alphaSize" + 217: "nGroups" + 221: "nSelectors" + 223: "i" + 226: "j" + 229: "uc3" + 246: "pos" + 248: "v" + 263: "i" + 269: "v2" + 273: "tmp" + 304: "t" + 309: "curr" + 311: "i" + 315: "uc3" + 320: "uc4" + 344: "t" + 347: "minLen" + 349: "maxLen" + 351: "i" + 420: "eob" + 422: "groupNo" + 426: "i" + 438: "kk" + 440: "ii" + 443: "jj" + 470: "nblock" + 473: "groupNo2" + 475: "groupPos" + 480: "gSel" + 485: "gMinlen" + 490: "gLimit" + 495: "gPerm" + 500: "gBase" + 501: "groupPos2" + 503: "zn" + 507: "zvec" + 516: "zj" + 531: "nextSym" + 541: "es" + 543: "n" + 573: "gSel2" + 596: "zn2" + 600: "zvec2" + 609: "zj2" + 630: "es2" + 643: "uc3" + 645: "unfztab" + 669: "nn" + 677: "pp" + 684: "uc3" + 689: "z" + 767: "lno" + 771: "off" + 778: "pp2" + 864: "kk2" + 866: "ii" + 869: "jj" + 934: "gSel2" + 957: "zn2" + 961: "zvec2" + 970: "zj2" + 999: "i" + 1016: "i" + 1019: "cftab" + 1036: "i" + 1044: "uc3" + 1045: "tt" + 1051: "cftab" unpackclass!u.c (Lunpackclass!h;)B: - owner: "Class212" - name: "method4943" + owner: "Bzip2Decompressor" + name: "getUchar" arguments: - 0: "arg0" + 0: "state" locals: {} unpackclass!u.d (Lunpackclass!h;)B: - owner: "Class212" - name: "method4944" + owner: "Bzip2Decompressor" + name: "getBit" arguments: - 0: "arg0" + 0: "state" locals: {} unpackclass!u.e (Lunpackclass!h;)V: - owner: "Class212" - name: "method4946" + owner: "Bzip2Decompressor" + name: "makeMapsD" arguments: - 0: "arg0" + 0: "state" locals: - 4: "local4" + 4: "i" unpackclass!unpackclass. ([BZ)V: owner: "unpackclass" name: ""