Function at 0x4015a0
Capabilities:
Encode data using xor
Encrypt data using aes

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
push esi
mov esi, ecx
mov dword [ebp - 4], esi
test esi, esi
je 0x40181a
mov edx, dword [ebp + 8]
test edx, edx
je 0x40181a
mov dword [edx + 0xf0], 0xe
mov eax, dword [esi]
mov ecx, eax
rol eax, 8
and eax, 0xff00ff
ror ecx, 8
and ecx, 0xff00ff00
or ecx, eax
mov dword [edx], ecx
mov eax, dword [esi + 4]
push ebx
mov ebx, eax
mov dword [ebp - 8], ecx
rol eax, 8
and eax, 0xff00ff
mov ecx, dword [ebp - 4]
ror ebx, 8
and ebx, 0xff00ff00
or ebx, eax
mov dword [edx + 4], ebx
mov eax, dword [esi + 8]
push edi
mov edi, eax
rol eax, 8
and eax, 0xff00ff
ror edi, 8
and edi, 0xff00ff00
or edi, eax
mov dword [edx + 8], edi
mov eax, dword [esi + 0xc]
mov esi, eax
rol eax, 8
and eax, 0xff00ff
ror esi, 8
and esi, 0xff00ff00
or esi, eax
mov dword [edx + 0xc], esi
mov ecx, dword [ecx + 0x10]
mov eax, ecx
ror eax, 8
and eax, 0xff00ff00
rol ecx, 8
and ecx, 0xff00ff
or eax, ecx
mov dword [edx + 0x10], eax
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0x14]
mov eax, ecx
ror eax, 8
and eax, 0xff00ff00
rol ecx, 8
and ecx, 0xff00ff
or eax, ecx
mov dword [edx + 0x14], eax
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0x18]
mov eax, ecx
ror eax, 8
and eax, 0xff00ff00
rol ecx, 8
and ecx, 0xff00ff
or eax, ecx
mov dword [edx + 0x18], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x1c]
mov ecx, eax
rol eax, 8
and eax, 0xff00ff
ror ecx, 8
and ecx, 0xff00ff00
or ecx, eax
mov eax, ecx
mov dword [edx + 0x1c], ecx
shr eax, 0x10
movzx eax, al
mov edx, dword [eax*4 + 0x4480b0]
mov eax, ecx
xor edx, 0x1000000
and edx, 0xff000000
shr eax, 8
movzx eax, al
mov eax, dword [eax*4 + 0x447cb0]
and eax, 0xff0000
xor edx, eax
mov eax, ecx
shr eax, 0x18
movzx eax, byte [eax*4 + str.cc]
xor edx, eax
movzx eax, cl
mov eax, dword [eax*4 + 0x447888]
and eax, 0xff00
xor edx, eax
mov eax, dword [ebp + 8]
xor edx, dword [ebp - 8]
mov dword [eax + 0x20], edx
xor edx, ebx
mov dword [eax + 0x24], edx
xor edx, edi
mov dword [eax + 0x28], edx
mov edi, 0x447c8c
xor edx, esi
mov dword [eax + 0x2c], edx
add eax, 0x30
mov edx, dword [eax - 4]
lea eax, [eax + 0x20]
mov ecx, edx
shr ecx, 0x10
movzx ecx, cl
mov esi, dword [ecx*4 + 0x447cb0]
mov ecx, edx
shr ecx, 8
and esi, 0xff0000
movzx ecx, cl
mov ecx, dword [ecx*4 + 0x447888]
and ecx, 0xff00
xor esi, ecx
mov ecx, edx
shr ecx, 0x18
mov ecx, dword [ecx*4 + 0x4480b0]
and ecx, 0xff000000
xor esi, ecx
movzx ecx, dl
mov edx, dword [eax - 0x38]
movzx ecx, byte [ecx*4 + str.cc]
xor esi, ecx
mov ecx, dword [eax - 0x3c]
xor esi, dword [eax - 0x40]
xor ecx, esi
mov dword [eax - 0x20], esi
mov dword [eax - 0x1c], ecx
xor edx, ecx
mov ecx, dword [eax - 0x34]
xor ecx, edx
mov dword [eax - 0x18], edx
mov dword [eax - 0x14], ecx
mov edx, dword [eax - 0x14]
mov ecx, edx
shr ecx, 8
movzx ecx, cl
mov esi, dword [ecx*4 + 0x447cb0]
mov ecx, edx
shr ecx, 0x10
and esi, 0xff0000
movzx ecx, cl
mov ecx, dword [ecx*4 + 0x4480b0]
and ecx, 0xff000000
xor esi, ecx
mov ecx, edx
shr ecx, 0x18
movzx ecx, byte [ecx*4 + str.cc]
xor esi, ecx
movzx ecx, dl
mov ecx, dword [ecx*4 + 0x447888]
and ecx, 0xff00
xor esi, ecx
xor esi, dword [eax - 0x30]
xor esi, dword [edi]
add edi, 4
mov dword [eax - 0x10], esi
mov ecx, dword [eax - 0x2c]
xor ecx, esi
mov dword [eax - 0xc], ecx
mov edx, dword [eax - 0x28]
xor edx, ecx
mov dword [eax - 8], edx
mov ecx, dword [eax - 0x24]
xor ecx, edx
mov dword [eax - 4], ecx
cmp edi, 0x447ca4
jne 0x401721
pop edi
pop ebx
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret
or eax, 0xffffffff
pop esi
mov esp, ebp
pop ebp
ret