Function at 0x496010
Capabilities:
Encode data using xor
Encrypt data using aes

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
mov ecx, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp + 0x10]
test ecx, ecx
je 0x4961d0
test esi, esi
je 0x4961d0
cmp edi, 0x80
je 0x496054
cmp edi, 0xc0
je 0x496054
mov eax, 0xfffffffe
cmp edi, 0x100
jne 0x4961c8
mov ebx, esi
jmp 0x49606e
mov ebx, esi
cmp edi, 0x80
je 0x4961d8
cmp edi, 0xc0
je 0x496406
mov dword [esi + 0xf0], 0xe
xor eax, eax
xor edx, edx
mov al, byte [ecx]
mov dl, byte [ecx + 3]
shl eax, 0x18
xor edx, eax
xor eax, eax
mov al, byte [ecx + 1]
shl eax, 0x10
xor edx, eax
xor eax, eax
mov al, byte [ecx + 2]
shl eax, 8
xor edx, eax
xor eax, eax
mov dword [esi], edx
xor edx, edx
mov dl, byte [ecx + 4]
mov al, byte [ecx + 5]
shl eax, 0x10
shl edx, 0x18
xor edx, eax
xor eax, eax
mov al, byte [ecx + 7]
xor edx, eax
xor eax, eax
mov al, byte [ecx + 6]
shl eax, 8
xor edx, eax
xor eax, eax
mov dword [esi + 4], edx
xor edx, edx
mov dl, byte [ecx + 8]
mov al, byte [ecx + 9]
shl eax, 0x10
shl edx, 0x18
xor edx, eax
xor eax, eax
mov al, byte [ecx + 0xb]
xor edx, eax
xor eax, eax
mov al, byte [ecx + 0xa]
shl eax, 8
xor edx, eax
xor eax, eax
mov dword [esi + 8], edx
xor edx, edx
mov dl, byte [ecx + 0xc]
mov al, byte [ecx + 0xd]
shl edx, 0x18
shl eax, 0x10
xor edx, eax
xor eax, eax
mov al, byte [ecx + 0xf]
xor edx, eax
xor eax, eax
mov al, byte [ecx + 0xe]
shl eax, 8
xor edx, eax
cmp edi, 0x80
mov dword [esi + 0xc], edx
je 0x4962e0
xor edx, edx
xor eax, eax
mov dl, byte [ecx + 0x10]
mov al, byte [ecx + 0x11]
shl eax, 0x10
shl edx, 0x18
xor edx, eax
xor eax, eax
mov al, byte [ecx + 0x13]
xor edx, eax
xor eax, eax
mov al, byte [ecx + 0x12]
shl eax, 8
xor edx, eax
xor eax, eax
mov dword [esi + 0x10], edx
xor edx, edx
mov dl, byte [ecx + 0x14]
mov al, byte [ecx + 0x15]
shl eax, 0x10
shl edx, 0x18
xor edx, eax
xor eax, eax
mov al, byte [ecx + 0x17]
xor edx, eax
xor eax, eax
mov al, byte [ecx + 0x16]
shl eax, 8
xor edx, eax
cmp edi, 0xc0
mov dword [esi + 0x14], edx
je 0x496366
xor edx, edx
xor eax, eax
mov dl, byte [ecx + 0x18]
mov al, byte [ecx + 0x19]
shl eax, 0x10
shl edx, 0x18
xor edx, eax
xor eax, eax
mov al, byte [ecx + 0x1b]
xor edx, eax
xor eax, eax
mov al, byte [ecx + 0x1a]
shl eax, 8
xor edx, eax
xor eax, eax
mov dword [esi + 0x18], edx
xor edx, edx
mov dl, byte [ecx + 0x1c]
mov al, byte [ecx + 0x1d]
shl eax, 0x10
shl edx, 0x18
xor edx, eax
xor eax, eax
mov al, byte [ecx + 0x1f]
xor edx, eax
xor eax, eax
mov al, byte [ecx + 0x1e]
shl eax, 8
xor edx, eax
cmp edi, 0x100
mov dword [esi + 0x1c], edx
je 0x4961e7
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret
or eax, 0xffffffff
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esi + 0xf0], 0xa
jmp 0x496078
xor esi, esi
jmp 0x49625a
mov eax, ecx
mov edi, dword [ebx - 0xc]
movzx edx, cl
shr eax, 0x18
movzx edx, byte [edx*4 + 0x4d4680]
mov eax, dword [eax*4 + 0x4d4a80]
and eax, 0xff000000
xor eax, edx
mov edx, dword [ebx - 0x10]
xor eax, edx
mov edx, ecx
shr edx, 0x10
and edx, 0xff
mov edx, dword [edx*4 + 0x4d4e80]
and edx, 0xff0000
xor eax, edx
movzx edx, ch
mov ecx, dword [ebx - 8]
mov edx, dword [edx*4 + 0x4d4280]
and edx, 0xff00
xor eax, edx
mov edx, dword [ebx - 4]
mov dword [ebx + 0x10], eax
xor eax, edi
mov dword [ebx + 0x14], eax
xor eax, ecx
mov dword [ebx + 0x18], eax
xor eax, edx
mov dword [ebx + 0x1c], eax
mov ecx, dword [ebx + 0x1c]
add ebx, 0x20
mov eax, dword [esi*4 + 0x4d5280]
inc esi
mov edx, dword [ebx - 0x20]
mov edi, dword [ebx - 0x14]
xor edx, eax
movzx eax, cl
mov eax, dword [eax*4 + 0x4d4280]
and eax, 0xff00
xor edx, eax
mov eax, ecx
shr eax, 0x18
movzx eax, byte [eax*4 + 0x4d4680]
xor edx, eax
mov eax, ecx
shr eax, 0x10
and eax, 0xff
movzx ecx, ch
mov eax, dword [eax*4 + 0x4d4a80]
and eax, 0xff000000
xor edx, eax
mov eax, dword [ecx*4 + 0x4d4e80]
and eax, 0xff0000
xor edx, eax
mov eax, dword [ebx - 0x1c]
mov dword [ebx], edx
xor edx, eax
mov eax, dword [ebx - 0x18]
mov dword [ebx + 4], edx
xor edx, eax
mov ecx, edx
mov dword [ebx + 8], edx
xor ecx, edi
cmp esi, 7
mov dword [ebx + 0xc], ecx
jne 0x4961f0
jmp 0x4961c6
xor esi, esi
mov ecx, dword [ebx + 0xc]
add ebx, 0x10
mov edx, dword [esi*4 + 0x4d5280]
inc esi
mov eax, dword [ebx - 0x10]
mov edi, dword [ebx - 0xc]
xor eax, edx
movzx edx, cl
mov edx, dword [edx*4 + 0x4d4280]
and edx, 0xff00
xor eax, edx
mov edx, ecx
shr edx, 0x18
movzx edx, byte [edx*4 + 0x4d4680]
xor eax, edx
mov edx, ecx
shr edx, 0x10
and edx, 0xff
movzx ecx, ch
mov edx, dword [edx*4 + 0x4d4a80]
and edx, 0xff000000
xor eax, edx
mov edx, dword [ecx*4 + 0x4d4e80]
and edx, 0xff0000
mov ecx, dword [ebx - 8]
xor eax, edx
mov edx, dword [ebx - 4]
mov dword [ebx], eax
xor eax, edi
mov dword [ebx + 4], eax
xor eax, ecx
mov dword [ebx + 8], eax
xor eax, edx
mov dword [ebx + 0xc], eax
cmp esi, 0xa
jne 0x4962e2
jmp 0x4961c6
xor esi, esi
jmp 0x496380
mov ecx, dword [ebx - 8]
mov edx, dword [ebx - 4]
xor eax, ecx
mov dword [ebx + 0x10], eax
xor eax, edx
mov dword [ebx + 0x14], eax
mov ecx, dword [ebx + 0x14]
add ebx, 0x18
mov eax, dword [esi*4 + 0x4d5280]
inc esi
mov edx, dword [ebx - 0x18]
mov edi, dword [ebx - 0xc]
xor edx, eax
movzx eax, cl
mov eax, dword [eax*4 + 0x4d4280]
and eax, 0xff00
xor edx, eax
mov eax, ecx
shr eax, 0x18
movzx eax, byte [eax*4 + 0x4d4680]
xor edx, eax
mov eax, ecx
shr eax, 0x10
and eax, 0xff
movzx ecx, ch
mov eax, dword [eax*4 + 0x4d4a80]
and eax, 0xff000000
xor edx, eax
mov eax, dword [ecx*4 + 0x4d4e80]
and eax, 0xff0000
xor edx, eax
mov eax, dword [ebx - 0x14]
mov dword [ebx], edx
xor edx, eax
mov eax, dword [ebx - 0x10]
mov dword [ebx + 4], edx
xor edx, eax
mov eax, edx
mov dword [ebx + 8], edx
xor eax, edi
cmp esi, 8
mov dword [ebx + 0xc], eax
jne 0x496370
jmp 0x4961c6
mov dword [esi + 0xf0], 0xc
jmp 0x496078