Function at 0x6ca300
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x50
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x1c], esp
mov dword [ebp - 0x10], 0xffffffff
mov dword [ebp - 0x14], 0x707710
mov esi, ecx
lea ebx, [ebp - 0x18]
mov ecx, dword fs:[0]
sub edi, eax
cmp edi, 0x100
mov dword [ebp - 0x18], ecx
mov dword fs:[0], ebx
mov dword [ebp - 0x28], edx
mov dword [ebp - 0x34], edi
jne 0x6ca4eb
lea ebx, [eax + 0x80]
mov edx, eax
mov ecx, ebx
lock cmpxchg8b qword [esi + 8]
jne 0x6ca45e
mov ecx, dword [ebp + 8]
mov esi, dword [esi + 0x14]
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x2c], edi
movzx edx, cl
mov dword [ebp - 0x20], ecx
mov ecx, esi
mov dword [ebp - 0x30], eax
mov edi, dword [esi + edx*4]
xor edx, edx
mov esi, 1
mov dword [ebp - 0x24], edi
nop word cs:[eax + eax]
nop dword [eax]
mov eax, dword [ebp - 0x20]
mov ebx, edi
add eax, esi
add esi, 1
movzx eax, al
adc edx, 0
mov edi, dword [ecx + eax*4]
mov eax, esi
xor eax, 0x80
or eax, edx
mov dword [ebx + 4], edi
jne 0x6ca390
mov eax, dword [ebp - 0x30]
mov esi, dword [ebp + 0x10]
mov dl, 1
mov dword [edi + 4], eax
xor eax, eax
lea ecx, [esi + 0xdc]
lock cmpxchg byte [esi + 0xdc], dl
mov edx, dword [ebp - 0x24]
je 0x6ca3e9
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x20], ecx
call fcn.0071aab0
mov ecx, dword [ebp - 0x20]
mov esi, dword [ebp + 0x10]
mov edx, dword [ebp - 0x24]
cmp byte [esi + 0xf4], 0
je 0x6ca478
xor ebx, ebx
mov al, 1
mov dword [ebp - 0x20], 0
lock cmpxchg byte [ecx], bl
je 0x6ca420
mov dword [ebp - 0x10], 0
call fcn.0071ade0
mov edx, dword [ebp - 0x24]
nop word cs:[eax + eax]
test edx, edx
je 0x6ca464
mov eax, edx
mov ecx, 0xffffffc0
mov edx, dword [edx + 4]
lock xadd dword [eax], ecx
cmp ecx, 0x3f
jbe 0x6ca4cb
and ecx, 0xffffffc0
cmp ecx, 0x40
jne 0x6ca420
mov ecx, dword [eax + 8]
mov ecx, dword [ecx + 8]
mov dword [ebp - 0x10], 0
push eax
mov dword [ebp - 0x24], edx
call ecx
mov edx, dword [ebp - 0x24]
add esp, 4
jmp 0x6ca420
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x18]
mov dword fs:[0], eax
mov eax, dword [ebp - 0x20]
add esp, 0x50
pop esi
pop edi
pop ebx
pop ebp
ret
mov edi, dword [esi + 0xf0]
lea eax, [esi + 0xec]
test edi, edi
lea edi, [edi + 4]
cmove edi, eax
mov eax, dword [ebp - 0x30]
mov dword [edi], edx
xor edx, edx
mov dword [esi + 0xf0], eax
mov eax, 0x81
add eax, dword [esi + 0xd8]
mov dword [esi + 0xd8], eax
mov al, 1
mov dword [ebp - 0x20], 0
lock cmpxchg byte [esi + 0xdc], dl
je 0x6ca464
mov dword [ebp - 0x10], 0
call fcn.0071ade0
jmp 0x6ca464
mov dword [ebp - 0x10], 0
mov ecx, str.assertion_failed:_prev.ref_count_____1
mov edx, 0x27
push 0x8cb6a0
call fcn.0070a0f0
add esp, 4
jmp 0x6ca54a
lea eax, [ebp + 0xc]
mov dword [ebp - 0x5c], 0x8cbcc8
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x58], 2
mov dword [ebp - 0x10], 0
lea ecx, [ebp - 0x34]
mov edx, 0x8cbbec
mov dword [ebp - 0x44], eax
lea eax, [ebp + 8]
mov dword [ebp - 0x40], 0x4262e0
mov dword [ebp - 0x3c], eax
lea eax, [ebp - 0x44]
mov dword [ebp - 0x38], 0x4262e0
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x50], 2
mov dword [ebp - 0x4c], 0
lea eax, [ebp - 0x5c]
push 0x8cbcd8
push eax
call fcn.00723960
add esp, 8
ud2