slot0 = type slot1 = string.byte slot2 = string.format slot3 = string.match slot4 = string.gmatch slot5 = string.gsub slot6 = table.concat slot7 = require("bit") slot8 = slot7.band slot9 = slot7.bor slot10 = slot7.tohex slot11 = slot7.lshift slot12 = slot7.rshift slot13 = slot7.arshift slot23 = { [0] = false, false, "tdiARI", "twiARI", { [765.0] = "efdtstltYRR", [759.0] = "efdctsfR-R", [725.0] = "efsctsiR-R", [669.0] = "evfststltYRR", [727.0] = "efsctsfR-R", [1219.0] = "evsubfssiaawRR", [1453.0] = "evmhogsmianRRR", [1039.0] = "evmhosmfRRR", [1281.0] = "evmhessiaawRRR", [1068.0] = "evmhoumiaRRR", [785.0] = "evlwheRR4", [1036.0] = "evmhoumiRRR", [766.0] = "efdtsteqYRR", [754.0] = "efdcfufR-R", [1421.0] = "evmhosmianwRRR", [756.0] = "efdctuiR-R", [1413.0] = "evmhossianwRRR", [542.0] = "evnandRRR", [544.0] = "evsrwuRRR", [724.0] = "efsctuiR-R", [1035.0] = "evmhesmfRRR", [1031.0] = "evmhossfRRR", [560.0] = "evcmpgtuYRR", [514.0] = "evaddiwRAR~", [522.0] = "evextsbRR", [668.0] = "evfststgtYRR", [666.0] = "evfsctsizR-R", [660.0] = "evfsctuiR-R", [633.0] = "evselRRRW", [1222.0] = "evdivwsRRR", [637.0] = "evselRRRW", [521.0] = "evnegRR", [526.0] = "evcntlswRR", [640.0] = "evfsaddRRR", [525.0] = "evcntlzwRR", [639.0] = "evselRRRW", [644.0] = "evfsabsRR", [652.0] = "evfscmpgtYRR", [648.0] = "evfsmulRRR", [1324.0] = "evmhogumiaaRRR", [1037.0] = "evmhosmiRRR", [635.0] = "evselRRRW", [656.0] = "evfscfuiR-R", [658.0] = "evfscfufR-R", [1284.0] = "evmhousiaawRRR", [719.0] = "efscfdR-R", [664.0] = "evfsctuizR-R", [1292.0] = "evmhoumiaawRRR", [1069.0] = "evmhosmiaRRR", [562.0] = "evcmpltuYRR", [537.0] = "eveqvRRR", [554.0] = "evrlwiRRA", [552.0] = "evrlwRRR", [546.0] = "evsrwiuRRA", [713.0] = "efsdivRRR", [716.0] = "efscmpgtYRR", [1101.0] = "evmwhsmiRRR", [721.0] = "efscfsiR-R", [722.0] = "efscfufR-R", [738.0] = "efdcfuidR-R", [752.0] = "efdcfuiR-R", [732.0] = "efststgtYRR", [536.0] = "evnor|evnotRRR=", [535.0] = "evor|evmrRRR=", [1133.0] = "evmwhsmiaRRR", [708.0] = "efsabsRR", [530.0] = "evandcRRR", [704.0] = "efsaddRRR", [529.0] = "evandRRR", [564.0] = "evcmpeqYRR", [1452.0] = "evmhogumianRRR", [712.0] = "efsmulRRR", [527.0] = "brincRRR", [556.0] = "evmergehiRRR", [1345.0] = "evmwlssiaawRRR", [720.0] = "efscfuiR-R", [518.0] = "evsubiwRAR~", [548.0] = "evslwRRR", [1420.0] = "evmhoumianwRRR", [728.0] = "efsctuizR-R", [1412.0] = "evmhousianwRRR", [740.0] = "efdabsRR", [516.0] = "evsubwRRR~", [736.0] = "efdaddRRR", [748.0] = "efdcmpgtYRR", [744.0] = "efdmulRRR", [524.0] = "evrndwRR", [520.0] = "evabsRR", [764.0] = "efdtstgtYRR", [512.0] = "evaddwRRR", [760.0] = "efdctuizR-R", [773.0] = "evldhRR8", [769.0] = "evlddRR8", [781.0] = "evlhhousplatRR2", [1323.0] = "evmhegsmfaaRRR", [777.0] = "evlhhesplatRR2", [789.0] = "evlwhouRR4", [1283.0] = "evmhessfaawRRR", [797.0] = "evlwhsplatRR4", [1291.0] = "evmhesmfaawRRR", [793.0] = "evlwwsplatRR4", [805.0] = "evstdhRR8", [801.0] = "evstddRR8", [1100.0] = "evmwhumiRRR", [821.0] = "evstwhoRR4", [817.0] = "evstwheRR4", [829.0] = "evstwwoRR4", [1132.0] = "evmwhumiaRRR", [825.0] = "evstwweRR4", [1363.0] = "evmwssfaaRRR", [1371.0] = "evmwsmfaaRRR", [1451.0] = "evmhegsmfanRRR", [1419.0] = "evmhesmfanwRRR", [1411.0] = "evmhessfanwRRR", [632.0] = "evselRRR", [1220.0] = "evmraRR", [636.0] = "evselRRRW", [1499.0] = "evmwsmfanRRR", [1491.0] = "evmwssfanRRR", [659.0] = "evfscfsfR-R", [1027.0] = "evmhessfRRR", [663.0] = "evfsctsfR-R", [1067.0] = "evmhesmfaRRR", [1059.0] = "evmhessfaRRR", [1115.0] = "evmwsmfRRR", [1107.0] = "evmwssfRRR", [1147.0] = "evmwsmfaRRR", [1139.0] = "evmwssfaRRR", [563.0] = "evcmpltsYRR", [559.0] = "evmergelohiRRR", [555.0] = "evsplatfiRS", [723.0] = "efscfsfR-R", [547.0] = "evsrwisRRA", [539.0] = "evorcRRR", [739.0] = "efdcfsidR-R", [751.0] = "efdcfsR-R", [747.0] = "efdctsidzR-R", [523.0] = "evextshRR", [755.0] = "efdcfsfR-R", [1227.0] = "evsubfsmiaawRR", [772.0] = "evldhxRR0R", [768.0] = "evlddxRR0R", [780.0] = "evlhhousplatxRR0R", [1321.0] = "evmhegsmiaaRRR", [776.0] = "evlhhesplatxRR0R", [788.0] = "evlwhouxRR0R", [784.0] = "evlwhexRR0R", [796.0] = "evlwhsplatxRR0R", [1289.0] = "evmhesmiaawRRR", [792.0] = "evlwwsplatxRR0R", [804.0] = "evstdhxRR0R", [800.0] = "evstddxRR0R", [820.0] = "evstwhoxRR0R", [816.0] = "evstwhexRR0R", shift = 0, [828.0] = "evstwwoxRR0R", [1353.0] = "evmwlsmiaawRRR", [824.0] = "evstwwexRR0R", [1369.0] = "evmwsmiaaRRR", [1449.0] = "evmhegsmianRRR", [1417.0] = "evmhesmianwRRR", [1409.0] = "evmhessianwRRR", mask = 2047, [1218.0] = "evsubfusiaawRR", [1481.0] = "evmwlsmianwRRR", [1226.0] = "evsubfumiaawRR", [1473.0] = "evmwlssianwRRR", [1497.0] = "evmwsmianRRR", [646.0] = "evfsnegRR", [654.0] = "evfscmpeqYRR", [1320.0] = "evmhegumiaaRRR", [1033.0] = "evmhesmiRRR", [662.0] = "evfsctufR-R", [1280.0] = "evmheusiaawRRR", [670.0] = "evfststeqYRR", [1288.0] = "evmheumiaawRRR", [1065.0] = "evmhesmiaRRR", [1113.0] = "evmwsmiRRR", [1145.0] = "evmwsmiaRRR", [1344.0] = "evmwlusiaawRRR", [1352.0] = "evmwlumiaawRRR", [710.0] = "efsnegRR", [1368.0] = "evmwumiaaRRR", [1448.0] = "evmhegumianRRR", [718.0] = "efscmpeqYRR", [558.0] = "evmergehiloRRR", [726.0] = "efsctufR-R", [550.0] = "evslwiRRA", [1416.0] = "evmheumianwRRR", [734.0] = "efststeqYRR", [1408.0] = "evmheusianwRRR", [730.0] = "efsctsizR-R", [742.0] = "efdnegRR", [534.0] = "evxorRRR", [750.0] = "efdcmpeqYRR", [746.0] = "efdctuidzR-R", [758.0] = "efdctufR-R", [1217.0] = "evaddssiaawRR", [1480.0] = "evmwlumianwRRR", [1225.0] = "evaddsmiaawRR", [1472.0] = "evmwlusianwRRR", [762.0] = "efdctsizR-R", [1496.0] = "evmwumianRRR", [771.0] = "evldwRR8", [783.0] = "evlhhossplatRR2", [1327.0] = "evmhogsmfaaRRR", [1032.0] = "evmheumiRRR", [791.0] = "evlwhosRR4", [1287.0] = "evmhossfaawRRR", [1295.0] = "evmhosmfaawRRR", [1064.0] = "evmheumiaRRR", [803.0] = "evstdwRR8", [1112.0] = "evmwumiRRR", [1096.0] = "evmwlumiRRR", [1144.0] = "evmwumiaRRR", [1128.0] = "evmwlumiaRRR", [1455.0] = "evmhogsmfanRRR", [1423.0] = "evmhosmfanwRRR", [1415.0] = "evmhossfanwRRR", [1216.0] = "evaddusiaawRR", [634.0] = "evselRRRW", [1224.0] = "evaddumiaawRR", [638.0] = "evselRRRW", [641.0] = "evfssubRRR", [645.0] = "evfsnabsRR", [649.0] = "evfsdivRRR", [653.0] = "evfscmpltYRR", [657.0] = "evfscfsiR-R", [661.0] = "evfsctsiR-R", [1071.0] = "evmhosmfaRRR", [1063.0] = "evmhossfaRRR", [1103.0] = "evmwhsmfRRR", [1095.0] = "evmwhssfRRR", [1135.0] = "evmwhsmfaRRR", [709.0] = "efsnabsRR", [1127.0] = "evmwhssfaRRR", [705.0] = "efssubRRR", [717.0] = "efscmpltYRR", [561.0] = "evcmpgtsYRR", [557.0] = "evmergeloRRR", [553.0] = "evsplatiRS", [733.0] = "efststltYRR", [545.0] = "evsrwsRRR", [741.0] = "efdnabsRR", [737.0] = "efdsubRRR", [749.0] = "efdcmpltYRR", [745.0] = "efddivRRR", [757.0] = "efdctsiR-R", [753.0] = "efdcfsiR-R", [1223.0] = "evdivwuRRR", [770.0] = "evldwxRR0R", [782.0] = "evlhhossplatxRR0R", [1325.0] = "evmhogsmiaaRRR", [790.0] = "evlwhosxRR0R", [1285.0] = "evmhossiaawRRR", [1293.0] = "evmhosmiaawRRR", [802.0] = "evstdwxRR0R" }, false, false, "mulliRRI", "subficRRI", false, "cmpl_iYLRU", "cmp_iYLRI", "addicRRI", "addic.RRI", "addi|liRR0I", "addis|lisRR0I", "b_KBJ", "sc", "bKJ", { [0] = "mcrfXX", [289.0] = "creqv|crsetCCC%", [257.0] = "crandCCC", [225.0] = "crnandCCC", mask = 1023, [150.0] = "isync", [129.0] = "crandcCCC", [16.0] = "b_lrKB", [33.0] = "crnor|crnotCCC=", [528.0] = "b_ctrKB", [417.0] = "crorcCCC", [449.0] = "cror|crmoveCCC=", [193.0] = "crxor|crclrCCC%", shift = 1 }, "rlwimiRR~AAA.", setmetatable({ shift = 0, mask = -1 }, { __index = function (slot0, slot1) if uv0(uv1(slot1, 6), 31) == 0 and uv0(uv1(slot1, 1), 31) == 31 - uv0(uv1(slot1, 11), 31) then return "slwiRR~A." elseif slot4 == 31 and slot3 == 32 - slot2 then return "srwiRR~-A." else return "rlwinmRR~AAA." end end }), false, "rlwnmRR~RAA.", "oriNRR~U", "orisRR~U", "xoriRR~U", "xorisRR~U", "andi.RR~U", "andis.RR~U", { [0] = "rldiclRR~HM.", "rldicrRR~HM.", "rldicRR~HM.", "rldimiRR~HM.", { [0] = "rldclRR~RM.", "rldcrRR~RM.", shift = 1, mask = 1 }, shift = 2, mask = 7 }, setmetatable({ [0] = "cmp_YLRR", nil, nil, nil, "twARR", nil, nil, nil, "subfcRRR.", "mulhduRRR.", "addcRRR.", "mulhwuRRR.", nil, nil, nil, "iselltRRR", nil, nil, nil, { [0] = "mfcrR", "mfocrfRZ", shift = 20, mask = 1 }, "lwarxRR0R", "ldxRR0R", nil, "lwzxRR0R", "slwRR~R.", nil, "cntlzwRR~", "sldRR~R.", "andRR~R.", nil, nil, nil, "cmpl_YLRR", [232.0] = "subfmeRR.", [824.0] = "srawiRR~A.", [233.0] = "mulldRRR.", [149.0] = "stdxRR0R", [181.0] = "stduxRRR", [552.0] = "subfoRRR.", [86.0] = "dcbf-R0R", [235.0] = "mullwRRR.", [119.0] = "lbzuxRRR", [341.0] = "lwaxRR0R", [87.0] = "lbzxRR0R", [343.0] = "lhaxRR0R", mask = 1023, [747.0] = "mullwoRRR.", [84.0] = "ldarxRR0R", [745.0] = "mulldoRRR.", [136.0] = "subfeRRR.", [854.0] = "eieio", [215.0] = "stbxRR0R", [457.0] = "divduRRR.", [616.0] = "negoRR.", [459.0] = "divwuRRR.", [200.0] = "subfzeRR.", [438.0] = "ecowxRR0R", [75.0] = "mulhwRRR.", [470.0] = "dcbi-RR", [758.0] = "dcba-RR", [631.0] = "lfduxFRR", [154.0] = "prtywRR~", [58.0] = "cntlzdRR~", [53.0] = "lduxRRR", [60.0] = "andcRR~R.", [73.0] = "mulhdRRR.", [124.0] = "nor|notRR~R=.", [104.0] = "negRR.", [284.0] = "eqvRR~R.", [316.0] = "xorRR~R.", [650.0] = "addeoRRR.", [54.0] = "dcbst-R0R", [412.0] = "orcRR~R.", [79.0] = "iseleqRRR", [439.0] = "sthuxRRR", [310.0] = "eciwxRR0R", [311.0] = "lhzuxRRR", [660.0] = "stdbrxRR0R", [476.0] = "nandRR~R.", [55.0] = "lwzuxRRR", [532.0] = "ldbrxRR0R", [444.0] = "or|mrRR~R=.", [918.0] = "sthbrxRR0R", [214.0] = "stdcxRR0R.", [597.0] = "lswiRR0A", [150.0] = "stwcxRR0R.", [661.0] = "stswxRR0R", [151.0] = "stwxRR0R", [662.0] = "stwbrxRR0R", [790.0] = "lhbrxRR0R", [533.0] = "lswxRR0R", [535.0] = "lfsxFR0R", [695.0] = "stfsuxFRR", [279.0] = "lhzxRR0R", [278.0] = "dcbt-R0R", [648.0] = "subfeoRRR.", [663.0] = "stfsxFR0R", [599.0] = "lfdxFR0R", [202.0] = "addzeRR.", [727.0] = "stfdxFR0R", [759.0] = "stfduxFR0R", [567.0] = "lfsuxFRR", [969.0] = "divduoRRR.", [971.0] = "divwouRRR.", [712.0] = "subfzeoRR.", [714.0] = "addzeoRR.", [725.0] = "stswiRR0A", [407.0] = "sthxRR0R", [68.0] = "tdARR", [855.0] = "lfiwaxFR0R", [983.0] = "stfiwxFR0R", [986.0] = "extswRR~.", [792.0] = "srawRR~R.", [982.0] = "icbi-R0R", [183.0] = "stwuxRRR", [539.0] = "srdRR~R.", [138.0] = "addeRRR.", [534.0] = "lwbrxRR0R", [1001.0] = "divdoRRR.", [1003.0] = "divwoRRR.", [744.0] = "subfmeoRR.", [746.0] = "addmeoRR.", [266.0] = "addRRR.", [522.0] = "addcoRRR.", [520.0] = "subfcoRRR.", [827.0] = "sradiRR~H.", [122.0] = "popcntbRR~", [512.0] = "mcrxrX", [186.0] = "prtydRR~", [1014.0] = "dcbz-R0R", [508.0] = "cmpbRR~R", [922.0] = "extshRR~.", [954.0] = "extsbRR~.", [536.0] = "srwRR~R.", [826.0] = "sradiRR~H.", [778.0] = "addoRRR.", [375.0] = "lhauxRRR", [47.0] = "iselgtRRR", [373.0] = "lwauxRRR", [794.0] = "sradRR~R.", [40.0] = "subfRRR.", [247.0] = "stbuxRRR", [491.0] = "divwRRR.", [246.0] = "dcbtst-R0R", [489.0] = "divdRRR.", [234.0] = "addmeRR.", shift = 1, [144] = { [0] = "mtcrfRZ~", "mtocrfRZ~", shift = 20, mask = 1 }, [371] = { [424.0] = "mftbuR", [392.0] = "mftbR", shift = 11, mask = 1023 }, [339] = { [32.0] = "mferR", [16.0] = "mfspefscrR", [256.0] = "mflrR", mask = 1023, [288.0] = "mfctrR", shift = 11 }, [467] = { [32.0] = "mtxerR", [16.0] = "mtspefscrR", [256.0] = "mtlrR", mask = 1023, [288.0] = "mtctrR", shift = 11 }, [598] = { [0] = "sync", "lwsync", "ptesync", shift = 21, mask = 3 } }, { __index = function (slot0, slot1) if uv0(slot1, 31) == 15 then return "iselRRRC" end end }), "lwzRRD", "lwzuRRD", "lbzRRD", "lbzuRRD", "stwRRD", "stwuRRD", "stbRRD", "stbuRRD", "lhzRRD", "lhzuRRD", "lhaRRD", "lhauRRD", "sthRRD", "sthuRRD", "lmwRRD", "stmwRRD", "lfsFRD", "lfsuFRD", "lfdFRD", "lfduFRD", "stfsFRD", "stfsuFRD", "stfdFRD", "stfduFRD", false, false, { [0] = "ldRRE", "lduRRE", "lwaRRE", shift = 0, mask = 3 }, { { [0] = false, false, "fdivsFFF.", false, "fsubsFFF.", "faddsFFF.", "fsqrtsF-F.", false, "fresF-F.", "fmulsFF-F.", "frsqrtesF-F.", false, "fmsubsFFFF~.", "fmaddsFFFF~.", "fnmsubsFFFF~.", "fnmaddsFFFF~.", shift = 1, mask = 15 }, shift = 5, mask = 1 }, false, false, { [0] = "stdRRE", "stduRRE", shift = 0, mask = 3 }, { [0] = { [0] = "fcmpuXFF", nil, nil, nil, nil, nil, nil, nil, "fcpsgnFFF.", nil, nil, nil, "frspF-F.", nil, "fctiwF-F.", "fctiwzF-F.", [38.0] = "mtfsb1A.", [264.0] = "fabsF-F.", [711.0] = "mtfsfZF.", [583.0] = "mffsF.", [40.0] = "fnegF-F.", [846.0] = "fcfidF-F.", [815.0] = "fctidzF-F.", [70.0] = "mtfsb0A.", [32.0] = "fcmpoXFF", [392.0] = "frinF-F.", [424.0] = "frizF-F.", mask = 1023, [456.0] = "fripF-F.", [488.0] = "frimF-F.", [814.0] = "fctidF-F.", [136.0] = "fnabsF-F.", [64.0] = "mcrfsXX", [134.0] = "mtfsfiA>>-A>", [72.0] = "fmrF-F.", shift = 1 }, { [0] = false, false, "fdivFFF.", false, "fsubFFF.", "faddFFF.", "fsqrtF-F.", "fselFFFF~.", "freF-F.", "fmulFF-F.", "frsqrteF-F.", false, "fmsubFFFF~.", "fmaddFFFF~.", "fnmsubFFFF~.", "fnmaddFFFF~.", shift = 1, mask = 15 }, shift = 5, mask = 1 } } slot24 = { [0] = "r0", "sp", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23", "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31" } slot25 = { [0] = "lt", "gt", "eq", "so", "ge", "le", "ne", "ns" } function slot26(slot0) if slot0 <= 3 then return uv0[uv1(slot0, 3)] else return uv2("4*cr%d+%s", uv3(slot0, 2), uv0[uv1(slot0, 3)]) end end function slot27(slot0, slot1, slot2) slot3 = slot0.pos slot4 = "" if slot0.rel and slot0.symtab[slot0.rel] then slot4 = "\t->" .. slot5 end if slot0.hexdump > 0 then slot0.out(uv0("%08x %s %-7s %s%s\n", slot0.addr + slot3, uv1(slot0.op), slot1, uv2(slot2, ", "), slot4)) else slot0.out(uv0("%08x %-7s %s%s\n", slot0.addr + slot3, slot1, uv2(slot2, ", "), slot4)) end slot0.pos = slot3 + 4 end function slot28(slot0) return uv0(slot0, ".long", { "0x" .. uv1(slot0.op) }) end function slot29(slot0) slot1 = slot0.pos slot2, slot3, slot4, slot5 = uv0(slot0.code, slot1 + 1, slot1 + 4) slot7 = {} slot8 = nil slot9 = 21 slot0.op = uv1(uv2(slot2, 24), uv2(slot3, 16), uv2(slot4, 8), slot5) slot0.rel = nil slot10 = uv3[uv4(slot2, 2)] while uv5(slot10) ~= "string" do if not slot10 then return uv6(slot0) end slot10 = slot10[uv7(uv4(slot6, slot10.shift), slot10.mask)] end slot11, slot12 = uv8(slot10, "^([a-z0-9_.]*)(.*)") slot13, slot12 = uv8(slot12, "|([a-z0-9_.]*)(.*)") if slot13 then -- Nothing end for slot18 in uv9(slot12, ".") do slot19 = nil if slot18 == "R" then slot19 = uv10[uv7(uv4(slot6, slot9), 31)] slot9 = slot9 - 5 elseif slot18 == "F" then slot19 = "f" .. uv7(uv4(slot6, slot9), 31) slot9 = slot9 - 5 elseif slot18 == "A" then slot19 = uv7(uv4(slot6, slot9), 31) slot9 = slot9 - 5 elseif slot18 == "S" then slot19 = uv11(uv2(slot6, 27 - slot9), 27) slot9 = slot9 - 5 elseif slot18 == "I" then slot19 = uv11(uv2(slot6, 16), 16) elseif slot18 == "U" then slot19 = uv7(slot6, 65535) elseif slot18 == "D" or slot18 == "E" then if slot18 == "E" then slot20 = uv7(uv11(uv2(slot6, 16), 16), -4) end if slot8 == "r0" then slot8 = "0" end slot7[#slot7] = uv12("%d(%s)", slot20, slot8) elseif "2" <= slot18 and slot18 <= "8" then slot20 = uv7(uv4(slot6, slot9), 31) * slot18 if slot8 == "r0" then slot8 = "0" end slot7[#slot7] = uv12("%d(%s)", slot20, slot8) elseif slot18 == "H" then slot19 = uv7(uv4(slot6, slot9), 31) + uv2(uv7(slot6, 2), 4) slot9 = slot9 - 5 elseif slot18 == "M" then slot19 = uv7(uv4(slot6, slot9), 31) + uv7(slot6, 32) elseif slot18 == "C" then slot19 = uv13(uv7(uv4(slot6, slot9), 31)) slot9 = slot9 - 5 elseif slot18 == "B" then slot21 = uv7(uv4(slot6, 16), 31) slot22 = "" slot9 = slot9 - 10 if uv7(uv4(slot6, 21), 4) == 0 then if uv7(slot20, 16) == 0 then slot22 = (uv7(slot20, 2) == 0 and "dnz" or "dz") .. (uv7(slot20, 8) == 0 and "f" or "t") end if uv7(slot20, 16) == 0 then slot19 = uv13(slot21) end slot11 = slot11 .. (uv7(slot20, 1) == uv7(uv4(slot6, 15), 1) and "-" or "+") elseif uv7(slot20, 16) == 0 then slot22 = uv14[uv7(slot21, 3) + (uv7(slot20, 8) == 0 and 4 or 0)] if slot21 > 3 then slot19 = "cr" .. uv4(slot21, 2) end slot11 = slot11 .. (uv7(slot20, 1) == uv7(uv4(slot6, 15), 1) and "-" or "+") end slot11 = uv15(slot11, "_", slot22) elseif slot18 == "J" then if uv7(slot6, 2) == 0 then slot19 = slot0.addr + slot1 + uv11(uv2(slot6, 27 - slot9), 29 - slot9) * 4 end slot0.rel = slot19 slot19 = "0x" .. uv16(slot19) elseif slot18 == "K" then if uv7(slot6, 1) ~= 0 then slot11 = slot11 .. "l" end if uv7(slot6, 2) ~= 0 then slot11 = slot11 .. "a" end elseif slot18 == "X" or slot18 == "Y" then slot19 = (uv7(uv4(slot6, slot9 + 2), 7) ~= 0 or slot18 ~= "Y" or nil) and "cr" .. slot19 slot9 = slot9 - 5 elseif slot18 == "W" then slot19 = "cr" .. uv7(slot6, 7) elseif slot18 == "Z" then slot19 = uv7(uv4(slot6, slot9 - 4), 255) slot9 = slot9 - 10 elseif slot18 == ">" then slot7[#slot7] = uv4(slot7[#slot7], 1) elseif slot18 == "0" then if slot8 == "r0" then slot7[#slot7] = nil if slot13 then slot11 = slot13 end end elseif slot18 == "L" then slot11 = uv15(slot11, "_", uv7(slot6, 2097152) ~= 0 and "d" or "w") elseif slot18 == "." then if uv7(slot6, 1) == 1 then slot11 = slot11 .. "." end elseif slot18 == "N" then if slot6 == 1610612736 then slot11 = "nop" break end elseif slot18 == "~" then slot20 = #slot7 slot7[slot20] = slot7[slot20 - 1] slot7[slot20 - 1] = slot7[slot20] elseif slot18 == "=" then if slot8 == slot7[#slot7 - 1] then slot7[slot20] = nil slot11 = slot13 end elseif slot18 == "%" then if slot8 == slot7[#slot7 - 1] and slot8 == slot7[slot20 - 2] then slot7[slot20] = nil slot7[slot20 - 1] = nil slot11 = slot13 end elseif slot18 == "-" then slot9 = slot9 - 5 end if slot19 then slot7[#slot7 + 1] = slot19 slot8 = slot19 end end return uv17(slot0, slot11, slot7) end function slot30(slot0, slot1, slot2) slot1 = slot1 or 0 slot3 = slot2 and slot1 + slot2 or #slot0.code slot0.pos = slot1 - slot1 % 4 slot0.rel = nil while slot0.pos < slot3 - slot3 % 4 do uv0(slot0) end end return { create = function (slot0, slot1, slot2) return { code = slot0, addr = slot1 or 0, out = slot2 or io.write, symtab = {}, disass = uv0, hexdump = 8 } end, disass = function (slot0, slot1, slot2) uv0(slot0, slot1, slot2):disass() end, regname = function (slot0) if slot0 < 32 then return uv0[slot0] end return "f" .. slot0 - 32 end }