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
}
