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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1018eb8d
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x40
push esi
push edi
mov edi, ecx
mov ecx, dword [ebp + 0xc]
movzx eax, cl
xor eax, 0x811c9dc5
mov dword [ebp - 0x10], edi
imul edx, eax, 0x1000193
mov eax, ecx
sar eax, 8
movzx eax, al
xor edx, eax
imul ecx, edx, 0x1000193
mov edx, dword [ebp + 0xc]
mov eax, edx
sar eax, 0x10
movzx eax, al
sar edx, 0x18
xor ecx, eax
movzx eax, dl
imul ecx, ecx, 0x1000193
xor ecx, eax
imul eax, ecx, 0x1000193
lea ecx, [edi + 0x20]
push eax
lea eax, [ebp + 0xc]
push eax
lea eax, [ebp - 0x1c]
push eax
call fcn.10001f10
mov eax, dword [eax + 4]
test eax, eax
jne 0x1000270f
mov eax, dword [edi + 0x24]
cmp eax, dword [edi + 0x24]
jne 0x10002798
cmp byte [ebp + 0x14], 0
jne 0x10002798
lea eax, [ebp + 0xc]
xor esi, esi
push eax
lea eax, [ebp - 0x1c]
push eax
lea ecx, [edi + 0x20]
call fcn.10002220
mov ecx, dword [eax]
mov eax, 0x6bca1af3
imul esi
add ecx, 0xc
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
push esi
call fcn.10001a80
fldz
lea ecx, [edi + 0x40]
xor eax, eax
mov dword [ebp - 0x34], 0xffffffff
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x24], eax
lea eax, [ebp + 0xc]
push eax
lea eax, [ebp - 0x1c]
mov byte [ebp - 0x36], 1
push eax
fstp dword [ebp - 0x20]
mov dword [ebp - 0x30], 0xffffffff
mov byte [ebp - 0x27], 1
call fcn.10002020
mov ecx, 8
lea esi, [ebp - 0x3c]
mov edi, dword [eax]
add edi, 0xc
rep movsd dword es:[edi], dword [esi]
xor eax, eax
mov dword [ebp - 0x28], 0x102183e0
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp + 0x10]
push 0x102248c0
push 0x102183e4
mov dword [ebp - 0x4c], eax
call fcn.101637e4
add esp, 8
mov esi, eax
mov edi, 0x811c
mov ecx, 1
lea ecx, [ecx]
inc ecx
cmp byte [ecx + esi], 0
jne 0x100027e0
xor edx, edx
test ecx, ecx
je 0x10002801
lea ecx, [ecx]
movsx eax, byte [edx + esi]
inc edx
xor eax, edi
imul edi, eax, 0x1193
cmp edx, ecx
jb 0x100027f0
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x20], eax
mov edi, dword [ebp - 0x10]
lea eax, [ebp + 0xc]
push eax
lea eax, [ebp - 0x1c]
mov dword [ebp - 4], 0
push eax
mov ecx, edi
call fcn.10002410
mov esi, dword [eax]
add esi, 0x10
mov eax, dword [esi + 0x24]
and eax, 3
mov byte [ebp - 4], 1
sub eax, 1
je 0x1000283f
sub eax, 1
jne 0x1000284c
push esi
jmp 0x10002842
push dword [esi + 0x1c]
mov eax, dword [esi + 0x20]
mov eax, dword [eax]
call eax
add esp, 4
lea eax, [ebp - 0x4c]
mov dword [esi + 0x24], 0
push eax
mov ecx, esi
call fcn.100047b0
mov eax, dword [ebp - 0x24]
mov dword [esi + 0x28], eax
mov eax, dword [ebp - 0x20]
mov dword [esi + 0x2c], eax
mov eax, dword [ebp - 0x28]
and eax, 3
mov dword [ebp - 4], 2
sub eax, 1
je 0x10002887
sub eax, 1
jne 0x10002894
lea ecx, [ebp - 0x4c]
push ecx
jmp 0x1000288a
push dword [ebp - 0x30]
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax]
call eax
add esp, 4
lea eax, [ebp + 0xc]
mov dword [ebp - 4], 0xffffffff
push eax
lea eax, [ebp - 0x14]
mov ecx, edi
push eax
call fcn.10002410
pop edi
pop esi
mov ecx, dword [eax]
mov eax, dword [ebp + 8]
add ecx, 0x10
mov dword [eax], ecx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 0x10