Function at 0x4b0ce0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
push ebx
mov ebx, ecx
push esi
mov eax, dword [ebx + 0x174]
push edi
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x10], eax
xor ecx, ecx
mov eax, edi
add eax, dword [ebx + 0x38]
mov dword [ebp - 8], edx
adc ecx, dword [ebx + 0x3c]
mov dword [ebp - 0x18], ebx
cmp ecx, 0xf
ja 0x4b0f1d
jb 0x4b0d1b
cmp eax, 0xffffffe0
ja 0x4b0f1d
cmp dword [ebx + 0x16c], 0
mov dword [ebx + 0x38], eax
mov dword [ebx + 0x3c], ecx
je 0x4b0d42
lea edx, [ebx + 0x60]
lea ecx, [ebx + 0x40]
call fcn.004aff50
mov edx, dword [ebp - 8]
mov dword [ebx + 0x16c], 0
movzx ecx, byte [ebx + 0xc]
movzx eax, byte [ebx + 0xd]
mov esi, dword [ebx + 0x168]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebx + 0xe]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebx + 0xf]
shl ecx, 8
or ecx, eax
mov dword [ebp - 0xc], ecx
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x14], esi
mov dword [ebp - 4], ecx
test esi, esi
je 0x4b0db5
test edi, edi
je 0x4b0d9f
mov al, byte [esi + ebx + 0x10]
xor al, byte [edx]
inc ecx
mov byte [ecx - 1], al
xor byte [esi + ebx + 0x40], al
inc edx
dec edi
inc esi
and esi, 0xf
mov dword [ebp - 4], ecx
mov dword [ebp - 8], edx
mov dword [ebp + 0xc], edi
mov dword [ebp - 0x14], esi
jne 0x4b0d77
jmp 0x4b0da7
test esi, esi
jne 0x4b0f0e
lea edx, [ebx + 0x60]
lea ecx, [ebx + 0x40]
call fcn.004aff50
mov ecx, dword [ebp - 4]
cmp edi, 0xc00
jb 0x4b0e45
mov esi, dword [ebp - 8]
mov eax, 0xaaaaaaab
mul edi
shr edx, 0xb
mov dword [ebp + 0xc], edx
push ebx
push dword [ebp - 0x10]
push 0xc0
push ecx
push esi
call dword [ebp + 0x10]
mov ecx, dword [ebp - 0xc]
add ecx, 0xc0
mov eax, ecx
shr eax, 0x18
mov byte [ebx + 0xc], al
mov eax, ecx
shr eax, 0x10
add esp, 0x14
mov byte [ebx + 0xd], al
mov eax, ecx
push 0xc00
push dword [ebp - 4]
mov dword [ebp - 0xc], ecx
shr eax, 8
mov byte [ebx + 0xf], cl
lea edx, [ebx + 0x60]
lea ecx, [ebx + 0x40]
mov byte [ebx + 0xe], al
call fcn.004b0150
mov ecx, dword [ebp - 4]
add ecx, 0xc00
add esp, 8
add esi, 0xc00
sub edi, 0xc00
dec dword [ebp + 0xc]
mov dword [ebp - 4], ecx
jne 0x4b0dd1
mov dword [ebp - 8], esi
mov esi, dword [ebp - 0x14]
mov dword [ebp + 0xc], edi
mov eax, edi
and eax, 0xfffffff0
mov dword [ebp - 0x14], eax
je 0x4b0ea9
push ebx
push dword [ebp - 0x10]
mov edi, eax
shr edi, 4
push edi
push ecx
push dword [ebp - 8]
call dword [ebp + 0x10]
mov ecx, dword [ebp - 0xc]
add ecx, edi
mov edi, dword [ebp + 0xc]
mov eax, ecx
shr eax, 0x18
mov byte [ebx + 0xc], al
mov eax, ecx
shr eax, 0x10
mov byte [ebx + 0xd], al
mov eax, ecx
shr eax, 8
add esp, 0x14
mov byte [ebx + 0xe], al
mov eax, dword [ebp - 0x14]
add dword [ebp - 8], eax
push eax
push dword [ebp - 4]
mov dword [ebp - 0xc], ecx
mov byte [ebx + 0xf], cl
lea edx, [ebx + 0x60]
lea ecx, [ebx + 0x40]
sub edi, eax
call fcn.004b0150
mov eax, dword [ebp - 0x14]
add esp, 8
add dword [ebp - 4], eax
test edi, edi
je 0x4b0f0e
push dword [ebp - 0x10]
lea eax, [ebx + 0x10]
push eax
mov eax, dword [ebx + 0x170]
push ebx
call eax
mov ecx, dword [ebp - 0xc]
inc ecx
mov eax, ecx
shr eax, 0x18
mov byte [ebx + 0xc], al
mov eax, ecx
shr eax, 0x10
mov byte [ebx + 0xd], al
mov eax, ecx
shr eax, 8
mov byte [ebx + 0xe], al
mov eax, dword [ebp - 4]
add esp, 0xc
sub dword [ebp - 8], eax
lea edx, [esi + eax]
lea eax, [ebx + 0x40]
mov byte [ebx + 0xf], cl
mov ebx, dword [ebp - 8]
mov dword [ebp + 0xc], eax
movzx ecx, byte [eax + esi - 0x30]
movzx eax, byte [ebx + edx]
xor ecx, eax
mov eax, dword [ebp + 0xc]
mov byte [edx], cl
xor byte [eax + esi], cl
inc esi
lea edx, [edx + 1]
dec edi
jne 0x4b0ef1
mov ebx, dword [ebp - 0x18]
mov dword [ebx + 0x168], esi
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov esp, ebp
pop ebp
ret