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

Disassembly:
push ebx
push esi
push edi
add esp, 0xffffffc8
mov ebx, ecx
mov esi, edx
mov dword [esp], eax
shr ebx, 3
lea eax, [esp + 0x18]
xor ecx, ecx
mov edx, 0x20
call fcn.0040506c
lea edx, [esp + 0x18]
mov eax, esi
mov ecx, ebx
call fcn.00404738
cmp ebx, 0x10
ja 0x425931
mov ecx, 4
mov dword [esp + 4], 0xa
jmp 0x425952
cmp ebx, 0x18
ja 0x425945
mov ecx, 6
mov dword [esp + 4], 0xc
jmp 0x425952
mov ecx, 8
mov dword [esp + 4], 0xe
mov eax, dword [esp]
mov edx, dword [esp + 4]
mov dword [eax + 0x28], edx
xor esi, esi
xor edx, edx
xor eax, eax
jmp 0x42598d
mov ebx, esi
add ebx, ebx
add ebx, ebx
mov edi, dword [esp]
lea ebx, [edi + ebx*8]
mov edi, dword [esp + eax*4 + 0x18]
mov dword [ebx + edx*4 + 0x2c], edi
inc eax
inc edx
cmp ecx, eax
jbe 0x425985
cmp edx, 4
jb 0x425966
cmp edx, 4
jne 0x42598d
xor edx, edx
inc esi
cmp ecx, eax
jbe 0x42599a
mov ebx, dword [esp + 4]
inc ebx
cmp esi, ebx
jb 0x42597c
xor eax, eax
mov dword [esp + 8], eax
jmp 0x425b1c
movzx eax, byte [esp + ecx*4 + 0x15]
movzx eax, byte [eax + str.cw]
xor byte [esp + 0x18], al
movzx eax, byte [esp + ecx*4 + 0x16]
movzx eax, byte [eax + str.cw]
xor byte [esp + 0x19], al
movzx eax, byte [esp + ecx*4 + 0x17]
movzx eax, byte [eax + str.cw]
xor byte [esp + 0x1a], al
movzx eax, byte [esp + ecx*4 + 0x14]
movzx eax, byte [eax + str.cw]
xor byte [esp + 0x1b], al
mov eax, dword [esp + 8]
movzx eax, byte [eax*4 + 0x444780]
xor byte [esp + 0x18], al
inc dword [esp + 8]
cmp ecx, 8
je 0x425a24
mov eax, ecx
dec eax
test eax, eax
jbe 0x425ae2
mov dword [esp + 0xc], eax
lea edi, [esp + 0x18]
mov eax, dword [edi]
xor dword [edi + 4], eax
add edi, 4
dec dword [esp + 0xc]
jne 0x425a11
jmp 0x425ae2
mov eax, ecx
shr eax, 1
dec eax
test eax, eax
jbe 0x425a51
mov dword [esp + 0xc], eax
lea eax, [esp + 0x18]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
mov eax, dword [eax]
mov ebx, dword [esp + 0x10]
xor dword [ebx + 4], eax
add dword [esp + 0x10], 4
dec dword [esp + 0xc]
jne 0x425a39
mov eax, ecx
shr eax, 1
movzx eax, byte [esp + eax*4 + 0x14]
movzx eax, byte [eax + str.cw]
mov ebx, ecx
shr ebx, 1
xor byte [esp + ebx*4 + 0x18], al
mov eax, ecx
shr eax, 1
movzx eax, byte [esp + eax*4 + 0x15]
movzx eax, byte [eax + str.cw]
mov ebx, ecx
shr ebx, 1
xor byte [esp + ebx*4 + 0x19], al
mov eax, ecx
shr eax, 1
movzx eax, byte [esp + eax*4 + 0x16]
movzx eax, byte [eax + str.cw]
mov ebx, ecx
shr ebx, 1
xor byte [esp + ebx*4 + 0x1a], al
mov eax, ecx
shr eax, 1
movzx eax, byte [esp + eax*4 + 0x17]
movzx eax, byte [eax + str.cw]
mov ebx, ecx
shr ebx, 1
xor byte [esp + ebx*4 + 0x1b], al
mov eax, ecx
shr eax, 1
inc eax
mov ebx, ecx
dec ebx
sub ebx, eax
jb 0x425ae2
inc ebx
mov dword [esp + 0xc], ebx
lea eax, [esp + eax*4 + 0x14]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
mov eax, dword [eax]
mov ebx, dword [esp + 0x14]
xor dword [ebx + 4], eax
add dword [esp + 0x14], 4
dec dword [esp + 0xc]
jne 0x425aca
xor eax, eax
jmp 0x425b0f
mov ebx, esi
add ebx, ebx
add ebx, ebx
mov edi, dword [esp]
lea ebx, [edi + ebx*8]
mov edi, dword [esp + eax*4 + 0x18]
mov dword [ebx + edx*4 + 0x2c], edi
inc eax
inc edx
cmp ecx, eax
jbe 0x425b07
cmp edx, 4
jb 0x425ae8
cmp edx, 4
jne 0x425b0f
inc esi
xor edx, edx
cmp ecx, eax
jbe 0x425b1c
mov ebx, dword [esp + 4]
inc ebx
cmp esi, ebx
jb 0x425afe
mov eax, dword [esp + 4]
inc eax
cmp esi, eax
jb 0x4259a5
mov eax, dword [esp]
lea edx, [eax + 0x20c]
mov eax, dword [esp]
add eax, 0x2c
mov ecx, 0x1e0
call fcn.00404738
mov eax, dword [esp]
mov eax, dword [eax + 0x28]
dec eax
test eax, eax
jbe 0x425b77
mov dword [esp + 0xc], eax
mov esi, 1
mov eax, esi
add eax, eax
add eax, eax
mov edx, dword [esp]
lea edx, [edx + eax*8 + 0x20c]
mov cl, 4
mov eax, dword [esp]
call fcn.004258a0
inc esi
dec dword [esp + 0xc]
jne 0x425b56
add esp, 0x38
pop edi
pop esi
pop ebx
ret