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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4e59d1
mov eax, dword fs:[0]
push eax
mov eax, 0x10b4
call fcn.0048fb00
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 edi, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x10a8], eax
test edi, edi
je 0x40e316
mov ecx, edi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40e2c6
sub ecx, edx
sar ecx, 1
inc ecx
cmp ecx, 0x3fffffff
jg 0x40e316
lea eax, [ecx + ecx]
mov dword [ebp - 0x1094], eax
call fcn.0048fad0
mov esi, esp
test esi, esi
je 0x40e316
push 0
push 0
push dword [ebp - 0x1094]
mov byte [esi], 0
push esi
push 0xffffffffffffffff
push edi
push 0
push 3
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
xor ecx, ecx
test eax, eax
cmove esi, ecx
jmp 0x40e318
xor esi, esi
mov ecx, esi
mov dword [ebp - 0xc14], 0
xorps xmm0, xmm0
mov dword [ebp - 0x10b0], 0
movq qword [ebp - 0xc1c], xmm0
mov dword [ebp - 0x10ac], 0xf
mov byte [ebp - 0x10c0], 0
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40e350
sub ecx, edx
push ecx
push esi
lea ecx, [ebp - 0x10c0]
call fcn.00468c80
lea edx, [ebp - 0x10c0]
mov dword [ebp - 4], 0
lea ecx, [ebp - 0xc1c]
call fcn.00441a90
mov byte [ebp - 4], 2
mov edx, dword [ebp - 0x10ac]
cmp edx, 0x10
jb 0x40e3be
mov ecx, dword [ebp - 0x10c0]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40e3b4
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x40e3b4
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push edx
push ecx
call fcn.0048cc81
add esp, 8
push 0x400
lea eax, [ebp - 0x410]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
mov esi, dword [ebp - 0xc18]
add esp, 0xc
mov edi, dword [ebp - 0xc1c]
xor edx, edx
sub esi, edi
je 0x40e402
lea eax, [ebp - 0x410]
sub edi, eax
nop
lea ecx, [ebp - 0x410]
add ecx, edx
inc edx
mov al, byte [edi + ecx]
mov byte [ecx], al
cmp edx, esi
jb 0x40e3f0
push 0x400
lea eax, [ebp - 0x810]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
push 0x400
lea eax, [ebp - 0xc10]
xorps xmm0, xmm0
push 0
push eax
movups xmmword [ebp - 0x10b8], xmm0
call sub.VCRUNTIME140.dll_memset
mov edx, 0x51d550
lea ecx, [ebp - 0x1094]
call fcn.0043a300
push dword [eax]
lea eax, [ebp - 0xc10]
push 0x400
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strcpy_s]
add esp, 0x24
lea ecx, [ebp - 0x1094]
call dword [sym.imp.mfc140u.dll_Ordinal_1046]
mov dword [ebp - method.CRijndael.virtual_0], vtable.CRijndael.0
mov byte [ebp - 0x108c], 0
push 0x20
lea eax, [ebp - 0x10b8]
mov byte [ebp - 4], 3
push eax
lea eax, [ebp - 0xcbc]
mov dword [ebp - 0xcc8], 0x20
push eax
mov dword [ebp - 0xcc4], 0x20
call sub.VCRUNTIME140.dll_memcpy
push dword [ebp - 0xcc4]
lea eax, [ebp - 0x10b8]
push eax
lea eax, [ebp - 0xc9c]
push eax
call sub.VCRUNTIME140.dll_memcpy
mov esi, dword [ebp - 0xcc8]
add esp, 0x18
mov eax, dword [ebp - 0xcc4]
cmp esi, 0x10
je 0x40e4e6
cmp esi, 0x18
je 0x40e4dc
mov ecx, 0xe
jmp 0x40e4ff
xor ecx, ecx
cmp eax, 0x20
sete cl
jmp 0x40e4f8
cmp eax, 0x10
jne 0x40e4f0
lea ecx, [eax - 6]
jmp 0x40e4ff
xor ecx, ecx
cmp eax, 0x18
setne cl
lea ecx, [ecx*2 + 0xc]
cdq
and edx, 3
mov dword [ebp - 0xcc0], ecx
add eax, edx
xor edx, edx
sar eax, 2
mov dword [ebp - 0x109c], eax
test ecx, ecx
js 0x40e546
lea esi, [ebp - 0x1088]
test eax, eax
jle 0x40e538
mov ecx, eax
mov edi, esi
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0xcc0]
mov eax, dword [ebp - 0x109c]
inc edx
add esi, 0x20
cmp edx, ecx
jle 0x40e520
mov esi, dword [ebp - 0xcc8]
xor edx, edx
test ecx, ecx
js 0x40e578
lea esi, [ebp - 0xea8]
test eax, eax
jle 0x40e56a
mov ecx, eax
mov edi, esi
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0xcc0]
mov eax, dword [ebp - 0x109c]
inc edx
add esi, 0x20
cmp edx, ecx
jle 0x40e552
mov esi, dword [ebp - 0xcc8]
lea edx, [ecx + 1]
imul edx, eax
lea edi, [ebp - 0xc10]
mov eax, esi
mov dword [ebp - 0x10a4], edx
cdq
and edx, 3
lea esi, [edx + eax]
sar esi, 2
lea eax, [ebp - 0xc7c]
mov dword [ebp - 0x1094], esi
mov dword [ebp - 0x1098], eax
test esi, esi
jle 0x40e5f9
mov dword [ebp - 0x10a0], 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 - 0x1098]
mov dword [eax], esi
add eax, 4
sub dword [ebp - 0x10a0], 1
mov dword [ebp - 0x1098], eax
jne 0x40e5b2
mov ecx, dword [ebp - 0xcc0]
mov esi, dword [ebp - 0x1094]
xor edi, edi
test esi, esi
jle 0x40e650
nop
cmp edi, dword [ebp - 0x10a4]
jge 0x40e805
mov eax, edi
mov ecx, dword [ebp + edi*4 - 0xc7c]
cdq
idiv dword [ebp - 0x109c]
lea esi, [edx + eax*8]
mov dword [ebp + esi*4 - 0x1088], ecx
mov ecx, dword [ebp - 0xcc0]
mov esi, dword [ebp - 0x1094]
sub ecx, eax
mov eax, dword [ebp + edi*4 - 0xc7c]
inc edi
lea ecx, [edx + ecx*8]
mov dword [ebp + ecx*4 - 0xea8], eax
cmp edi, esi
jl 0x40e600
mov ecx, dword [ebp - 0xcc0]
cmp edi, dword [ebp - 0x10a4]
jge 0x40e80b
mov dword [ebp - 0x10a0], 0x51d7c0
nop word [eax + eax]
mov edx, dword [ebp + esi*4 - 0xc80]
mov eax, edx
sar eax, 0x10
movzx eax, al
movsx ecx, byte [eax + 0x5208e0]
mov eax, dword [ebp - 0x10a0]
inc dword [ebp - 0x10a0]
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 - 0xc7c], ecx
mov ecx, 1
cmp esi, 8
je 0x40e710
cmp esi, ecx
jle 0x40e794
nop dword [eax]
nop dword [eax + eax]
mov eax, dword [ebp + ecx*4 - 0xc80]
xor dword [ebp + ecx*4 - 0xc7c], eax
inc ecx
cmp ecx, esi
jl 0x40e6f0
jmp 0x40e794
mov eax, dword [ebp + ecx*4 - 0xc80]
xor dword [ebp + ecx*4 - 0xc7c], eax
inc ecx
cmp ecx, 4
jl 0x40e710
mov ecx, dword [ebp - 0xc70]
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 - 0xc70]
shl edx, 8
movzx eax, byte [eax + 0x5208e0]
xor edx, eax
xor dword [ebp - 0xc6c], edx
nop dword [eax]
mov eax, dword [ebp + ecx*4 - 0xc80]
xor dword [ebp + ecx*4 - 0xc7c], eax
inc ecx
cmp ecx, 8
jl 0x40e780
xor ecx, ecx
mov dword [ebp - 0x1098], ecx
test esi, esi
jle 0x40e7f9
cmp edi, dword [ebp - 0x10a4]
jge 0x40e805
mov eax, edi
mov ecx, dword [ebp + ecx*4 - 0xc7c]
cdq
inc edi
idiv dword [ebp - 0x109c]
lea esi, [edx + eax*8]
mov dword [ebp + esi*4 - 0x1088], ecx
mov ecx, dword [ebp - 0xcc0]
mov esi, dword [ebp - 0x1094]
sub ecx, eax
mov eax, dword [ebp - 0x1098]
lea ecx, [edx + ecx*8]
mov eax, dword [ebp + eax*4 - 0xc7c]
mov dword [ebp + ecx*4 - 0xea8], eax
mov ecx, dword [ebp - 0x1098]
inc ecx
mov dword [ebp - 0x1098], ecx
cmp ecx, esi
jl 0x40e7a0
cmp edi, dword [ebp - 0x10a4]
jl 0x40e670
mov ecx, dword [ebp - 0xcc0]
mov edx, 1
mov dword [ebp - 0x1094], edx
cmp ecx, edx
jle 0x40e8a6
mov eax, dword [ebp - 0x109c]
lea esi, [ebp - 0xe88]
mov dword [ebp - 0x1098], esi
test eax, eax
jle 0x40e892
mov edi, 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 0x40e836
mov ecx, dword [ebp - 0xcc0]
mov eax, dword [ebp - 0x109c]
mov edx, dword [ebp - 0x1094]
mov esi, dword [ebp - 0x1098]
inc edx
add esi, 0x20
mov dword [ebp - 0x1094], edx
mov dword [ebp - 0x1098], esi
cmp edx, ecx
jl 0x40e830
mov eax, dword [ebp - 0xc18]
sub eax, dword [ebp - 0xc1c]
push ecx
push eax
lea eax, [ebp - 0x810]
mov byte [ebp - 0x108c], 1
push eax
lea eax, [ebp - 0x410]
push eax
lea ecx, [ebp - 0x1090]
call fcn.0049c720
lea ecx, [ebp - 0x810]
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40e8e0
sub ecx, edx
lea edi, [ecx + 1]
cmp edi, 0x3fffffff
jg 0x40e924
lea eax, [edi + edi]
call fcn.0048fad0
mov esi, esp
test esi, esi
je 0x40e924
push edi
push esi
xor eax, eax
push 0xffffffffffffffff
mov word [esi], ax
lea eax, [ebp - 0x810]
push eax
push 0
push 3
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
neg eax
sbb eax, eax
and eax, esi
jmp 0x40e926
xor eax, eax
push eax
push 0x400
push dword [ebp - 0x10a8]
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_wcscpy_s]
mov ecx, dword [ebp - 0xc1c]
add esp, 0xc
test ecx, ecx
je 0x40e977
mov edx, dword [ebp - 0xc14]
mov eax, ecx
sub edx, ecx
cmp edx, 0x1000
jb 0x40e96d
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x40e96d
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push edx
push ecx
call fcn.0048cc81
add esp, 8
lea esp, [ebp - 0x10cc]
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.0048cc46
mov esp, ebp
pop ebp
ret 0xc