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

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x186c
call fcn.1009c510
mov eax, dword [0x100b9008]
xor eax, ebp
mov dword [ebp - 4], eax
mov ecx, dword [0x1011202c]
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
mov dword [ebp - 0x1848], eax
mov eax, dword [ecx]
push esi
push edi
xor esi, esi
mov dword [ebp - 0x182c], edx
mov eax, dword [eax + 0xc]
push edx
mov dword [ebp - 0x1828], esi
call eax
mov edi, eax
test edi, edi
je 0x100294f7
mov ecx, dword [edi]
mov edx, dword [ecx + 0x260]
mov ecx, edi
call edx
test al, al
je 0x100294f7
mov eax, dword [0x10112268]
add eax, 0xffffffcb
xor eax, 0x7e881213
cmp dword [eax + edi], esi
jne 0x100294f7
mov eax, dword [0x101121c8]
cmp byte [eax + edi], 0
jne 0x100294f7
mov edx, dword [0x1011223c]
mov eax, dword [0x100b92e0]
add edx, 0xffffffd6
xor edx, 0x7e881208
mov ecx, dword [edx + edi]
cmp ecx, dword [edx + eax]
jne 0x10028a35
mov ecx, dword [0x10112100]
mov eax, dword [ecx]
mov eax, dword [eax + 0x34]
call eax
test eax, eax
je 0x100294f7
imul eax, dword [ebp - 0x182c], 0x10a0
lea edx, [eax + 0x100cd584]
mov dword [ebp - 0x1840], edx
test edx, edx
je 0x100294f7
mov edi, dword [edx + 0x18]
test edi, edi
je 0x100294f7
cmp edi, 2
jae 0x10028a7a
lea ecx, [edx + 8]
call fcn.10020fa0
mov eax, dword [eax]
cmp byte [eax + 0x6b4], 0
jne 0x100294f7
cmp edi, 3
jb 0x100294f7
mov ecx, dword [0x10112028]
mov eax, dword [ecx]
mov eax, dword [eax + 0x138]
call eax
test eax, eax
je 0x100294f7
mov eax, dword [0x10112024]
mov eax, dword [eax + 0x30]
mov dword [ebp - 0x1808], eax
test eax, eax
je 0x10028b02
nop dword [eax]
mov eax, dword [eax + 0xc]
mov edi, 0x811c9dc5
mov dword [ebp - 0x182c], eax
xor ecx, ecx
inc ecx
cmp byte [ecx + eax], 0
jne 0x10028ac0
xor edx, edx
test ecx, ecx
je 0x10028aef
nop dword [eax]
movsx eax, byte [edx + eax]
inc edx
xor eax, edi
imul edi, eax, 0x1000193
mov eax, dword [ebp - 0x182c]
cmp edx, ecx
jb 0x10028ad0
cmp edi, 0x8c8dc452
je 0x10028b4d
mov eax, dword [ebp - 0x1808]
mov eax, dword [eax + 4]
mov dword [ebp - 0x1808], eax
test eax, eax
jne 0x10028ab0
xor ecx, ecx
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
call eax
mov edx, dword [ebp - 0x1840]
fstp st(0)
mov dword [ebp - 0x1838], esi
mov edi, dword [edx + 8]
mov ecx, dword [edx + 0x14]
mov dword [ebp - 0x1844], edi
mov dword [ebp - 0x183c], edi
mov eax, dword [edx + 0x14]
add eax, dword [edx + 0x18]
mov dword [ebp - 0x1834], ecx
mov dword [ebp - 0x182c], ecx
cmp ecx, eax
je 0x100294f7
test edi, edi
jne 0x10028b55
xor eax, eax
jmp 0x10028b57
mov ecx, dword [ebp - 0x1808]
jmp 0x10028b04
mov eax, dword [edi]
mov edi, ecx
mov edx, ecx
mov ecx, dword [eax + 8]
and edx, 1
mov eax, dword [eax + 4]
dec ecx
shr edi, 1
and ecx, edi
shl edx, 3
mov dword [ebp - 0x180c], edi
mov dword [ebp - 0x1830], edx
mov eax, dword [eax + ecx*4]
mov ecx, dword [0x10112028]
mov edi, dword [edx + eax]
mov eax, dword [ecx]
mov eax, dword [eax + 0x138]
call eax
test eax, eax
je 0x100291fe
cmp dword [0x100b92e0], 0
je 0x100291fe
cmp byte [edi + 0x6a8], 0
xorps xmm5, xmm5
je 0x10029201
mov eax, dword [edi + 0xc]
cmp eax, 0x11
jg 0x10029201
cmp byte [edi + 0x10], 0
jne 0x10029201
comiss xmm5, dword [edi + 4]
jb 0x10029201
cmp eax, 0xfffffffe
jl 0x10029201
mov ecx, dword [0x10112028]
mov eax, dword [ecx]
mov eax, dword [eax + 0x138]
call eax
mov dword [ebp - 0x1820], eax
test eax, eax
je 0x10028d1c
cmp dword [0x100b92e0], 0
je 0x10028d1c
mov ecx, dword [eax]
push 0
mov ecx, dword [ecx + 0x24]
mov dword [ebp - 0x1824], ecx
mov ecx, eax
call dword [ebp - 0x1824]
mov ecx, dword [ebp - 0x1820]
fstp dword [ebp - 0x1808]
push 1
mov eax, dword [ecx]
mov eax, dword [eax + 0x24]
mov dword [ebp - 0x1820], eax
call dword [ebp - 0x1820]
mov ecx, dword [0x101120d0]
fstp dword [ebp - 0x1820]
movss xmm0, dword [ebp - 0x1820]
addss xmm0, dword [ebp - 0x1808]
mov eax, dword [ecx]
addss xmm0, dword [0x100b99c4]
mov eax, dword [eax + 0x30]
mov dword [ebp - 0x1820], eax
movss dword [ebp - 0x181c], xmm0
movss dword [ebp - 0x1808], xmm0
call dword [ebp - 0x1820]
movss xmm0, dword [ebp - 0x181c]
xorps xmm5, xmm5
fstp dword [ebp - 0x1824]
comiss xmm0, dword [ebp - 0x1824]
mov dword [ebp - 0x1820], 0
jbe 0x10028cac
lea eax, [ebp - 0x1824]
jmp 0x10028cbe
comiss xmm0, xmm5
lea eax, [ebp - 0x1820]
lea ecx, [ebp - 0x1808]
cmovae eax, ecx
movss xmm1, dword [eax]
mov eax, dword [0x10112268]
mov ecx, dword [0x100b92e0]
add eax, 0xffffffcb
xor eax, 0x7e881213
cmp dword [eax + ecx], 0
jne 0x10028cfc
mov eax, dword [0x10112290]
add eax, 0xffffffc1
xor eax, 0x7e88121d
movd xmm0, dword [eax + ecx]
mov eax, dword [0x10112084]
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [eax + 0x20]
jmp 0x10028d06
mov eax, dword [0x10112084]
movss xmm0, dword [eax + 0x10]
subss xmm0, dword [edi + 0x14]
subss xmm1, xmm0
comiss xmm1, dword [0x100ad6c8]
ja 0x10029201
mov ecx, dword [0x10112028]
mov eax, dword [ecx]
mov eax, dword [eax + 0x138]
call eax
mov dword [ebp - 0x1820], eax
test eax, eax
je 0x100291fe
cmp dword [0x100b92e0], 0
je 0x100291fe
mov ecx, dword [eax]
push 0
mov ecx, dword [ecx + 0x24]
mov dword [ebp - 0x181c], ecx
mov ecx, eax
call dword [ebp - 0x181c]
mov ecx, dword [ebp - 0x1820]
fstp dword [ebp - 0x1824]
push 1
mov eax, dword [ecx]
mov eax, dword [eax + 0x24]
mov dword [ebp - 0x181c], eax
call dword [ebp - 0x181c]
mov ecx, dword [0x101120d0]
fstp dword [ebp - 0x181c]
movss xmm0, dword [ebp - 0x181c]
addss xmm0, dword [ebp - 0x1824]
mov eax, dword [ecx]
addss xmm0, dword [0x100b99c4]
mov eax, dword [eax + 0x30]
mov dword [ebp - 0x181c], eax
movss dword [ebp - 0x1820], xmm0
movss dword [ebp - 0x1808], xmm0
call dword [ebp - 0x181c]
movss xmm0, dword [ebp - 0x1820]
xorps xmm5, xmm5
fstp dword [ebp - 0x1824]
comiss xmm0, dword [ebp - 0x1824]
mov dword [ebp - 0x181c], 0
jbe 0x10028dec
lea eax, [ebp - 0x1824]
jmp 0x10028dfe
comiss xmm0, xmm5
lea eax, [ebp - 0x181c]
lea ecx, [ebp - 0x1808]
cmovae eax, ecx
movss xmm1, dword [eax]
mov eax, dword [0x10112268]
mov ecx, dword [0x100b92e0]
add eax, 0xffffffcb
xor eax, 0x7e881213
cmp dword [eax + ecx], 0
jne 0x10028e3c
mov eax, dword [0x10112290]
add eax, 0xffffffc1
xor eax, 0x7e88121d
movd xmm0, dword [eax + ecx]
mov eax, dword [0x10112084]
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [eax + 0x20]
jmp 0x10028e46
mov eax, dword [0x10112084]
movss xmm0, dword [eax + 0x10]
subss xmm0, dword [edi + 0x14]
subss xmm1, xmm0
movss xmm0, dword [0x100ad958]
comiss xmm0, xmm1
ja 0x10029201
push 1
lea eax, [ebp - 0x1818]
or esi, 1
push eax
lea ecx, [ebp - 0x183c]
call fcn.10021b00
mov edx, dword [ebp - 0x1840]
or esi, 2
mov dword [ebp - 0x1828], esi
mov ecx, dword [edx + 0x14]
add ecx, dword [edx + 0x18]
cmp dword [eax + 8], ecx
je 0x10029201
push 1
lea eax, [ebp - 0x1854]
or esi, 4
push eax
lea ecx, [ebp - 0x183c]
mov dword [ebp - 0x1828], esi
call fcn.10021b00
mov edi, dword [eax]
test edi, edi
je 0x10028eba
mov edi, dword [edi]
mov edx, dword [eax + 8]
mov eax, edx
mov ecx, dword [edi + 8]
and edx, 1
shr eax, 1
dec ecx
and ecx, eax
mov eax, dword [edi + 4]
mov eax, dword [eax + ecx*4]
mov ecx, dword [0x10112028]
mov edi, dword [eax + edx*8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x138]
call eax
test eax, eax
je 0x100291b3
cmp dword [0x100b92e0], 0
je 0x100291b3
cmp byte [edi + 0x6a8], 0
xorps xmm5, xmm5
je 0x100291b6
mov eax, dword [edi + 0xc]
cmp eax, 0x11
jg 0x100291b6
cmp byte [edi + 0x10], 0
jne 0x100291b6
comiss xmm5, dword [edi + 4]
jb 0x100291b6
cmp eax, 0xfffffffe
jl 0x100291b6
mov ecx, dword [0x10112028]
mov eax, dword [ecx]
mov eax, dword [eax + 0x138]
call eax
mov dword [ebp - 0x1820], eax
test eax, eax
je 0x10029071
cmp dword [0x100b92e0], 0
je 0x10029071
mov ecx, dword [eax]
push 0
mov ecx, dword [ecx + 0x24]
mov dword [ebp - 0x181c], ecx
mov ecx, eax
call dword [ebp - 0x181c]
mov ecx, dword [ebp - 0x1820]
fstp dword [ebp - 0x1824]
push 1
mov eax, dword [ecx]
mov eax, dword [eax + 0x24]
mov dword [ebp - 0x181c], eax
call dword [ebp - 0x181c]
mov ecx, dword [0x101120d0]
fstp dword [ebp - 0x181c]
movss xmm0, dword [ebp - 0x181c]
addss xmm0, dword [ebp - 0x1824]
mov eax, dword [ecx]
addss xmm0, dword [0x100b99c4]
mov eax, dword [eax + 0x30]
mov dword [ebp - 0x181c], eax
movss dword [ebp - 0x1820], xmm0
movss dword [ebp - 0x1808], xmm0
call dword [ebp - 0x181c]
movss xmm0, dword [ebp - 0x1820]
xorps xmm5, xmm5
fstp dword [ebp - 0x1824]
comiss xmm0, dword [ebp - 0x1824]
mov dword [ebp - 0x181c], 0
jbe 0x10029001
lea eax, [ebp - 0x1824]
jmp 0x10029013
comiss xmm0, xmm5
lea eax, [ebp - 0x181c]
lea ecx, [ebp - 0x1808]
cmovae eax, ecx
movss xmm1, dword [eax]
mov eax, dword [0x10112268]
mov ecx, dword [0x100b92e0]
add eax, 0xffffffcb
xor eax, 0x7e881213
cmp dword [eax + ecx], 0
jne 0x10029051
mov eax, dword [0x10112290]
add eax, 0xffffffc1
xor eax, 0x7e88121d
movd xmm0, dword [eax + ecx]
mov eax, dword [0x10112084]
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [eax + 0x20]
jmp 0x1002905b
mov eax, dword [0x10112084]
movss xmm0, dword [eax + 0x10]
subss xmm0, dword [edi + 0x14]
subss xmm1, xmm0
comiss xmm1, dword [0x100ad6c8]
ja 0x100291b6
mov ecx, dword [0x10112028]
mov eax, dword [ecx]
mov eax, dword [eax + 0x138]
call eax
mov dword [ebp - 0x1820], eax
test eax, eax
je 0x100291b3
cmp dword [0x100b92e0], 0
je 0x100291b3
mov ecx, dword [eax]
push 0
mov ecx, dword [ecx + 0x24]
mov dword [ebp - 0x181c], ecx
mov ecx, eax
call dword [ebp - 0x181c]
mov ecx, dword [ebp - 0x1820]
fstp dword [ebp - 0x1824]
push 1
mov eax, dword [ecx]
mov eax, dword [eax + 0x24]
mov dword [ebp - 0x181c], eax
call dword [ebp - 0x181c]
mov ecx, dword [0x101120d0]
fstp dword [ebp - 0x181c]
movss xmm0, dword [ebp - 0x181c]
addss xmm0, dword [ebp - 0x1824]
mov eax, dword [ecx]
addss xmm0, dword [0x100b99c4]
mov eax, dword [eax + 0x30]
mov dword [ebp - 0x181c], eax
movss dword [ebp - 0x1820], xmm0
movss dword [ebp - 0x1808], xmm0
call dword [ebp - 0x181c]
movss xmm0, dword [ebp - 0x1820]
xorps xmm5, xmm5
fstp dword [ebp - 0x1824]
comiss xmm0, dword [ebp - 0x1824]
mov dword [ebp - 0x181c], 0
jbe 0x10029141
lea eax, [ebp - 0x1824]
jmp 0x10029153
comiss xmm0, xmm5
lea eax, [ebp - 0x181c]
lea ecx, [ebp - 0x1808]
cmovae eax, ecx
movss xmm1, dword [eax]
mov eax, dword [0x10112268]
mov ecx, dword [0x100b92e0]
add eax, 0xffffffcb
xor eax, 0x7e881213
cmp dword [eax + ecx], 0
jne 0x10029191
mov eax, dword [0x10112290]
add eax, 0xffffffc1
xor eax, 0x7e88121d
movd xmm0, dword [eax + ecx]
mov eax, dword [0x10112084]
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [eax + 0x20]
jmp 0x1002919b
mov eax, dword [0x10112084]
movss xmm0, dword [eax + 0x10]
subss xmm0, dword [edi + 0x14]
subss xmm1, xmm0
movss xmm0, dword [0x100ad958]
comiss xmm0, xmm1
jbe 0x10029201
jmp 0x100291b6
xorps xmm5, xmm5
push 1
lea eax, [ebp - 0x1860]
or esi, 8
push eax
lea ecx, [ebp - 0x183c]
mov dword [ebp - 0x1828], esi
call fcn.10021b00
mov esi, dword [eax]
test esi, esi
je 0x100291db
mov esi, dword [esi]
mov edx, dword [eax + 8]
mov eax, edx
mov ecx, dword [esi + 8]
and edx, 1
shr eax, 1
dec ecx
and ecx, eax
mov eax, dword [esi + 4]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax + edx*8]
cmp byte [eax + 0x10], 0
jne 0x10029201
mov cl, 1
jmp 0x10029203
xorps xmm5, xmm5
xor cl, cl
mov eax, dword [ebp - 0x1828]
test al, 8
je 0x10029216
and eax, 0xfffffff7
mov dword [ebp - 0x1828], eax
test al, 4
je 0x10029223
and eax, 0xfffffffb
mov dword [ebp - 0x1828], eax
test al, 2
je 0x10029230
and eax, 0xfffffffd
mov dword [ebp - 0x1828], eax
test al, 1
je 0x1002923d
and eax, 0xfffffffe
mov dword [ebp - 0x1828], eax
test cl, cl
je 0x1002935f
push 1
lea eax, [ebp - 0x186c]
push eax
lea ecx, [ebp - 0x183c]
call fcn.10021b00
mov esi, dword [eax]
test esi, esi
je 0x10029261
mov esi, dword [esi]
mov edx, dword [eax + 8]
mov eax, edx
mov ecx, dword [esi + 8]
and edx, 1
mov edi, dword [ebp - 0x1844]
dec ecx
shr eax, 1
and ecx, eax
mov eax, dword [esi + 4]
mov eax, dword [eax + ecx*4]
mov esi, dword [eax + edx*8]
mov dword [ebp - 0x181c], esi
test edi, edi
jne 0x1002928e
xor eax, eax
jmp 0x10029290
mov eax, dword [edi]
mov ecx, dword [eax + 8]
mov eax, dword [eax + 4]
dec ecx
and ecx, dword [ebp - 0x180c]
mov eax, dword [eax + ecx*4]
mov ecx, dword [ebp - 0x1830]
mov ecx, dword [ecx + eax]
test esi, esi
je 0x10029365
test ecx, ecx
je 0x10029365
mov eax, dword [ecx + 0x2c]
movq xmm0, qword [ecx + 0x24]
movss xmm4, dword [ecx + 0x14]
movss xmm6, dword [esi + 0x14]
movss xmm7, dword [ecx + 0x724]
mov dword [ebp - 0x1834], eax
mov eax, dword [0x10112084]
movq qword [ebp - 0x183c], xmm0
movaps xmm0, xmm4
subss xmm0, xmm6
movss xmm2, dword [0x100ad748]
movss xmm3, dword [eax + 0x10]
movaps xmm1, xmm3
subss xmm1, xmm7
divss xmm1, xmm0
movaps xmm0, xmm2
subss xmm0, xmm1
comiss xmm5, xmm0
ja 0x10029316
comiss xmm0, xmm2
jbe 0x10029326
movss dword [ecx + 0x724], xmm3
movaps xmm7, xmm3
movss xmm6, dword [esi + 0x14]
subss xmm3, xmm7
mov dword [ebp - 0x1820], 0x3f800000
subss xmm4, xmm6
mov dword [ebp - 0x1830], 0
movaps xmm0, xmm2
divss xmm3, xmm4
subss xmm0, xmm3
comiss xmm0, xmm2
movss dword [ebp - 0x180c], xmm0
jbe 0x1002937d
movaps xmm1, xmm2
jmp 0x10029393
mov edi, dword [ebp - 0x1844]
mov ecx, dword [ebp - 0x182c]
mov esi, dword [ebp - 0x1828]
inc ecx
mov edx, dword [ebp - 0x1840]
jmp 0x10028b2b
comiss xmm0, xmm5
lea eax, [ebp - 0x1830]
lea ecx, [ebp - 0x180c]
cmovae eax, ecx
movss xmm1, dword [eax]
movq xmm0, qword [esi + 0x24]
subss xmm2, xmm1
mov eax, dword [esi + 0x2c]
lea edi, [ebp - 0x1804]
movq qword [ebp - 0x1818], xmm0
movaps xmm3, xmm1
mulss xmm3, dword [ebp - 0x1818]
mov esi, 0x80
mov dword [ebp - 0x1810], eax
movss xmm0, dword [ebp - 0x183c]
mulss xmm0, xmm2
addss xmm3, xmm0
movaps xmm0, xmm1
mulss xmm0, dword [ebp - 0x1814]
mulss xmm1, dword [ebp - 0x1810]
movss dword [ebp - 0x1830], xmm3
movss xmm3, dword [ebp - 0x1838]
mulss xmm3, xmm2
addss xmm3, xmm0
movss xmm0, dword [ebp - 0x1834]
mulss xmm0, xmm2
addss xmm0, xmm1
movss dword [ebp - 0x180c], xmm3
movss dword [ebp - 0x1820], xmm0
nop
mov ecx, edi
call fcn.1001acf0
add edi, 0x30
sub esi, 1
jne 0x10029420
mov esi, dword [ebp - 0x181c]
lea eax, [ebp - 0x1804]
push 0x1800
push dword [esi + 0x6ac]
push eax
call sub.VCRUNTIME140.dll_memcpy
movss xmm3, dword [ebp - 0x1830]
add esp, 0xc
movss xmm4, dword [ebp - 0x180c]
xor ecx, ecx
movss xmm5, dword [ebp - 0x1820]
nop dword [eax]
mov eax, dword [esi + 0x6ac]
movss xmm2, dword [eax + ecx + 0xc]
movss xmm1, dword [eax + ecx + 0x1c]
movss xmm0, dword [eax + ecx + 0x2c]
subss xmm2, dword [esi + 0x24]
subss xmm1, dword [esi + 0x28]
subss xmm0, dword [esi + 0x2c]
addss xmm2, xmm3
addss xmm1, xmm4
addss xmm0, xmm5
movss dword [ebp + ecx - 0x17f8], xmm2
movss dword [ebp + ecx - 0x17e8], xmm1
movss dword [ebp + ecx - 0x17d8], xmm0
add ecx, 0x30
cmp ecx, 0x1800
jb 0x10029470
push 0x1800
lea eax, [ebp - 0x1804]
push eax
push dword [ebp - 0x1848]
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov al, 1
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1009b337
mov esp, ebp
pop ebp
ret 8
mov ecx, dword [ebp - 4]
xor al, al
pop edi
xor ecx, ebp
pop esi
call fcn.1009b337
mov esp, ebp
pop ebp
ret 8