Function at 0x5cf310
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xe0
call fcn.0060ff70
mov eax, dword [0x6ed0a4]
xor eax, esp
mov dword [esp + 0xdc], eax
mov edx, dword [esp + 0xe4]
mov eax, dword [esp + 0x104]
push ebx
mov ebx, dword [esp + 0x100]
push ebp
mov ebp, dword [esp + 0xf8]
push esi
mov esi, dword [esp + 0x100]
mov dword [esp + 0x10], eax
mov eax, dword [edx]
mov ecx, eax
push edi
sub ecx, ebx
mov dword [esp + 0x18], ebp
xor edi, edi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0x10], edi
cmp dword [esp + 0xf8], ebx
jb 0x5cf38a
cmp ebx, 0x40
ja 0x5cf38a
test ebx, ebx
jne 0x5cf3a5
cmp dword [esp + 0x110], edi
jne 0x5cf587
xor eax, eax
mov ecx, dword [esp + 0xec]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0060f4a4
add esp, 0xe0
ret
cmp dword [esp + 0x108], 1
mov dword [edx], ecx
jne 0x5cf3d2
test ebp, ebp
je 0x5cf3c1
mov eax, dword [esp + 0xfc]
add eax, ecx
mov dword [ebp], eax
test esi, esi
je 0x5cf587
mov dword [esi], edi
mov eax, 1
jmp 0x5cf38c
push 0
push ebx
lea eax, [esp + 0x34]
push eax
push dword [esp + 0x20]
call fcn.004b87c0
add esp, 0x10
test eax, eax
jle 0x5cf38a
test ebp, ebp
je 0x5cf38a
test esi, esi
je 0x5cf38a
push 0x103
push 0x6cc5f0
push ebx
call fcn.004a1ac0
mov ebp, eax
add esp, 0xc
mov eax, dword [esp + 0x18]
mov dword [esp + 0x28], ebp
mov dword [eax], ebp
test ebp, ebp
je 0x5cf38a
mov edx, dword [esp + 0xf8]
lea ecx, [esp + 0x6c]
neg ecx
mov dword [esi], 1
and ecx, 0x3f
lea eax, [esp + 0x6c]
add ecx, eax
lea eax, [ebx + 0x100]
mov dword [esp + 0x18], ecx
cmp edx, eax
jbe 0x5cf451
mov edi, edx
sub edi, ebx
sub edi, 0x100
mov dword [esp + 0x10], edi
push ebx
xor esi, esi
mov dword [esp + 0x18], 0
push esi
push ecx
call fcn.00612090
add esp, 0xc
mov dword [esp + 0x20], esi
cmp edi, dword [esp + 0xf8]
jae 0x5cf50b
mov ebp, dword [esp + 0x10]
mov ecx, ebp
sub ecx, dword [esp + 0x1c]
mov dword [esp + 0x10], ecx
mov eax, ebp
mov edx, ecx
xor eax, dword [esp + 0x24]
xor edx, dword [esp + 0x1c]
lea edi, [eax - 1]
not eax
shr eax, 0x1f
shr edi, 0x1f
and edi, eax
mov eax, ebp
xor eax, dword [esp + 0x1c]
neg edi
or edx, eax
mov eax, dword [esp + 0xfc]
xor edx, ebp
shr edx, 0x1f
neg edx
mov cl, byte [eax + ebp]
mov eax, edi
or eax, dword [esp + 0x14]
inc ebp
and edi, dword [esp + 0x20]
and eax, edx
mov edx, dword [esp + 0x18]
or esi, edi
mov edi, dword [esp + 0x20]
mov dword [esp + 0x14], eax
and al, cl
or byte [edi + edx], al
inc edi
mov ecx, edi
mov eax, ebx
sub ecx, ebx
xor eax, edi
xor ecx, ebx
or ecx, eax
xor ecx, edi
shr ecx, 0x1f
neg ecx
and edi, ecx
mov ecx, dword [esp + 0x10]
inc ecx
mov dword [esp + 0x20], edi
mov dword [esp + 0x10], ecx
cmp ebp, dword [esp + 0xf8]
jb 0x5cf485
mov ebp, dword [esp + 0x28]
jmp 0x5cf50f
mov edx, dword [esp + 0x18]
test ebx, ebx
je 0x5cf587
movzx eax, byte [esp + 0x110]
mov edi, ebx
mov ecx, eax
mov dword [esp + 0x28], eax
lea eax, [esp + 0x2c]
not ecx
sub eax, ebp
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], eax
mov eax, esi
lea ebp, [ebp + 1]
xor eax, 0x20
mov al, byte [eax + edx]
mov dl, byte [esi + edx]
inc esi
mov eax, dword [esp + 0x28]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x24]
and cl, byte [eax + ebp - 1]
mov eax, dword [esp + 0x1c]
and al, dl
mov edx, dword [esp + 0x18]
or al, cl
mov ecx, esi
sub ecx, ebx
mov byte [ebp - 1], al
xor ecx, ebx
mov eax, ebx
xor eax, esi
or ecx, eax
xor ecx, esi
shr ecx, 0x1f
neg ecx
and esi, ecx
mov ecx, dword [esp + 0x10]
sub edi, 1
jne 0x5cf533
mov eax, 1
jmp 0x5cf38c