Function at 0x425128
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 0x425169
mov ecx, 4
mov dword [esp + 4], 0xa
jmp 0x42518a
cmp ebx, 0x18
ja 0x42517d
mov ecx, 6
mov dword [esp + 4], 0xc
jmp 0x42518a
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 0x4251c5
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 0x4251bd
cmp edx, 4
jb 0x42519e
cmp edx, 4
jne 0x4251c5
xor edx, edx
inc esi
cmp ecx, eax
jbe 0x4251d2
mov ebx, dword [esp + 4]
inc ebx
cmp esi, ebx
jb 0x4251b4
xor eax, eax
mov dword [esp + 8], eax
jmp 0x425354
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 0x42525c
mov eax, ecx
dec eax
test eax, eax
jbe 0x42531a
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 0x425249
jmp 0x42531a
mov eax, ecx
shr eax, 1
dec eax
test eax, eax
jbe 0x425289
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 0x425271
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 0x42531a
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 0x425302
xor eax, eax
jmp 0x425347
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 0x42533f
cmp edx, 4
jb 0x425320
cmp edx, 4
jne 0x425347
inc esi
xor edx, edx
cmp ecx, eax
jbe 0x425354
mov ebx, dword [esp + 4]
inc ebx
cmp esi, ebx
jb 0x425336
mov eax, dword [esp + 4]
inc eax
cmp esi, eax
jb 0x4251dd
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 0x4253af
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.004250d8
inc esi
dec dword [esp + 0xc]
jne 0x42538e
add esp, 0x38
pop edi
pop esi
pop ebx
ret