Skip to content

Instantly share code, notes, and snippets.

@oopsmishap
Last active January 21, 2024 10:23
Show Gist options
  • Save oopsmishap/a275a7cd6552567099c5e8dc43d23e3c to your computer and use it in GitHub Desktop.
Save oopsmishap/a275a7cd6552567099c5e8dc43d23e3c to your computer and use it in GitHub Desktop.
Disassmble ZeusVM VM Code to a readable format
from enum import Enum
class HandlerType(Enum):
Zero = 0
Shuffle = 1
Rc4 = 2
Imm = 3
RegReg = 4
RegImm = 5
Reg = 6
Jmp = 7
# dict of tuples to hold VM handler info: "idx : (mnemonic format string, handler type, size, xor key)""
handler_info = {
0: ('nop1', HandlerType.Zero, 1, 199),
1: ('nop2', HandlerType.Zero, 2, 69),
2: ('nop4', HandlerType.Zero, 4, 37),
3: ('xor [data](8)++ {0:X}h(8)', HandlerType.Imm, 2, 81),
4: ('xor [data](16)++ {0:X}h(16)', HandlerType.Imm, 3, 50),
5: ('xor [data](32)++ {0:X}h(32)', HandlerType.Imm, 5, 124),
6: ('add [data](8)++ {0:X}h(8)', HandlerType.Imm, 2, 180),
7: ('add [data](16)++ {0:X}h(16)', HandlerType.Imm, 3, 22),
8: ('add [data](32)++ {0:X}h(32)', HandlerType.Imm, 5, 2),
9: ('sub [data](8)++ {0:X}h(8)', HandlerType.Imm, 2, 201),
10: ('sub [data](16)++ {0:X}h(16)', HandlerType.Imm, 3, 247),
11: ('sub [data](32)++ {0:X}h(32)', HandlerType.Imm, 5, 113),
12: ('rol [data](8)++ {0:X}h(8)', HandlerType.Imm, 2, 12),
13: ('rol [data](16)++ {0:X}h(16)', HandlerType.Imm, 2, 250),
14: ('rol [data](32)++ {0:X}h(32)', HandlerType.Imm, 2, 87),
15: ('ror [data](8)++ {0:X}h(8)', HandlerType.Imm, 2, 152),
16: ('ror [data](16)++ {0:X}h(16)', HandlerType.Imm, 2, 211),
17: ('ror [data](32)++ {0:X}h(32)', HandlerType.Imm, 2, 251),
18: ('not [data](8)++', HandlerType.Zero, 1, 250),
19: ('not [data](16)++', HandlerType.Zero, 1, 40),
20: ('not [data](32)++', HandlerType.Zero, 1, 4),
21: ('shuffle [data](32)++ {0:X}h(8) ({1},{2},{3},{4})', HandlerType.Shuffle, 2, 130),
22: ('rc4 key_len({0:X}h) data_len({1:X}h) key({2})', HandlerType.Rc4, 4, 201),
23: ('set loop {0:X}h(8)', HandlerType.Imm, 2, 78),
24: ('set loop {0:X}h(16)', HandlerType.Imm, 3, 157),
25: ('set loop {0:X}h(32)', HandlerType.Imm, 5, 97),
26: ('inc data {0:X}h(16)', HandlerType.Imm, 3, 143),
27: ('jmp {0:X}h(8)', HandlerType.Jmp, 2, 248),
28: ('jmp {0:X}h(16)', HandlerType.Jmp, 3, 44),
29: ('mov r{0} {1:X}h(8)', HandlerType.RegImm, 3, 179),
30: ('mov r{0} {1:X}h(16)', HandlerType.RegImm, 4, 157),
31: ('mov r{0} {1:X}h(32)', HandlerType.RegImm, 6, 175),
32: ('mov r{0} r{1}(8)', HandlerType.RegReg, 2, 213),
33: ('mov r{0} r{1}(16)', HandlerType.RegReg, 2, 157),
34: ('mov r{0} r{1}(32)', HandlerType.RegReg, 2, 76),
35: ('add r{0} r{1}(8)', HandlerType.RegReg, 2, 31),
36: ('add r{0} r{1}(16)', HandlerType.RegReg, 2, 201),
37: ('add r{0} r{1}(32)', HandlerType.RegReg, 2, 224),
38: ('sub r{0} r{1}(8)', HandlerType.RegReg, 2, 117),
39: ('sub r{0} r{1}(16)', HandlerType.RegReg, 2, 139),
40: ('sub r{0} r{1}(32)', HandlerType.RegReg, 2, 221),
41: ('xor r{0} r{1}(8)', HandlerType.RegReg, 2, 119),
42: ('xor r{0} r{1}(16)', HandlerType.RegReg, 2, 121),
43: ('xor r{0} r{1}(32)', HandlerType.RegReg, 2, 106),
44: ('add r{0} {1:X}h(8)', HandlerType.RegImm, 3, 73),
45: ('add r{0} {1:X}h(16)', HandlerType.RegImm, 4, 243),
46: ('add r{0} {1:X}h(32)', HandlerType.RegImm, 6, 28),
47: ('sub r{0} {1:X}h(8)', HandlerType.RegImm, 3, 84),
48: ('sub r{0} {1:X}h(16)', HandlerType.RegImm,4, 83),
49: ('sub r{0} {1:X}h(32)', HandlerType.RegImm, 6, 35),
50: ('xor r{0} {1:X}h(8)', HandlerType.RegImm, 3, 110),
51: ('xor r{0} {1:X}h(16)', HandlerType.RegImm, 4, 154),
52: ('xor r{0} {1:X}h(32)', HandlerType.RegImm, 6, 209),
53: ('add [data](8)++ r{0}(8)', HandlerType.Reg, 2, 70),
54: ('add [data](16)++ r{0}(16)', HandlerType.Reg, 2, 50),
55: ('add [data](16)++ r{0}(32)', HandlerType.Reg, 2, 61),
56: ('sub [data](8)++ r{0}(8)', HandlerType.Reg, 2, 4),
57: ('sub [data](16)++ r{0}(16)', HandlerType.Reg, 2, 219),
58: ('sub [data](32)++ r{0}(32)', HandlerType.Reg, 2, 198),
59: ('xor [data](8)++ r{0}(8)', HandlerType.Reg, 2, 125),
60: ('xor [data](16)++ r{0}(16)', HandlerType.Reg, 2, 113),
61: ('xor [data](32)++ r{0}(32)', HandlerType.Reg, 2, 122),
62: ('mov r{0} [data](8)', HandlerType.Reg, 2, 188),
63: ('mov r{0} [data](16)', HandlerType.Reg, 2, 61),
64: ('mov r{0} [data](32)', HandlerType.Reg, 2, 159),
65: ('mov [data](8)++ r{0}(8)', HandlerType.Reg, 2, 34),
66: ('mov [data](16)++ r{0}(16)', HandlerType.Reg, 2, 248),
67: ('mov [data](32)++ r{0}(32)', HandlerType.Reg, 2, 86),
68: ('exit', HandlerType.Zero, 1, None)
}
vm_code_str = "1A09029C96FF81020089249A881F8CC1ECFFF903BC02414B249015AA648AD582C81D3615E6A6EE5C6BF9AB6FEC5D09E3DA29C71A0178EA5D76BC302819BA41474563B987C556F06AAD9809C9B86C44BC4FAFC9FEDE01008A518FE191D47D3881BF24A74BF05B6BD82E95BEC48930E73714E72B8CF81BE623FFAECDF2D694B9DD1D7AD773FD1CDE891DD1BF31F3D676AB0528A0D45A05DD4CD75D6ECE255154538218A7B761BEEBB01AC9E5B3569105A50655C156F2058EC4035752E405E27CA367CF0567B7E224F6050AA605EC38D97BFFEEB0FE8104A70EA6D8702FA604DEBB0E8A31C0799904D170B0047EBF047D9D04B256413ECE04F996A3EEA9048D759F04BB0E268A0BD2234B09CF0BF1B20B801DC30E962CF50B43A4BC0EB5D00E7E9A0E3B1DE3BEE70E91FABC0EAD0D200CA20F19378DB5820DE053BE729E0F8BED0F28E2FF820D7C79D07D88FFB6DD8FFFA50FD60715786465A703B3AE07C939FD7DE60735139B07CB02ECC2BB3B970B4A189CBEF40969EE07D4C64107A909FA907BC19BD60BD2158B37FF03B4FB1423AE07C109D2FF0167C5E502C36C8DBDCF19B4099FD719C309E09E99D4026BF73DB58F09D00557E14E04C905C0FE8875CE05D61A8A05728555FE056215C7DBAD0B78CCDE05E00B00880AF7C4CCAAF4AAEE0A7BE29A38CCAAE0A4C60AA21EA20BA90CE4C7D2BCF80B73D3E105F1075A4AE477CD77BB0B28D30BB9F4CCFE0732D3EACC8CB7E57CD70BB704DDA5DD06EAEE04AF7C0C6702D699D4B7C32A55EBFEFE2651E18E51474E2E3C4FDACEDBCC829663994D359C2F18BFE9B6A678E6DB034557067661DBD17F6490436E7BC06E2E8389A47CED889FBE4BEBC88D1D66C6F317952EDF8268164C1179AA3DF2AFA40A4278903CD5D631DCCC9022A4CEB5471C156A0010CD9CC18BE07D01B85FB38BADE4900EAF0371E433EC33E2E3A30F3CA9EF850738C2C354BCEFAEFFB2E7DE074D910E94D2F39F0E53055733DE0F7CB6A477C637F00E95D8F7C33FE703AEEF0ECEB973AD0EB20CE23DE20BBFA30B7A9E0B8148F6BCD90B15F10C16CED20B880DAE03E3369766EB33880D07C0F333960D2318A6E18D0D75B2D38CD3CF0DB1077BD7F8015168FF07C020F40714F5D3FCAD71BE01BBC20749D09077A2014BB307166A06A6810148A11CC5AC07C8CABD06A707899967D60672D0DD15C667FB06B08C8801B901A18D09B9959472BC19D209D18F0920DBC609D90B0A01046D00C6BA5A8C5D937CC46FDD07A60254CE22FD22D30209EE07027D429DAE073F71DC0790DEE0229E72AC07BFC1FEF00BAA0233B00B843EF80283FFB2C622940BB60C0FDA039683CCCD085ECDF0082E9880086687B53296C5EA0C6FA9CCBF080E59491EA00562A7C89105DCEEE8058718ABCCBC8CBB08E600D6088D95D400275EF800E2B40D9E5D71A591DBBA0B780ED56C8600E49D00B74BE0BBC60D32E751DACA00D1BBEDDBF300A50000820C07879419B60B1030A7BCDA0EB6691DDAA80BB0C9156CA30B9DE6FB0BC1D4C50D6DC3005BDB005DD4E00DBF00D1B3C8D296DBBD4A8FB28C2763D854E7E9B119B2EAAFE99D4D370CBC815A35DDD902D9CA8C4115173BB64258AB8E246782E4383DC6883045A27E9AE6035930C0D528BC112115863DB19D903F000E325AC03F8FEA1EAAFC9040F538722D236E12D40ADB4B42D81B56A06D291B430475EDB9C58D4801F17E3093C070EE2CCB108A287986321680B230F3375C9804172A78F97E87736441F0669C698C54EFCCAB07426D5083D9072B85174FC707C302A30F03992FF02FDC0217B4CC5BA32FD62FC0FFCB02BF08BCC168E48E00948800C4A8008CF3A3E9B7EF027688CD22F62884029AEC90228E02AE96F7D3FDE20AA80D9BF49B0CC5D5DCED0AAF1756F89C0A7D8EAD8EACD6DDF2ADD70AED15C60D68768EBBF90C66ADCDEC0AA47CFF2D8A04A60B91BBAEBA8C0425F90423E30B660E4488DCBBED4BE004F4B4258D91048C3B7AF7EC0490A15F619C04EB90040EC5090CED27EDE104E40200800572AC712AC20873F19154C101DFC585C605E36DE0569D01F79305C728B80801EB85850CCD0046CBCE0190F601B2C318D3589BCC9281D80CBBDAA76B8B08679F01C86B2709D601F73FAD0179EBFA068E58A306613C9616C20A8E8F06C081061EF906D3AAE406A614E406C6081C72CB060168DF1BAC0A513E8534DAA1CF065B9CED01B1CC0AB177E876D506800A88039288A3F7A3FF0A9C068401899961DE19EB69D20648BCB506BCB4DF368C062CC069AF19CF19AC19C799BB11C399DA99B206DA9401F1B806F54FAC06C61BA62DA3DD3B3BA7139E66C7E6142096FC1589FAAE43E6371FA572A82FFFEB8C01E66A88C4D70E83B3AA01EC6AA8D28701D14535C6323B7610AAFC976AF3B7DA0F1DA68B257048D6E1BCDCD970F0A5E87B7ACE6892E8C415A02C1B1C49A777DE00C28B0554E22C2434961A30D08E0F7CB4CB9839CE73A72DDD952FFEB6FB5A32A5FE0F419672E210EF5BEE15D56995E3A30EB8C0E6582814C15126C7A974469FD70F82F8F685B4959DCC3CD5A73DB435F4A609B2F0800DB1A85583427A0250C285A8298BCB96D5210D3F30FAEF32B2641EC00C71CE3B2B4241AFD6E23E33DAB2C87FE40F43550BCEA83B15B768537699A439CBE476D8DDAB4FDF0780218CFA9919BBF085BE70E89E14F716FCBC4E06098E263596D1650DD9F78C7A4D97E6256FFBF77E2AB617E5F1741DB48E2464AD6DF1C52F5B783D2EEF52283514F08339FAAAB8230920B5918D939D010923647C0BB44B37E10E4CAE80C0B3555966F1134E85791EC3E22B5736E1F11A2F52A56D038B0F00EA65F59FF657E0E40F97A6B312A70A6041801ED108FEF6C98AD78FF40F798903ECADDF084F841043E308D042ABF39C08FFA50F9BE5ACE1F90861CCCB0F874BE208BEB8E5B40FAC09EE64CDBAED0F33D399C499CAF9A899F50FB2755151B299ADF9BAF9BC0FC18009F684F9A20FD0DB2832FF0F05B1AF0F491EDB0FB0091EB00DD1D20933F9D00D155EEB0D3E31E10D1FE20DF440C4E1980DE1E07C7B463A18CA0CA13B1144A5C54784538679876D87398AD38BE0EEF2E748DC1546905C8C920E81A796BB02817EFCC9EB62C89B25399BBE0C401F8E59CEF9E2E246028A2324A6C9B2D9876D6F0F7FE9CFE0C889C1CC0CF36E893B478AD4A67452B1C328C6366D82CF23893A2D60014AC8AACFD3907877F82584CE3FF97930D075778F484C954B0053BA63126865ACDE0206E13993B9E5074847EDF9C329FE7E540B01F1473B06AB05DF350F20256417F190009BDF2E5FC456FA0C59B8AC888338C525469C1C75F296FD61C3400882E0CD776C0E39CFF65951C98559B46F92267FE9A7C9F509AA0B762A91A8F39BFD0A02AF24C58B9AC10B6A3E6139D29BE30956420E8FD809D416E609B40A9908B14EA905353CD5F7B8A9FB0682A9BA96DA0AB4D109A8CE0523DD96CB668A65B70ADF8105CEF2B8569A0968920AECE5C70A21B57228AF06039ECC06F18FBC54D5D87CFECC0BA8079407AA77CC77FC0BCC06A60FC5C406F5BCFFD664EA06C100A00D39A00DE901F4D908EF6DD411C0D8B608B70041DB2230A100D1EC4D12D418CB8DD70DB6C708DA00BBFA0114EA18CD01BDDC118E00E70EEDE1E994E8EE8A06E2F36498061383EC0631C90682125D12920EDF8BF60E04D7AC0E61B50ED009008A01787DFA07EFCAA6EDEC01B1E7045338705CD104571DB90EE7E40772358A74AF048C0916009E04B20E927BBAE7A30EF7697160C507B790481F840E0BE604D78A8A7317B608AA0DBED9BC07E8807AE5F30D63F9BCA9948DDDD79D77BD0DF682F309B5C77F32B4086A0148A7D1D7F1086BF6AB07C10AF4087A9A094FBB844CBBDD968DC277D608BC8A2B0610B9FD4E21A3E6A1F8BC76F8BEE8820FEAF1B90A2E763ECC39308DBDBEBA137DA1DA45CC7B475152A8011F3A0B9262EE506084C7933225EE0E3A74CF9BCBFA6CEFF1F127C0BB42C861DD068CF720FECF22C7508165E9A20F93E70F1BEDD7E45040C79A606B7C62A96318637F0D28BE26DE6999FF54FD0E740B0F6E56FDB8837176AD63367B4A302CC0D101F14EC911D911E911EE071A0628FF9117F3018069C201A88469EFB001C300A00A75EE0AE500ADDD07E3D5D100D9A200F4837AA700FD4AB76DD08906A50593DCAB559A0629D75588658665DE06E26501DF2C274A8FCCC2CDC9AD7C9852E6DA0D3B80263C1FCBA0FE6CE667D728A5D75AD1FE0E2E74790451FCF73E02476FB89979FDC809AB0FB5EB9B09BEEABB040E6CA08C8D0F9AE3091844FA04CC0BB333CAFFB894B84FEE448D04A89ED0448B94B509B30300800BB9F7900B684EC3BA840BE7A89B6B4C569816733225425FF5C8A17A3D0ACB499171560E261DC0395BE11D1EF0C3A56BC9EEA6902AEF22BE68C818D41AB8C691311C8F9489EE17E88B5D54DAC4CCF42B498DE4B031123E8248A8DA2CDEF9D5230232EB6057820A8B14174BF23275A2C4ED2DC5C3C6FAC15010135D6528EBCA8DF1D46CF610CC495F88332D1C3F9A70E114646A3F9ACCDCFB8BFC543315249F29E10EAA68DFD5B5150AC72C25335F6F56F0529B0FF748B9B9810F8D0C12BE003845E590B00CA0F0E403822D032C990F9193FE0AE8C0B203E88C0FD05DB003324D9C0333DACE99CD0FE98D0FEC4F9900C50FB3A4D40FA78C0F8DDE3CD30F42883CD90FEDE70FC395FDDA07850420A207829334338E041CE507A8819807C9090082783A6AED9AA1F8CCAE3405401E6535007D10D490C185CD1D7B22FDA4477944D39B2F03CAD9BA1F8D768A2DCE5F682DBC09A3E08055CBA491ECC6AB6E19AAB9DDABF2052D55C1C2DA86687821586C8ED241CDA64016F0D7FC73163F57D593342ADE542961464D9E7C3AA128FF1C041E40557F273679EA425BBC48B87D9FC4FCD302009D64555BD3FE602859A6E784DF7FCD93B3B8820EB9A118CB49E3F2931562943B801975F2997450822CC595DB2312B746B3084543A56142A791A5E47812564CE8AE9B4EE9F7AFDB268AA187184E8DE45971313D49F4BC11F64663ABD317172C544C63D21D5AFD3C959C099B00C146F200DF5991A1E308C209F81CFFE9FA092411F80806CF0BDEC000C75C9A001E36E25CAA98F609D151ED8BD008A74B1969960B7301AD083B44EC99FB0BDA08E30FCD5F418731950173EF12E77508C99FF08DC0B0B2C08A8BF00C8D01F64DC011B80CCC1B27100A4FAC18772770ED0591879605948FC8F1EF8099912500F93C19E60FAC0BF169D80F6855C2858A0F2E779A0F256ECA2B9FFB930733A7FBDD0FE813A80F3CDE8E7B8B07E7D8A60F12D7B7EE0F0124D90FE17902D780C998CD76BC7D1D6DC7A2897A24ED4BB67A83E8A61950BAFFFAE8BC0878F3D4967ADB4D6421BAD86104BFA731B1316B382650A7DDB2F17185AD6459AB524E1BA8A9DDD5C8ADEB84EA5A586B82BE5E39444A53ACDB446AA642182F86B57E581981454F858589F7F1AB58F66A73E8F29C94F636DB2C8BDA99A003A20077EA03E99373B4DF00D200F7091E9F03FCB430E030CD01DDC909C303A8D1D8078701DB8817F5DE11C50740F39E07C2D5AE04AD17C4F3A8418A0709C344A0019F27C4718541870767E0532AF5078A6F7F368311AB07DAAEDEC0D8C1027A57C322F60868E102D90D2F820E11BC91045DC54D890E29D93357904E9A0EF3D94FF08F0DD271950DC4F64DB2B0E4ADD484D4EB0458A04D20A50E41A70E95EE04BFD304C40000000000"
vm_code = bytearray.fromhex(vm_code_str)
class ZeusVMDiasm:
def __init__(self, vm_code, output_file=None):
self.vm_code = vm_code
self.vm_code_len = len(vm_code)
self.vm_code_idx = 0
self.output_file = output_file
def fetch_insn(self):
if self.vm_code_idx >= self.vm_code_len:
return None
# get the opcode
opcode = self.vm_code[self.vm_code_idx]
mnemonic, handler_type, insn_size, xor_key = handler_info[opcode]
operands = None
# get the operands
if insn_size > 1:
operands = self.vm_code[self.vm_code_idx + 1:self.vm_code_idx+insn_size]
left_side = f"{self.vm_code_idx:04X}: {opcode:02X} {operands.hex(): <10}"
else:
left_side = f"{self.vm_code_idx:04X}: {opcode:02X} {'': <10}"
# increment the code index
if handler_type == HandlerType.Rc4:
self.vm_code_idx += insn_size + operands[0] - 1
else:
self.vm_code_idx += insn_size
# uses first byte of last operand, but it's easier to just use the handler type
if handler_type == HandlerType.Rc4:
key_idx = 2
elif handler_type == HandlerType.RegImm:
key_idx = 1
else:
key_idx = 0
if xor_key is not None:
if self.vm_code[self.vm_code_idx] > 0x7F:
# if instruction size is just 1, then the opcode is the key
if insn_size > 1:
key = operands[key_idx] ^ xor_key
else:
key = opcode ^ xor_key
self.vm_code[self.vm_code_idx] ^= key
self.vm_code[self.vm_code_idx] &= 0x7F
return (mnemonic, handler_type, operands, opcode, left_side)
def disasm(self, print_left=True):
depth = 0
diasm_lines = []
while True:
exit_diasm = False
diasm_line = ''
insn = self.fetch_insn()
if insn is None:
break
mnemonic, handler_type, operands, opcode, left_side = insn
if print_left:
diasm_line += left_side + ' '
diasm_line += ' ' * depth
# print the instruction
if handler_type == HandlerType.Zero:
diasm_line += mnemonic
# break out of the loop if we hit an exit
if mnemonic == 'exit':
exit_diasm = True
# inc data ptr
elif opcode == 0x1A:
# immediate is signed for this instruction
diasm_line += mnemonic.format(int.from_bytes(operands, byteorder='little', signed=True))
elif opcode in [23, 24, 25]: # mov counter
diasm_line += mnemonic.format(int.from_bytes(operands, byteorder='little'))
depth += 1
elif handler_type == HandlerType.Shuffle:
idx_1 = operands[0] & 0x03
idx_2 = (operands[0] & 0x0C) >> 2
idx_3 = (operands[0] & 0x30) >> 4
idx_4 = (operands[0] & 0xC0) >> 6
diasm_line += mnemonic.format(operands[0], idx_1, idx_2, idx_3, idx_4)
elif handler_type == HandlerType.Rc4:
key = self.vm_code[self.vm_code_idx - operands[0]:self.vm_code_idx]
assert len(key) == operands[0], f"key len {len(key)} != {operands[0]}"
diasm_line += mnemonic.format(operands[0], operands[1], f'{key.hex()}')
elif handler_type == HandlerType.Imm:
diasm_line += mnemonic.format(int.from_bytes(operands, byteorder='little'))
elif handler_type == HandlerType.RegReg:
reg_1 = operands[0] & 0x0F
reg_2 = (operands[0] >> 4) & 0xF
diasm_line += mnemonic.format(reg_1, reg_2)
elif handler_type == HandlerType.RegImm:
reg_1 = operands[0] & 0x0F
diasm_line += mnemonic.format(reg_1, int.from_bytes(operands[1:], byteorder='little'))
elif handler_type == HandlerType.Reg:
reg_1 = operands[0] & 0x0F
diasm_line += mnemonic.format(reg_1)
elif handler_type == HandlerType.Jmp:
# jumps are negative, so we inverse the sign
jmp_value = -int.from_bytes(operands, byteorder='little')
diasm_line += mnemonic.format(jmp_value)
depth -= 1
diasm_lines.append(diasm_line)
if exit_diasm:
break
if self.output_file is not None:
with open(self.output_file, 'w') as f:
for line in diasm_lines:
f.write(line + '\n')
else:
for line in diasm_lines:
print(line)
if __name__ == '__main__':
disasm = ZeusVMDiasm(vm_code, 'diasm.txt')
disasm.disasm(False)
0000: 1A 0902 inc data 209h(16)
0003: 1A 96ff inc data -6Ah(16)
0006: 18 0200 set loop 2h(16)
0009: 16 249a88 rc4 key_len(24h) data_len(9Ah) key(881f8cc1ecfff903bc02414b249015aa648ad582c81d3615e6a6ee5c6bf9ab6fec5d09e3)
0030: 1B 29 jmp -29h(8)
0032: 16 1a0178 rc4 key_len(1Ah) data_len(1h) key(78ea5d76bc302819ba41474563b987c556f06aad9809c9b86c44)
004F: 0D 4f rol [data](16)++ 4Fh(16)
0051: 1A c9fe inc data -137h(16)
0054: 18 0100 set loop 1h(16)
0057: 16 518fe1 rc4 key_len(51h) data_len(8Fh) key(e191d47d3881bf24a74bf05b6bd82e95bec48930e73714e72b8cf81be623ffaecdf2d694b9dd1d7ad773fd1cde891dd1bf31f3d676ab0528a0d45a05dd4cd75d6ece255154538218a7b761beebb01ac9e5)
00AB: 1B 56 jmp -56h(8)
00AD: 3F 05 mov r5 [data](16)
00AF: 1D 0655 mov r6 55h(8)
00B2: 27 56 sub r6 r5(16)
00B4: 2F 058e sub r5 8Eh(8)
00B7: 1E 035752 mov r3 5257h(16)
00BB: 2E 05e27ca367 add r5 67A37CE2h(32)
00C1: 31 0567b7e224 sub r5 24E2B767h(32)
00C7: 32 050a xor r5 Ah(8)
00CA: 42 05 mov [data](16)++ r5(16)
00CC: 11 38 ror [data](32)++ 38h(32)
00CE: 1A 7bff inc data -85h(16)
00D1: 1A b0fe inc data -150h(16)
00D4: 3E 04 mov r4 [data](8)
00D6: 1F 0ea6d8702f mov r14 2F70D8A6h(32)
00DC: 2F 04de sub r4 DEh(8)
00DF: 31 0e8a31c079 sub r14 79C0318Ah(32)
00E5: 30 04d170 sub r4 70D1h(16)
00E9: 32 047e xor r4 7Eh(8)
00EC: 2F 047d sub r4 7Dh(8)
00EF: 34 04b256413e xor r4 3E4156B2h(32)
00F5: 2D 04f996 add r4 96F9h(16)
00F9: 29 ee xor r14 r14(8)
00FB: 30 048d75 sub r4 758Dh(16)
00FF: 41 04 mov [data](8)++ r4(8)
0101: 1D 0e26 mov r14 26h(8)
0104: 1F 0bd2234b09 mov r11 94B23D2h(32)
010A: 32 0bf1 xor r11 F1h(8)
010D: 2D 0b801d add r11 1D80h(16)
0111: 30 0e962c sub r14 2C96h(16)
0115: 30 0b43a4 sub r11 A443h(16)
0119: 2C 0eb5 add r14 B5h(8)
011C: 2C 0e7e add r14 7Eh(8)
011F: 2D 0e3b1d add r14 1D3Bh(16)
0123: 2B be xor r14 r11(32)
0125: 33 0e91fa xor r14 FA91h(16)
0129: 37 0e add [data](16)++ r14(32)
012B: 1E 0d200c mov r13 C20h(16)
012F: 1F 0f19378db5 mov r15 B58D3719h(32)
0135: 34 0de053be72 xor r13 72BE53E0h(32)
013B: 2F 0f8b sub r15 8Bh(8)
013E: 32 0f28 xor r15 28h(8)
0141: 24 ff add r15 r15(16)
0143: 34 0d7c79d07d xor r13 7DD0797Ch(32)
0149: 25 ff add r15 r15(32)
014B: 29 dd xor r13 r13(8)
014D: 25 ff add r15 r15(32)
014F: 3A 0f sub [data](32)++ r15(32)
0151: 1F 0715786465 mov r7 65647815h(32)
0157: 1D 03b3 mov r3 B3h(8)
015A: 2E 07c939fd7d add r7 7DFD39C9h(32)
0160: 33 073513 xor r7 1335h(16)
0164: 34 07cb02ecc2 xor r7 C2EC02CBh(32)
016A: 21 3b mov r11 r3(16)
016C: 31 0b4a189cbe sub r11 BE9C184Ah(32)
0172: 1D 0969 mov r9 69h(8)
0175: 34 07d4c64107 xor r7 741C6D4h(32)
017B: 2C 09fa add r9 FAh(8)
017E: 23 7b add r11 r7(8)
0180: 25 9b add r11 r9(32)
0182: 2D 0bd215 add r11 15D2h(16)
0186: 2A 37 xor r7 r3(16)
0188: 31 03b4fb1423 sub r3 2314FBB4h(32)
018E: 39 07 sub [data](16)++ r7(16)
0190: 1D 09d2 mov r9 D2h(8)
0193: 1E 0167c5 mov r1 C567h(16)
0197: 1F 02c36c8dbd mov r2 BD8D6CC3h(32)
019D: 23 19 add r9 r1(8)
019F: 32 099f xor r9 9Fh(8)
01A2: 26 19 sub r9 r1(8)
01A4: 2F 09e0 sub r9 E0h(8)
01A7: 2A 99 xor r9 r9(16)
01A9: 34 026bf73db5 xor r2 B53DF76Bh(32)
01AF: 35 09 add [data](8)++ r9(8)
01B1: 1F 0557e14e04 mov r5 44EE157h(32)
01B7: 31 05c0fe8875 sub r5 7588FEC0h(32)
01BD: 2D 05d61a add r5 1AD6h(16)
01C1: 2F 0572 sub r5 72h(8)
01C4: 23 55 add r5 r5(8)
01C6: 34 056215c7db xor r5 DBC71562h(32)
01CC: 1E 0b78cc mov r11 CC78h(16)
01D0: 3B 05 xor [data](8)++ r5(8)
01D2: 18 0b00 set loop Bh(16)
01D5: 1E 0af7c4 mov r10 C4F7h(16)
01D9: 26 aa sub r10 r10(8)
01DB: 2B aa xor r10 r10(32)
01DD: 2E 0a7be29a38 add r10 389AE27Bh(32)
01E3: 2B aa xor r10 r10(32)
01E5: 20 a4 mov r4 r10(8)
01E7: 37 0a add [data](16)++ r10(32)
01E9: 15 1e shuffle [data](32)++ 1Eh(8) (2,3,1,0)
01EB: 3E 0b mov r11 [data](8)
01ED: 1E 0ce4c7 mov r12 C7E4h(16)
01F1: 2B bc xor r12 r11(32)
01F3: 2E 0b73d3e105 add r11 5E1D373h(32)
01F9: 1E 075a4a mov r7 4A5Ah(16)
01FD: 23 77 add r7 r7(8)
01FF: 25 77 add r7 r7(32)
0201: 2C 0b28 add r11 28h(8)
0204: 32 0bb9 xor r11 B9h(8)
0207: 23 cc add r12 r12(8)
0209: 2D 0732d3 add r7 D332h(16)
020D: 2B cc xor r12 r12(32)
020F: 2A b7 xor r7 r11(16)
0211: 2B 7c xor r12 r7(32)
0213: 41 0b mov [data](8)++ r11(8)
0215: 1E 04dda5 mov r4 A5DDh(16)
0219: 1D 06ea mov r6 EAh(8)
021C: 37 04 add [data](16)++ r4(32)
021E: 16 7c0c67 rc4 key_len(7Ch) data_len(Ch) key(6702d699d4b7c32a55ebfefe2651e18e51474e2e3c4fdacedbcc829663994d359c2f18bfe9b6a678e6db034557067661dbd17f6490436e7bc06e2e8389a47ced889fbe4bebc88d1d66c6f317952edf8268164c1179aa3df2afa40a4278903cd5d631dccc9022a4ceb5471c156a0010cd9cc18be07d01b85fb38bade4)
029D: 3E 0e mov r14 [data](8)
029F: 1D 0371 mov r3 71h(8)
02A2: 26 33 sub r3 r3(8)
02A4: 2A 33 xor r3 r3(16)
02A6: 28 e3 sub r3 r14(32)
02A8: 1D 0f3c mov r15 3Ch(8)
02AB: 26 ef sub r15 r14(8)
02AD: 1F 0738c2c354 mov r7 54C3C238h(32)
02B3: 2B ef xor r15 r14(32)
02B5: 2B ff xor r15 r15(32)
02B7: 27 e7 sub r7 r14(16)
02B9: 32 074d xor r7 4Dh(8)
02BC: 32 0e94 xor r14 94h(8)
02BF: 28 f3 sub r3 r15(32)
02C1: 31 0e53055733 sub r14 33570553h(32)
02C7: 2E 0f7cb6a477 add r15 77A4B67Ch(32)
02CD: 26 37 sub r7 r3(8)
02CF: 32 0e95 xor r14 95h(8)
02D2: 23 f7 add r7 r15(8)
02D4: 2B 3f xor r15 r3(32)
02D6: 32 03ae xor r3 AEh(8)
02D9: 2F 0ece sub r14 CEh(8)
02DC: 23 73 add r3 r7(8)
02DE: 41 0e mov [data](8)++ r14(8)
02E0: 1E 0ce23d mov r12 3DE2h(16)
02E4: 1D 0bbf mov r11 BFh(8)
02E7: 2F 0b7a sub r11 7Ah(8)
02EA: 30 0b8148 sub r11 4881h(16)
02EE: 24 bc add r12 r11(16)
02F0: 2C 0b15 add r11 15h(8)
02F3: 2D 0c16ce add r12 CE16h(16)
02F7: 37 0b add [data](16)++ r11(32)
02F9: 3E 0d mov r13 [data](8)
02FB: 1F 03e3369766 mov r3 669736E3h(32)
0301: 27 33 sub r3 r3(16)
0303: 30 0d07c0 sub r13 C007h(16)
0307: 27 33 sub r3 r3(16)
0309: 2E 0d2318a6e1 add r13 E1A61823h(32)
030F: 32 0d75 xor r13 75h(8)
0312: 29 d3 xor r3 r13(8)
0314: 28 d3 sub r3 r13(32)
0316: 41 0d mov [data](8)++ r13(8)
0318: 1E 077bd7 mov r7 D77Bh(16)
031C: 1E 015168 mov r1 6851h(16)
0320: 33 07c020 xor r7 20C0h(16)
0324: 2E 0714f5d3fc add r7 FCD3F514h(32)
032A: 25 71 add r1 r7(32)
032C: 2F 01bb sub r1 BBh(8)
032F: 2D 0749d0 add r7 D049h(16)
0333: 2A 77 xor r7 r7(16)
0335: 2C 014b add r1 4Bh(8)
0338: 31 07166a06a6 sub r7 A6066A16h(32)
033E: 34 0148a11cc5 xor r1 C51CA148h(32)
0344: 35 07 add [data](8)++ r7(8)
0346: 09 ca sub [data](8)++ CAh(8)
0348: 3E 06 mov r6 [data](8)
034A: 1D 0789 mov r7 89h(8)
034D: 23 67 add r7 r6(8)
034F: 2E 0672d0dd15 add r6 15DDD072h(32)
0355: 28 67 sub r7 r6(32)
0357: 41 06 mov [data](8)++ r6(8)
0359: 14 not [data](32)++
035A: 1C 8801 jmp -188h(16)
035D: 1D 01a1 mov r1 A1h(8)
0360: 1F 09b9959472 mov r9 729495B9h(32)
0366: 2A 19 xor r9 r1(16)
0368: 32 09d1 xor r9 D1h(8)
036B: 30 0920db sub r9 DB20h(16)
036F: 35 09 add [data](8)++ r9(8)
0371: 16 0b0a01 rc4 key_len(Bh) data_len(Ah) key(01046d00c6ba5a8c5d937c)
037F: 0C 6f rol [data](8)++ 6Fh(8)
0381: 3E 07 mov r7 [data](8)
0383: 1D 0254 mov r2 54h(8)
0386: 29 22 xor r2 r2(8)
0388: 28 22 sub r2 r2(32)
038A: 2C 0209 add r2 9h(8)
038D: 2E 07027d429d add r7 9D427D02h(32)
0393: 30 073f71 sub r7 713Fh(16)
0397: 30 0790de sub r7 DE90h(16)
039B: 23 22 add r2 r2(8)
039D: 23 72 add r2 r7(8)
039F: 41 07 mov [data](8)++ r7(8)
03A1: 1A c1fe inc data -13Fh(16)
03A4: 3E 0b mov r11 [data](8)
03A6: 1D 0233 mov r2 33h(8)
03A9: 30 0b843e sub r11 3E84h(16)
03AD: 2F 0283 sub r2 83h(8)
03B0: 28 b2 sub r2 r11(32)
03B2: 29 22 xor r2 r2(8)
03B4: 41 0b mov [data](8)++ r11(8)
03B6: 1F 0c0fda0396 mov r12 9603DA0Fh(32)
03BC: 23 cc add r12 r12(8)
03BE: 1E 085ecd mov r8 CD5Eh(16)
03C2: 33 082e98 xor r8 982Eh(16)
03C6: 34 086687b532 xor r8 32B58766h(32)
03CC: 21 c5 mov r5 r12(16)
03CE: 32 0c6f xor r12 6Fh(8)
03D1: 28 cc sub r12 r12(32)
03D3: 2E 080e59491e add r8 1E49590Eh(32)
03D9: 32 0562 xor r5 62h(8)
03DC: 2B c8 xor r8 r12(32)
03DE: 33 05dcee xor r5 EEDCh(16)
03E2: 2E 058718abcc add r5 CCAB1887h(32)
03E8: 27 8c sub r12 r8(16)
03EA: 3C 08 xor [data](16)++ r8(16)
03EC: 1F 00d6088d95 mov r0 958D08D6h(32)
03F2: 2D 00275e add r0 5E27h(16)
03F6: 2C 00e2 add r0 E2h(8)
03F9: 1F 0d9e5d71a5 mov r13 A5715D9Eh(32)
03FF: 20 db mov r11 r13(8)
0401: 34 0b780ed56c xor r11 6CD50E78h(32)
0407: 2F 00e4 sub r0 E4h(8)
040A: 2D 00b74b add r0 4BB7h(16)
040E: 24 bb add r11 r11(16)
0410: 34 0d32e751da xor r13 DA51E732h(32)
0416: 29 00 xor r0 r0(8)
0418: 26 bb sub r11 r11(8)
041A: 23 db add r11 r13(8)
041C: 37 00 add [data](16)++ r0(32)
041E: 18 0000 set loop 0h(16)
0421: 1F 0c07879419 mov r12 19948707h(32)
0427: 1E 0b1030 mov r11 3010h(16)
042B: 2A bc xor r12 r11(16)
042D: 1F 0eb6691dda mov r14 DA1D69B6h(32)
0433: 31 0bb0c9156c sub r11 6C15C9B0h(32)
0439: 30 0b9de6 sub r11 E69Dh(16)
043D: 35 0b add [data](8)++ r11(8)
043F: 0C d4 rol [data](8)++ D4h(8)
0441: 1D 0d6d mov r13 6Dh(8)
0444: 1D 005b mov r0 5Bh(8)
0447: 33 005dd4 xor r0 D45Dh(16)
044B: 27 0d sub r13 r0(16)
044D: 39 00 sub [data](16)++ r0(16)
044F: 0A b3c8 sub [data](16)++ C8B3h(16)
0452: 16 96dbbd rc4 key_len(96h) data_len(DBh) key(bd4a8fb28c2763d854e7e9b119b2eaafe99d4d370cbc815a35ddd902d9ca8c4115173bb64258ab8e246782e4383dc6883045a27e9ae6035930c0d528bc112115863db19d903f000e325ac03f8fea1eaafc9040f538722d236e12d40adb4b42d81b56a06d291b430475edb9c58d4801f17e3093c070ee2ccb108a287986321680b230f3375c9804172a78f97e87736441f0669c698c54)
04EB: 1B cc jmp -CCh(8)
04ED: 1F 07426d5083 mov r7 83506D42h(32)
04F3: 34 072b85174f xor r7 4F17852Bh(32)
04F9: 3D 07 xor [data](32)++ r7(32)
04FB: 3E 02 mov r2 [data](8)
04FD: 1D 0f03 mov r15 3h(8)
0500: 29 2f xor r15 r2(8)
0502: 28 2f sub r15 r2(32)
0504: 2E 0217b4cc5b add r2 5BCCB417h(32)
050A: 28 2f sub r15 r2(32)
050C: 24 2f add r15 r2(16)
050E: 26 ff sub r15 r15(8)
0510: 41 02 mov [data](8)++ r2(8)
0512: 1F 08bcc168e4 mov r8 E468C1BCh(32)
0518: 1D 0094 mov r0 94h(8)
051B: 2F 00c4 sub r0 C4h(8)
051E: 38 00 sub [data](8)++ r0(8)
0520: 08 f3a3e9b7 add [data](32)++ B7E9A3F3h(32)
0525: 1E 027688 mov r2 8876h(16)
0529: 26 22 sub r2 r2(8)
052B: 21 28 mov r8 r2(16)
052D: 31 029aec9022 sub r2 2290EC9Ah(32)
0533: 37 02 add [data](16)++ r2(32)
0535: 11 96 ror [data](32)++ 96h(32)
0537: 1A d3fd inc data -22Dh(16)
053A: 3E 0a mov r10 [data](8)
053C: 1E 0d9bf4 mov r13 F49Bh(16)
0540: 1D 0cc5 mov r12 C5h(8)
0543: 23 dc add r12 r13(8)
0545: 2E 0aaf1756f8 add r10 F85617AFh(32)
054B: 2F 0a7d sub r10 7Dh(8)
054E: 27 ad sub r13 r10(16)
0550: 28 ac sub r12 r10(32)
0552: 27 dd sub r13 r13(16)
0554: 24 ad add r13 r10(16)
0556: 33 0aed15 xor r10 15EDh(16)
055A: 31 0d68768ebb sub r13 BB8E7668h(32)
0560: 32 0c66 xor r12 66h(8)
0563: 25 cd add r13 r12(32)
0565: 41 0a mov [data](8)++ r10(8)
0567: 0C 7c rol [data](8)++ 7Ch(8)
0569: 0F 2d ror [data](8)++ 2Dh(8)
056B: 3F 04 mov r4 [data](16)
056D: 1F 0b91bbaeba mov r11 BAAEBB91h(32)
0573: 32 0425 xor r4 25h(8)
0576: 32 0423 xor r4 23h(8)
0579: 2E 0b660e4488 add r11 88440E66h(32)
057F: 26 bb sub r11 r11(8)
0581: 23 4b add r11 r4(8)
0583: 34 04f4b4258d xor r4 8D25B4F4h(32)
0589: 34 048c3b7af7 xor r4 F77A3B8Ch(32)
058F: 31 0490a15f61 sub r4 615FA190h(32)
0595: 2F 04eb sub r4 EBh(8)
0598: 2F 040e sub r4 Eh(8)
059B: 1F 090ced27ed mov r9 ED27ED0Ch(32)
05A1: 42 04 mov [data](16)++ r4(16)
05A3: 18 0200 set loop 2h(16)
05A6: 1F 0572ac712a mov r5 2A71AC72h(32)
05AC: 1F 0873f19154 mov r8 5491F173h(32)
05B2: 1D 01df mov r1 DFh(8)
05B5: 29 85 xor r5 r8(8)
05B7: 34 05e36de056 xor r5 56E06DE3h(32)
05BD: 2F 01f7 sub r1 F7h(8)
05C0: 30 05c728 sub r5 28C7h(16)
05C4: 2C 0801 add r8 1h(8)
05C7: 23 85 add r5 r8(8)
05C9: 1F 0ccd0046cb mov r12 CB4600CDh(32)
05CF: 2C 0190 add r1 90h(8)
05D2: 2F 01b2 sub r1 B2h(8)
05D5: 25 18 add r8 r1(32)
05D7: 2B 58 xor r8 r5(32)
05D9: 29 cc xor r12 r12(8)
05DB: 29 81 xor r1 r8(8)
05DD: 2E 0cbbdaa76b add r12 6BA7DABBh(32)
05E3: 2C 0867 add r8 67h(8)
05E6: 31 01c86b2709 sub r1 9276BC8h(32)
05EC: 3D 01 xor [data](32)++ r1(32)
05EE: 0C 3f rol [data](8)++ 3Fh(8)
05F0: 1E 0179eb mov r1 EB79h(16)
05F4: 1E 068e58 mov r6 588Eh(16)
05F8: 30 06613c sub r6 3C61h(16)
05FC: 24 16 add r6 r1(16)
05FE: 1D 0a8e mov r10 8Eh(8)
0601: 32 06c0 xor r6 C0h(8)
0604: 2F 061e sub r6 1Eh(8)
0607: 33 06d3aa xor r6 AAD3h(16)
060B: 2D 06a614 add r6 14A6h(16)
060F: 31 06c6081c72 sub r6 721C08C6h(32)
0615: 2E 060168df1b add r6 1BDF6801h(32)
061B: 31 0a513e8534 sub r10 34853E51h(32)
0621: 28 a1 sub r1 r10(32)
0623: 33 065b9c xor r6 9C5Bh(16)
0627: 2C 01b1 add r1 B1h(8)
062A: 34 0ab177e876 xor r10 76E877B1h(32)
0630: 35 06 add [data](8)++ r6(8)
0632: 40 0a mov r10 [data](32)
0634: 1D 0392 mov r3 92h(8)
0637: 29 a3 xor r3 r10(8)
0639: 23 a3 add r3 r10(8)
063B: 43 0a mov [data](32)++ r10(32)
063D: 40 06 mov r6 [data](32)
063F: 1D 0189 mov r1 89h(8)
0642: 23 61 add r1 r6(8)
0644: 20 19 mov r9 r1(8)
0646: 27 69 sub r9 r6(16)
0648: 30 0648bc sub r6 BC48h(16)
064C: 2E 06bcb4df36 add r6 36DFB4BCh(32)
0652: 2C 062c add r6 2Ch(8)
0655: 25 69 add r9 r6(32)
0657: 26 19 sub r9 r1(8)
0659: 23 19 add r9 r1(8)
065B: 2A 19 xor r9 r1(16)
065D: 27 99 sub r9 r9(16)
065F: 29 11 xor r1 r1(8)
0661: 25 99 add r9 r9(32)
0663: 23 99 add r9 r9(8)
0665: 34 06da9401f1 xor r6 F10194DAh(32)
066B: 33 06f54f xor r6 4FF5h(16)
066F: 43 06 mov [data](32)++ r6(32)
0671: 16 1ba62d rc4 key_len(1Bh) data_len(A6h) key(2da3dd3b3ba7139e66c7e6142096fc1589faae43e6371fa572a82f)
068F: 1B eb jmp -EBh(8)
0691: 1F 01e66a88c4 mov r1 C4886AE6h(32)
0697: 1E 0e83b3 mov r14 B383h(16)
069B: 34 01ec6aa8d2 xor r1 D2A86AECh(32)
06A1: 3A 01 sub [data](32)++ r1(32)
06A3: 16 4535c6 rc4 key_len(45h) data_len(35h) key(c6323b7610aafc976af3b7da0f1da68b257048d6e1bcdcd970f0a5e87b7ace6892e8c415a02c1b1c49a777de00c28b0554e22c2434961a30d08e0f7cb4cb9839ce73a72ddd)
06EB: 1A 2ffe inc data -1D1h(16)
06EE: 16 fb5a32 rc4 key_len(FBh) data_len(5Ah) key(32a5fe0f419672e210ef5bee15d56995e3a30eb8c0e6582814c15126c7a974469fd70f82f8f685b4959dcc3cd5a73db435f4a609b2f0800db1a85583427a0250c285a8298bcb96d5210d3f30faef32b2641ec00c71ce3b2b4241afd6e23e33dab2c87fe40f43550bcea83b15b768537699a439cbe476d8ddab4fdf0780218cfa9919bbf085be70e89e14f716fcbc4e06098e263596d1650dd9f78c7a4d97e6256ffbf77e2ab617e5f1741db48e2464ad6df1c52f5b783d2eef52283514f08339faaab8230920b5918d939d010923647c0bb44b37e10e4cae80c0b3555966f1134e85791ec3e22b5736e1f11a2f52a56d038b0f00ea65f59ff657e0)
07EC: 1F 0f97a6b312 mov r15 12B3A697h(32)
07F2: 1F 0a6041801e mov r10 1E804160h(32)
07F8: 1E 08fef6 mov r8 F6FEh(16)
07FC: 2A 8a xor r10 r8(16)
07FE: 24 8f add r15 r8(16)
0800: 32 0f79 xor r15 79h(8)
0803: 1E 03ecad mov r3 ADECh(16)
0807: 2E 084f841043 add r8 4310844Fh(32)
080D: 30 08d042 sub r8 42D0h(16)
0811: 28 f3 sub r3 r15(32)
0813: 32 08ff xor r8 FFh(8)
0816: 34 0f9be5ace1 xor r15 E1ACE59Bh(32)
081C: 33 0861cc xor r8 CC61h(16)
0820: 30 0f874b sub r15 4B87h(16)
0824: 36 08 add [data](16)++ r8(16)
0826: 04 b8e5 xor [data](16)++ E5B8h(16)
0829: 3E 0f mov r15 [data](8)
082B: 1F 09ee64cdba mov r9 BACD64EEh(32)
0831: 2C 0f33 add r15 33h(8)
0834: 29 99 xor r9 r9(8)
0836: 2A 99 xor r9 r9(16)
0838: 2A f9 xor r9 r15(16)
083A: 28 99 sub r9 r9(32)
083C: 31 0fb2755151 sub r15 515175B2h(32)
0842: 23 99 add r9 r9(8)
0844: 2B f9 xor r9 r15(32)
0846: 29 f9 xor r9 r15(8)
0848: 32 0fc1 xor r15 C1h(8)
084B: 2F 09f6 sub r9 F6h(8)
084E: 26 f9 sub r9 r15(8)
0850: 2E 0fd0db2832 add r15 3228DBD0h(32)
0856: 33 0f05b1 xor r15 B105h(16)
085A: 30 0f491e sub r15 1E49h(16)
085E: 41 0f mov [data](8)++ r15(8)
0860: 1D 091e mov r9 1Eh(8)
0863: 1D 0dd1 mov r13 D1h(8)
0866: 30 0933f9 sub r9 F933h(16)
086A: 30 0d155e sub r13 5E15h(16)
086E: 2D 0d3e31 add r13 313Eh(16)
0872: 2C 0d1f add r13 1Fh(8)
0875: 34 0df440c4e1 xor r13 E1C440F4h(32)
087B: 3D 0d xor [data](32)++ r13(32)
087D: 16 e07c7b rc4 key_len(E0h) data_len(7Ch) key(7b463a18ca0ca13b1144a5c54784538679876d87398ad38be0eef2e748dc1546905c8c920e81a796bb02817efcc9eb62c89b25399bbe0c401f8e59cef9e2e246028a2324a6c9b2d9876d6f0f7fe9cfe0c889c1cc0cf36e893b478ad4a67452b1c328c6366d82cf23893a2d60014ac8aacfd3907877f82584ce3ff97930d075778f484c954b0053ba63126865acde0206e13993b9e5074847edf9c329fe7e540b01f1473b06ab05df350f20256417f190009bdf2e5fc456fa0c59b8ac888338c525469c1c75f296fd61c3400882e0cd776c0e39cff65951c98559b46f92267fe9)
0960: 15 c9 shuffle [data](32)++ C9h(8) (1,2,0,3)
0962: 3E 09 mov r9 [data](8)
0964: 1F 0b762a91a8 mov r11 A8912A76h(32)
096A: 2A 9b xor r11 r9(16)
096C: 1F 0a02af24c5 mov r10 C524AF02h(32)
0972: 26 9a sub r10 r9(8)
0974: 2E 0b6a3e6139 add r11 39613E6Ah(32)
097A: 24 9b add r11 r9(16)
097C: 31 0956420e8f sub r9 8F0E4256h(32)
0982: 2D 09d416 add r9 16D4h(16)
0986: 41 09 mov [data](8)++ r9(8)
0988: 1F 0a9908b14e mov r10 4EB10899h(32)
098E: 1F 05353cd5f7 mov r5 F7D53C35h(32)
0994: 22 a9 mov r9 r10(32)
0996: 1E 0682a9 mov r6 A982h(16)
099A: 25 96 add r6 r9(32)
099C: 2C 0ab4 add r10 B4h(8)
099F: 2C 09a8 add r9 A8h(8)
09A2: 2F 0523 sub r5 23h(8)
09A5: 2A 96 xor r6 r9(16)
09A7: 24 66 add r6 r6(16)
09A9: 25 65 add r5 r6(32)
09AB: 32 0adf xor r10 DFh(8)
09AE: 30 05cef2 sub r5 F2CEh(16)
09B2: 25 56 add r6 r5(32)
09B4: 2C 0968 add r9 68h(8)
09B7: 33 0aece5 xor r10 E5ECh(16)
09BB: 31 0a21b57228 sub r10 2872B521h(32)
09C1: 2D 06039e add r6 9E03h(16)
09C5: 3C 06 xor [data](16)++ r6(16)
09C7: 06 8f add [data](8)++ 8Fh(8)
09C9: 07 54d5 add [data](16)++ D554h(16)
09CC: 1A 7cfe inc data -184h(16)
09CF: 3F 0b mov r11 [data](16)
09D1: 1E 079407 mov r7 794h(16)
09D5: 23 77 add r7 r7(8)
09D7: 24 77 add r7 r7(16)
09D9: 42 0b mov [data](16)++ r11(16)
09DB: 3F 06 mov r6 [data](16)
09DD: 1D 0fc5 mov r15 C5h(8)
09E0: 32 06f5 xor r6 F5h(8)
09E3: 27 ff sub r15 r15(16)
09E5: 22 64 mov r4 r6(32)
09E7: 42 06 mov [data](16)++ r6(16)
09E9: 3F 00 mov r0 [data](16)
09EB: 1D 0d39 mov r13 39h(8)
09EE: 2A 0d xor r13 r0(16)
09F0: 1D 01f4 mov r1 F4h(8)
09F3: 1E 08ef6d mov r8 6DEFh(16)
09F7: 26 11 sub r1 r1(8)
09F9: 24 d8 add r8 r13(16)
09FB: 27 08 sub r8 r0(16)
09FD: 34 0041db2230 xor r0 3022DB41h(32)
0A03: 31 00d1ec4d12 sub r0 124DECD1h(32)
0A09: 26 18 sub r8 r1(8)
0A0B: 26 8d sub r13 r8(8)
0A0D: 2F 0db6 sub r13 B6h(8)
0A10: 25 08 add r8 r0(32)
0A12: 32 00bb xor r0 BBh(8)
0A15: 2F 0114 sub r1 14h(8)
0A18: 2A 18 xor r8 r1(16)
0A1A: 2C 01bd add r1 BDh(8)
0A1D: 28 11 sub r1 r1(32)
0A1F: 42 00 mov [data](16)++ r0(16)
0A21: 1F 0eede1e994 mov r14 94E9E1EDh(32)
0A27: 2A ee xor r14 r14(16)
0A29: 1D 06e2 mov r6 E2h(8)
0A2C: 22 64 mov r4 r6(32)
0A2E: 30 061383 sub r6 8313h(16)
0A32: 2C 0631 add r6 31h(8)
0A35: 31 0682125d12 sub r6 125D1282h(32)
0A3B: 33 0edf8b xor r14 8BDFh(16)
0A3F: 33 0e04d7 xor r14 D704h(16)
0A43: 32 0e61 xor r14 61h(8)
0A46: 3A 0e sub [data](32)++ r14(32)
0A48: 18 0900 set loop 9h(16)
0A4B: 1E 01787d mov r1 7D78h(16)
0A4F: 1F 07efcaa6ed mov r7 EDA6CAEFh(32)
0A55: 2C 01b1 add r1 B1h(8)
0A58: 1F 045338705c mov r4 5C703853h(32)
0A5E: 2D 04571d add r4 1D57h(16)
0A62: 1D 0ee7 mov r14 E7h(8)
0A65: 30 077235 sub r7 3572h(16)
0A69: 2B 74 xor r4 r7(32)
0A6B: 31 048c091600 sub r4 16098Ch(32)
0A71: 31 04b20e927b sub r4 7B920EB2h(32)
0A77: 2B e7 xor r7 r14(32)
0A79: 2E 0ef7697160 add r14 607169F7h(32)
0A7F: 2E 07b790481f add r7 1F4890B7h(32)
0A85: 2F 0e0b sub r14 Bh(8)
0A88: 39 04 sub [data](16)++ r4(16)
0A8A: 08 8a8a7317 add [data](32)++ 17738A8Ah(32)
0A8F: 3E 08 mov r8 [data](8)
0A91: 1E 0dbed9 mov r13 D9BEh(16)
0A95: 1F 07e8807ae5 mov r7 E57A80E8h(32)
0A9B: 34 0d63f9bca9 xor r13 A9BCF963h(32)
0AA1: 26 8d sub r13 r8(8)
0AA3: 25 d7 add r7 r13(32)
0AA5: 2A 77 xor r7 r7(16)
0AA7: 33 0df682 xor r13 82F6h(16)
0AAB: 1F 09b5c77f32 mov r9 327FC7B5h(32)
0AB1: 2E 086a0148a7 add r8 A748016Ah(32)
0AB7: 27 d7 sub r7 r13(16)
0AB9: 2D 086bf6 add r8 F66Bh(16)
0ABD: 33 07c10a xor r7 AC1h(16)
0AC1: 2F 087a sub r8 7Ah(8)
0AC4: 34 094fbb844c xor r9 4C84BB4Fh(32)
0ACA: 25 dd add r13 r13(32)
0ACC: 2B 8d xor r13 r8(32)
0ACE: 25 77 add r7 r7(32)
0AD0: 41 08 mov [data](8)++ r8(8)
0AD2: 16 8a2b06 rc4 key_len(8Ah) data_len(2Bh) key(0610b9fd4e21a3e6a1f8bc76f8bee8820feaf1b90a2e763ecc39308dbdbeba137da1da45cc7b475152a8011f3a0b9262ee506084c7933225ee0e3a74cf9bcbfa6ceff1f127c0bb42c861dd068cf720fecf22c7508165e9a20f93e70f1bedd7e45040c79a606b7c62a96318637f0d28be26de6999ff54fd0e740b0f6e56fdb8837176ad63367b4a302cc0)
0B5F: 1E 01f14e mov r1 4EF1h(16)
0B63: 25 11 add r1 r1(32)
0B65: 28 11 sub r1 r1(32)
0B67: 25 11 add r1 r1(32)
0B69: 1F 071a0628ff mov r7 FF28061Ah(32)
0B6F: 24 17 add r7 r1(16)
0B71: 2D 018069 add r1 6980h(16)
0B75: 31 01a88469ef sub r1 EF6984A8h(32)
0B7B: 3B 01 xor [data](8)++ r1(8)
0B7D: 3F 00 mov r0 [data](16)
0B7F: 1D 0a75 mov r10 75h(8)
0B82: 28 0a sub r10 r0(32)
0B84: 32 00ad xor r0 ADh(8)
0B87: 1E 07e3d5 mov r7 D5E3h(16)
0B8B: 2F 00d9 sub r0 D9h(8)
0B8E: 2F 00f4 sub r0 F4h(8)
0B91: 23 7a add r10 r7(8)
0B93: 42 00 mov [data](16)++ r0(16)
0B95: 05 4ab76dd0 xor [data](32)++ D06DB74Ah(32)
0B9A: 3F 06 mov r6 [data](16)
0B9C: 1E 0593dc mov r5 DC93h(16)
0BA0: 25 55 add r5 r5(32)
0BA2: 2F 0629 sub r6 29h(8)
0BA5: 2A 55 xor r5 r5(16)
0BA7: 24 65 add r5 r6(16)
0BA9: 2A 65 xor r5 r6(16)
0BAB: 42 06 mov [data](16)++ r6(16)
0BAD: 1C 6501 jmp -165h(16)
0BB0: 16 2c274a rc4 key_len(2Ch) data_len(27h) key(4a8fccc2cdc9ad7c9852e6da0d3b80263c1fcba0fe6ce667d728a5d75ad1fe0e2e74790451fcf73e02476fb8)
0BDF: 1A 79fd inc data -287h(16)
0BE2: 3E 09 mov r9 [data](8)
0BE4: 1E 0fb5eb mov r15 EBB5h(16)
0BE8: 33 09beea xor r9 EABEh(16)
0BEC: 1F 040e6ca08c mov r4 8CA06C0Eh(32)
0BF2: 2C 0f9a add r15 9Ah(8)
0BF5: 30 091844 sub r9 4418h(16)
0BF9: 31 04cc0bb333 sub r4 33B30BCCh(32)
0BFF: 25 ff add r15 r15(32)
0C01: 27 94 sub r4 r9(16)
0C03: 27 4f sub r15 r4(16)
0C05: 2A 44 xor r4 r4(16)
0C07: 30 04a89e sub r4 9EA8h(16)
0C0B: 2B 44 xor r4 r4(32)
0C0D: 25 94 add r4 r9(32)
0C0F: 41 09 mov [data](8)++ r9(8)
0C11: 18 0300 set loop 3h(16)
0C14: 1E 0bb9f7 mov r11 F7B9h(16)
0C18: 34 0b684ec3ba xor r11 BAC34E68h(32)
0C1E: 3D 0b xor [data](32)++ r11(32)
0C20: 16 a89b6b rc4 key_len(A8h) data_len(9Bh) key(6b4c569816733225425ff5c8a17a3d0acb499171560e261dc0395be11d1ef0c3a56bc9eea6902aef22be68c818d41ab8c691311c8f9489ee17e88b5d54dac4ccf42b498de4b031123e8248a8da2cdef9d5230232eb6057820a8b14174bf23275a2c4ed2dc5c3c6fac15010135d6528ebca8df1d46cf610cc495f88332d1c3f9a70e114646a3f9accdcfb8bfc543315249f29e10eaa68dfd5b5150ac72c25335f6f56f0529b0ff748)
0CCB: 1B b9 jmp -B9h(8)
0CCD: 40 0f mov r15 [data](32)
0CCF: 1D 0c12 mov r12 12h(8)
0CD2: 1F 003845e590 mov r0 90E54538h(32)
0CD8: 27 0c sub r12 r0(16)
0CDA: 27 f0 sub r0 r15(16)
0CDC: 1F 03822d032c mov r3 2C032D82h(32)
0CE2: 34 0f9193fe0a xor r15 AFE9391h(32)
0CE8: 28 c0 sub r0 r12(32)
0CEA: 2F 03e8 sub r3 E8h(8)
0CED: 30 0fd05d sub r15 5DD0h(16)
0CF1: 33 03324d xor r3 4D32h(16)
0CF5: 34 0333dace99 xor r3 99CEDA33h(32)
0CFB: 2F 0fe9 sub r15 E9h(8)
0CFE: 30 0fec4f sub r15 4FECh(16)
0D02: 26 00 sub r0 r0(8)
0D04: 30 0fb3a4 sub r15 A4B3h(16)
0D08: 34 0fa78c0f8d xor r15 8D0F8CA7h(32)
0D0E: 28 3c sub r12 r3(32)
0D10: 32 0f42 xor r15 42h(8)
0D13: 24 3c add r12 r3(16)
0D15: 2C 0fed add r15 EDh(8)
0D18: 43 0f mov [data](32)++ r15(32)
0D1A: 1A 95fd inc data -26Bh(16)
0D1D: 40 07 mov r7 [data](32)
0D1F: 1D 0420 mov r4 20h(8)
0D22: 31 0782933433 sub r7 33349382h(32)
0D28: 2F 041c sub r4 1Ch(8)
0D2B: 2D 07a881 add r7 81A8h(16)
0D2F: 43 07 mov [data](32)++ r7(32)
0D31: 18 0900 set loop 9h(16)
0D34: 16 783a6a rc4 key_len(78h) data_len(3Ah) key(6aed9aa1f8ccae3405401e6535007d10d490c185cd1d7b22fda4477944d39b2f03cad9ba1f8d768a2dce5f682dbc09a3e08055cba491ecc6ab6e19aab9ddabf2052d55c1c2da86687821586c8ed241cda64016f0d7fc73163f57d593342ade542961464d9e7c3aa128ff1c041e40557f273679ea425bbc48)
0DAF: 1B 7d jmp -7Dh(8)
0DB1: 1A c4fc inc data -33Ch(16)
0DB4: 18 0200 set loop 2h(16)
0DB7: 02 64555b nop4
0DBB: 12 not [data](8)++
0DBC: 16 602859 rc4 key_len(60h) data_len(28h) key(59a6e784df7fcd93b3b8820eb9a118cb49e3f2931562943b801975f2997450822cc595db2312b746b3084543a56142a791a5e47812564ce8ae9b4ee9f7afdb268aa187184e8de45971313d49f4bc11f64663abd317172c544c63d21d5afd3c95)
0E1F: 0C 09 rol [data](8)++ 9h(8)
0E21: 1E 00c146 mov r0 46C1h(16)
0E25: 2E 00df5991a1 add r0 A19159DFh(32)
0E2B: 20 08 mov r8 r0(8)
0E2D: 1F 09f81cffe9 mov r9 E9FF1CF8h(32)
0E33: 2D 092411 add r9 1124h(16)
0E37: 2F 0806 sub r8 6h(8)
0E3A: 1D 0bde mov r11 DEh(8)
0E3D: 2D 00c75c add r0 5CC7h(16)
0E41: 2E 001e36e25c add r0 5CE2361Eh(32)
0E47: 28 98 sub r8 r9(32)
0E49: 33 09d151 xor r9 51D1h(16)
0E4D: 26 8b sub r11 r8(8)
0E4F: 2E 08a74b1969 add r8 69194BA7h(32)
0E55: 2D 0b7301 add r11 173h(16)
0E59: 2D 083b44 add r8 443Bh(16)
0E5D: 24 99 add r9 r9(16)
0E5F: 2B 0b xor r11 r0(32)
0E61: 3B 08 xor [data](8)++ r8(8)
0E63: 16 0fcd5f rc4 key_len(Fh) data_len(CDh) key(5f418731950173ef12e77508c99ff0)
0E75: 1B c0 jmp -C0h(8)
0E77: 08 b2c08a8b add [data](32)++ 8B8AC0B2h(32)
0E7C: 40 0c mov r12 [data](32)
0E7E: 1E 01f64d mov r1 4DF6h(16)
0E82: 2B 11 xor r1 r1(32)
0E84: 43 0c mov [data](32)++ r12(32)
0E86: 16 1b2710 rc4 key_len(1Bh) data_len(27h) key(100a4fac18772770ed0591879605948fc8f1ef8099912500f93c19)
0EA4: 3F 0f mov r15 [data](16)
0EA6: 1E 0bf169 mov r11 69F1h(16)
0EAA: 34 0f6855c285 xor r15 85C25568h(32)
0EB0: 33 0f2e77 xor r15 772Eh(16)
0EB4: 2E 0f256eca2b add r15 2BCA6E25h(32)
0EBA: 26 fb sub r11 r15(8)
0EBC: 1D 0733 mov r7 33h(8)
0EBF: 27 fb sub r11 r15(16)
0EC1: 2D 0fe813 add r15 13E8h(16)
0EC5: 33 0f3cde xor r15 DE3Ch(16)
0EC9: 28 7b sub r11 r7(32)
0ECB: 2D 07e7d8 add r7 D8E7h(16)
0ECF: 32 0f12 xor r15 12h(8)
0ED2: 2B b7 xor r7 r11(32)
0ED4: 33 0f0124 xor r15 2401h(16)
0ED8: 42 0f mov [data](16)++ r15(16)
0EDA: 16 7902d7 rc4 key_len(79h) data_len(2h) key(d780c998cd76bc7d1d6dc7a2897a24ed4bb67a83e8a61950bafffae8bc0878f3d4967adb4d6421bad86104bfa731b1316b382650a7ddb2f17185ad6459ab524e1ba8a9ddd5c8adeb84ea5a586b82be5e39444a53acdb446aa642182f86b57e581981454f858589f7f1ab58f66a73e8f29c94f636db2c8bda99)
0F56: 3E 03 mov r3 [data](8)
0F58: 1D 0077 mov r0 77h(8)
0F5B: 2E 03e99373b4 add r3 B47393E9h(32)
0F61: 2A 00 xor r0 r0(16)
0F63: 2B 00 xor r0 r0(32)
0F65: 1D 091e mov r9 1Eh(8)
0F68: 32 03fc xor r3 FCh(8)
0F6B: 26 30 sub r0 r3(8)
0F6D: 25 30 add r0 r3(32)
0F6F: 1D 01dd mov r1 DDh(8)
0F72: 27 09 sub r9 r0(16)
0F74: 41 03 mov [data](8)++ r3(8)
0F76: 09 d1 sub [data](8)++ D1h(8)
0F78: 40 07 mov r7 [data](32)
0F7A: 1F 01db8817f5 mov r1 F51788DBh(32)
0F80: 2A 11 xor r1 r1(16)
0F82: 2D 0740f3 add r7 F340h(16)
0F86: 2D 07c2d5 add r7 D5C2h(16)
0F8A: 1F 04ad17c4f3 mov r4 F3C417ADh(32)
0F90: 2A 41 xor r1 r4(16)
0F92: 32 0709 xor r7 9h(8)
0F95: 24 44 add r4 r4(16)
0F97: 2D 019f27 add r1 279Fh(16)
0F9B: 28 71 sub r1 r7(32)
0F9D: 29 41 xor r1 r4(8)
0F9F: 31 0767e0532a sub r7 2A53E067h(32)
0FA5: 31 078a6f7f36 sub r7 367F6F8Ah(32)
0FAB: 2A 11 xor r1 r1(16)
0FAD: 43 07 mov [data](32)++ r7(32)
0FAF: 0B aedec0d8 sub [data](32)++ D8C0DEAEh(32)
0FB4: 1E 027a57 mov r2 577Ah(16)
0FB8: 24 22 add r2 r2(16)
0FBA: 1D 0868 mov r8 68h(8)
0FBD: 3A 02 sub [data](32)++ r2(32)
0FBF: 1D 0d2f mov r13 2Fh(8)
0FC2: 1E 0e11bc mov r14 BC11h(16)
0FC6: 1D 045d mov r4 5Dh(8)
0FC9: 2B 4d xor r13 r4(32)
0FCB: 2E 0e29d93357 add r14 5733D929h(32)
0FD1: 25 4e add r14 r4(32)
0FD3: 34 0ef3d94ff0 xor r14 F04FD9F3h(32)
0FD9: 2D 0dd271 add r13 71D2h(16)
0FDD: 34 0dc4f64db2 xor r13 B24DF6C4h(32)
0FE3: 25 e4 add r4 r14(32)
0FE5: 29 d4 xor r4 r13(8)
0FE7: 27 d4 sub r4 r13(16)
0FE9: 34 0458a04d20 xor r4 204DA058h(32)
0FEF: 2C 0e41 add r14 41h(8)
0FF2: 2F 0e95 sub r14 95h(8)
0FF5: 2F 04bf sub r4 BFh(8)
0FF8: 38 04 sub [data](8)++ r4(8)
0FFA: 44 exit
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment