Skip to content

Instantly share code, notes, and snippets.

@oopsmishap
Last active January 21, 2024 10:24
Show Gist options
  • Save oopsmishap/5832e5ecc4272ddd101a37f90a5992f2 to your computer and use it in GitHub Desktop.
Save oopsmishap/5832e5ecc4272ddd101a37f90a5992f2 to your computer and use it in GitHub Desktop.
Transpile ZeusVM disassembly into valid C to compile
class ZeusVMToC:
def __init__(self, diasm_file, output_file=None):
self.diasm_file = diasm_file
self.output_file = output_file
self.line_num = 0
self.data_ptr_mov = 0
def tokenize(self):
with open(self.diasm_file, 'r') as f:
lines = f.readlines()
tokens = []
for line in lines:
line = line.strip()
tokens.append(line.split(' '))
return tokens
def rc4_func(self):
return """
void rc4_decrypt(uint8_t* data_ptr, uint16_t data_len, uint8_t key_len, uint8_t* key)
{
uint8_t s[256];
uint8_t k[256];
uint8_t tmp;
int j = 0;
int i = 0;
int k_idx = 0;
int s_idx = 0;
// Init
for (i = 0; i < 256; i++)
{
s[i] = i;
k[i] = key[k_idx];
k_idx++;
if (k_idx >= key_len)
{
k_idx = 0;
}
}
// KSA
for (i = 0; i < 256; i++)
{
j = (j + s[i] + k[i]) & 0xFF;
tmp = s[i];
s[i] = s[j];
s[j] = tmp;
}
// PRGA
i = 0;
j = 0;
for (uint16_t idx = 0; idx < data_len; idx++)
{
i = (i + 1) & 0xFF;
j = (j + s[i]) & 0xFF;
tmp = s[i];
s[i] = s[j];
s[j] = tmp;
s_idx = (s[i] + s[j]) & 0xFF;
data_ptr[idx] ^= s[s_idx];
}
}
"""
def vm_data(self):
return """
uint8_t vm_data[] = {
0xf0, 0x3c, 0xab, 0x19, 0x93, 0x66, 0xd1, 0x73, 0x5d, 0x58, 0x22, 0xe2, 0x1f, 0x42, 0x77, 0x30,
0x55, 0x0f, 0x4a, 0xcd, 0x62, 0xa7, 0x48, 0x30, 0xc2, 0xff, 0x6e, 0xaa, 0x1f, 0x76, 0xf2, 0x93,
0x39, 0x85, 0xf3, 0x36, 0x12, 0xaf, 0xd3, 0xc2, 0x61, 0x67, 0xc0, 0x47, 0xac, 0x17, 0x6a, 0x98,
0xf7, 0xe3, 0x97, 0x73, 0x99, 0x14, 0xbe, 0x07, 0x70, 0xd2, 0xd5, 0xd5, 0x9e, 0x47, 0xee, 0x99,
0xd6, 0xf3, 0xfc, 0xf7, 0xc4, 0x1e, 0xe7, 0xbf, 0x45, 0x95, 0x30, 0x47, 0x7e, 0xbf, 0x57, 0xb4,
0x40, 0xec, 0xc3, 0x9c, 0xcb, 0xd4, 0x00, 0xf9, 0x60, 0x56, 0x0c, 0x3d, 0xde, 0x3e, 0x8b, 0xf8,
0x46, 0x1c, 0x09, 0xa7, 0x4b, 0x46, 0x70, 0x99, 0x11, 0xed, 0x3e, 0x5e, 0xf0, 0x1a, 0xe5, 0xbd,
0xb8, 0xe1, 0x29, 0xdd, 0xb5, 0x2d, 0x26, 0x5d, 0x9c, 0x62, 0x11, 0x0f, 0xad, 0xbc, 0xc2, 0x36,
0xa7, 0xe9, 0xbf, 0x79, 0xfe, 0x28, 0x91, 0x49, 0x4c, 0x2e, 0x75, 0xa8, 0xf1, 0x13, 0xf5, 0x08,
0xce, 0x88, 0x90, 0x90, 0xfe, 0x13, 0x33, 0x94, 0xad, 0x36, 0xcd, 0xae, 0xc7, 0x87, 0x97, 0xe0,
0xca, 0x68, 0x22, 0xc6, 0xf0, 0xc3, 0x82, 0xa2, 0xee, 0x00, 0xc2, 0x6b, 0xcb, 0x9b, 0xcb, 0x7b,
0x03, 0xc0, 0x4d, 0x2d, 0x6d, 0x10, 0xeb, 0x13, 0xca, 0x52, 0xbf, 0x60, 0x3c, 0xe4, 0x77, 0xc7,
0x77, 0xc8, 0x0e, 0x40, 0x6d, 0x32, 0x12, 0x83, 0x78, 0x6f, 0x0e, 0x1c, 0x0a, 0x0f, 0x38, 0xe6,
0xde, 0xf1, 0x6b, 0x59, 0x19, 0x15, 0x29, 0x79, 0xdc, 0x22, 0xf7, 0x64, 0x09, 0x33, 0x22, 0x87,
0xa4, 0x77, 0xc7, 0x9d, 0x88, 0x9f, 0x6d, 0x83, 0x2b, 0xaa, 0xbd, 0xde, 0x47, 0xbd, 0xc0, 0x39,
0xd9, 0x93, 0x67, 0xbe, 0x1c, 0xb0, 0x38, 0x53, 0xbe, 0x5a, 0xbd, 0x15, 0xf9, 0xfa, 0xe4, 0xd5,
0x24, 0x72, 0x55, 0xc8, 0xe7, 0xa1, 0xcd, 0x32, 0xb8, 0x3a, 0x3d, 0x2e, 0x88, 0x7b, 0x7a, 0xe5,
0xea, 0x63, 0x81, 0x56, 0x5c, 0x7b, 0xa5, 0x1e, 0x9b, 0xe0, 0xfc, 0xfe, 0x66, 0x4c, 0xa9, 0x64,
0xf7, 0xe6, 0xee, 0x92, 0xcb, 0xdb, 0x17, 0x55, 0x58, 0xe7, 0x3b, 0x4e, 0xe9, 0xdf, 0x93, 0x42,
0x90, 0x45, 0x66, 0x22, 0x31, 0xba, 0x47, 0x44, 0xa6, 0x95, 0x5a, 0x82, 0xa8, 0xb3, 0x0a, 0x8e,
0xa9, 0x0c, 0x88, 0xc7, 0x66, 0x40, 0x19, 0x4c, 0x93, 0xdc, 0x4f, 0x65, 0x4e, 0x47, 0x5c, 0x8c,
0xb3, 0xaa, 0x5f, 0x34, 0x27, 0x97, 0xee, 0x2e, 0xae, 0x34, 0xb2, 0x5a, 0xa5, 0x94, 0x62, 0x92,
0xbc, 0x01, 0x56, 0x25, 0xe7, 0x72, 0x44, 0x3a, 0x5a, 0xdc, 0x08, 0x65, 0xb9, 0xa9, 0x30, 0x87,
0x2f, 0x75, 0x5c, 0xe2, 0x4f, 0x81, 0x73, 0xa9, 0xe0, 0xb0, 0xcb, 0x1b, 0x2f, 0x2a, 0xbc, 0x71,
0xed, 0x39, 0x32, 0x29, 0xa5, 0xcf, 0x66, 0x87, 0x16, 0xf2, 0xdd, 0x66, 0xb2, 0x9e, 0x07, 0xcf,
0x37, 0x99, 0xac, 0xdb, 0x74, 0xd2, 0xf1, 0x8c, 0x10, 0xc5, 0xca, 0xe4, 0xde, 0x84, 0xca, 0xaa,
0x8a, 0x6f, 0xc7, 0x83, 0xd9, 0x7d, 0x3d, 0x3b, 0xbc, 0x89, 0x82, 0xfb, 0xa5, 0xf8, 0xd4, 0x0d,
0xc0, 0xe2, 0x44, 0xc0, 0x5d, 0x10, 0xa6, 0x59, 0x49, 0x23, 0x9b, 0x21, 0xe3, 0xd5, 0x25, 0xe6,
0x1b, 0x3e, 0x85, 0x81, 0xa4, 0xc8, 0xae, 0x3c, 0xe6, 0xcb, 0x08, 0x3e, 0x02, 0x5f, 0x5b, 0x4a,
0x70, 0x11, 0xe5, 0xe0, 0xea, 0x52, 0x4c, 0xaf, 0xb9, 0x8a, 0xe3, 0x65, 0x72, 0x43, 0x1d, 0xd5,
0x56, 0xb7, 0x73, 0x86, 0xbd, 0xc3, 0xfd, 0x44, 0x9a, 0xc3, 0xcb, 0xec, 0x20, 0x3c, 0x86, 0x5c,
0xc5, 0x3e, 0xb5, 0x28, 0x46, 0x2a, 0xb5, 0x18, 0xb0, 0x6b, 0x7b, 0xc4, 0x0f, 0xaa, 0xb2, 0xae,
0x81, 0x7d, 0x02, 0xde, 0xd2, 0xa3, 0x22, 0x56, 0xb1, 0x3e, 0x18, 0x41, 0xb4, 0xd6, 0x2a, 0xbd,
0x74, 0xa8, 0x5e, 0x1e, 0xd8, 0x49, 0x5d, 0x41, 0xb4, 0x7a, 0x27, 0x3a, 0xaf, 0xae, 0xf4, 0x00,
0xe1, 0x99, 0x7d, 0x13, 0x57, 0x54, 0x21, 0x74, 0xf4, 0x84, 0xd1, 0x72, 0x03, 0x64, 0xd2, 0xbb,
0x24, 0xd7, 0x4f, 0x74, 0x0f, 0x16, 0x5b, 0xdf, 0xaf, 0xb6, 0x19, 0xdf, 0x07, 0x33, 0x54, 0x5c,
0xaf, 0x95, 0xf4, 0x71, 0x61, 0x09, 0x8e, 0x62, 0x77, 0xce, 0xde, 0x8e, 0x45, 0x45, 0x5f, 0xc2,
0x2e, 0x52, 0x87, 0x16, 0xe6, 0x5c, 0x3f, 0x28, 0xac, 0x13, 0xd9, 0x29, 0x61, 0x2c, 0x93, 0x38,
0xa0, 0xb3, 0x5e, 0x80, 0xc9, 0x13, 0x1f, 0x58, 0xef, 0xb5, 0x3f, 0x74, 0xde, 0x2a, 0x5b, 0x12,
0xb7, 0xe0, 0x28, 0x53, 0xb0, 0x39, 0x64, 0xac, 0x77, 0xb6, 0x89, 0x54, 0x5b, 0x79, 0xa0, 0x7e,
0x3b, 0x91, 0x43, 0x8e, 0x6e, 0x86, 0xe8, 0x3a, 0xc4, 0x6f, 0x9f, 0xfb, 0xf1, 0x44, 0x26, 0x51,
0x11, 0x1e, 0x0c, 0x3a, 0xcf, 0x1e, 0x6f, 0x0b, 0x9b, 0x7a, 0x0b, 0x3f, 0x28, 0x3a, 0xff, 0x5b,
0x20, 0x02, 0xab, 0x66, 0xca, 0xc8, 0x89, 0xa5, 0xf6, 0x00, 0x90, 0xe0, 0x0f, 0xd1, 0xa0, 0xc0,
0x8f, 0xc9, 0xb9, 0xdf, 0x1c, 0xf1, 0x4d, 0x23, 0x5d, 0x45, 0xa1, 0x30, 0xe1, 0x76, 0xc0, 0xfe,
0xc3, 0xc4, 0x06, 0xae, 0xe1, 0x0a, 0x93, 0xe0, 0xf9, 0x4b, 0x88, 0xef, 0x7b, 0x71, 0x84, 0x87,
0x02, 0x3d, 0x77, 0xd6, 0xf8, 0xbc, 0x07, 0xc2, 0x2f, 0x4e, 0xda, 0x0c, 0x55, 0xea, 0xa2, 0xce,
0x01, 0x89, 0x38, 0xc8, 0x99, 0x97, 0xbf, 0x48, 0x0b, 0x86, 0x0d, 0xf7, 0x47, 0x85, 0x9c, 0x99,
0x2f, 0x0f, 0x6e, 0x55, 0xe7, 0x42, 0xac, 0x55, 0x60, 0x24, 0x2c, 0xf9, 0x7a, 0xff, 0xdc, 0xf8,
0xc9, 0xf9, 0x60, 0x24, 0x2e, 0x01, 0x9c, 0x86, 0xd2, 0xfe, 0x27, 0x28, 0x20, 0xe2, 0xb5, 0xdd,
0x52, 0x55, 0x95, 0x3f, 0xda, 0xc7, 0x3a, 0x70, 0xcf, 0x85, 0x97, 0x22, 0xd0, 0xf6, 0x9d, 0x66,
0x5f, 0xcf, 0x26, 0xe9, 0x6f, 0xa9, 0x6b, 0x04, 0xc9, 0x80, 0x03, 0x2a, 0x9d, 0x03, 0xe9, 0xbe,
0x6d, 0x0b, 0x7a, 0x92, 0xc7, 0x39, 0x8b, 0x1a, 0x88, 0x7c, 0x45, 0xfe, 0x7f, 0x6c, 0x4b, 0xe5,
0x46, 0x1a, 0xd9, 0x98, 0x57, 0x64, 0x61, 0xa4, 0xe9, 0x0f, 0x7c, 0x21, 0xc4, 0xa4, 0xcd, 0x0e,
0xc5, 0x83, 0xbf, 0x91, 0x8e, 0xa3, 0x83, 0x86, 0xff, 0x01, 0x58, 0x01, 0xfb, 0x3e, 0xa3, 0xdc,
0x4c, 0xfb, 0xc2, 0xee, 0x95, 0x06, 0xd2, 0x3a, 0xe5, 0x55, 0x95, 0x28, 0x22, 0x73, 0x3c, 0x67,
};
"""
def generate_c(self):
code = []
depth = 1
self.line_num = 0
# includes
code.append('#include <stdint.h>')
code.append('#include <string.h>')
code.append('#include <stdio.h>')
code.append('#include <stdlib.h>')
code.append('')
# rotate_left macro
code.append('#define rotate_left(x, n) ((x << n) | (x >> (sizeof(x)*8 - n)))')
code.append('')
# rotate_right macro
code.append('#define rotate_right(x, n) ((x >> n) | (x << (sizeof(x)*8 - n)))')
code.append('')
# shuffle macro
code.append('#define shuffle(value, idx) \\')
code.append(' ((((value) >> ((idx) & 0x03) * 8) & 0xFF) | \\')
code.append(' (((value) >> (((idx) >> 2) & 0x03) * 8) & 0xFF) << 8 | \\')
code.append(' (((value) >> (((idx) >> 4) & 0x03) * 8) & 0xFF) << 16 | \\')
code.append(' (((value) >> (((idx) >> 6) & 0x03) * 8) & 0xFF) << 24)')
code.append('')
# rc4_decrypt function
code.append(self.rc4_func())
code.append('void decrypt()')
code.append('{')
# init registers
for i in range(16):
code.append(f' uint32_t r{i} = 0;')
code.append(' uint32_t sp = 0;')
code.append('')
# vm data
code.append(self.vm_data())
code.append('')
for tokens in self.tokenize():
self.line_num += 1
mnem = tokens.pop(0)
if mnem == 'jmp':
depth -= 1
indent = ' ' * depth
code_line = ''
if mnem == 'inc':
imm = self._get_operand(tokens[1], signed=True)
code_line += f'sp += {imm};'
if mnem == 'set':
assert tokens[0] == 'loop', f'Invalid register: {tokens[0]}, line {self.line_num}'
imm = self._get_operand(tokens[1])
imm_type = self._get_type(tokens[1])
code_line += f'for ({imm_type} i = 0; i <= {imm}; i++)\n{indent}{{'
if mnem == 'jmp':
code_line += '}'
if mnem == 'rc4':
key_len = self._get_operand(tokens[0])
data_len = self._get_operand(tokens[1])
key, key_name = self._get_operand(tokens[2])
code_line += f'{key}\n{indent}rc4_decrypt(&vm_data[sp], {data_len}, {key_len}, {key_name});'
self.data_ptr_mov = data_len
if mnem == 'rol':
operand = self._get_operand(tokens[0])
amount = self._get_operand(tokens[1])
mask = int(tokens[1][tokens[1].find('(')+1:tokens[1].find(')')]) - 1
code_line += f'{operand} = rotate_left({operand}, {amount} & {mask});'
if mnem == 'ror':
operand = self._get_operand(tokens[0])
amount = self._get_operand(tokens[1])
mask = int(tokens[1][tokens[1].find('(')+1:tokens[1].find(')')]) - 1
code_line += f'{operand} = rotate_right({operand}, {amount} & {mask});'
if mnem == 'mov':
dst = self._get_operand(tokens[0])
src = self._get_operand(tokens[1])
code_line += f'{dst} = {src};'
if mnem == 'xor':
dst = self._get_operand(tokens[0])
src = self._get_operand(tokens[1])
code_line += f'{dst} ^= {src};'
if mnem == 'add':
dst = self._get_operand(tokens[0])
src = self._get_operand(tokens[1])
code_line += f'{dst} += {src};'
if mnem == 'sub':
dst = self._get_operand(tokens[0])
src = self._get_operand(tokens[1])
code_line += f'{dst} -= {src};'
if mnem == 'not':
dst = self._get_operand(tokens[0])
code_line += f'{dst} = ~{dst};'
if mnem == 'shuffle':
dst = self._get_operand(tokens[0])
shuffle_idx = self._get_operand(tokens[1])
code_line += f'{dst} = shuffle({dst}, {shuffle_idx});'
if self.data_ptr_mov:
code_line += '\n' + indent + f'sp += {self.data_ptr_mov};'
self.data_ptr_mov = 0
if mnem == 'set':
depth += 1
# if code_line is not empty or just whitespace:
if code_line.strip():
code.append(indent + code_line)
code.append('}')
return code
def _get_type(self, token: str, signed=False):
if signed:
types = {
8: 'int8_t',
16: 'int16_t',
32: 'int32_t',
}
else:
types = {
8: 'uint8_t',
16: 'uint16_t',
32: 'uint32_t',
}
imm_size = int(token[token.find('(')+1:token.find(')')])
return types[imm_size]
def _get_operand(self, token: str, signed=False):
if token[0] == 'r':
return self._get_reg(token)
elif token[0] == 'k' and token[3] == '(':
return self._get_key(token)
elif token[0] == 'd' and token[4] != '_':
return 'sp'
elif token[0] == '[' and token[1] == 'd':
return self._get_data(token)
else:
return self._get_imm(token, signed)
def _get_data(self, token: str):
data_type = self._get_type(token)
if token[-1] == '+':
self.data_ptr_mov = int(int(token[token.find('(')+1:token.find(')')]) / 8)
return f'*({data_type}*)&vm_data[sp]'
def _get_imm(self, token: str, signed=False):
if 'h)' in token:
imm = int(token[token.find('(')+1:token.find('h)')], 16)
return imm
elif 'h(' in token:
imm_type = self._get_type(token, signed)
imm = int(token[:token.find('h(')], 16)
return f'({imm_type}){imm}'
else:
raise Exception(f'Invalid immediate: {token}, line {self.line_num}')
def _get_key(self, token: str):
assert token[0] == 'k', f'Invalid key: {token}, line {self.line_num}'
key_str = token[4:-1]
key_bytes = bytes.fromhex(key_str)
# convert to C array
key_name = f'key_{self.line_num}'
key = f'uint8_t key_{self.line_num}[] = {{'
for b in key_bytes:
key += f'{b}, '
key = key[:-2] + '};'
return key, key_name
def _get_reg(self, token: str):
assert token[0] == 'r', f'Invalid register: {token}, line {self.line_num}'
if token[-1] == ')':
reg_type = self._get_type(token)
reg = token[:token.find('(')]
return f'({reg_type}){reg}'
else:
return token
def main():
z = ZeusVMToC('diasm.txt')
c_code = z.generate_c()
with open('zeusvm.c', 'w') as f:
f.write('\n'.join(c_code))
if __name__ == '__main__':
main()
#include <stdint.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define rotate_left(x, n) ((x << n) | (x >> (sizeof(x)*8 - n)))
#define rotate_right(x, n) ((x >> n) | (x << (sizeof(x)*8 - n)))
#define shuffle(value, idx) \
((((value) >> ((idx) & 0x03) * 8) & 0xFF) | \
(((value) >> (((idx) >> 2) & 0x03) * 8) & 0xFF) << 8 | \
(((value) >> (((idx) >> 4) & 0x03) * 8) & 0xFF) << 16 | \
(((value) >> (((idx) >> 6) & 0x03) * 8) & 0xFF) << 24)
void rc4_decrypt(uint8_t* data_ptr, uint16_t data_len, uint8_t key_len, uint8_t* key)
{
uint8_t s[256];
uint8_t k[256];
uint8_t tmp;
int j = 0;
int i = 0;
int k_idx = 0;
int s_idx = 0;
// Init
for (i = 0; i < 256; i++)
{
s[i] = i;
k[i] = key[k_idx];
k_idx++;
if (k_idx >= key_len)
{
k_idx = 0;
}
}
// KSA
for (i = 0; i < 256; i++)
{
j = (j + s[i] + k[i]) & 0xFF;
tmp = s[i];
s[i] = s[j];
s[j] = tmp;
}
// PRGA
i = 0;
j = 0;
for (uint16_t idx = 0; idx < data_len; idx++)
{
i = (i + 1) & 0xFF;
j = (j + s[i]) & 0xFF;
tmp = s[i];
s[i] = s[j];
s[j] = tmp;
s_idx = (s[i] + s[j]) & 0xFF;
data_ptr[idx] ^= s[s_idx];
}
}
void decrypt()
{
uint32_t r0 = 0;
uint32_t r1 = 0;
uint32_t r2 = 0;
uint32_t r3 = 0;
uint32_t r4 = 0;
uint32_t r5 = 0;
uint32_t r6 = 0;
uint32_t r7 = 0;
uint32_t r8 = 0;
uint32_t r9 = 0;
uint32_t r10 = 0;
uint32_t r11 = 0;
uint32_t r12 = 0;
uint32_t r13 = 0;
uint32_t r14 = 0;
uint32_t r15 = 0;
uint32_t sp = 0;
uint8_t vm_data[] = {
0xf0, 0x3c, 0xab, 0x19, 0x93, 0x66, 0xd1, 0x73, 0x5d, 0x58, 0x22, 0xe2, 0x1f, 0x42, 0x77, 0x30,
0x55, 0x0f, 0x4a, 0xcd, 0x62, 0xa7, 0x48, 0x30, 0xc2, 0xff, 0x6e, 0xaa, 0x1f, 0x76, 0xf2, 0x93,
0x39, 0x85, 0xf3, 0x36, 0x12, 0xaf, 0xd3, 0xc2, 0x61, 0x67, 0xc0, 0x47, 0xac, 0x17, 0x6a, 0x98,
0xf7, 0xe3, 0x97, 0x73, 0x99, 0x14, 0xbe, 0x07, 0x70, 0xd2, 0xd5, 0xd5, 0x9e, 0x47, 0xee, 0x99,
0xd6, 0xf3, 0xfc, 0xf7, 0xc4, 0x1e, 0xe7, 0xbf, 0x45, 0x95, 0x30, 0x47, 0x7e, 0xbf, 0x57, 0xb4,
0x40, 0xec, 0xc3, 0x9c, 0xcb, 0xd4, 0x00, 0xf9, 0x60, 0x56, 0x0c, 0x3d, 0xde, 0x3e, 0x8b, 0xf8,
0x46, 0x1c, 0x09, 0xa7, 0x4b, 0x46, 0x70, 0x99, 0x11, 0xed, 0x3e, 0x5e, 0xf0, 0x1a, 0xe5, 0xbd,
0xb8, 0xe1, 0x29, 0xdd, 0xb5, 0x2d, 0x26, 0x5d, 0x9c, 0x62, 0x11, 0x0f, 0xad, 0xbc, 0xc2, 0x36,
0xa7, 0xe9, 0xbf, 0x79, 0xfe, 0x28, 0x91, 0x49, 0x4c, 0x2e, 0x75, 0xa8, 0xf1, 0x13, 0xf5, 0x08,
0xce, 0x88, 0x90, 0x90, 0xfe, 0x13, 0x33, 0x94, 0xad, 0x36, 0xcd, 0xae, 0xc7, 0x87, 0x97, 0xe0,
0xca, 0x68, 0x22, 0xc6, 0xf0, 0xc3, 0x82, 0xa2, 0xee, 0x00, 0xc2, 0x6b, 0xcb, 0x9b, 0xcb, 0x7b,
0x03, 0xc0, 0x4d, 0x2d, 0x6d, 0x10, 0xeb, 0x13, 0xca, 0x52, 0xbf, 0x60, 0x3c, 0xe4, 0x77, 0xc7,
0x77, 0xc8, 0x0e, 0x40, 0x6d, 0x32, 0x12, 0x83, 0x78, 0x6f, 0x0e, 0x1c, 0x0a, 0x0f, 0x38, 0xe6,
0xde, 0xf1, 0x6b, 0x59, 0x19, 0x15, 0x29, 0x79, 0xdc, 0x22, 0xf7, 0x64, 0x09, 0x33, 0x22, 0x87,
0xa4, 0x77, 0xc7, 0x9d, 0x88, 0x9f, 0x6d, 0x83, 0x2b, 0xaa, 0xbd, 0xde, 0x47, 0xbd, 0xc0, 0x39,
0xd9, 0x93, 0x67, 0xbe, 0x1c, 0xb0, 0x38, 0x53, 0xbe, 0x5a, 0xbd, 0x15, 0xf9, 0xfa, 0xe4, 0xd5,
0x24, 0x72, 0x55, 0xc8, 0xe7, 0xa1, 0xcd, 0x32, 0xb8, 0x3a, 0x3d, 0x2e, 0x88, 0x7b, 0x7a, 0xe5,
0xea, 0x63, 0x81, 0x56, 0x5c, 0x7b, 0xa5, 0x1e, 0x9b, 0xe0, 0xfc, 0xfe, 0x66, 0x4c, 0xa9, 0x64,
0xf7, 0xe6, 0xee, 0x92, 0xcb, 0xdb, 0x17, 0x55, 0x58, 0xe7, 0x3b, 0x4e, 0xe9, 0xdf, 0x93, 0x42,
0x90, 0x45, 0x66, 0x22, 0x31, 0xba, 0x47, 0x44, 0xa6, 0x95, 0x5a, 0x82, 0xa8, 0xb3, 0x0a, 0x8e,
0xa9, 0x0c, 0x88, 0xc7, 0x66, 0x40, 0x19, 0x4c, 0x93, 0xdc, 0x4f, 0x65, 0x4e, 0x47, 0x5c, 0x8c,
0xb3, 0xaa, 0x5f, 0x34, 0x27, 0x97, 0xee, 0x2e, 0xae, 0x34, 0xb2, 0x5a, 0xa5, 0x94, 0x62, 0x92,
0xbc, 0x01, 0x56, 0x25, 0xe7, 0x72, 0x44, 0x3a, 0x5a, 0xdc, 0x08, 0x65, 0xb9, 0xa9, 0x30, 0x87,
0x2f, 0x75, 0x5c, 0xe2, 0x4f, 0x81, 0x73, 0xa9, 0xe0, 0xb0, 0xcb, 0x1b, 0x2f, 0x2a, 0xbc, 0x71,
0xed, 0x39, 0x32, 0x29, 0xa5, 0xcf, 0x66, 0x87, 0x16, 0xf2, 0xdd, 0x66, 0xb2, 0x9e, 0x07, 0xcf,
0x37, 0x99, 0xac, 0xdb, 0x74, 0xd2, 0xf1, 0x8c, 0x10, 0xc5, 0xca, 0xe4, 0xde, 0x84, 0xca, 0xaa,
0x8a, 0x6f, 0xc7, 0x83, 0xd9, 0x7d, 0x3d, 0x3b, 0xbc, 0x89, 0x82, 0xfb, 0xa5, 0xf8, 0xd4, 0x0d,
0xc0, 0xe2, 0x44, 0xc0, 0x5d, 0x10, 0xa6, 0x59, 0x49, 0x23, 0x9b, 0x21, 0xe3, 0xd5, 0x25, 0xe6,
0x1b, 0x3e, 0x85, 0x81, 0xa4, 0xc8, 0xae, 0x3c, 0xe6, 0xcb, 0x08, 0x3e, 0x02, 0x5f, 0x5b, 0x4a,
0x70, 0x11, 0xe5, 0xe0, 0xea, 0x52, 0x4c, 0xaf, 0xb9, 0x8a, 0xe3, 0x65, 0x72, 0x43, 0x1d, 0xd5,
0x56, 0xb7, 0x73, 0x86, 0xbd, 0xc3, 0xfd, 0x44, 0x9a, 0xc3, 0xcb, 0xec, 0x20, 0x3c, 0x86, 0x5c,
0xc5, 0x3e, 0xb5, 0x28, 0x46, 0x2a, 0xb5, 0x18, 0xb0, 0x6b, 0x7b, 0xc4, 0x0f, 0xaa, 0xb2, 0xae,
0x81, 0x7d, 0x02, 0xde, 0xd2, 0xa3, 0x22, 0x56, 0xb1, 0x3e, 0x18, 0x41, 0xb4, 0xd6, 0x2a, 0xbd,
0x74, 0xa8, 0x5e, 0x1e, 0xd8, 0x49, 0x5d, 0x41, 0xb4, 0x7a, 0x27, 0x3a, 0xaf, 0xae, 0xf4, 0x00,
0xe1, 0x99, 0x7d, 0x13, 0x57, 0x54, 0x21, 0x74, 0xf4, 0x84, 0xd1, 0x72, 0x03, 0x64, 0xd2, 0xbb,
0x24, 0xd7, 0x4f, 0x74, 0x0f, 0x16, 0x5b, 0xdf, 0xaf, 0xb6, 0x19, 0xdf, 0x07, 0x33, 0x54, 0x5c,
0xaf, 0x95, 0xf4, 0x71, 0x61, 0x09, 0x8e, 0x62, 0x77, 0xce, 0xde, 0x8e, 0x45, 0x45, 0x5f, 0xc2,
0x2e, 0x52, 0x87, 0x16, 0xe6, 0x5c, 0x3f, 0x28, 0xac, 0x13, 0xd9, 0x29, 0x61, 0x2c, 0x93, 0x38,
0xa0, 0xb3, 0x5e, 0x80, 0xc9, 0x13, 0x1f, 0x58, 0xef, 0xb5, 0x3f, 0x74, 0xde, 0x2a, 0x5b, 0x12,
0xb7, 0xe0, 0x28, 0x53, 0xb0, 0x39, 0x64, 0xac, 0x77, 0xb6, 0x89, 0x54, 0x5b, 0x79, 0xa0, 0x7e,
0x3b, 0x91, 0x43, 0x8e, 0x6e, 0x86, 0xe8, 0x3a, 0xc4, 0x6f, 0x9f, 0xfb, 0xf1, 0x44, 0x26, 0x51,
0x11, 0x1e, 0x0c, 0x3a, 0xcf, 0x1e, 0x6f, 0x0b, 0x9b, 0x7a, 0x0b, 0x3f, 0x28, 0x3a, 0xff, 0x5b,
0x20, 0x02, 0xab, 0x66, 0xca, 0xc8, 0x89, 0xa5, 0xf6, 0x00, 0x90, 0xe0, 0x0f, 0xd1, 0xa0, 0xc0,
0x8f, 0xc9, 0xb9, 0xdf, 0x1c, 0xf1, 0x4d, 0x23, 0x5d, 0x45, 0xa1, 0x30, 0xe1, 0x76, 0xc0, 0xfe,
0xc3, 0xc4, 0x06, 0xae, 0xe1, 0x0a, 0x93, 0xe0, 0xf9, 0x4b, 0x88, 0xef, 0x7b, 0x71, 0x84, 0x87,
0x02, 0x3d, 0x77, 0xd6, 0xf8, 0xbc, 0x07, 0xc2, 0x2f, 0x4e, 0xda, 0x0c, 0x55, 0xea, 0xa2, 0xce,
0x01, 0x89, 0x38, 0xc8, 0x99, 0x97, 0xbf, 0x48, 0x0b, 0x86, 0x0d, 0xf7, 0x47, 0x85, 0x9c, 0x99,
0x2f, 0x0f, 0x6e, 0x55, 0xe7, 0x42, 0xac, 0x55, 0x60, 0x24, 0x2c, 0xf9, 0x7a, 0xff, 0xdc, 0xf8,
0xc9, 0xf9, 0x60, 0x24, 0x2e, 0x01, 0x9c, 0x86, 0xd2, 0xfe, 0x27, 0x28, 0x20, 0xe2, 0xb5, 0xdd,
0x52, 0x55, 0x95, 0x3f, 0xda, 0xc7, 0x3a, 0x70, 0xcf, 0x85, 0x97, 0x22, 0xd0, 0xf6, 0x9d, 0x66,
0x5f, 0xcf, 0x26, 0xe9, 0x6f, 0xa9, 0x6b, 0x04, 0xc9, 0x80, 0x03, 0x2a, 0x9d, 0x03, 0xe9, 0xbe,
0x6d, 0x0b, 0x7a, 0x92, 0xc7, 0x39, 0x8b, 0x1a, 0x88, 0x7c, 0x45, 0xfe, 0x7f, 0x6c, 0x4b, 0xe5,
0x46, 0x1a, 0xd9, 0x98, 0x57, 0x64, 0x61, 0xa4, 0xe9, 0x0f, 0x7c, 0x21, 0xc4, 0xa4, 0xcd, 0x0e,
0xc5, 0x83, 0xbf, 0x91, 0x8e, 0xa3, 0x83, 0x86, 0xff, 0x01, 0x58, 0x01, 0xfb, 0x3e, 0xa3, 0xdc,
0x4c, 0xfb, 0xc2, 0xee, 0x95, 0x06, 0xd2, 0x3a, 0xe5, 0x55, 0x95, 0x28, 0x22, 0x73, 0x3c, 0x67,
};
sp += (int16_t)521;
sp += (int16_t)-106;
for (uint16_t i = 0; i <= (uint16_t)2; i++)
{
uint8_t key_4[] = {136, 31, 140, 193, 236, 255, 249, 3, 188, 2, 65, 75, 36, 144, 21, 170, 100, 138, 213, 130, 200, 29, 54, 21, 230, 166, 238, 92, 107, 249, 171, 111, 236, 93, 9, 227};
rc4_decrypt(&vm_data[sp], 154, 36, key_4);
sp += 154;
}
uint8_t key_6[] = {120, 234, 93, 118, 188, 48, 40, 25, 186, 65, 71, 69, 99, 185, 135, 197, 86, 240, 106, 173, 152, 9, 201, 184, 108, 68};
rc4_decrypt(&vm_data[sp], 1, 26, key_6);
sp += 1;
*(uint16_t*)&vm_data[sp] = rotate_left(*(uint16_t*)&vm_data[sp], (uint16_t)79 & 15);
sp += 2;
sp += (int16_t)-311;
for (uint16_t i = 0; i <= (uint16_t)1; i++)
{
uint8_t key_10[] = {225, 145, 212, 125, 56, 129, 191, 36, 167, 75, 240, 91, 107, 216, 46, 149, 190, 196, 137, 48, 231, 55, 20, 231, 43, 140, 248, 27, 230, 35, 255, 174, 205, 242, 214, 148, 185, 221, 29, 122, 215, 115, 253, 28, 222, 137, 29, 209, 191, 49, 243, 214, 118, 171, 5, 40, 160, 212, 90, 5, 221, 76, 215, 93, 110, 206, 37, 81, 84, 83, 130, 24, 167, 183, 97, 190, 235, 176, 26, 201, 229};
rc4_decrypt(&vm_data[sp], 143, 81, key_10);
sp += 143;
}
r5 = *(uint16_t*)&vm_data[sp];
r6 = (uint8_t)85;
r6 -= (uint16_t)r5;
r5 -= (uint8_t)142;
r3 = (uint16_t)21079;
r5 += (uint32_t)1738767586;
r5 -= (uint32_t)618837863;
r5 ^= (uint8_t)10;
*(uint16_t*)&vm_data[sp] = (uint16_t)r5;
sp += 2;
*(uint32_t*)&vm_data[sp] = rotate_right(*(uint32_t*)&vm_data[sp], (uint32_t)56 & 31);
sp += 4;
sp += (int16_t)-133;
sp += (int16_t)-336;
r4 = *(uint8_t*)&vm_data[sp];
r14 = (uint32_t)795924646;
r4 -= (uint8_t)222;
r14 -= (uint32_t)2042638730;
r4 -= (uint16_t)28881;
r4 ^= (uint8_t)126;
r4 -= (uint8_t)125;
r4 ^= (uint32_t)1044469426;
r4 += (uint16_t)38649;
r14 ^= (uint8_t)r14;
r4 -= (uint16_t)30093;
*(uint8_t*)&vm_data[sp] = (uint8_t)r4;
sp += 1;
r14 = (uint8_t)38;
r11 = (uint32_t)155919314;
r11 ^= (uint8_t)241;
r11 += (uint16_t)7552;
r14 -= (uint16_t)11414;
r11 -= (uint16_t)42051;
r14 += (uint8_t)181;
r14 += (uint8_t)126;
r14 += (uint16_t)7483;
r14 ^= (uint32_t)r11;
r14 ^= (uint16_t)64145;
*(uint16_t*)&vm_data[sp] += (uint32_t)r14;
sp += 2;
r13 = (uint16_t)3104;
r15 = (uint32_t)3045930777;
r13 ^= (uint32_t)1925075936;
r15 -= (uint8_t)139;
r15 ^= (uint8_t)40;
r15 += (uint16_t)r15;
r13 ^= (uint32_t)2110814588;
r15 += (uint32_t)r15;
r13 ^= (uint8_t)r13;
r15 += (uint32_t)r15;
*(uint32_t*)&vm_data[sp] -= (uint32_t)r15;
sp += 4;
r7 = (uint32_t)1701083157;
r3 = (uint8_t)179;
r7 += (uint32_t)2113747401;
r7 ^= (uint16_t)4917;
r7 ^= (uint32_t)3270247115;
r11 = (uint16_t)r3;
r11 -= (uint32_t)3197900874;
r9 = (uint8_t)105;
r7 ^= (uint32_t)121751252;
r9 += (uint8_t)250;
r11 += (uint8_t)r7;
r11 += (uint32_t)r9;
r11 += (uint16_t)5586;
r7 ^= (uint16_t)r3;
r3 -= (uint32_t)588577716;
*(uint16_t*)&vm_data[sp] -= (uint16_t)r7;
sp += 2;
r9 = (uint8_t)210;
r1 = (uint16_t)50535;
r2 = (uint32_t)3180162243;
r9 += (uint8_t)r1;
r9 ^= (uint8_t)159;
r9 -= (uint8_t)r1;
r9 -= (uint8_t)224;
r9 ^= (uint16_t)r9;
r2 ^= (uint32_t)3040737131;
*(uint8_t*)&vm_data[sp] += (uint8_t)r9;
sp += 1;
r5 = (uint32_t)72278359;
r5 -= (uint32_t)1971912384;
r5 += (uint16_t)6870;
r5 -= (uint8_t)114;
r5 += (uint8_t)r5;
r5 ^= (uint32_t)3687257442;
r11 = (uint16_t)52344;
*(uint8_t*)&vm_data[sp] ^= (uint8_t)r5;
sp += 1;
for (uint16_t i = 0; i <= (uint16_t)11; i++)
{
r10 = (uint16_t)50423;
r10 -= (uint8_t)r10;
r10 ^= (uint32_t)r10;
r10 += (uint32_t)949674619;
r10 ^= (uint32_t)r10;
r4 = (uint8_t)r10;
*(uint16_t*)&vm_data[sp] += (uint32_t)r10;
sp += 2;
*(uint32_t*)&vm_data[sp] = shuffle(*(uint32_t*)&vm_data[sp], (uint8_t)30);
sp += 4;
r11 = *(uint8_t*)&vm_data[sp];
r12 = (uint16_t)51172;
r12 ^= (uint32_t)r11;
r11 += (uint32_t)98685811;
r7 = (uint16_t)19034;
r7 += (uint8_t)r7;
r7 += (uint32_t)r7;
r11 += (uint8_t)40;
r11 ^= (uint8_t)185;
r12 += (uint8_t)r12;
r7 += (uint16_t)54066;
r12 ^= (uint32_t)r12;
r7 ^= (uint16_t)r11;
r12 ^= (uint32_t)r7;
*(uint8_t*)&vm_data[sp] = (uint8_t)r11;
sp += 1;
r4 = (uint16_t)42461;
r6 = (uint8_t)234;
*(uint16_t*)&vm_data[sp] += (uint32_t)r4;
sp += 2;
uint8_t key_120[] = {103, 2, 214, 153, 212, 183, 195, 42, 85, 235, 254, 254, 38, 81, 225, 142, 81, 71, 78, 46, 60, 79, 218, 206, 219, 204, 130, 150, 99, 153, 77, 53, 156, 47, 24, 191, 233, 182, 166, 120, 230, 219, 3, 69, 87, 6, 118, 97, 219, 209, 127, 100, 144, 67, 110, 123, 192, 110, 46, 131, 137, 164, 124, 237, 136, 159, 190, 75, 235, 200, 141, 29, 102, 198, 243, 23, 149, 46, 223, 130, 104, 22, 76, 17, 121, 170, 61, 242, 175, 164, 10, 66, 120, 144, 60, 213, 214, 49, 220, 204, 144, 34, 164, 206, 181, 71, 28, 21, 106, 0, 16, 205, 156, 193, 139, 224, 125, 1, 184, 95, 179, 139, 173, 228};
rc4_decrypt(&vm_data[sp], 12, 124, key_120);
sp += 12;
r14 = *(uint8_t*)&vm_data[sp];
r3 = (uint8_t)113;
r3 -= (uint8_t)r3;
r3 ^= (uint16_t)r3;
r3 -= (uint32_t)r14;
r15 = (uint8_t)60;
r15 -= (uint8_t)r14;
r7 = (uint32_t)1422115384;
r15 ^= (uint32_t)r14;
r15 ^= (uint32_t)r15;
r7 -= (uint16_t)r14;
r7 ^= (uint8_t)77;
r14 ^= (uint8_t)148;
r3 -= (uint32_t)r15;
r14 -= (uint32_t)861341011;
r15 += (uint32_t)2007283324;
r7 -= (uint8_t)r3;
r14 ^= (uint8_t)149;
r7 += (uint8_t)r15;
r15 ^= (uint32_t)r3;
r3 ^= (uint8_t)174;
r14 -= (uint8_t)206;
r3 += (uint8_t)r7;
*(uint8_t*)&vm_data[sp] = (uint8_t)r14;
sp += 1;
r12 = (uint16_t)15842;
r11 = (uint8_t)191;
r11 -= (uint8_t)122;
r11 -= (uint16_t)18561;
r12 += (uint16_t)r11;
r11 += (uint8_t)21;
r12 += (uint16_t)52758;
*(uint16_t*)&vm_data[sp] += (uint32_t)r11;
sp += 2;
r13 = *(uint8_t*)&vm_data[sp];
r3 = (uint32_t)1721186019;
r3 -= (uint16_t)r3;
r13 -= (uint16_t)49159;
r3 -= (uint16_t)r3;
r13 += (uint32_t)3785758755;
r13 ^= (uint8_t)117;
r3 ^= (uint8_t)r13;
r3 -= (uint32_t)r13;
*(uint8_t*)&vm_data[sp] = (uint8_t)r13;
sp += 1;
r7 = (uint16_t)55163;
r1 = (uint16_t)26705;
r7 ^= (uint16_t)8384;
r7 += (uint32_t)4241749268;
r1 += (uint32_t)r7;
r1 -= (uint8_t)187;
r7 += (uint16_t)53321;
r7 ^= (uint16_t)r7;
r1 += (uint8_t)75;
r7 -= (uint32_t)2785438230;
r1 ^= (uint32_t)3306987848;
*(uint8_t*)&vm_data[sp] += (uint8_t)r7;
sp += 1;
*(uint8_t*)&vm_data[sp] -= (uint8_t)202;
sp += 1;
r6 = *(uint8_t*)&vm_data[sp];
r7 = (uint8_t)137;
r7 += (uint8_t)r6;
r6 += (uint32_t)366858354;
r7 -= (uint32_t)r6;
*(uint8_t*)&vm_data[sp] = (uint8_t)r6;
sp += 1;
*(uint32_t*)&vm_data[sp] = ~*(uint32_t*)&vm_data[sp];
sp += 4;
}
r1 = (uint8_t)161;
r9 = (uint32_t)1922340281;
r9 ^= (uint16_t)r1;
r9 ^= (uint8_t)209;
r9 -= (uint16_t)56096;
*(uint8_t*)&vm_data[sp] += (uint8_t)r9;
sp += 1;
uint8_t key_190[] = {1, 4, 109, 0, 198, 186, 90, 140, 93, 147, 124};
rc4_decrypt(&vm_data[sp], 10, 11, key_190);
sp += 10;
*(uint8_t*)&vm_data[sp] = rotate_left(*(uint8_t*)&vm_data[sp], (uint8_t)111 & 7);
sp += 1;
r7 = *(uint8_t*)&vm_data[sp];
r2 = (uint8_t)84;
r2 ^= (uint8_t)r2;
r2 -= (uint32_t)r2;
r2 += (uint8_t)9;
r7 += (uint32_t)2638380290;
r7 -= (uint16_t)28991;
r7 -= (uint16_t)56976;
r2 += (uint8_t)r2;
r2 += (uint8_t)r7;
*(uint8_t*)&vm_data[sp] = (uint8_t)r7;
sp += 1;
sp += (int16_t)-319;
r11 = *(uint8_t*)&vm_data[sp];
r2 = (uint8_t)51;
r11 -= (uint16_t)16004;
r2 -= (uint8_t)131;
r2 -= (uint32_t)r11;
r2 ^= (uint8_t)r2;
*(uint8_t*)&vm_data[sp] = (uint8_t)r11;
sp += 1;
r12 = (uint32_t)2516834831;
r12 += (uint8_t)r12;
r8 = (uint16_t)52574;
r8 ^= (uint16_t)38958;
r8 ^= (uint32_t)850757478;
r5 = (uint16_t)r12;
r12 ^= (uint8_t)111;
r12 -= (uint32_t)r12;
r8 += (uint32_t)508123406;
r5 ^= (uint8_t)98;
r8 ^= (uint32_t)r12;
r5 ^= (uint16_t)61148;
r5 += (uint32_t)3433764999;
r12 -= (uint16_t)r8;
*(uint16_t*)&vm_data[sp] ^= (uint16_t)r8;
sp += 2;
r0 = (uint32_t)2509048022;
r0 += (uint16_t)24103;
r0 += (uint8_t)226;
r13 = (uint32_t)2775670174;
r11 = (uint8_t)r13;
r11 ^= (uint32_t)1825902200;
r0 -= (uint8_t)228;
r0 += (uint16_t)19383;
r11 += (uint16_t)r11;
r13 ^= (uint32_t)3662800690;
r0 ^= (uint8_t)r0;
r11 -= (uint8_t)r11;
r11 += (uint8_t)r13;
*(uint16_t*)&vm_data[sp] += (uint32_t)r0;
sp += 2;
for (uint16_t i = 0; i <= (uint16_t)0; i++)
{
r12 = (uint32_t)429164295;
r11 = (uint16_t)12304;
r12 ^= (uint16_t)r11;
r14 = (uint32_t)3659360694;
r11 -= (uint32_t)1813367216;
r11 -= (uint16_t)59037;
*(uint8_t*)&vm_data[sp] += (uint8_t)r11;
sp += 1;
*(uint8_t*)&vm_data[sp] = rotate_left(*(uint8_t*)&vm_data[sp], (uint8_t)212 & 7);
sp += 1;
r13 = (uint8_t)109;
r0 = (uint8_t)91;
r0 ^= (uint16_t)54365;
r13 -= (uint16_t)r0;
*(uint16_t*)&vm_data[sp] -= (uint16_t)r0;
sp += 2;
*(uint16_t*)&vm_data[sp] -= (uint16_t)51379;
sp += 2;
uint8_t key_255[] = {189, 74, 143, 178, 140, 39, 99, 216, 84, 231, 233, 177, 25, 178, 234, 175, 233, 157, 77, 55, 12, 188, 129, 90, 53, 221, 217, 2, 217, 202, 140, 65, 21, 23, 59, 182, 66, 88, 171, 142, 36, 103, 130, 228, 56, 61, 198, 136, 48, 69, 162, 126, 154, 230, 3, 89, 48, 192, 213, 40, 188, 17, 33, 21, 134, 61, 177, 157, 144, 63, 0, 14, 50, 90, 192, 63, 143, 234, 30, 170, 252, 144, 64, 245, 56, 114, 45, 35, 110, 18, 212, 10, 219, 75, 66, 216, 27, 86, 160, 109, 41, 27, 67, 4, 117, 237, 185, 197, 141, 72, 1, 241, 126, 48, 147, 192, 112, 238, 44, 203, 16, 138, 40, 121, 134, 50, 22, 128, 178, 48, 243, 55, 92, 152, 4, 23, 42, 120, 249, 126, 135, 115, 100, 65, 240, 102, 156, 105, 140, 84};
rc4_decrypt(&vm_data[sp], 219, 150, key_255);
sp += 219;
}
r7 = (uint32_t)2203086146;
r7 ^= (uint32_t)1326941483;
*(uint32_t*)&vm_data[sp] ^= (uint32_t)r7;
sp += 4;
r2 = *(uint8_t*)&vm_data[sp];
r15 = (uint8_t)3;
r15 ^= (uint8_t)r2;
r15 -= (uint32_t)r2;
r2 += (uint32_t)1540142103;
r15 -= (uint32_t)r2;
r15 += (uint16_t)r2;
r15 -= (uint8_t)r15;
*(uint8_t*)&vm_data[sp] = (uint8_t)r2;
sp += 1;
r8 = (uint32_t)3832070588;
r0 = (uint8_t)148;
r0 -= (uint8_t)196;
*(uint8_t*)&vm_data[sp] -= (uint8_t)r0;
sp += 1;
*(uint32_t*)&vm_data[sp] += (uint32_t)3085542387;
sp += 4;
r2 = (uint16_t)34934;
r2 -= (uint8_t)r2;
r8 = (uint16_t)r2;
r2 -= (uint32_t)579923098;
*(uint16_t*)&vm_data[sp] += (uint32_t)r2;
sp += 2;
*(uint32_t*)&vm_data[sp] = rotate_right(*(uint32_t*)&vm_data[sp], (uint32_t)150 & 31);
sp += 4;
sp += (int16_t)-557;
r10 = *(uint8_t*)&vm_data[sp];
r13 = (uint16_t)62619;
r12 = (uint8_t)197;
r12 += (uint8_t)r13;
r10 += (uint32_t)4166391727;
r10 -= (uint8_t)125;
r13 -= (uint16_t)r10;
r12 -= (uint32_t)r10;
r13 -= (uint16_t)r13;
r13 += (uint16_t)r10;
r10 ^= (uint16_t)5613;
r13 -= (uint32_t)3146675816;
r12 ^= (uint8_t)102;
r13 += (uint32_t)r12;
*(uint8_t*)&vm_data[sp] = (uint8_t)r10;
sp += 1;
*(uint8_t*)&vm_data[sp] = rotate_left(*(uint8_t*)&vm_data[sp], (uint8_t)124 & 7);
sp += 1;
*(uint8_t*)&vm_data[sp] = rotate_right(*(uint8_t*)&vm_data[sp], (uint8_t)45 & 7);
sp += 1;
r4 = *(uint16_t*)&vm_data[sp];
r11 = (uint32_t)3132013457;
r4 ^= (uint8_t)37;
r4 ^= (uint8_t)35;
r11 += (uint32_t)2286161510;
r11 -= (uint8_t)r11;
r11 += (uint8_t)r4;
r4 ^= (uint32_t)2368058612;
r4 ^= (uint32_t)4151982988;
r4 -= (uint32_t)1633657232;
r4 -= (uint8_t)235;
r4 -= (uint8_t)14;
r9 = (uint32_t)3978816780;
*(uint16_t*)&vm_data[sp] = (uint16_t)r4;
sp += 2;
for (uint16_t i = 0; i <= (uint16_t)2; i++)
{
r5 = (uint32_t)712092786;
r8 = (uint32_t)1418850675;
r1 = (uint8_t)223;
r5 ^= (uint8_t)r8;
r5 ^= (uint32_t)1457548771;
r1 -= (uint8_t)247;
r5 -= (uint16_t)10439;
r8 += (uint8_t)1;
r5 += (uint8_t)r8;
r12 = (uint32_t)3410362573;
r1 += (uint8_t)144;
r1 -= (uint8_t)178;
r8 += (uint32_t)r1;
r8 ^= (uint32_t)r5;
r12 ^= (uint8_t)r12;
r1 ^= (uint8_t)r8;
r12 += (uint32_t)1806162619;
r8 += (uint8_t)103;
r1 -= (uint32_t)153578440;
*(uint32_t*)&vm_data[sp] ^= (uint32_t)r1;
sp += 4;
*(uint8_t*)&vm_data[sp] = rotate_left(*(uint8_t*)&vm_data[sp], (uint8_t)63 & 7);
sp += 1;
r1 = (uint16_t)60281;
r6 = (uint16_t)22670;
r6 -= (uint16_t)15457;
r6 += (uint16_t)r1;
r10 = (uint8_t)142;
r6 ^= (uint8_t)192;
r6 -= (uint8_t)30;
r6 ^= (uint16_t)43731;
r6 += (uint16_t)5286;
r6 -= (uint32_t)1914439878;
r6 += (uint32_t)467625985;
r10 -= (uint32_t)881147473;
r1 -= (uint32_t)r10;
r6 ^= (uint16_t)40027;
r1 += (uint8_t)177;
r10 ^= (uint32_t)1994946481;
*(uint8_t*)&vm_data[sp] += (uint8_t)r6;
sp += 1;
r10 = *(uint32_t*)&vm_data[sp];
r3 = (uint8_t)146;
r3 ^= (uint8_t)r10;
r3 += (uint8_t)r10;
*(uint32_t*)&vm_data[sp] = (uint32_t)r10;
sp += 4;
r6 = *(uint32_t*)&vm_data[sp];
r1 = (uint8_t)137;
r1 += (uint8_t)r6;
r9 = (uint8_t)r1;
r9 -= (uint16_t)r6;
r6 -= (uint16_t)48200;
r6 += (uint32_t)920630460;
r6 += (uint8_t)44;
r9 += (uint32_t)r6;
r9 -= (uint8_t)r1;
r9 += (uint8_t)r1;
r9 ^= (uint16_t)r1;
r9 -= (uint16_t)r9;
r1 ^= (uint8_t)r1;
r9 += (uint32_t)r9;
r9 += (uint8_t)r9;
r6 ^= (uint32_t)4043412698;
r6 ^= (uint16_t)20469;
*(uint32_t*)&vm_data[sp] = (uint32_t)r6;
sp += 4;
uint8_t key_375[] = {45, 163, 221, 59, 59, 167, 19, 158, 102, 199, 230, 20, 32, 150, 252, 21, 137, 250, 174, 67, 230, 55, 31, 165, 114, 168, 47};
rc4_decrypt(&vm_data[sp], 166, 27, key_375);
sp += 166;
}
r1 = (uint32_t)3297274598;
r14 = (uint16_t)45955;
r1 ^= (uint32_t)3534252780;
*(uint32_t*)&vm_data[sp] -= (uint32_t)r1;
sp += 4;
uint8_t key_381[] = {198, 50, 59, 118, 16, 170, 252, 151, 106, 243, 183, 218, 15, 29, 166, 139, 37, 112, 72, 214, 225, 188, 220, 217, 112, 240, 165, 232, 123, 122, 206, 104, 146, 232, 196, 21, 160, 44, 27, 28, 73, 167, 119, 222, 0, 194, 139, 5, 84, 226, 44, 36, 52, 150, 26, 48, 208, 142, 15, 124, 180, 203, 152, 57, 206, 115, 167, 45, 221};
rc4_decrypt(&vm_data[sp], 53, 69, key_381);
sp += 53;
sp += (int16_t)-465;
uint8_t key_383[] = {50, 165, 254, 15, 65, 150, 114, 226, 16, 239, 91, 238, 21, 213, 105, 149, 227, 163, 14, 184, 192, 230, 88, 40, 20, 193, 81, 38, 199, 169, 116, 70, 159, 215, 15, 130, 248, 246, 133, 180, 149, 157, 204, 60, 213, 167, 61, 180, 53, 244, 166, 9, 178, 240, 128, 13, 177, 168, 85, 131, 66, 122, 2, 80, 194, 133, 168, 41, 139, 203, 150, 213, 33, 13, 63, 48, 250, 239, 50, 178, 100, 30, 192, 12, 113, 206, 59, 43, 66, 65, 175, 214, 226, 62, 51, 218, 178, 200, 127, 228, 15, 67, 85, 11, 206, 168, 59, 21, 183, 104, 83, 118, 153, 164, 57, 203, 228, 118, 216, 221, 171, 79, 223, 7, 128, 33, 140, 250, 153, 25, 187, 240, 133, 190, 112, 232, 158, 20, 247, 22, 252, 188, 78, 6, 9, 142, 38, 53, 150, 209, 101, 13, 217, 247, 140, 122, 77, 151, 230, 37, 111, 251, 247, 126, 42, 182, 23, 229, 241, 116, 29, 180, 142, 36, 100, 173, 109, 241, 197, 47, 91, 120, 61, 46, 239, 82, 40, 53, 20, 240, 131, 57, 250, 170, 184, 35, 9, 32, 181, 145, 141, 147, 157, 1, 9, 35, 100, 124, 11, 180, 75, 55, 225, 14, 76, 174, 128, 192, 179, 85, 89, 102, 241, 19, 78, 133, 121, 30, 195, 226, 43, 87, 54, 225, 241, 26, 47, 82, 165, 109, 3, 139, 15, 0, 234, 101, 245, 159, 246, 87, 224};
rc4_decrypt(&vm_data[sp], 90, 251, key_383);
sp += 90;
r15 = (uint32_t)313763479;
r10 = (uint32_t)511721824;
r8 = (uint16_t)63230;
r10 ^= (uint16_t)r8;
r15 += (uint16_t)r8;
r15 ^= (uint8_t)121;
r3 = (uint16_t)44524;
r8 += (uint32_t)1125155919;
r8 -= (uint16_t)17104;
r3 -= (uint32_t)r15;
r8 ^= (uint8_t)255;
r15 ^= (uint32_t)3786204571;
r8 ^= (uint16_t)52321;
r15 -= (uint16_t)19335;
*(uint16_t*)&vm_data[sp] += (uint16_t)r8;
sp += 2;
*(uint16_t*)&vm_data[sp] ^= (uint16_t)58808;
sp += 2;
r15 = *(uint8_t*)&vm_data[sp];
r9 = (uint32_t)3134022894;
r15 += (uint8_t)51;
r9 ^= (uint8_t)r9;
r9 ^= (uint16_t)r9;
r9 ^= (uint16_t)r15;
r9 -= (uint32_t)r9;
r15 -= (uint32_t)1364293042;
r9 += (uint8_t)r9;
r9 ^= (uint32_t)r15;
r9 ^= (uint8_t)r15;
r15 ^= (uint8_t)193;
r9 -= (uint8_t)246;
r9 -= (uint8_t)r15;
r15 += (uint32_t)841538512;
r15 ^= (uint16_t)45317;
r15 -= (uint16_t)7753;
*(uint8_t*)&vm_data[sp] = (uint8_t)r15;
sp += 1;
r9 = (uint8_t)30;
r13 = (uint8_t)209;
r9 -= (uint16_t)63795;
r13 -= (uint16_t)24085;
r13 += (uint16_t)12606;
r13 += (uint8_t)31;
r13 ^= (uint32_t)3787735284;
*(uint32_t*)&vm_data[sp] ^= (uint32_t)r13;
sp += 4;
uint8_t key_426[] = {123, 70, 58, 24, 202, 12, 161, 59, 17, 68, 165, 197, 71, 132, 83, 134, 121, 135, 109, 135, 57, 138, 211, 139, 224, 238, 242, 231, 72, 220, 21, 70, 144, 92, 140, 146, 14, 129, 167, 150, 187, 2, 129, 126, 252, 201, 235, 98, 200, 155, 37, 57, 155, 190, 12, 64, 31, 142, 89, 206, 249, 226, 226, 70, 2, 138, 35, 36, 166, 201, 178, 217, 135, 109, 111, 15, 127, 233, 207, 224, 200, 137, 193, 204, 12, 243, 110, 137, 59, 71, 138, 212, 166, 116, 82, 177, 195, 40, 198, 54, 109, 130, 207, 35, 137, 58, 45, 96, 1, 74, 200, 170, 207, 211, 144, 120, 119, 248, 37, 132, 206, 63, 249, 121, 48, 208, 117, 119, 143, 72, 76, 149, 75, 0, 83, 186, 99, 18, 104, 101, 172, 222, 2, 6, 225, 57, 147, 185, 229, 7, 72, 71, 237, 249, 195, 41, 254, 126, 84, 11, 1, 241, 71, 59, 6, 171, 5, 223, 53, 15, 32, 37, 100, 23, 241, 144, 0, 155, 223, 46, 95, 196, 86, 250, 12, 89, 184, 172, 136, 131, 56, 197, 37, 70, 156, 28, 117, 242, 150, 253, 97, 195, 64, 8, 130, 224, 205, 119, 108, 14, 57, 207, 246, 89, 81, 201, 133, 89, 180, 111, 146, 38, 127, 233};
rc4_decrypt(&vm_data[sp], 124, 224, key_426);
sp += 124;
*(uint32_t*)&vm_data[sp] = shuffle(*(uint32_t*)&vm_data[sp], (uint8_t)201);
sp += 4;
r9 = *(uint8_t*)&vm_data[sp];
r11 = (uint32_t)2828085878;
r11 ^= (uint16_t)r9;
r10 = (uint32_t)3307515650;
r10 -= (uint8_t)r9;
r11 += (uint32_t)962674282;
r11 += (uint16_t)r9;
r9 -= (uint32_t)2400076374;
r9 += (uint16_t)5844;
*(uint8_t*)&vm_data[sp] = (uint8_t)r9;
sp += 1;
r10 = (uint32_t)1320224921;
r5 = (uint32_t)4157946933;
r9 = (uint32_t)r10;
r6 = (uint16_t)43394;
r6 += (uint32_t)r9;
r10 += (uint8_t)180;
r9 += (uint8_t)168;
r5 -= (uint8_t)35;
r6 ^= (uint16_t)r9;
r6 += (uint16_t)r6;
r5 += (uint32_t)r6;
r10 ^= (uint8_t)223;
r5 -= (uint16_t)62158;
r6 += (uint32_t)r5;
r9 += (uint8_t)104;
r10 ^= (uint16_t)58860;
r10 -= (uint32_t)678606113;
r6 += (uint16_t)40451;
*(uint16_t*)&vm_data[sp] ^= (uint16_t)r6;
sp += 2;
*(uint8_t*)&vm_data[sp] += (uint8_t)143;
sp += 1;
*(uint16_t*)&vm_data[sp] += (uint16_t)54612;
sp += 2;
sp += (int16_t)-388;
r11 = *(uint16_t*)&vm_data[sp];
r7 = (uint16_t)1940;
r7 += (uint8_t)r7;
r7 += (uint16_t)r7;
*(uint16_t*)&vm_data[sp] = (uint16_t)r11;
sp += 2;
r6 = *(uint16_t*)&vm_data[sp];
r15 = (uint8_t)197;
r6 ^= (uint8_t)245;
r15 -= (uint16_t)r15;
r4 = (uint32_t)r6;
*(uint16_t*)&vm_data[sp] = (uint16_t)r6;
sp += 2;
r0 = *(uint16_t*)&vm_data[sp];
r13 = (uint8_t)57;
r13 ^= (uint16_t)r0;
r1 = (uint8_t)244;
r8 = (uint16_t)28143;
r1 -= (uint8_t)r1;
r8 += (uint16_t)r13;
r8 -= (uint16_t)r0;
r0 ^= (uint32_t)807590721;
r0 -= (uint32_t)307096785;
r8 -= (uint8_t)r1;
r13 -= (uint8_t)r8;
r13 -= (uint8_t)182;
r8 += (uint32_t)r0;
r0 ^= (uint8_t)187;
r1 -= (uint8_t)20;
r8 ^= (uint16_t)r1;
r1 += (uint8_t)189;
r1 -= (uint32_t)r1;
*(uint16_t*)&vm_data[sp] = (uint16_t)r0;
sp += 2;
r14 = (uint32_t)2498355693;
r14 ^= (uint16_t)r14;
r6 = (uint8_t)226;
r4 = (uint32_t)r6;
r6 -= (uint16_t)33555;
r6 += (uint8_t)49;
r6 -= (uint32_t)308089474;
r14 ^= (uint16_t)35807;
r14 ^= (uint16_t)55044;
r14 ^= (uint8_t)97;
*(uint32_t*)&vm_data[sp] -= (uint32_t)r14;
sp += 4;
for (uint16_t i = 0; i <= (uint16_t)9; i++)
{
r1 = (uint16_t)32120;
r7 = (uint32_t)3987131119;
r1 += (uint8_t)177;
r4 = (uint32_t)1550858323;
r4 += (uint16_t)7511;
r14 = (uint8_t)231;
r7 -= (uint16_t)13682;
r4 ^= (uint32_t)r7;
r4 -= (uint32_t)1444236;
r4 -= (uint32_t)2073169586;
r7 ^= (uint32_t)r14;
r14 += (uint32_t)1618045431;
r7 += (uint32_t)524849335;
r14 -= (uint8_t)11;
*(uint16_t*)&vm_data[sp] -= (uint16_t)r4;
sp += 2;
*(uint32_t*)&vm_data[sp] += (uint32_t)393448074;
sp += 4;
r8 = *(uint8_t*)&vm_data[sp];
r13 = (uint16_t)55742;
r7 = (uint32_t)3850010856;
r13 ^= (uint32_t)2847734115;
r13 -= (uint8_t)r8;
r7 += (uint32_t)r13;
r7 ^= (uint16_t)r7;
r13 ^= (uint16_t)33526;
r9 = (uint32_t)847234997;
r8 += (uint32_t)2806514026;
r7 -= (uint16_t)r13;
r8 += (uint16_t)63083;
r7 ^= (uint16_t)2753;
r8 -= (uint8_t)122;
r9 ^= (uint32_t)1283767119;
r13 += (uint32_t)r13;
r13 ^= (uint32_t)r8;
r7 += (uint32_t)r7;
*(uint8_t*)&vm_data[sp] = (uint8_t)r8;
sp += 1;
uint8_t key_538[] = {6, 16, 185, 253, 78, 33, 163, 230, 161, 248, 188, 118, 248, 190, 232, 130, 15, 234, 241, 185, 10, 46, 118, 62, 204, 57, 48, 141, 189, 190, 186, 19, 125, 161, 218, 69, 204, 123, 71, 81, 82, 168, 1, 31, 58, 11, 146, 98, 238, 80, 96, 132, 199, 147, 50, 37, 238, 14, 58, 116, 207, 155, 203, 250, 108, 239, 241, 241, 39, 192, 187, 66, 200, 97, 221, 6, 140, 247, 32, 254, 207, 34, 199, 80, 129, 101, 233, 162, 15, 147, 231, 15, 27, 237, 215, 228, 80, 64, 199, 154, 96, 107, 124, 98, 169, 99, 24, 99, 127, 13, 40, 190, 38, 222, 105, 153, 255, 84, 253, 14, 116, 11, 15, 110, 86, 253, 184, 131, 113, 118, 173, 99, 54, 123, 74, 48, 44, 192};
rc4_decrypt(&vm_data[sp], 43, 138, key_538);
sp += 43;
r1 = (uint16_t)20209;
r1 += (uint32_t)r1;
r1 -= (uint32_t)r1;
r1 += (uint32_t)r1;
r7 = (uint32_t)4280813082;
r7 += (uint16_t)r1;
r1 += (uint16_t)27008;
r1 -= (uint32_t)4016669864;
*(uint8_t*)&vm_data[sp] ^= (uint8_t)r1;
sp += 1;
r0 = *(uint16_t*)&vm_data[sp];
r10 = (uint8_t)117;
r10 -= (uint32_t)r0;
r0 ^= (uint8_t)173;
r7 = (uint16_t)54755;
r0 -= (uint8_t)217;
r0 -= (uint8_t)244;
r10 += (uint8_t)r7;
*(uint16_t*)&vm_data[sp] = (uint16_t)r0;
sp += 2;
*(uint32_t*)&vm_data[sp] ^= (uint32_t)3496851274;
sp += 4;
r6 = *(uint16_t*)&vm_data[sp];
r5 = (uint16_t)56467;
r5 += (uint32_t)r5;
r6 -= (uint8_t)41;
r5 ^= (uint16_t)r5;
r5 += (uint16_t)r6;
r5 ^= (uint16_t)r6;
*(uint16_t*)&vm_data[sp] = (uint16_t)r6;
sp += 2;
}
uint8_t key_567[] = {74, 143, 204, 194, 205, 201, 173, 124, 152, 82, 230, 218, 13, 59, 128, 38, 60, 31, 203, 160, 254, 108, 230, 103, 215, 40, 165, 215, 90, 209, 254, 14, 46, 116, 121, 4, 81, 252, 247, 62, 2, 71, 111, 184};
rc4_decrypt(&vm_data[sp], 39, 44, key_567);
sp += 39;
sp += (int16_t)-647;
r9 = *(uint8_t*)&vm_data[sp];
r15 = (uint16_t)60341;
r9 ^= (uint16_t)60094;
r4 = (uint32_t)2359323662;
r15 += (uint8_t)154;
r9 -= (uint16_t)17432;
r4 -= (uint32_t)867371980;
r15 += (uint32_t)r15;
r4 -= (uint16_t)r9;
r15 -= (uint16_t)r4;
r4 ^= (uint16_t)r4;
r4 -= (uint16_t)40616;
r4 ^= (uint32_t)r4;
r4 += (uint32_t)r9;
*(uint8_t*)&vm_data[sp] = (uint8_t)r9;
sp += 1;
for (uint16_t i = 0; i <= (uint16_t)3; i++)
{
r11 = (uint16_t)63417;
r11 ^= (uint32_t)3133361768;
*(uint32_t*)&vm_data[sp] ^= (uint32_t)r11;
sp += 4;
uint8_t key_588[] = {107, 76, 86, 152, 22, 115, 50, 37, 66, 95, 245, 200, 161, 122, 61, 10, 203, 73, 145, 113, 86, 14, 38, 29, 192, 57, 91, 225, 29, 30, 240, 195, 165, 107, 201, 238, 166, 144, 42, 239, 34, 190, 104, 200, 24, 212, 26, 184, 198, 145, 49, 28, 143, 148, 137, 238, 23, 232, 139, 93, 84, 218, 196, 204, 244, 43, 73, 141, 228, 176, 49, 18, 62, 130, 72, 168, 218, 44, 222, 249, 213, 35, 2, 50, 235, 96, 87, 130, 10, 139, 20, 23, 75, 242, 50, 117, 162, 196, 237, 45, 197, 195, 198, 250, 193, 80, 16, 19, 93, 101, 40, 235, 202, 141, 241, 212, 108, 246, 16, 204, 73, 95, 136, 51, 45, 28, 63, 154, 112, 225, 20, 100, 106, 63, 154, 204, 220, 251, 139, 252, 84, 51, 21, 36, 159, 41, 225, 14, 170, 104, 223, 213, 181, 21, 10, 199, 44, 37, 51, 95, 111, 86, 240, 82, 155, 15, 247, 72};
rc4_decrypt(&vm_data[sp], 155, 168, key_588);
sp += 155;
}
r15 = *(uint32_t*)&vm_data[sp];
r12 = (uint8_t)18;
r0 = (uint32_t)2430944568;
r12 -= (uint16_t)r0;
r0 -= (uint16_t)r15;
r3 = (uint32_t)738405762;
r15 ^= (uint32_t)184456081;
r0 -= (uint32_t)r12;
r3 -= (uint8_t)232;
r15 -= (uint16_t)24016;
r3 ^= (uint16_t)19762;
r3 ^= (uint32_t)2580470323;
r15 -= (uint8_t)233;
r15 -= (uint16_t)20460;
r0 -= (uint8_t)r0;
r15 -= (uint16_t)42163;
r15 ^= (uint32_t)2366606503;
r12 -= (uint32_t)r3;
r15 ^= (uint8_t)66;
r12 += (uint16_t)r3;
r15 += (uint8_t)237;
*(uint32_t*)&vm_data[sp] = (uint32_t)r15;
sp += 4;
sp += (int16_t)-619;
r7 = *(uint32_t*)&vm_data[sp];
r4 = (uint8_t)32;
r7 -= (uint32_t)859083650;
r4 -= (uint8_t)28;
r7 += (uint16_t)33192;
*(uint32_t*)&vm_data[sp] = (uint32_t)r7;
sp += 4;
for (uint16_t i = 0; i <= (uint16_t)9; i++)
{
uint8_t key_620[] = {106, 237, 154, 161, 248, 204, 174, 52, 5, 64, 30, 101, 53, 0, 125, 16, 212, 144, 193, 133, 205, 29, 123, 34, 253, 164, 71, 121, 68, 211, 155, 47, 3, 202, 217, 186, 31, 141, 118, 138, 45, 206, 95, 104, 45, 188, 9, 163, 224, 128, 85, 203, 164, 145, 236, 198, 171, 110, 25, 170, 185, 221, 171, 242, 5, 45, 85, 193, 194, 218, 134, 104, 120, 33, 88, 108, 142, 210, 65, 205, 166, 64, 22, 240, 215, 252, 115, 22, 63, 87, 213, 147, 52, 42, 222, 84, 41, 97, 70, 77, 158, 124, 58, 161, 40, 255, 28, 4, 30, 64, 85, 127, 39, 54, 121, 234, 66, 91, 188, 72};
rc4_decrypt(&vm_data[sp], 58, 120, key_620);
sp += 58;
}
sp += (int16_t)-828;
for (uint16_t i = 0; i <= (uint16_t)2; i++)
{
*(uint8_t*)&vm_data[sp] = ~*(uint8_t*)&vm_data[sp];
sp += 1;
uint8_t key_626[] = {89, 166, 231, 132, 223, 127, 205, 147, 179, 184, 130, 14, 185, 161, 24, 203, 73, 227, 242, 147, 21, 98, 148, 59, 128, 25, 117, 242, 153, 116, 80, 130, 44, 197, 149, 219, 35, 18, 183, 70, 179, 8, 69, 67, 165, 97, 66, 167, 145, 165, 228, 120, 18, 86, 76, 232, 174, 155, 78, 233, 247, 175, 219, 38, 138, 161, 135, 24, 78, 141, 228, 89, 113, 49, 61, 73, 244, 188, 17, 246, 70, 99, 171, 211, 23, 23, 44, 84, 76, 99, 210, 29, 90, 253, 60, 149};
rc4_decrypt(&vm_data[sp], 40, 96, key_626);
sp += 40;
*(uint8_t*)&vm_data[sp] = rotate_left(*(uint8_t*)&vm_data[sp], (uint8_t)9 & 7);
sp += 1;
r0 = (uint16_t)18113;
r0 += (uint32_t)2710657503;
r8 = (uint8_t)r0;
r9 = (uint32_t)3925810424;
r9 += (uint16_t)4388;
r8 -= (uint8_t)6;
r11 = (uint8_t)222;
r0 += (uint16_t)23751;
r0 += (uint32_t)1558328862;
r8 -= (uint32_t)r9;
r9 ^= (uint16_t)20945;
r11 -= (uint8_t)r8;
r8 += (uint32_t)1763265447;
r11 += (uint16_t)371;
r8 += (uint16_t)17467;
r9 += (uint16_t)r9;
r11 ^= (uint32_t)r0;
*(uint8_t*)&vm_data[sp] ^= (uint8_t)r8;
sp += 1;
uint8_t key_646[] = {95, 65, 135, 49, 149, 1, 115, 239, 18, 231, 117, 8, 201, 159, 240};
rc4_decrypt(&vm_data[sp], 205, 15, key_646);
sp += 205;
}
*(uint32_t*)&vm_data[sp] += (uint32_t)2341126322;
sp += 4;
r12 = *(uint32_t*)&vm_data[sp];
r1 = (uint16_t)19958;
r1 ^= (uint32_t)r1;
*(uint32_t*)&vm_data[sp] = (uint32_t)r12;
sp += 4;
uint8_t key_653[] = {16, 10, 79, 172, 24, 119, 39, 112, 237, 5, 145, 135, 150, 5, 148, 143, 200, 241, 239, 128, 153, 145, 37, 0, 249, 60, 25};
rc4_decrypt(&vm_data[sp], 39, 27, key_653);
sp += 39;
r15 = *(uint16_t*)&vm_data[sp];
r11 = (uint16_t)27121;
r15 ^= (uint32_t)2244105576;
r15 ^= (uint16_t)30510;
r15 += (uint32_t)734686757;
r11 -= (uint8_t)r15;
r7 = (uint8_t)51;
r11 -= (uint16_t)r15;
r15 += (uint16_t)5096;
r15 ^= (uint16_t)56892;
r11 -= (uint32_t)r7;
r7 += (uint16_t)55527;
r15 ^= (uint8_t)18;
r7 ^= (uint32_t)r11;
r15 ^= (uint16_t)9217;
*(uint16_t*)&vm_data[sp] = (uint16_t)r15;
sp += 2;
uint8_t key_670[] = {215, 128, 201, 152, 205, 118, 188, 125, 29, 109, 199, 162, 137, 122, 36, 237, 75, 182, 122, 131, 232, 166, 25, 80, 186, 255, 250, 232, 188, 8, 120, 243, 212, 150, 122, 219, 77, 100, 33, 186, 216, 97, 4, 191, 167, 49, 177, 49, 107, 56, 38, 80, 167, 221, 178, 241, 113, 133, 173, 100, 89, 171, 82, 78, 27, 168, 169, 221, 213, 200, 173, 235, 132, 234, 90, 88, 107, 130, 190, 94, 57, 68, 74, 83, 172, 219, 68, 106, 166, 66, 24, 47, 134, 181, 126, 88, 25, 129, 69, 79, 133, 133, 137, 247, 241, 171, 88, 246, 106, 115, 232, 242, 156, 148, 246, 54, 219, 44, 139, 218, 153};
rc4_decrypt(&vm_data[sp], 2, 121, key_670);
sp += 2;
r3 = *(uint8_t*)&vm_data[sp];
r0 = (uint8_t)119;
r3 += (uint32_t)3027473385;
r0 ^= (uint16_t)r0;
r0 ^= (uint32_t)r0;
r9 = (uint8_t)30;
r3 ^= (uint8_t)252;
r0 -= (uint8_t)r3;
r0 += (uint32_t)r3;
r1 = (uint8_t)221;
r9 -= (uint16_t)r0;
*(uint8_t*)&vm_data[sp] = (uint8_t)r3;
sp += 1;
*(uint8_t*)&vm_data[sp] -= (uint8_t)209;
sp += 1;
r7 = *(uint32_t*)&vm_data[sp];
r1 = (uint32_t)4111960283;
r1 ^= (uint16_t)r1;
r7 += (uint16_t)62272;
r7 += (uint16_t)54722;
r4 = (uint32_t)4089714605;
r1 ^= (uint16_t)r4;
r7 ^= (uint8_t)9;
r4 += (uint16_t)r4;
r1 += (uint16_t)10143;
r1 -= (uint32_t)r7;
r1 ^= (uint8_t)r4;
r7 -= (uint32_t)710140007;
r7 -= (uint32_t)914321290;
r1 ^= (uint16_t)r1;
*(uint32_t*)&vm_data[sp] = (uint32_t)r7;
sp += 4;
*(uint32_t*)&vm_data[sp] -= (uint32_t)3636518574;
sp += 4;
r2 = (uint16_t)22394;
r2 += (uint16_t)r2;
r8 = (uint8_t)104;
*(uint32_t*)&vm_data[sp] -= (uint32_t)r2;
sp += 4;
r13 = (uint8_t)47;
r14 = (uint16_t)48145;
r4 = (uint8_t)93;
r13 ^= (uint32_t)r4;
r14 += (uint32_t)1463015721;
r14 += (uint32_t)r4;
r14 ^= (uint32_t)4031764979;
r13 += (uint16_t)29138;
r13 ^= (uint32_t)2991453892;
r4 += (uint32_t)r14;
r4 ^= (uint8_t)r13;
r4 -= (uint16_t)r13;
r4 ^= (uint32_t)541958232;
r14 += (uint8_t)65;
r14 -= (uint8_t)149;
r4 -= (uint8_t)191;
*(uint8_t*)&vm_data[sp] -= (uint8_t)r4;
sp += 1;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment