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

Disassembly:
push ebp
mov ebp, esp
mov ecx, dword [ebp + 0xc]
sub esp, 8
mov eax, dword [ebp + 8]
push ebx
sub ecx, 0x80
je 0x4122e5
sub ecx, 0x40
je 0x4122de
sub ecx, 0x40
je 0x4122d7
or eax, 0xffffffff
pop ebx
mov esp, ebp
pop ebp
ret
mov ebx, 8
jmp 0x4122ea
mov ebx, 6
jmp 0x4122ea
mov ebx, 4
mov ecx, dword [ebp + 0x10]
push edi
sub ecx, 0x80
je 0x412319
sub ecx, 0x40
je 0x412312
sub ecx, 0x40
je 0x41230b
pop edi
mov eax, 0xfffffffe
pop ebx
mov esp, ebp
pop ebp
ret
mov edi, 8
jmp 0x41231e
mov edi, 6
jmp 0x41231e
mov edi, 4
cmp ebx, edi
mov dword [ebp + 8], edi
mov ecx, ebx
cmovbe ecx, edi
add ecx, 6
push esi
xor esi, esi
mov dword [ebp - 8], ecx
lea edx, [ecx + 1]
imul edx, edi
mov edi, dword [ebp + 0x14]
add edi, 0x2c
mov dword [ebp + 0xc], edx
cmp esi, edx
jge 0x41244b
mov ecx, dword [eax + esi*4]
inc esi
mov dword [edi], ecx
add edi, 4
cmp esi, ebx
jl 0x412340
cmp esi, edx
jge 0x41244b
mov edi, 0x47a288
movzx ecx, byte [eax + ebx*4 - 3]
movzx ecx, byte [ecx + str.cw]
xor byte [eax], cl
movzx ecx, byte [eax + ebx*4 - 2]
movzx ecx, byte [ecx + str.cw]
xor byte [eax + 1], cl
movzx ecx, byte [eax + ebx*4 - 1]
movzx ecx, byte [ecx + str.cw]
xor byte [eax + 2], cl
movzx ecx, byte [eax + ebx*4 - 4]
movzx ecx, byte [ecx + str.cw]
xor byte [eax + 3], cl
movzx ecx, byte [edi]
add edi, 4
xor byte [eax], cl
mov dword [ebp - 4], edi
cmp ebx, 8
je 0x4123c0
mov edx, 1
mov ecx, dword [eax + edx*4 - 4]
xor dword [eax + edx*4], ecx
inc edx
cmp edx, ebx
jl 0x4123b2
jmp 0x41241d
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
mov ecx, dword [eax + 0xc]
movzx ecx, cl
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
mov edi, dword [ebp + 0x14]
xor edx, edx
add edi, 0x2c
lea edi, [edi + esi*4]
mov ecx, dword [ebp + 0xc]
cmp esi, ecx
jge 0x412442
mov ecx, dword [eax + edx*4]
inc esi
mov dword [edi], ecx
inc edx
add edi, 4
cmp edx, ebx
jl 0x412428
mov ecx, dword [ebp + 0xc]
cmp esi, ecx
mov edi, dword [ebp - 4]
jl 0x412362
mov eax, dword [ebp + 0x14]
mov edi, 2
mov ecx, dword [ebp + 8]
mov edx, dword [ebp - 8]
mov dword [eax], ecx
lea esi, [eax + 0x18]
add ecx, 0xfffffffc
mov dword [eax + 8], edx
sar ecx, 1
lea edx, [eax + 0x10]
shl ecx, 5
mov dword [eax + 4], ebx
add ecx, 0x47822c
mov eax, dword [ecx - 4]
lea edx, [edx + 0x10]
mov dword [edx - 0x14], eax
lea ecx, [ecx + 0x10]
mov eax, dword [ecx - 0x10]
lea esi, [esi + 0x10]
mov dword [edx - 0x10], eax
mov eax, dword [ecx - 0xc]
mov dword [edx - 0xc], eax
mov eax, dword [ecx - 8]
mov dword [esi - 0x10], eax
sub edi, 1
jne 0x412475
pop esi
pop edi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret