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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1018ebb5
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x3c
push esi
push edi
mov edi, ecx
mov dword [ebp - 0x10], edi
mov edx, dword [ebp + 0xc]
movzx eax, dl
xor eax, 0x811c9dc5
mov dword [ebp - 4], 0
imul ecx, eax, 0x1000193
mov eax, edx
sar eax, 8
movzx eax, al
xor ecx, eax
mov eax, edx
imul ecx, ecx, 0x1000193
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 - 0x18]
push eax
call fcn.10001f10
mov eax, dword [eax + 4]
test eax, eax
jne 0x10002953
mov eax, dword [edi + 0x24]
cmp eax, dword [edi + 0x24]
jne 0x100029dc
cmp byte [ebp + 0x1c], 0
jne 0x100029dc
lea eax, [ebp + 0xc]
xor esi, esi
push eax
lea eax, [ebp - 0x18]
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 - 0x30], 0xffffffff
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x20], eax
lea eax, [ebp + 0xc]
push eax
lea eax, [ebp - 0x18]
mov byte [ebp - 0x32], 1
push eax
fstp dword [ebp - 0x1c]
mov dword [ebp - 0x2c], 0xffffffff
mov byte [ebp - 0x23], 1
call fcn.10002020
mov ecx, 8
lea esi, [ebp - 0x38]
mov edi, dword [eax]
add edi, 0xc
rep movsd dword es:[edi], dword [esi]
xor eax, eax
lea ecx, [ebp - 0x48]
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 dword [ebp - 0x28], eax
mov dword [ebp - 0x24], eax
lea eax, [ebp + 0x10]
push eax
call fcn.100030f0
mov eax, 0x10218410
mov dword [ebp - 0x28], 0x101a871c
or eax, 2
push 0x102248c0
push 0x10218414
mov dword [ebp - 0x24], eax
call fcn.101637e4
add esp, 8
mov esi, eax
mov edi, 0x811c
mov ecx, 1
inc ecx
cmp byte [ecx + esi], 0
jne 0x10002a38
xor edx, edx
test ecx, ecx
je 0x10002a56
movsx eax, byte [edx + esi]
inc edx
xor eax, edi
imul edi, eax, 0x1193
cmp edx, ecx
jb 0x10002a45
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], eax
mov edi, dword [ebp - 0x10]
lea eax, [ebp + 0xc]
push eax
lea eax, [ebp - 0x18]
mov byte [ebp - 4], 1
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], 2
sub eax, 1
je 0x10002a91
sub eax, 1
jne 0x10002a9e
push esi
jmp 0x10002a94
push dword [esi + 0x1c]
mov eax, dword [esi + 0x20]
mov eax, dword [eax]
call eax
add esp, 4
lea eax, [ebp - 0x48]
mov dword [esi + 0x24], 0
push eax
mov ecx, esi
call fcn.100047b0
mov eax, dword [ebp - 0x20]
mov dword [esi + 0x28], eax
mov eax, dword [ebp - 0x1c]
mov dword [esi + 0x2c], eax
mov eax, dword [ebp - 0x24]
and eax, 3
mov byte [ebp - 4], 3
sub eax, 1
je 0x10002ae2
sub eax, 1
jne 0x10002b00
mov eax, dword [ebp - 0x28]
lea ecx, [ebp - 0x48]
mov eax, dword [eax]
cmp eax, 0x10001a20
je 0x10002af1
push ecx
jmp 0x10002afb
mov eax, dword [ebp - 0x28]
mov eax, dword [eax]
cmp eax, 0x10001a20
jne 0x10002af8
mov ecx, dword [ebp - 0x2c]
call fcn.10004870
jmp 0x10002b00
push dword [ebp - 0x2c]
call eax
add esp, 4
lea eax, [ebp + 0xc]
mov byte [ebp - 4], 0
push eax
lea eax, [ebp - 0x18]
mov ecx, edi
push eax
call fcn.10002410
mov esi, dword [ebp + 8]
mov ecx, dword [eax]
add ecx, 0x10
mov dword [esi], ecx
lea ecx, [ebp + 0x10]
call fcn.10004870
mov ecx, dword [ebp - 0xc]
mov eax, esi
pop edi
pop esi
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 0x18