Function at 0x10087030
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, dword [0x100d2004]
sub esp, 0x3c
push ebx
push esi
push edi
cmp eax, 0xffffffff
je 0x10087058
lea eax, [eax + eax*2]
mov al, byte [eax*4 + 0x100d2f10]
test al, al
jne 0x10087579
mov ecx, dword [0x100bf4c8]
test ecx, ecx
je 0x10087579
cmp byte [0x100bf4cc], 0
je 0x10087579
cmp byte [0x1013d844], 0
je 0x10087579
mov eax, dword [0x1013e658]
add eax, 0xffffffcb
xor eax, 0xd2ca0f9f
test byte [eax + ecx], 1
je 0x10087579
mov eax, dword [0x1013e6f8]
add eax, 0xffffffa3
xor eax, 0xd2ca0fc7
mov eax, dword [eax + ecx]
mov ecx, dword [0x1013e438]
push ecx
mov edx, dword [ecx]
mov esi, dword [edx + 0x10]
mov edx, esp
mov dword [edx], eax
call esi
mov esi, eax
mov dword [esp + 0x14], esi
test esi, esi
je 0x10087579
mov ecx, dword [esi]
mov edx, dword [ecx + 0x6f8]
mov ecx, esi
call edx
test eax, eax
je 0x10087579
mov ecx, dword [0x1013e738]
add ecx, 0xffffff93
xor ecx, 0xd2ca0fd7
cmp dword [ecx + esi], 0
jne 0x100870fa
movss xmm2, dword [eax + 0x12c]
jmp 0x10087102
movss xmm2, dword [eax + 0x130]
mov eax, dword [0x1013e620]
mov ecx, dword [0x100bf4c8]
add eax, 0xffffffd9
xor eax, 0xd2ca0f91
movss dword [esp + 0x18], xmm2
movq xmm0, qword [eax + ecx]
movq qword [esp + 0x24], xmm0
movss xmm0, dword [esp + 0x24]
movss xmm1, dword [esp + 0x28]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm0, xmm1
call fcn.1001a350
minss xmm2, dword [0x100b3dfc]
mov eax, dword [0x100bfb74]
xorps xmm1, xmm1
movss dword [esp + 0x20], xmm0
test byte [eax + 0x30], 4
movss dword [esp + 0x1c], xmm2
jne 0x10087198
mov eax, dword [0x1013e684]
add eax, 0xffffffc0
xor eax, 0xd2ca0faa
movss xmm0, dword [eax + ecx]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x10087198
mov eax, dword [0x1013e658]
add eax, 0xffffffcb
mov byte [esp + 0x13], 0
xor eax, 0xd2ca0f9f
test byte [eax + ecx], 2
je 0x1008719d
mov byte [esp + 0x13], 1
mov eax, dword [0x10143820]
mov byte [esp + 0x12], 0
test al, 1
jne 0x1008721a
or eax, 1
mov dword [0x10143820], eax
mov eax, dword [0x1013e430]
mov ebx, dword [eax + 0x30]
test ebx, ebx
je 0x10087204
nop
mov esi, dword [ebx + 0xc]
mov edi, 0x811c9dc5
xor ecx, ecx
nop word [eax + eax]
inc ecx
cmp byte [ecx + esi], 0
jne 0x100871d0
xor edx, edx
test ecx, ecx
je 0x100871f9
nop dword [eax]
movsx eax, byte [edx + esi]
inc edx
xor eax, edi
imul edi, eax, 0x1000193
cmp edx, ecx
jb 0x100871e0
cmp edi, 0xe01f2035
je 0x1008720e
mov ebx, dword [ebx + 4]
test ebx, ebx
jne 0x100871c0
mov esi, dword [esp + 0x14]
xor ebx, ebx
mov dword [0x1014381c], ebx
jmp 0x10087220
mov esi, dword [esp + 0x14]
mov dword [0x1014381c], ebx
jmp 0x10087220
mov ebx, dword [0x1014381c]
mov eax, dword [ebx]
movaps xmm0, xmm2
mov ecx, ebx
movss dword [esp + 0x14], xmm0
mov eax, dword [eax + 0x34]
call eax
test eax, eax
je 0x100872e4
mov eax, dword [0x1013e710]
add eax, 0xffffff9d
xor eax, 0xd2ca0fcd
mov ecx, dword [eax + esi]
mov eax, dword [0x1013e738]
add eax, 0xffffff93
xor eax, 0xd2ca0fd7
cmp dword [eax + esi], 0
jle 0x100872a0
cmp ecx, 0xb
je 0x1008727b
cmp ecx, 0x26
je 0x1008727b
cmp ecx, 9
je 0x1008727b
cmp ecx, 8
je 0x1008727b
cmp ecx, 0x27
je 0x1008727b
cmp ecx, 0x28
jne 0x100872a0
movss xmm2, dword [esp + 0x18]
movss xmm0, dword [0x100b3dc8]
movaps xmm1, xmm2
mulss xmm1, dword [0x100b3c58]
comiss xmm0, xmm1
seta cl
mov byte [esp + 0x12], cl
jmp 0x100872aa
mov cl, byte [esp + 0x12]
movss xmm2, dword [esp + 0x18]
mov al, byte [esp + 0x13]
movss xmm1, dword [esp + 0x1c]
test al, al
je 0x100872c5
movaps xmm0, xmm1
movss dword [esp + 0x14], xmm0
test cl, cl
je 0x100872ee
movaps xmm0, xmm2
mulss xmm0, dword [0x100b3ba0]
minss xmm0, dword [0x100b3c98]
mulss xmm0, xmm1
movss dword [esp + 0x14], xmm0
jmp 0x100872ee
movss xmm0, dword [esp + 0x14]
mov al, byte [esp + 0x13]
test al, al
je 0x10087307
cmp byte [esp + 0x12], 0
jne 0x10087307
mulss xmm0, dword [0x100b3c28]
movss dword [esp + 0x14], xmm0
mov eax, dword [0x1013e430]
mov ebx, dword [eax + 0x30]
jmp 0x1008734c
mov esi, dword [ebx + 0xc]
mov edi, 0x811c9dc5
xor ecx, ecx
nop dword [eax + eax]
inc ecx
cmp byte [ecx + esi], 0
jne 0x10087320
xor edx, edx
test ecx, ecx
je 0x10087349
nop dword [eax]
movsx eax, byte [edx + esi]
inc edx
xor eax, edi
imul edi, eax, 0x1000193
cmp edx, ecx
jb 0x10087330
cmp edi, 0x16cc57ac
je 0x10087350
mov ebx, dword [ebx + 4]
test ebx, ebx
jne 0x10087311
mov eax, dword [ebx]
mov ecx, ebx
mov eax, dword [eax + 0x30]
mov dword [esp + 0x1c], eax
call dword [esp + 0x1c]
mov eax, dword [0x1013e494]
mov ecx, dword [0x1013e6bc]
movss xmm6, dword [esp + 0x18]
add ecx, 0xffffffb2
mulss xmm6, dword [0x100b3c1c]
xor ecx, 0xd2ca0fb8
movss xmm1, dword [eax + 0x20]
mov eax, dword [0x100bf4c8]
movss xmm0, dword [esp + 0x20]
comiss xmm0, xmm6
fstp dword [esp + 0x1c]
mulss xmm1, dword [esp + 0x1c]
mulss xmm1, dword [esp + 0x14]
mulss xmm1, dword [ecx + eax]
movss dword [esp + 0x14], xmm1
jbe 0x10087491
movss xmm1, dword [esp + 0x24]
lea edx, [esp + 0x30]
mulss xmm1, dword [0x100b3e68]
push ecx
lea ecx, [esp + 0x40]
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], 0
movss dword [esp + 0x40], xmm1
movss xmm1, dword [esp + 0x2c]
mulss xmm1, dword [0x100b3e68]
mov dword [esp + 0x48], 0x80000000
movss dword [esp + 0x44], xmm1
call fcn.100859b0
movss xmm0, dword [esp + 0x34]
add esp, 4
mulss xmm0, dword [0x100b3bb8]
call fcn.1001a330
movss dword [esp + 0x1c], xmm0
movss xmm0, dword [0x100bfba4]
subss xmm0, dword [esp + 0x34]
mulss xmm0, dword [0x100b3bb8]
movss dword [esp + 0x20], xmm0
call fcn.1001a330
mulss xmm0, dword [esp + 0x1c]
mulss xmm0, dword [esp + 0x14]
movss dword [esp + 0x18], xmm0
movss xmm0, dword [esp + 0x20]
call fcn.1001a340
mov eax, dword [0x100bfb74]
mulss xmm0, dword [esp + 0x1c]
movss xmm1, dword [esp + 0x18]
movss dword [eax + 0x24], xmm1
mulss xmm0, dword [esp + 0x14]
mov eax, dword [0x100bfb74]
movss dword [eax + 0x28], xmm0
mov byte [0x1013d844], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [0x100bfb74]
test eax, eax
je 0x10087572
cmp byte [0x100bf4cc], 0
je 0x10087572
or dword [eax + 0x30], 0x20000
mov ecx, dword [0x100bfb74]
movss xmm5, dword [ecx + 0x28]
movss xmm3, dword [ecx + 0x24]
movaps xmm0, xmm5
movaps xmm1, xmm3
mulss xmm0, xmm5
mulss xmm1, xmm3
addss xmm1, xmm0
xorps xmm0, xmm0
sqrtss xmm0, xmm1
comiss xmm0, xmm6
jbe 0x10087572
mov eax, dword [0x1013e620]
movss xmm4, dword [0x100b3c98]
add eax, 0xffffffd9
xor eax, 0xd2ca0f91
add eax, dword [0x100bf4c8]
divss xmm4, xmm0
movss xmm2, dword [eax + 4]
movss xmm0, dword [eax]
mulss xmm0, xmm0
mulss xmm2, xmm2
cvtps2pd xmm1, xmm6
addss xmm0, xmm2
addsd xmm1, qword [0x100b3cd0]
call fcn.1001a350
cvtss2sd xmm0, xmm0
comisd xmm0, xmm1
jb 0x10087553
mov dword [ecx + 0x24], 0
mov eax, dword [0x100bfb74]
mov dword [eax + 0x28], 0
mov byte [0x1013d844], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mulss xmm3, xmm4
mulss xmm4, xmm5
mulss xmm3, xmm6
mulss xmm4, xmm6
movss dword [ecx + 0x24], xmm3
mov eax, dword [0x100bfb74]
movss dword [eax + 0x28], xmm4
mov byte [0x1013d844], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret