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

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 0xc]
sub esp, 8
push edi
sub eax, 0x80
je 0x404c21
sub eax, 0x40
je 0x404c1a
sub eax, 0x40
je 0x404c13
or eax, 0xffffffff
pop edi
mov esp, ebp
pop ebp
ret
mov edi, 8
jmp 0x404c26
mov edi, 6
jmp 0x404c26
mov edi, 4
mov eax, dword [ebp + 0x10]
push esi
sub eax, 0x80
je 0x404c54
sub eax, 0x40
je 0x404c4d
sub eax, 0x40
je 0x404c46
pop esi
mov eax, 0xfffffffe
pop edi
mov esp, ebp
pop ebp
ret
mov esi, 8
jmp 0x404c59
mov esi, 6
jmp 0x404c59
mov esi, 4
mov dword [ebp + 0xc], esi
lea ecx, [edi + 6]
cmp edi, esi
jg 0x404c66
lea ecx, [esi + 6]
mov eax, dword [ebp + 8]
xor edx, edx
mov dword [ebp - 4], ecx
push ebx
test edi, edi
jle 0x404c97
lea ebx, [ecx + 1]
imul ebx, esi
mov esi, dword [ebp + 0x14]
add esi, 0x2c
nop
cmp edx, ebx
jge 0x404c91
mov ecx, dword [eax + edx*4]
mov dword [esi], ecx
inc edx
add esi, 4
cmp edx, edi
jl 0x404c80
mov esi, dword [ebp + 0xc]
mov ecx, dword [ebp - 4]
inc ecx
imul ecx, esi
mov dword [ebp + 8], ecx
cmp edx, ecx
jge 0x404da2
mov ebx, 0x4b6160
jmp 0x404cb0
movzx ecx, byte [eax + edi*4 - 3]
add ebx, 4
movzx ecx, byte [ecx + str.cw]
xor byte [eax], cl
movzx ecx, byte [eax + edi*4 - 2]
mov dword [ebp - 8], ebx
movzx ecx, byte [ecx + str.cw]
xor byte [eax + 1], cl
movzx ecx, byte [eax + edi*4 - 1]
movzx ecx, byte [ecx + str.cw]
xor byte [eax + 2], cl
movzx ecx, byte [eax + edi*4 - 4]
movzx ecx, byte [ecx + str.cw]
xor byte [eax + 3], cl
movzx ecx, byte [ebx - 4]
xor byte [eax], cl
cmp edi, 8
je 0x404d13
mov esi, 1
cmp edi, esi
jle 0x404d6e
mov ecx, dword [eax + esi*4 - 4]
xor dword [eax + esi*4], ecx
inc esi
cmp esi, edi
jl 0x404d05
jmp 0x404d6e
mov ecx, dword [eax]
xor dword [eax + 4], ecx
mov ecx, dword [eax + 4]
xor dword [eax + 8], ecx
mov ecx, dword [eax + 8]
xor dword [eax + 0xc], ecx
movzx ecx, byte [eax + 0xc]
movzx ecx, byte [ecx + str.cw]
xor byte [eax + 0x10], cl
movzx ecx, byte [eax + 0xd]
movzx ecx, byte [ecx + str.cw]
xor byte [eax + 0x11], cl
movzx ecx, byte [eax + 0xe]
movzx ecx, byte [ecx + str.cw]
xor byte [eax + 0x12], cl
movzx ecx, byte [eax + 0xf]
movzx ecx, byte [ecx + str.cw]
xor byte [eax + 0x13], cl
mov ecx, dword [eax + 0x10]
xor dword [eax + 0x14], ecx
mov ecx, dword [eax + 0x14]
xor dword [eax + 0x18], ecx
mov ecx, dword [eax + 0x18]
xor dword [eax + 0x1c], ecx
xor esi, esi
test edi, edi
jle 0x404d96
mov ebx, dword [ebp + 0x14]
add ebx, 0x2c
lea ebx, [ebx + edx*4]
lea ecx, [ecx]
cmp edx, dword [ebp + 8]
jge 0x404d9f
mov ecx, dword [eax + esi*4]
mov dword [ebx], ecx
inc esi
inc edx
add ebx, 4
cmp esi, edi
jl 0x404d80
mov ebx, dword [ebp - 8]
cmp edx, dword [ebp + 8]
jl 0x404cb0
mov esi, dword [ebp + 0xc]
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebp - 4]
mov dword [eax + 8], ecx
lea ecx, [esi - 4]
sar ecx, 1
shl ecx, 5
mov dword [eax], esi
mov dword [eax + 4], edi
lea edx, [eax + 0x10]
add ecx, 0x4b40ec
mov esi, 2
pop ebx
mov eax, dword [ecx - 4]
mov dword [edx - 4], eax
mov eax, dword [ecx]
mov dword [edx], eax
mov eax, dword [ecx + 4]
mov dword [edx + 4], eax
mov eax, dword [ecx + 8]
mov dword [edx + 8], eax
lea edx, [edx + 0x10]
lea ecx, [ecx + 0x10]
dec esi
jne 0x404dc7
pop esi
xor eax, eax
pop edi
mov esp, ebp
pop ebp
ret