Function at 0x4884b0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xcc
mov eax, dword [0x59a024]
xor eax, esp
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0xd8]
mov ecx, dword [esp + 0xdc]
mov edx, dword [esp + 0xe4]
push ebx
push ebp
mov ebp, dword [esp + 0xe8]
push esi
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0xdc]
push edi
push eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x14], ebp
mov dword [esp + 0x18], edx
or esi, 0xffffffff
call fcn.004a9af0
xor ecx, ecx
add esp, 4
cmp eax, ecx
jne 0x488515
xor ebx, ebx
mov dword [esp + 0x18], ebx
jmp 0x48851d
mov edx, dword [eax]
mov dword [esp + 0x18], edx
mov ebx, edx
lea eax, [esp + 0x38]
push eax
mov dword [esp + 0x48], ecx
mov dword [esp + 0x58], ecx
mov dword [esp + 0x38], ecx
call fcn.004b18b0
mov edi, eax
add esp, 4
test edi, edi
jl 0x488787
lea ecx, [esp + 0x48]
push ecx
call fcn.004b18b0
mov edi, eax
add esp, 4
test edi, edi
jl 0x488787
lea edx, [esp + 0x28]
push edx
call fcn.004b18b0
mov edi, eax
add esp, 4
test edi, edi
jl 0x488787
mov eax, dword [esp + 0xe4]
cmp eax, 2
jae 0x488582
or esi, 0xffffffff
jmp 0x488787
cmp eax, 0x21
jb 0x488614
lea eax, [esp + 0x28]
push eax
call fcn.004b0c60
lea ecx, [esp + 0x2c]
push ecx
mov edx, ecx
push 1
push edx
call fcn.004b1980
mov edi, eax
add esp, 0x10
test edi, edi
jl 0x488787
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0xe4]
mov edx, dword [esp + 0x20]
push eax
push ebp
lea ecx, [esp + 0x50]
push ecx
mov ecx, dword [esp + 0xec]
lea eax, [ebx + 1]
shr eax, 1
push edx
inc eax
push eax
push ecx
call fcn.004884b0
mov esi, eax
add esp, 0x18
test esi, esi
jne 0x488787
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0xe0]
push edx
mov edx, dword [esp + 0x20]
push ebp
lea eax, [esp + 0x50]
push eax
push ebx
push ecx
lea ecx, [esp + 0x3c]
call fcn.00487d60
add esp, 0x14
mov esi, eax
jmp 0x488787
mov edx, dword [esp + 0x20]
push edx
push ebp
push 0
call fcn.00428dc0
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x488787
mov eax, dword [esp + 0x14]
mov dword [eax], esi
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 4]
push ecx
push edx
lea eax, [esp + 0x60]
push eax
mov eax, dword [esp + 0xec]
call fcn.00487540
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x488787
mov ecx, dword [esp + 0xe0]
mov edx, dword [esp + 0x10]
lea ebp, [esp + ebx + 0x58]
push ebp
push ecx
mov eax, 0x200
lea ecx, [esi + 1]
call fcn.004879d0
mov esi, eax
add esp, 8
test esi, esi
jne 0x488783
xor edi, edi
test ebx, ebx
jle 0x48869e
jmp 0x488690
lea eax, [esp + edi + 0x58]
mov dl, byte [eax + ebx]
xor byte [eax], dl
inc edi
cmp edi, ebx
jl 0x488690
mov ecx, dword [esp + 0xe4]
lea eax, [ebx*8]
sub eax, ecx
dec ecx
and ecx, 7
mov dl, 1
shl dl, cl
shr eax, 3
lea edi, [esp + eax + 0x58]
sub ebx, eax
mov cl, dl
dec cl
and cl, byte [edi]
push ebx
or cl, dl
lea edx, [esp + 0x3c]
push edi
mov byte [edi], cl
or byte [ebp - 1], 1
push edx
call fcn.004b1780
mov edi, eax
add esp, 0xc
test edi, edi
jl 0x488783
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
inc dword [eax]
push 0x200
push 2
push ebx
call fcn.004877d0
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x48875f
mov eax, dword [0x581808]
cmp dword [eax*4 + 0x58180c], 0xfff1
jb 0x48875c
mov dword [esp + 0x24], eax
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x3c]
push ecx
call fcn.004b6480
mov edi, eax
add esp, 8
cmp edi, 0xffffffff
je 0x488763
test edi, edi
jne 0x48875f
mov edx, dword [esp + 0xe4]
mov ecx, dword [esp + 0x14]
lea eax, [edx*4]
cmp dword [ecx], eax
ja 0x48875c
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x10]
jmp 0x488634
or esi, 0xffffffff
mov ebp, ebx
jmp 0x488787
mov edx, dword [esp + 0x1c]
push edx
lea eax, [esp + 0x3c]
push eax
call fcn.004b0ae0
mov edi, eax
add esp, 8
test edi, edi
jl 0x48875f
xor edi, edi
xor esi, esi
mov ebp, ebx
jmp 0x488787
mov ebp, dword [esp + 0x10]
lea ecx, [esp + 0x38]
push ecx
call fcn.004b0c10
lea edx, [esp + 0x4c]
push edx
call fcn.004b0c10
lea eax, [esp + 0x30]
push eax
call fcn.004b0c10
push 0x80
lea ecx, [esp + 0x68]
push 0
push ecx
call fcn.00412eb0
add esp, 0x18
test edi, edi
je 0x488814
cmp edi, 0xfffffffc
je 0x488802
cmp edi, 0xfffffffd
je 0x4887f0
cmp edi, 0xfffffffe
je 0x4887de
push 0xffffe001
call fcn.004207c0
add esp, 4
or esi, 0xffffffff
jmp 0x488819
push 0xffffe013
call fcn.004207c0
add esp, 4
or esi, 0xffffffff
jmp 0x488819
push 0xffffe002
call fcn.004207c0
add esp, 4
or esi, 0xffffffff
jmp 0x488819
push 0xffffe005
call fcn.004207c0
add esp, 4
or esi, 0xffffffff
jmp 0x488819
cmp esi, 0xffffffff
jne 0x488841
mov edx, dword [esp + 0x1c]
push edx
call fcn.004b0c60
add esp, 4
cmp dword [ebp + 4], 0
je 0x488837
push 0
push ebp
call fcn.00428e40
add esp, 8
mov eax, dword [esp + 0x14]
mov dword [eax], 0
mov ecx, dword [esp + 0xd8]
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00409b58
add esp, 0xcc
ret