Function at 0x4227d0
Capabilities:
Encode data using xor
Encrypt data using aes
Reference aes constants

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4df9fb
mov eax, dword fs:[0]
push eax
sub esp, 0x8bc
mov eax, dword [0x55b090]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x8a4], edx
mov eax, ecx
mov dword [ebp - 0x8a8], eax
mov dword [ebp - 0x88c], eax
mov dword [ebp - 0x8a0], eax
mov eax, dword [ebp + 8]
push eax
mov dword [ebp - 0x8a0], eax
call dword [sym.imp.mfc140u.dll_operator]
mov dword [ebp - 0x89c], eax
mov dword [ebp - method.CRijndael.virtual_0], vtable.CRijndael.0
mov byte [ebp - 0x880], 0
push 0x400
lea eax, [ebp - 0x410]
mov dword [ebp - 4], 0
push 0
push eax
call sub.VCRUNTIME140.dll_memset
mov edx, 0x51d5a0
lea ecx, [ebp - 0x88c]
call fcn.00509d60
push dword [eax]
lea eax, [ebp - 0x410]
push 0x400
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strcpy_s]
add esp, 0x1c
lea ecx, [ebp - 0x88c]
call dword [sym.imp.mfc140u.dll_Ordinal_1046]
push 0x20
lea eax, [ebp - 0x8c8]
mov dword [ebp - 0x4bc], 0x20
push eax
xorps xmm0, xmm0
mov dword [ebp - 0x4b8], 0x20
lea eax, [ebp - 0x4b0]
push eax
movups xmmword [ebp - 0x8c8], xmm0
movups xmmword [ebp - 0x8b8], xmm0
call sub.VCRUNTIME140.dll_memcpy
push dword [ebp - 0x4b8]
lea eax, [ebp - 0x8c8]
push eax
lea eax, [ebp - 0x490]
push eax
call sub.VCRUNTIME140.dll_memcpy
mov edi, dword [ebp - 0x4bc]
add esp, 0x18
mov eax, dword [ebp - 0x4b8]
cmp edi, 0x10
je 0x422908
cmp edi, 0x18
je 0x4228fe
mov ecx, 0xe
jmp 0x422921
xor ecx, ecx
cmp eax, 0x20
sete cl
jmp 0x42291a
cmp eax, 0x10
jne 0x422912
lea ecx, [eax - 6]
jmp 0x422921
xor ecx, ecx
cmp eax, 0x18
setne cl
lea ecx, [ecx*2 + 0xc]
cdq
xor esi, esi
and edx, 3
mov dword [ebp - 0x4b4], ecx
add eax, edx
sar eax, 2
mov dword [ebp - 0x890], eax
test ecx, ecx
js 0x422968
lea edx, [ebp - 0x87c]
test eax, eax
jle 0x42295a
mov ecx, eax
mov edi, edx
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0x4b4]
mov eax, dword [ebp - 0x890]
inc esi
add edx, 0x20
cmp esi, ecx
jle 0x422942
mov edi, dword [ebp - 0x4bc]
xor edx, edx
test ecx, ecx
js 0x42299a
lea esi, [ebp - 0x69c]
test eax, eax
jle 0x42298c
mov ecx, eax
mov edi, esi
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0x4b4]
mov eax, dword [ebp - 0x890]
inc edx
add esi, 0x20
cmp edx, ecx
jle 0x422974
mov edi, dword [ebp - 0x4bc]
lea edx, [ecx + 1]
imul edx, eax
mov eax, edi
lea edi, [ebp - 0x410]
mov dword [ebp - 0x898], edx
cdq
and edx, 3
lea esi, [edx + eax]
sar esi, 2
lea eax, [ebp - 0x470]
mov dword [ebp - 0x88c], esi
mov dword [ebp - 0x888], eax
test esi, esi
jle 0x422a1b
mov dword [ebp - 0x894], esi
movzx esi, byte [edi]
lea edi, [edi + 4]
movzx eax, byte [edi - 3]
shl esi, 8
or esi, eax
movzx eax, byte [edi - 2]
shl esi, 8
or esi, eax
movzx eax, byte [edi - 1]
shl esi, 8
or esi, eax
mov eax, dword [ebp - 0x888]
mov dword [eax], esi
add eax, 4
sub dword [ebp - 0x894], 1
mov dword [ebp - 0x888], eax
jne 0x4229d4
mov ecx, dword [ebp - 0x4b4]
mov esi, dword [ebp - 0x88c]
xor edi, edi
test esi, esi
jle 0x422a73
cmp edi, dword [ebp - 0x898]
jge 0x422c29
mov eax, edi
cdq
idiv dword [ebp - 0x890]
mov esi, eax
mov eax, dword [ebp + edi*4 - 0x470]
lea ecx, [edx + esi*8]
mov dword [ebp + ecx*4 - 0x87c], eax
mov eax, dword [ebp - 0x4b4]
sub eax, esi
mov esi, dword [ebp - 0x88c]
lea ecx, [edx + eax*8]
mov eax, dword [ebp + edi*4 - 0x470]
inc edi
mov dword [ebp + ecx*4 - 0x69c], eax
cmp edi, esi
jl 0x422a21
mov ecx, dword [ebp - 0x4b4]
cmp edi, dword [ebp - 0x898]
jge 0x422c2f
mov dword [ebp - 0x894], 0x51d7c0
nop dword [eax]
mov edx, dword [ebp + esi*4 - 0x474]
mov eax, edx
sar eax, 0x10
movzx eax, al
movsx ecx, byte [eax + 0x5208e0]
mov eax, dword [ebp - 0x894]
inc dword [ebp - 0x894]
movsx eax, byte [eax]
xor ecx, eax
mov eax, edx
sar eax, 8
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x5208e0]
xor ecx, eax
movzx eax, dl
shl ecx, 8
sar edx, 0x18
movzx eax, byte [eax + 0x5208e0]
xor ecx, eax
movzx eax, dl
shl ecx, 8
movzx eax, byte [eax + 0x5208e0]
xor ecx, eax
xor dword [ebp - 0x470], ecx
cmp esi, 8
je 0x422b28
mov ecx, 1
cmp esi, ecx
jle 0x422bb4
nop dword [eax]
nop dword [eax + eax]
mov eax, dword [ebp + ecx*4 - 0x474]
xor dword [ebp + ecx*4 - 0x470], eax
inc ecx
cmp ecx, esi
jl 0x422b10
jmp 0x422bb4
mov eax, 1
nop dword [eax]
mov ecx, dword [ebp + eax*4 - 0x474]
xor dword [ebp + eax*4 - 0x470], ecx
inc eax
cmp eax, 4
jl 0x422b30
mov ecx, dword [ebp - 0x464]
mov eax, ecx
sar eax, 0x18
movzx eax, al
movsx edx, byte [eax + 0x5208e0]
mov eax, ecx
sar eax, 0x10
movzx eax, al
shl edx, 8
sar ecx, 8
movzx eax, byte [eax + 0x5208e0]
xor edx, eax
movzx eax, cl
shl edx, 8
mov ecx, 5
movzx eax, byte [eax + 0x5208e0]
xor edx, eax
movzx eax, byte [ebp - 0x464]
shl edx, 8
movzx eax, byte [eax + 0x5208e0]
xor edx, eax
xor dword [ebp - 0x460], edx
nop dword [eax]
mov eax, dword [ebp + ecx*4 - 0x474]
xor dword [ebp + ecx*4 - 0x470], eax
inc ecx
cmp ecx, 8
jl 0x422ba0
mov dword [ebp - 0x888], 0
test esi, esi
jle 0x422c1d
cmp edi, dword [ebp - 0x898]
jge 0x422c29
mov eax, edi
inc edi
cdq
idiv dword [ebp - 0x890]
mov esi, eax
mov eax, dword [ebp - 0x888]
mov eax, dword [ebp + eax*4 - 0x470]
lea ecx, [edx + esi*8]
mov dword [ebp + ecx*4 - 0x87c], eax
mov eax, dword [ebp - 0x4b4]
sub eax, esi
mov esi, dword [ebp - 0x88c]
lea ecx, [edx + eax*8]
mov edx, dword [ebp - 0x888]
mov eax, dword [ebp + edx*4 - 0x470]
inc edx
mov dword [ebp + ecx*4 - 0x69c], eax
mov dword [ebp - 0x888], edx
cmp edx, esi
jl 0x422bc2
cmp edi, dword [ebp - 0x898]
jl 0x422a90
mov ecx, dword [ebp - 0x4b4]
mov esi, 1
mov dword [ebp - 0x88c], esi
cmp ecx, esi
jle 0x422cd0
mov eax, dword [ebp - 0x890]
lea edx, [ebp - 0x67c]
mov dword [ebp - 0x888], edx
test eax, eax
jle 0x422cbc
mov esi, edx
mov edi, eax
nop dword [eax]
mov edx, dword [esi]
lea esi, [esi + 4]
mov eax, edx
sar eax, 0x18
movzx ecx, al
mov eax, edx
sar eax, 0x10
movzx eax, al
mov ecx, dword [ecx*4 + 0x51e3e0]
xor ecx, dword [eax*4 + 0x51dfe0]
mov eax, edx
sar eax, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x51dbe0]
movzx eax, dl
xor ecx, dword [eax*4 + 0x51d7e0]
mov dword [esi - 4], ecx
sub edi, 1
jne 0x422c60
mov ecx, dword [ebp - 0x4b4]
mov eax, dword [ebp - 0x890]
mov edx, dword [ebp - 0x888]
mov esi, dword [ebp - 0x88c]
inc esi
add edx, 0x20
mov dword [ebp - 0x88c], esi
mov dword [ebp - 0x888], edx
cmp esi, ecx
jl 0x422c54
mov edi, dword [ebp - 0x89c]
push ecx
push dword [ebp - 0x8a0]
lea ecx, [ebp - 0x884]
mov byte [ebp - 0x880], 1
push edi
push dword [ebp - 0x8a4]
call fcn.00435740
test edi, edi
je 0x422d52
mov ecx, edi
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x422d00
sub ecx, edx
lea esi, [ecx + 1]
cmp esi, 0x3fffffff
jg 0x422d52
lea eax, [esi + esi]
call fcn.00485200
mov edi, esp
test edi, edi
je 0x422d4c
push esi
push edi
xor eax, eax
push 0xffffffffffffffff
mov word [edi], ax
mov eax, dword [ebp - 0x89c]
push eax
push 0
push 3
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov esi, eax
neg esi
sbb esi, esi
and esi, edi
mov edi, dword [ebp - 0x89c]
jmp 0x422d54
mov edi, dword [ebp - 0x89c]
xor esi, esi
push 1
push edi
call fcn.004823d1
mov ecx, dword [ebp - 0x8a8]
add esp, 8
push esi
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__18]
mov eax, dword [ebp - 0x8a8]
lea esp, [ebp - 0x8d4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00482396
mov esp, ebp
pop ebp
ret