Function at 0x100f3290
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
push ebx
mov ebx, ecx
push esi
push edi
cmp dword [ebx + 4], 0
jne 0x100f32af
push dword [ebx + 0x14]
call fcn.100f3130
cmp dword [ebx + 4], 0
je 0x100f3326
mov edi, dword [ebp + 8]
xor ecx, ecx
mov edi, dword [edi]
test edi, edi
je 0x100f32dc
mov esi, dword [edi + 4]
xor edx, edx
test esi, esi
je 0x100f32dc
movzx eax, byte [edi + edx + 0xc]
inc edx
add eax, ecx
imul ecx, eax, 0x401
mov eax, ecx
shr eax, 6
xor ecx, eax
cmp edx, esi
jb 0x100f32c3
lea ecx, [ecx + ecx*8]
mov edx, 1
mov eax, ecx
shr eax, 0xb
xor eax, ecx
mov ecx, dword [ebx + 0x10]
imul eax, eax, 0x8001
shl edx, cl
mov dword [ebp - 8], edx
lea esi, [edx - 1]
mov dword [ebp - 4], eax
and esi, eax
mov eax, dword [ebx + 4]
mov dword [ebp - 0xc], esi
mov eax, dword [eax + esi*4]
mov dword [ebp - 0x10], eax
test eax, eax
je 0x100f3518
mov esi, eax
mov ecx, dword [esi]
test ecx, ecx
je 0x100f3331
add ecx, 0xc
jne 0x100f3336
test edi, edi
jne 0x100f3336
pop edi
pop esi
xor al, al
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov ecx, 0x10469160
test edi, edi
jne 0x100f334b
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x100f3340
sub ecx, edx
jmp 0x100f337e
test ecx, ecx
jne 0x100f3354
cmp dword [edi + 4], ecx
jmp 0x100f337e
lea eax, [edi + 0xc]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x100f3377
test dl, dl
je 0x100f3373
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x100f3377
add eax, 2
add ecx, 2
test dl, dl
jne 0x100f3357
xor eax, eax
jmp 0x100f337c
sbb eax, eax
or eax, 1
test eax, eax
sete al
test al, al
jne 0x100f3326
mov eax, dword [esi + 0x10]
shr eax, 0x1f
test al, al
jne 0x100f3394
mov esi, dword [esi + 0x18]
jmp 0x100f3317
mov eax, dword [ebx + 0x18]
inc eax
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x1122e340]
mov eax, dword [ebp - 8]
cvtpd2ps xmm1, xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x1122e340]
cvtpd2ps xmm0, xmm0
mulss xmm0, dword [ebx + 0x1c]
comiss xmm1, xmm0
jbe 0x100f348b
mov eax, dword [ebx + 0x10]
mov ecx, ebx
inc eax
push eax
call fcn.100f3130
mov ecx, dword [ebx + 0x10]
mov esi, 1
mov eax, dword [ebx + 4]
shl esi, cl
dec esi
and esi, dword [ebp - 4]
mov edi, dword [eax + esi*4]
test edi, edi
jne 0x100f3491
mov edi, dword [ebp - 4]
push 0x10
push 0x20
call fcn.10434a32
mov edx, eax
add esp, 8
test edx, edx
je 0x100f3326
mov eax, dword [ebp + 8]
xorps xmm0, xmm0
movups xmmword [edx], xmm0
movups xmmword [edx + 0x10], xmm0
cmp dword [eax], 0
je 0x100f3433
mov eax, dword [eax]
mov dword [edx], eax
lock inc dword [eax]
mov eax, dword [ebp + 0xc]
or edi, 0x80000000
or dword [edx + 0x10], 0x80000000
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [edx + 0xc], eax
lea eax, [ebx + 8]
or eax, 2
mov dword [edx + 8], ecx
mov dword [edx + 0x14], eax
mov eax, dword [ebx + 8]
mov dword [edx + 0x18], eax
mov dword [edx + 0x10], edi
mov eax, dword [ebx + 4]
mov dword [eax + esi*4], edx
lea eax, [ebx + 0xc]
mov edi, dword [ebx + 8]
or eax, 1
cmp edi, eax
jne 0x100f357a
inc dword [ebx + 0x18]
mov al, 1
pop edi
pop esi
mov dword [ebx + 0xc], edx
mov dword [ebx + 8], edx
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov esi, dword [ebp - 0xc]
mov edi, dword [ebp - 0x10]
push 0x10
push 0x20
call fcn.10434a32
mov edx, eax
add esp, 8
test edx, edx
je 0x100f3326
mov eax, dword [ebp + 8]
xorps xmm0, xmm0
movups xmmword [edx], xmm0
movups xmmword [edx + 0x10], xmm0
cmp dword [eax], 0
je 0x100f34c0
mov eax, dword [eax]
mov dword [edx], eax
lock inc dword [eax]
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [edx + 0xc], eax
mov dword [edx + 8], ecx
mov eax, dword [edi + 0x14]
mov dword [edx + 0x14], eax
mov eax, dword [ebp - 4]
and eax, 0x7fffffff
mov dword [edx + 0x18], edi
mov dword [edx + 0x10], eax
mov eax, dword [ebx + 4]
mov dword [eax + esi*4], edx
cmp edi, dword [ebx + 8]
jne 0x100f3501
mov dword [ebx + 8], edx
mov al, 1
mov dword [edi + 0x14], edx
inc dword [ebx + 0x18]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [edi + 0x14]
mov dword [eax + 0x18], edx
mov al, 1
mov dword [edi + 0x14], edx
inc dword [ebx + 0x18]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [ebx + 0x18]
inc eax
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x1122e340]
cvtpd2ps xmm1, xmm0
movd xmm0, edx
cvtdq2pd xmm0, xmm0
shr edx, 0x1f
addsd xmm0, qword [edx*8 + 0x1122e340]
cvtpd2ps xmm0, xmm0
mulss xmm0, dword [ebx + 0x1c]
comiss xmm1, xmm0
jbe 0x100f3401
lea eax, [ecx + 1]
mov ecx, ebx
push eax
call fcn.100f3130
mov ecx, dword [ebx + 0x10]
mov esi, 1
mov edi, dword [ebp - 4]
shl esi, cl
dec esi
and esi, edi
jmp 0x100f3404
mov dword [edi + 0x14], edx
mov dword [ebx + 8], edx
inc dword [ebx + 0x18]
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10