Function at 0x4b0730
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
push esi
mov esi, ecx
mov ebx, edx
mov eax, dword [esi + 0x170]
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0xc], eax
mov eax, dword [esi + 0x174]
mov dword [ebp - 8], eax
xor ecx, ecx
mov eax, edx
add eax, dword [esi + 0x38]
push edi
adc ecx, dword [esi + 0x3c]
mov dword [ebp - 0x1c], esi
cmp ecx, 0xf
ja 0x4b09ed
jb 0x4b0773
cmp eax, 0xffffffe0
ja 0x4b09ed
cmp dword [esi + 0x16c], 0
mov dword [esi + 0x38], eax
mov dword [esi + 0x3c], ecx
je 0x4b079a
lea edx, [esi + 0x60]
lea ecx, [esi + 0x40]
call fcn.004aff50
mov edx, dword [ebp + 0xc]
mov dword [esi + 0x16c], 0
movzx ecx, byte [esi + 0xc]
movzx eax, byte [esi + 0xd]
mov edi, dword [ebp + 8]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0xe]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0xf]
shl ecx, 8
or ecx, eax
mov dword [ebp - 4], ecx
mov ecx, dword [esi + 0x168]
mov dword [ebp - 0x10], ecx
test ecx, ecx
je 0x4b0804
lea esp, [esp]
test edx, edx
je 0x4b07f1
mov al, byte [ecx + esi + 0x10]
xor al, byte [ebx]
dec edx
mov byte [edi], al
xor byte [ecx + esi + 0x40], al
inc ecx
inc edi
inc ebx
and ecx, 0xf
mov dword [ebp + 0xc], edx
mov dword [ebp - 0x10], ecx
jne 0x4b07d0
jmp 0x4b07f9
test ecx, ecx
jne 0x4b09cc
lea edx, [esi + 0x60]
lea ecx, [esi + 0x40]
call fcn.004aff50
mov ecx, dword [ebp + 0xc]
cmp ecx, 0xc00
jb 0x4b08b3
mov eax, 0xaaaaaaab
mul ecx
shr edx, 0xb
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x14], 0xc0
push dword [ebp - 8]
lea eax, [esi + 0x10]
push eax
push esi
call dword [ebp - 0xc]
mov ecx, dword [ebp - 4]
inc ecx
mov eax, ecx
shr eax, 0x18
mov byte [esi + 0xc], al
mov byte [esi + 0xf], cl
mov eax, ecx
shr eax, 0x10
mov byte [esi + 0xd], al
mov eax, ecx
shr eax, 8
mov byte [esi + 0xe], al
mov eax, dword [ebx]
xor eax, dword [esi + 0x10]
add esp, 0xc
mov dword [edi], eax
mov eax, dword [ebx + 4]
xor eax, dword [esi + 0x14]
add edi, 0x10
mov dword [edi - 0xc], eax
mov eax, dword [ebx + 8]
xor eax, dword [esi + 0x18]
add ebx, 0x10
mov dword [edi - 8], eax
mov eax, dword [ebx - 4]
xor eax, dword [esi + 0x1c]
dec dword [ebp - 0x14]
mov dword [edi - 4], eax
mov dword [ebp - 4], ecx
jne 0x4b0827
lea eax, [edi - 0xc00]
push 0xc00
push eax
lea edx, [esi + 0x60]
lea ecx, [esi + 0x40]
call fcn.004b0150
mov ecx, dword [ebp + 0xc]
sub ecx, 0xc00
add esp, 8
dec dword [ebp - 0x18]
mov dword [ebp + 0xc], ecx
jne 0x4b0820
mov edx, ecx
and edx, 0xfffffff0
mov dword [ebp - 0x14], edx
je 0x4b094b
cmp ecx, 0x10
jb 0x4b0934
shr ecx, 4
lea eax, [esi + 0x10]
mov dword [ebp - 0x18], ecx
nop
push dword [ebp - 8]
push eax
push esi
call dword [ebp - 0xc]
mov ecx, dword [ebp - 4]
inc ecx
mov eax, ecx
shr eax, 0x18
mov byte [esi + 0xc], al
mov byte [esi + 0xf], cl
mov eax, ecx
shr eax, 0x10
mov byte [esi + 0xd], al
sub dword [ebp + 0xc], 0x10
mov eax, ecx
shr eax, 8
mov byte [esi + 0xe], al
mov eax, dword [ebx]
xor eax, dword [esi + 0x10]
add esp, 0xc
mov dword [edi], eax
mov eax, dword [ebx + 4]
xor eax, dword [esi + 0x14]
add edi, 0x10
mov dword [edi - 0xc], eax
mov eax, dword [ebx + 8]
xor eax, dword [esi + 0x18]
add ebx, 0x10
mov dword [edi - 8], eax
mov eax, dword [ebx - 4]
xor eax, dword [esi + 0x1c]
dec dword [ebp - 0x18]
mov dword [edi - 4], eax
mov dword [ebp - 4], ecx
lea eax, [esi + 0x10]
jne 0x4b08d0
mov edx, dword [ebp - 0x14]
push edx
mov eax, edi
sub eax, edx
push eax
lea edx, [esi + 0x60]
lea ecx, [esi + 0x40]
call fcn.004b0150
mov ecx, dword [ebp + 0xc]
add esp, 8
test ecx, ecx
je 0x4b09db
push dword [ebp - 8]
lea eax, [esi + 0x10]
push eax
push esi
call dword [ebp - 0xc]
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 0x10]
inc ecx
mov eax, ecx
shr eax, 0x18
mov byte [esi + 0xc], al
mov eax, ecx
shr eax, 0x10
mov byte [esi + 0xd], al
mov eax, ecx
shr eax, 8
mov byte [esi + 0xe], al
lea eax, [edx + edi]
mov dword [ebp - 0x14], eax
lea eax, [esi + 0x40]
add esp, 0xc
mov byte [esi + 0xf], cl
mov esi, dword [ebp - 0x14]
sub ebx, edi
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x18], eax
jmp 0x4b09a0
movzx ecx, byte [eax + edx - 0x30]
movzx eax, byte [ebx + esi]
xor ecx, eax
mov eax, dword [ebp - 0x18]
mov byte [esi], cl
xor byte [eax + edx], cl
inc edx
lea esi, [esi + 1]
dec edi
jne 0x4b09a0
mov esi, dword [ebp - 0x1c]
xor eax, eax
mov dword [esi + 0x168], edx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [esi + 0x168], ecx
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp - 0x10]
mov dword [esi + 0x168], edx
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