Function at 0x49b150
Capabilities:
Encode data using xor

Disassembly:
mov edx, dword [esp + 8]
test edx, edx
jne 0x49b15b
xor eax, eax
ret
mov eax, dword [0x4d31a0]
push edi
push esi
push ebp
test eax, eax
push ebx
je 0x49b1bd
xor ebp, ebp
xor esi, esi
mov al, byte [esi + 0x4d31a8]
mov ecx, 0x1f
sub ecx, eax
mov eax, 1
shl eax, cl
or ebp, eax
inc esi
cmp esi, 0xe
jb 0x49b16c
xor esi, esi
mov ecx, 0x4fa070
mov eax, esi
mov edi, 8
test al, 1
je 0x49b1a0
shr eax, 1
xor eax, ebp
jmp 0x49b1a2
shr eax, 1
dec edi
jne 0x49b196
mov dword [ecx], eax
add ecx, 4
inc esi
cmp ecx, 0x4fa470
jl 0x49b18f
mov dword [0x4d31a0], 0
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
cmp esi, 0x10
not eax
jb 0x49b397
mov edi, esi
shr edi, 4
mov ecx, eax
xor ebx, ebx
mov bl, byte [edx]
and ecx, 0xff
xor ecx, ebx
mov ebx, eax
shr ebx, 8
mov eax, dword [ecx*4 + 0x4fa070]
xor eax, ebx
inc edx
mov ecx, eax
xor ebx, ebx
mov bl, byte [edx]
and ecx, 0xff
xor ecx, ebx
xor ebx, ebx
mov bl, byte [edx + 1]
mov ecx, dword [ecx*4 + 0x4fa070]
shr eax, 8
xor ecx, eax
inc edx
mov eax, ecx
and eax, 0xff
xor eax, ebx
xor ebx, ebx
mov bl, byte [edx + 1]
mov eax, dword [eax*4 + 0x4fa070]
shr ecx, 8
xor eax, ecx
inc edx
mov ecx, eax
and ecx, 0xff
xor ecx, ebx
xor ebx, ebx
mov bl, byte [edx + 1]
mov ecx, dword [ecx*4 + 0x4fa070]
shr eax, 8
xor ecx, eax
inc edx
mov eax, ecx
and eax, 0xff
xor eax, ebx
xor ebx, ebx
mov bl, byte [edx + 1]
mov eax, dword [eax*4 + 0x4fa070]
shr ecx, 8
xor eax, ecx
inc edx
mov ecx, eax
and ecx, 0xff
xor ecx, ebx
xor ebx, ebx
mov bl, byte [edx + 1]
mov ecx, dword [ecx*4 + 0x4fa070]
shr eax, 8
xor ecx, eax
inc edx
mov eax, ecx
and eax, 0xff
xor eax, ebx
xor ebx, ebx
mov bl, byte [edx + 1]
mov eax, dword [eax*4 + 0x4fa070]
shr ecx, 8
xor eax, ecx
inc edx
mov ecx, eax
and ecx, 0xff
xor ecx, ebx
xor ebx, ebx
mov bl, byte [edx + 1]
mov ecx, dword [ecx*4 + 0x4fa070]
shr eax, 8
xor ecx, eax
inc edx
mov eax, ecx
and eax, 0xff
xor eax, ebx
shr ecx, 8
mov eax, dword [eax*4 + 0x4fa070]
xor eax, ecx
inc edx
mov ecx, eax
xor ebx, ebx
and ecx, 0xff
mov bl, byte [edx]
sub esi, 0x10
xor ecx, ebx
xor ebx, ebx
mov bl, byte [edx + 1]
mov ecx, dword [ecx*4 + 0x4fa070]
shr eax, 8
xor ecx, eax
inc edx
mov eax, ecx
and eax, 0xff
xor eax, ebx
xor ebx, ebx
mov bl, byte [edx + 1]
mov eax, dword [eax*4 + 0x4fa070]
shr ecx, 8
xor eax, ecx
inc edx
mov ecx, eax
and ecx, 0xff
xor ecx, ebx
xor ebx, ebx
mov bl, byte [edx + 1]
mov ecx, dword [ecx*4 + 0x4fa070]
shr eax, 8
xor ecx, eax
inc edx
mov eax, ecx
and eax, 0xff
xor eax, ebx
xor ebx, ebx
mov bl, byte [edx + 1]
mov eax, dword [eax*4 + 0x4fa070]
shr ecx, 8
xor eax, ecx
inc edx
mov ecx, eax
and ecx, 0xff
xor ecx, ebx
xor ebx, ebx
mov bl, byte [edx + 1]
mov ecx, dword [ecx*4 + 0x4fa070]
shr eax, 8
xor ecx, eax
inc edx
mov eax, ecx
and eax, 0xff
xor eax, ebx
xor ebx, ebx
mov bl, byte [edx + 1]
mov eax, dword [eax*4 + 0x4fa070]
shr ecx, 8
xor eax, ecx
inc edx
mov ecx, eax
and ecx, 0xff
xor ecx, ebx
shr eax, 8
mov ecx, dword [ecx*4 + 0x4fa070]
xor eax, ecx
inc edx
dec edi
jne 0x49b1d5
test esi, esi
jbe 0x49b3b9
mov ecx, eax
xor ebx, ebx
mov bl, byte [edx]
and ecx, 0xff
xor ecx, ebx
shr eax, 8
mov ecx, dword [ecx*4 + 0x4fa070]
xor eax, ecx
inc edx
dec esi
jne 0x49b39b
pop ebx
pop ebp
pop esi
pop edi
not eax
ret