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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
mov eax, dword [ebp + 0xc]
push ebx
push esi
mov esi, dword [ebp + 8]
mov ebx, ecx
mov dword [ebp - 8], ebx
test esi, esi
je 0x416254
mov dword [ebx + 0x3c8], 0x10
mov dword [ebx + 0x3cc], 0x10
movups xmm0, xmmword [eax]
movups xmmword [ebx + 0x3d4], xmm0
movups xmm0, xmmword [eax]
movups xmmword [ebx + 0x3f4], xmm0
mov eax, dword [ebx + 0x3c8]
mov ecx, dword [ebx + 0x3cc]
cmp eax, 0x10
je 0x415efa
cmp eax, 0x18
je 0x415ef0
mov eax, 0xe
jmp 0x415f13
xor eax, eax
cmp ecx, 0x20
sete al
jmp 0x415f0c
cmp ecx, 0x10
jne 0x415f04
lea eax, [ecx - 6]
jmp 0x415f13
xor eax, eax
cmp ecx, 0x18
setne al
lea eax, [eax*2 + 0xc]
mov dword [ebx + 0x3d0], eax
mov eax, ecx
cdq
xor ecx, ecx
and edx, 3
mov dword [ebp - 0xc], ecx
add eax, edx
sar eax, 2
mov dword [ebp + 0xc], eax
mov eax, dword [ebx + 0x3d0]
push edi
test eax, eax
js 0x415f63
mov esi, dword [ebp + 0xc]
lea edx, [ebx + 8]
nop dword [eax]
test esi, esi
jle 0x415f4f
mov ecx, esi
xor eax, eax
mov edi, edx
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebx + 0x3d0]
inc ecx
add edx, 0x20
mov dword [ebp - 0xc], ecx
cmp ecx, eax
jle 0x415f40
mov esi, dword [ebp + 8]
xor edx, edx
test eax, eax
js 0x415f96
mov esi, dword [ebp + 0xc]
lea edi, [ebx + 0x1e8]
mov dword [ebp - 0xc], edi
test esi, esi
jle 0x415f82
mov ecx, esi
xor eax, eax
rep stosd dword es:[edi], eax
mov edi, dword [ebp - 0xc]
mov eax, dword [ebx + 0x3d0]
inc edx
add edi, 0x20
mov dword [ebp - 0xc], edi
cmp edx, eax
jle 0x415f75
mov esi, dword [ebp + 8]
inc eax
lea ecx, [ebx + 0x414]
imul eax, dword [ebp + 0xc]
mov edi, ecx
mov dword [ebp - 0x10], ecx
mov dword [ebp + 8], eax
mov eax, dword [ebx + 0x3c8]
cdq
and edx, 3
add eax, edx
sar eax, 2
mov dword [ebp - 0xc], eax
test eax, eax
jle 0x416047
mov ebx, eax
movzx eax, byte [esi]
lea esi, [esi + 4]
shl eax, 0x18
lea edi, [edi + 4]
mov dword [edi - 4], eax
movzx edx, byte [esi - 3]
shl edx, 0x10
or edx, eax
mov dword [edi - 4], edx
movzx ecx, byte [esi - 2]
shl ecx, 8
or ecx, edx
mov dword [edi - 4], ecx
movzx eax, byte [esi - 1]
or eax, ecx
mov dword [edi - 4], eax
sub ebx, 1
jne 0x415fc5
mov ecx, dword [ebp - 0x10]
xor edi, edi
mov ebx, dword [ebp - 8]
mov dword [ebp - 4], ecx
cmp edi, dword [ebp + 8]
jge 0x4161cc
mov eax, edi
mov ecx, dword [ecx]
cdq
inc edi
idiv dword [ebp + 0xc]
lea esi, [edx + eax*8]
mov dword [ebx + esi*4 + 8], ecx
mov ecx, dword [ebx + 0x3d0]
mov esi, dword [ebp - 0xc]
sub ecx, eax
mov eax, dword [ebp - 4]
lea ecx, [edx + ecx*8]
mov eax, dword [eax]
mov dword [ebx + ecx*4 + 0x1e8], eax
mov ecx, dword [ebp - 4]
add ecx, 4
mov dword [ebp - 4], ecx
cmp edi, esi
jl 0x416005
jmp 0x41604b
xor edi, edi
mov esi, eax
cmp edi, dword [ebp + 8]
jge 0x4161cc
mov dword [ebp - 4], 0x4fb550
nop dword [eax + eax]
mov edx, dword [ebx + esi*4 + 0x410]
mov eax, edx
sar eax, 0x10
movzx eax, al
movsx ecx, byte [eax + 0x4f9ff0]
mov eax, dword [ebp - 4]
inc dword [ebp - 4]
movsx eax, byte [eax]
xor ecx, eax
mov eax, edx
sar eax, 8
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x4f9ff0]
xor ecx, eax
movzx eax, dl
shl ecx, 8
sar edx, 0x18
movzx eax, byte [eax + 0x4f9ff0]
xor ecx, eax
movzx eax, dl
shl ecx, 8
movzx eax, byte [eax + 0x4f9ff0]
xor ecx, eax
xor dword [ebx + 0x414], ecx
cmp esi, 8
je 0x4160eb
cmp esi, 1
jle 0x4160de
lea ecx, [ebx + 0x418]
lea edx, [esi - 1]
nop
mov eax, dword [ecx - 4]
lea ecx, [ecx + 4]
xor dword [ecx - 4], eax
sub edx, 1
jne 0x4160d0
test esi, esi
jle 0x4161c3
jmp 0x41616f
lea eax, [ebx + 0x418]
mov edx, 3
mov ecx, dword [eax - 4]
lea eax, [eax + 4]
xor dword [eax - 4], ecx
sub edx, 1
jne 0x4160f6
mov edx, dword [ebx + 0x420]
mov eax, edx
sar eax, 0x18
movzx eax, al
movsx ecx, byte [eax + 0x4f9ff0]
mov eax, edx
sar eax, 0x10
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x4f9ff0]
xor ecx, eax
mov eax, edx
sar eax, 8
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x4f9ff0]
xor ecx, eax
movzx eax, dl
shl ecx, 8
mov edx, 3
movzx eax, byte [eax + 0x4f9ff0]
xor ecx, eax
xor dword [ebx + 0x424], ecx
lea ecx, [ebx + 0x428]
mov eax, dword [ecx - 4]
lea ecx, [ecx + 4]
xor dword [ecx - 4], eax
sub edx, 1
jne 0x416161
lea ecx, [ebx + 0x414]
mov dword [ebp - 0x10], 0
mov dword [ebp - 8], ecx
nop
cmp edi, dword [ebp + 8]
jge 0x4161cc
mov eax, edi
mov ecx, dword [ecx]
cdq
inc edi
idiv dword [ebp + 0xc]
lea esi, [edx + eax*8]
mov dword [ebx + esi*4 + 8], ecx
mov ecx, dword [ebx + 0x3d0]
mov esi, dword [ebp - 0xc]
sub ecx, eax
mov eax, dword [ebp - 8]
lea ecx, [edx + ecx*8]
mov eax, dword [eax]
mov dword [ebx + ecx*4 + 0x1e8], eax
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 8]
inc eax
add ecx, 4
mov dword [ebp - 0x10], eax
mov dword [ebp - 8], ecx
cmp eax, esi
jl 0x416180
cmp edi, dword [ebp + 8]
jl 0x416060
mov ecx, 1
mov dword [ebp + 8], ecx
cmp dword [ebx + 0x3d0], ecx
jle 0x41624f
mov eax, dword [ebp + 0xc]
lea edx, [ebx + 0x208]
mov dword [ebp - 0x10], edx
test eax, eax
jle 0x41623d
mov esi, edx
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 + 0x4fb970]
xor ecx, dword [eax*4 + 0x4fa0f0]
mov eax, edx
sar eax, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x4fa8f0]
movzx eax, dl
xor ecx, dword [eax*4 + 0x4fb570]
mov dword [esi - 4], ecx
sub edi, 1
jne 0x4161f0
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
mov edx, dword [ebp - 0x10]
inc ecx
add edx, 0x20
mov dword [ebp + 8], ecx
mov dword [ebp - 0x10], edx
cmp ecx, dword [ebx + 0x3d0]
jl 0x4161e8
mov byte [ebx + 4], 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10