Function at 0x4bc5e5
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x124
push esi
mov esi, dword [esp + 0x140]
push esi
call fcn.00489b65
add esp, 4
test eax, eax
jne 0x4bc8b0
push ebp
mov ebp, dword [esp + 0x138]
test ebp, ebp
jbe 0x4bc628
mov eax, dword [esp + 0x140]
push eax
call fcn.0049c095
add esp, 4
test eax, eax
jne 0x4bc8af
mov eax, dword [esp + 0x148]
imul esi, esi, 0x64
mov ecx, dword [esi + 0x507350]
mov edx, eax
and dl, 7
neg dl
push edi
mov dword [esp + 0xc], esi
mov dword [esp + 0x1c], ecx
sbb edx, edx
neg edx
shr eax, 3
add edx, eax
mov edi, edx
cmp ebp, edi
ja 0x4bc904
lea eax, [ecx + ebp + 2]
cmp edi, eax
jb 0x4bc904
push ebx
push edi
call fcn.004664f5
push edi
mov ebx, eax
call fcn.004664f5
push edi
mov dword [esp + 0x28], eax
call fcn.004664f5
push edi
mov dword [esp + 0x24], eax
call fcn.004664f5
add esp, 0x10
test ebx, ebx
mov dword [esp + 0x18], eax
je 0x4bc8c1
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x4bc8b8
mov ecx, dword [esp + 0x14]
test ecx, ecx
je 0x4bc8b8
test eax, eax
je 0x4bc8b8
test ebp, ebp
jbe 0x4bc6e8
mov eax, dword [esp + 0x148]
mov edx, dword [esp + 0x144]
imul eax, eax, 0x2c
push edx
push ebp
push ecx
call dword [eax + 0x510718]
add esp, 0xc
cmp eax, ebp
je 0x4bc6e8
mov esi, 0x20007
jmp 0x4bc884
lea eax, [esp + 0x24]
push eax
call dword [esi + 0x50739c]
mov esi, eax
add esp, 4
test esi, esi
jne 0x4bc884
push 8
push ebx
call fcn.004a7b45
mov edx, dword [esp + 0x18]
push 8
lea ecx, [esp + 0x30]
push ebx
push ecx
call dword [edx + 0x5073a0]
mov esi, eax
add esp, 0x14
test esi, esi
jne 0x4bc884
mov eax, dword [esp + 0x13c]
mov ecx, dword [esp + 0x138]
push eax
mov eax, dword [esp + 0x14]
push ecx
lea edx, [esp + 0x2c]
push edx
call dword [eax + 0x5073a0]
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x4bc884
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push ebp
push ecx
lea edx, [esp + 0x2c]
push edx
call dword [eax + 0x5073a0]
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x4bc884
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
push ecx
lea edx, [esp + 0x28]
push edx
call dword [eax + 0x5073a4]
mov esi, eax
add esp, 8
test esi, esi
jne 0x4bc884
mov eax, dword [esp + 0x20]
mov esi, edi
sub esi, eax
mov ecx, esi
sub ecx, ebp
sub ecx, 2
push ecx
push 0
push ebx
call fcn.00481245
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x20]
neg eax
mov dword [esp + 0x1c], eax
sub eax, ebp
lea eax, [eax + edi - 2]
push ebp
mov byte [eax + ebx], 1
push edx
lea eax, [eax + ebx + 1]
push eax
call fcn.00488ee5
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x30]
lea ebp, [esi - 1]
push ebp
push ecx
mov ecx, dword [esp + 0x16c]
push edx
push eax
push ecx
call fcn.004b5075
mov esi, eax
add esp, 0x2c
test esi, esi
jne 0x4bc884
test ebp, ebp
jbe 0x4bc816
mov esi, dword [esp + 0x1c]
mov eax, ebx
sub esi, ebx
mov ecx, ebp
mov dl, byte [esi + eax]
xor byte [eax], dl
inc eax
dec ecx
jne 0x4bc80d
mov eax, dword [esp + 0x158]
cmp dword [eax], edi
jae 0x4bc828
mov esi, 0x20004
jmp 0x4bc882
mov esi, dword [esp + 0x154]
push ebp
push ebx
push esi
call fcn.00488ee5
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x24]
push ecx
lea ebp, [eax + edi - 1]
push edx
lea eax, [esi + ebp]
push eax
call fcn.00488ee5
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x168]
add ebp, ecx
lea ecx, [edi*8]
sub ecx, edx
add esp, 0x18
inc ecx
mov edx, 0xff
sar edx, cl
mov byte [esi + ebp], 0xbc
and byte [esi], dl
mov eax, dword [esp + 0x158]
xor esi, esi
mov dword [eax], edi
mov ecx, dword [esp + 0x18]
push ecx
call fcn.00466485
mov edx, dword [esp + 0x18]
push edx
call fcn.00466485
mov eax, dword [esp + 0x24]
push eax
call fcn.00466485
push ebx
call fcn.00466485
add esp, 0x10
pop ebx
mov eax, esi
pop edi
pop ebp
pop esi
add esp, 0x124
ret
push ebx
call fcn.00466485
add esp, 4
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x4bc8d2
push eax
call fcn.00466485
add esp, 4
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4bc8e3
push eax
call fcn.00466485
add esp, 4
mov eax, dword [esp + 0x18]
test eax, eax
je 0x4bc8f4
push eax
call fcn.00466485
add esp, 4
pop ebx
pop edi
pop ebp
mov eax, 0xc
pop esi
add esp, 0x124
ret
pop edi
pop ebp
mov eax, 0x20012
pop esi
add esp, 0x124
ret