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

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1022f501
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x1f0
mov eax, dword [0x102d2084]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x1fc], edx
mov eax, ecx
mov dword [ebp - 0x1f8], eax
lea ecx, [eax + 8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x28]
call eax
imul eax, eax, 0xef30
lea edi, [eax + 0x107efae0]
mov eax, dword [0x10bbb620]
add eax, 0x91761abb
mov dword [ebp - 0x1f4], edi
xor eax, 0xfd410b50
cmp dword [eax + 0x13c], 0
je 0x101691b2
mov ecx, dword [eax + 0x134]
mov dword [ebp - 0x1ec], ecx
test ecx, ecx
je 0x101691b2
mov eax, dword [0x1036f68c]
test al, 1
jne 0x10168aa3
or eax, 1
mov dword [0x1036f68c], eax
mov dword [ebp - 4], 0
mov eax, dword [0x1036cbb0]
mov dword [ebp - 0x1d8], eax
cmp eax, dword [0x1036cbb4]
je 0x10168985
nop word [eax + eax]
mov ecx, dword [eax]
mov dword [ebp - 0x1e0], ecx
test ecx, ecx
je 0x10168974
mov esi, dword [ecx + 0xc]
mov eax, 0x811c9dc5
xor ecx, ecx
inc ecx
cmp byte [ecx + esi], 0
jne 0x10168936
xor edx, edx
test ecx, ecx
je 0x1016896e
mov edi, eax
movsx eax, byte [edx + esi]
inc edx
xor eax, edi
imul edi, eax, 0x1000193
cmp edx, ecx
jb 0x10168945
mov dword [ebp - 0x1d4], edi
cmp dword [ebp - 0x1d4], 0x4e9f1122
mov edi, dword [ebp - 0x1f4]
je 0x1016899e
mov eax, dword [ebp - 0x1d8]
add eax, 4
mov dword [ebp - 0x1d8], eax
cmp eax, dword [0x1036cbb4]
jne 0x10168920
mov ecx, dword [ebp - 0x1ec]
xor eax, eax
mov dword [0x1036f690], eax
mov dword [ebp - 4], 0xffffffff
jmp 0x10168aa8
mov eax, dword [ebp - 0x1e0]
xor edx, edx
mov dword [ebp - 0x1d4], edx
mov dword [ebp - 0x1e4], edx
cmp dword [eax + 4], edx
jle 0x10168a6a
xor ecx, ecx
mov dword [ebp - 0x1e8], ecx
mov esi, dword [eax]
add esi, ecx
mov dword [ebp - 0x1f0], esi
mov ecx, dword [esi + 0x28]
test ecx, ecx
je 0x101689f8
cmp dword [ecx + 4], 0
jle 0x101689f8
push 0
mov edx, 0x1c93bcf0
call fcn.10138e60
add esp, 4
test eax, eax
je 0x101689f8
mov ecx, dword [esi + 0x2c]
add ecx, eax
add dword [ebp - 0x1d4], ecx
mov esi, dword [esi]
mov eax, 0x811c9dc5
xor ecx, ecx
inc ecx
cmp byte [ecx + esi], 0
jne 0x10168a01
xor edx, edx
test ecx, ecx
je 0x10168a39
mov edi, eax
movsx eax, byte [edx + esi]
inc edx
xor eax, edi
imul edi, eax, 0x1000193
cmp edx, ecx
jb 0x10168a10
mov dword [ebp - 0x1d8], edi
cmp dword [ebp - 0x1d8], 0x1c93bcf0
mov edi, dword [ebp - 0x1f4]
je 0x10168a80
mov edx, dword [ebp - 0x1e4]
mov eax, dword [ebp - 0x1e0]
inc edx
mov ecx, dword [ebp - 0x1e8]
add ecx, 0x3c
mov dword [ebp - 0x1e4], edx
mov dword [ebp - 0x1e8], ecx
cmp edx, dword [eax + 4]
jl 0x101689c3
mov edx, dword [ebp - 0x1d4]
mov ecx, dword [ebp - 0x1ec]
mov eax, edx
mov dword [0x1036f690], eax
mov dword [ebp - 4], 0xffffffff
jmp 0x10168aa8
mov eax, dword [ebp - 0x1f0]
mov ecx, dword [ebp - 0x1ec]
mov eax, dword [eax + 0x2c]
add eax, dword [ebp - 0x1d4]
mov dword [0x1036f690], eax
mov dword [ebp - 4], 0xffffffff
jmp 0x10168aa8
mov eax, dword [0x1036f690]
mov eax, dword [ecx + eax]
mov dword [ebp - 0x1dc], eax
mov eax, dword [0x10370fac]
test al, 1
jne 0x10168c63
or eax, 1
mov dword [0x10370fac], eax
mov dword [ebp - 4], 1
mov eax, dword [0x1036cbb0]
mov dword [ebp - 0x1d4], eax
cmp eax, dword [0x1036cbb4]
je 0x10168b45
mov ecx, dword [eax]
mov dword [ebp - 0x1e4], ecx
test ecx, ecx
je 0x10168b34
mov esi, dword [ecx + 0xc]
mov eax, 0x811c9dc5
xor ecx, ecx
inc ecx
cmp byte [ecx + esi], 0
jne 0x10168af6
xor edx, edx
test ecx, ecx
je 0x10168b2e
mov edi, eax
movsx eax, byte [edx + esi]
inc edx
xor eax, edi
imul edi, eax, 0x1000193
cmp edx, ecx
jb 0x10168b05
mov dword [ebp - 0x1d8], edi
cmp dword [ebp - 0x1d8], 0x72e242a1
mov edi, dword [ebp - 0x1f4]
je 0x10168b5e
mov eax, dword [ebp - 0x1d4]
add eax, 4
mov dword [ebp - 0x1d4], eax
cmp eax, dword [0x1036cbb4]
jne 0x10168ae0
mov ecx, dword [ebp - 0x1ec]
xor eax, eax
mov dword [0x10370f6c], eax
mov dword [ebp - 4], 0xffffffff
jmp 0x10168c68
mov eax, dword [ebp - 0x1e4]
xor edx, edx
mov dword [ebp - 0x1d4], edx
mov dword [ebp - 0x1e0], edx
cmp dword [eax + 4], edx
jle 0x10168c2a
xor ecx, ecx
mov dword [ebp - 0x1e8], ecx
mov esi, dword [eax]
add esi, ecx
mov dword [ebp - 0x1f0], esi
mov ecx, dword [esi + 0x28]
test ecx, ecx
je 0x10168bb8
cmp dword [ecx + 4], 0
jle 0x10168bb8
push 0
mov edx, 0x84cdad2
call fcn.10138e60
add esp, 4
test eax, eax
je 0x10168bb8
mov ecx, dword [esi + 0x2c]
add ecx, eax
add dword [ebp - 0x1d4], ecx
mov esi, dword [esi]
mov eax, 0x811c9dc5
xor ecx, ecx
inc ecx
cmp byte [ecx + esi], 0
jne 0x10168bc1
xor edx, edx
test ecx, ecx
je 0x10168bf9
mov edi, eax
movsx eax, byte [edx + esi]
inc edx
xor eax, edi
imul edi, eax, 0x1000193
cmp edx, ecx
jb 0x10168bd0
mov dword [ebp - 0x1d8], edi
cmp dword [ebp - 0x1d8], 0x84cdad2
mov edi, dword [ebp - 0x1f4]
je 0x10168c40
mov edx, dword [ebp - 0x1e0]
mov eax, dword [ebp - 0x1e4]
inc edx
mov ecx, dword [ebp - 0x1e8]
add ecx, 0x3c
mov dword [ebp - 0x1e0], edx
mov dword [ebp - 0x1e8], ecx
cmp edx, dword [eax + 4]
jl 0x10168b83
mov edx, dword [ebp - 0x1d4]
mov ecx, dword [ebp - 0x1ec]
mov eax, edx
mov dword [0x10370f6c], eax
mov dword [ebp - 4], 0xffffffff
jmp 0x10168c68
mov eax, dword [ebp - 0x1f0]
mov ecx, dword [ebp - 0x1ec]
mov eax, dword [eax + 0x2c]
add eax, dword [ebp - 0x1d4]
mov dword [0x10370f6c], eax
mov dword [ebp - 4], 0xffffffff
jmp 0x10168c68
mov eax, dword [0x10370f6c]
cmp dword [ebp - 0x1dc], 2
je 0x10168c7b
cmp dword [ecx + eax], 0
jle 0x10168c7b
mov al, 1
jmp 0x10168c7d
xor al, al
test al, al
je 0x101691b2
push 0x158
lea eax, [ebp - 0x1d0]
push 0
push eax
call fcn.101f2d60
mov eax, dword [0x10bbb620]
add esp, 0xc
mov ecx, dword [ebp - 0x1f8]
add eax, 0x91761abb
xor eax, 0xfd410b50
add ecx, 8
mov esi, dword [eax + 0xac]
mov eax, dword [ecx]
mov eax, dword [eax + 0x28]
call eax
xor edx, edx
lea ecx, [ebp - 0x1d0]
test esi, esi
push ecx
cmovne edx, esi
mov ecx, esi
push eax
mov edx, dword [edx]
mov edx, dword [edx + 0x20]
call edx
cmp byte [ebp - 0x94], 0
jne 0x101691b2
cmp byte [0x10354c34], 0
je 0x101691b2
mov ecx, dword [ebp - 0x1f8]
cmp dword [ecx + 0x9960], 0
je 0x101691b2
mov eax, dword [0x10bbb630]
test eax, eax
je 0x10168d11
add eax, 2
mov eax, dword [eax]
cmp dword [ecx + eax + 4], 0
je 0x101691be
mov edx, dword [ebp - 0x1fc]
cmp dword [edx + 0x18], 2
jge 0x10168d46
mov eax, dword [edi + 8]
cmp eax, 3
jge 0x10168d3b
inc eax
mov dword [edi + 8], eax
mov eax, dword [edi + 0xc]
jmp 0x10168d5b
mov dword [edi + 0xc], 0
xor eax, eax
jmp 0x10168d5b
mov eax, dword [edi + 0xc]
cmp eax, 3
jge 0x10168d54
inc eax
mov dword [edi + 0xc], eax
jmp 0x10168d5b
mov dword [edi + 8], 0
cmp dword [edi + 8], eax
jle 0x10168db2
lea eax, [ebp - 0x2c]
mov byte [edi], 0
push eax
mov ecx, 0x103694d8
call fcn.10052a70
add edi, 0x10
lea eax, [ebp - 0x2c]
cmp edi, eax
je 0x10168da5
mov ecx, edi
call fcn.1002b860
movups xmm0, xmmword [ebp - 0x2c]
mov byte [ebp - 0x2c], 0
movups xmmword [edi], xmm0
movq xmm0, qword [ebp - 0x1c]
movq qword [edi + 0x10], xmm0
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0xf
lea ecx, [ebp - 0x2c]
call fcn.1002b860
jmp 0x101691be
mov ecx, dword [edi + 0x368]
and ecx, 0x80000007
jns 0x10168dc5
dec ecx
or ecx, 0xfffffff8
inc ecx
mov eax, dword [edx + 0x94]
xorps xmm3, xmm3
mov dword [edi + ecx*4 + 0x348], eax
xor ecx, ecx
mov eax, dword [edi + 0x368]
cmp eax, 9
lea edx, [eax + 1]
cmovl ecx, edx
mov edx, 7
mov dword [edi + 0x368], ecx
lea ecx, [edi + 0x34c]
movss xmm2, dword [0x102baf60]
movss xmm1, dword [0x102ba8ac]
nop word [eax + eax]
movss xmm0, dword [ecx - 4]
subss xmm0, dword [ecx]
andps xmm0, xmm2
comiss xmm3, xmm0
jb 0x10168e41
mov eax, dword [edi + 0x370]
cmp eax, 3
jge 0x10168e35
inc eax
mov dword [edi + 0x370], eax
jmp 0x10168e64
mov dword [edi + 0x36c], 0
jmp 0x10168e64
comiss xmm0, xmm1
jb 0x10168e64
mov eax, dword [edi + 0x36c]
cmp eax, 3
jge 0x10168e5a
inc eax
mov dword [edi + 0x36c], eax
jmp 0x10168e64
mov dword [edi + 0x370], 0
add ecx, 4
sub edx, 1
jne 0x10168e10
mov esi, dword [edi + 0x370]
cmp dword [edi + 0x36c], esi
mov esi, dword [0x103bb5a8]
mov ecx, dword [ebp - 0x1f8]
setg al
mov byte [edi + 0x338], al
jle 0x101690b5
mov eax, dword [ecx + 8]
add ecx, 8
add esi, 0xbb4d19db
xor esi, 0xa81efdf5
mov eax, dword [eax + 0x28]
call eax
cmp dword [esi + eax*4 + 0x63d6c], 0
jle 0x10168ebb
xor eax, eax
jmp 0x10169060
movss xmm1, dword [edi + 0x364]
movss xmm4, dword [0x102baba0]
comiss xmm4, xmm1
movss xmm0, dword [0x102baa78]
jbe 0x10168ee9
nop dword [eax + eax]
addss xmm1, xmm0
comiss xmm4, xmm1
ja 0x10168ee0
movss xmm3, dword [0x102baa28]
comiss xmm1, xmm3
jbe 0x10168eff
subss xmm1, xmm0
comiss xmm1, xmm3
ja 0x10168ef6
movss xmm2, dword [edi + 0x360]
comiss xmm4, xmm2
jbe 0x10168f19
nop dword [eax]
addss xmm2, xmm0
comiss xmm4, xmm2
ja 0x10168f10
comiss xmm2, xmm3
jbe 0x10168f29
nop
subss xmm2, xmm0
comiss xmm2, xmm3
ja 0x10168f20
mulss xmm2, dword [0x102ba678]
mulss xmm1, dword [0x102ba678]
movaps xmm0, xmm2
movss dword [ebp - 0x1f0], xmm2
movss dword [ebp - 0x1ec], xmm1
call fcn.1002f920
movss dword [ebp - 0x1dc], xmm0
movss xmm0, dword [ebp - 0x1ec]
call fcn.1002f920
movss xmm1, dword [ebp - 0x1dc]
addss xmm1, xmm0
movss xmm0, dword [ebp - 0x1f0]
mulss xmm1, dword [0x102ba73c]
movss dword [ebp - 0x1e0], xmm1
call fcn.1002f910
movss dword [ebp - 0x1dc], xmm0
movss xmm0, dword [ebp - 0x1ec]
call fcn.1002f910
movss xmm1, dword [ebp - 0x1dc]
fld dword [ebp - 0x1e0]
addss xmm1, xmm0
movss xmm4, dword [0x102baba0]
movss xmm2, dword [0x102baa78]
mulss xmm1, dword [0x102ba73c]
movss dword [ebp - 0x1dc], xmm1
fld dword [ebp - 0x1dc]
fpatan
fstp dword [ebp - 0x1dc]
movss xmm1, dword [ebp - 0x1dc]
mulss xmm1, dword [0x102ba980]
comiss xmm4, xmm1
jbe 0x10169009
nop dword [eax]
addss xmm1, xmm2
comiss xmm4, xmm1
ja 0x10169000
movss xmm3, dword [0x102baa28]
comiss xmm1, xmm3
jbe 0x1016901f
subss xmm1, xmm2
comiss xmm1, xmm3
ja 0x10169016
mov eax, dword [ebp - 0x1fc]
movss xmm0, dword [eax + 0x94]
subss xmm0, xmm1
comiss xmm4, xmm0
jbe 0x1016903f
addss xmm0, xmm2
comiss xmm4, xmm0
ja 0x10169036
comiss xmm0, xmm3
jbe 0x1016904d
subss xmm0, xmm2
comiss xmm0, xmm3
ja 0x10169044
xor eax, eax
comiss xmm0, dword [0x102ba5ec]
setbe al
lea eax, [eax*2 - 1]
mov dword [edi + 4], eax
mov ecx, 0x103694a8
lea eax, [ebp - 0x44]
mov byte [edi], 1
push eax
call fcn.10042c20
add edi, 0x10
lea eax, [ebp - 0x44]
cmp edi, eax
je 0x101690a8
mov ecx, edi
call fcn.1002b860
movups xmm0, xmmword [ebp - 0x44]
mov byte [ebp - 0x44], 0
movups xmmword [edi], xmm0
movq xmm0, qword [ebp - 0x34]
movq qword [edi + 0x10], xmm0
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x30], 0xf
lea ecx, [ebp - 0x44]
call fcn.1002b860
jmp 0x101691be
mov eax, dword [ecx + 8]
add ecx, 8
add esi, 0xbb4d19db
xor esi, 0xa81efdf5
mov eax, dword [eax + 0x28]
call eax
lea eax, [esi + eax*4]
mov eax, dword [eax + 0x63d6c]
test eax, eax
jle 0x1016915c
cdq
mov ecx, 3
idiv ecx
sub edx, 0
je 0x10169106
sub edx, 1
je 0x101690fd
sub edx, 1
jne 0x1016910d
mov dword [edi + 4], 1
jmp 0x1016910d
mov dword [edi + 4], 0xffffffff
jmp 0x1016910d
mov dword [edi + 4], 0
lea eax, [ebp - 0x5c]
mov byte [edi], 1
push eax
mov ecx, 0x103694f0
call fcn.10052db0
add edi, 0x10
lea eax, [ebp - 0x5c]
cmp edi, eax
je 0x10169152
mov ecx, edi
call fcn.1002b860
movups xmm0, xmmword [ebp - 0x5c]
mov byte [ebp - 0x5c], 0
movups xmmword [edi], xmm0
movq xmm0, qword [ebp - 0x4c]
movq qword [edi + 0x10], xmm0
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x48], 0xf
lea ecx, [ebp - 0x5c]
call fcn.1002b860
jmp 0x101691be
lea eax, [ebp - 0x74]
mov dword [edi + 4], 0
push eax
mov ecx, 0x103694c0
call fcn.10042c20
lea esi, [edi + 0x10]
lea eax, [ebp - 0x74]
cmp esi, eax
je 0x101691a5
mov ecx, esi
call fcn.1002b860
movups xmm0, xmmword [ebp - 0x74]
mov byte [ebp - 0x74], 0
movups xmmword [esi], xmm0
movq xmm0, qword [ebp - 0x64]
movq qword [esi + 0x10], xmm0
mov dword [ebp - 0x64], 0
mov dword [ebp - 0x60], 0xf
lea ecx, [ebp - 0x74]
call fcn.1002b860
mov byte [edi], 1
jmp 0x101691be
cmp byte [edi], 0
je 0x101691be
mov ecx, edi
call fcn.10168750
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.101f065f
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret