Function at 0x410120
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 0x410155
sub ecx, 0x40
je 0x41014e
sub ecx, 0x40
je 0x410147
or eax, 0xffffffff
pop ebx
mov esp, ebp
pop ebp
ret
mov ebx, 8
jmp 0x41015a
mov ebx, 6
jmp 0x41015a
mov ebx, 4
mov ecx, dword [ebp + 0x10]
push edi
sub ecx, 0x80
je 0x410189
sub ecx, 0x40
je 0x410182
sub ecx, 0x40
je 0x41017b
pop edi
mov eax, 0xfffffffe
pop ebx
mov esp, ebp
pop ebp
ret
mov edi, 8
jmp 0x41018e
mov edi, 6
jmp 0x41018e
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 0x4102bb
mov ecx, dword [eax + esi*4]
inc esi
mov dword [edi], ecx
add edi, 4
cmp esi, ebx
jl 0x4101b0
cmp esi, edx
jge 0x4102bb
mov edi, 0x533160
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 0x410230
mov edx, 1
mov ecx, dword [eax + edx*4 - 4]
xor dword [eax + edx*4], ecx
inc edx
cmp edx, ebx
jl 0x410222
jmp 0x41028d
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 0x4102b2
mov ecx, dword [eax + edx*4]
inc esi
mov dword [edi], ecx
inc edx
add edi, 4
cmp edx, ebx
jl 0x410298
mov ecx, dword [ebp + 0xc]
cmp esi, ecx
mov edi, dword [ebp - 4]
jl 0x4101d2
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, 0x5310ec
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 0x4102e5
pop esi
pop edi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret