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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xffffffe0
sub esp, 0x140
mov edi, dword [ebp + 8]
mov eax, dword [0x1017f528]
xor eax, ebp
mov dword [esp + 0x128], eax
mov eax, dword [0x1017f5c0]
test byte [edi + 8], 1
jne 0x100638cf
mov ecx, dword [eax + 0xe0]
mov eax, dword [ecx]
call dword [eax + 0x34]
test eax, eax
jne 0x1006396d
vmovss xmm0, dword [edi + 0x1c]
vmovss xmm1, dword [edi + 0x20]
vmulss xmm1, xmm1, xmm1
vfmadd231ss xmm1, xmm0, xmm0
vmovss xmm0, dword [edi + 0x24]
vfmadd213ss xmm0, xmm0, xmm1
vcvtss2sd xmm0, xmm0, xmm0
vxorps xmm1, xmm1, xmm1
vucomisd xmm0, xmm1
jb 0x100638f9
vsqrtsd xmm2, xmm0, xmm0
jmp 0x10063913
mov ecx, dword [eax + 0xe8]
mov eax, dword [ecx]
call dword [eax + 0x30]
fstp dword [esp + 0x4c]
vmovss xmm1, dword [esp + 0x4c]
mov eax, dword [0x1017f610]
vmovss xmm0, dword [eax + 0x20]
vfnmadd213ss xmm0, xmm1, dword [edi + 0x24]
jmp 0x10063991
sub esp, 8
vmovsd qword [esp], xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll_sqrt
add esp, 8
fstp qword [esp + 0x68]
vmovsd xmm2, qword [esp + 0x68]
mov ebx, dword [edi]
mov eax, dword [0x10184e14]
test al, 1
je 0x10063ff0
mov esi, dword [0x10184e10]
mov eax, dword [esi + 4]
vmovss xmm0, dword [eax + ebx]
vmulss xmm0, xmm0, dword [0x101298e4]
vxorps xmm1, xmm1, xmm1
vucomiss xmm0, xmm1
jbe 0x1006396d
vcvtsd2ss xmm1, xmm2, xmm2
vucomiss xmm1, xmm0
jbe 0x1006396d
vdivss xmm0, xmm0, xmm1
vmovsd xmm1, qword [edi + 0x1c]
vbroadcastss xmm2, xmm0
vmulps xmm1, xmm2, xmm1
vmovlps qword [edi + 0x1c], xmm1
vmulss xmm0, xmm0, dword [edi + 0x24]
vmovss dword [edi + 0x24], xmm0
cmp byte [edi + 0xc], 0
je 0x10063fe0
mov eax, dword [0x1017f5c0]
mov ecx, dword [eax + 0xe4]
mov eax, dword [ecx]
call dword [eax + 0x30]
fstp dword [esp + 0x48]
vmovss xmm0, dword [esp + 0x48]
vmovss dword [esp + 0x10], xmm0
vmovss dword [edi + 0x24], xmm0
vxorps xmm1, xmm1, xmm1
vmovups ymmword [esp + 0xf4], ymm1
vmovaps ymmword [esp + 0xe0], ymm1
vmovaps ymmword [esp + 0xc0], ymm1
mov dword [esp + 0x74], 0x10132028
mov eax, dword [0x1017f610]
vbroadcastss xmm2, dword [eax + 0x20]
vmovsd xmm6, qword [edi + 0x10]
vmovsd xmm0, qword [edi + 0x28]
vmovaps xmmword [esp + 0x30], xmm0
vmovsd xmm1, qword [edi + 0x34]
vmovaps xmmword [esp + 0x20], xmm1
vaddps xmm5, xmm0, xmm1
vbroadcastss xmm7, dword [0x10129738]
vmulps xmm4, xmm5, xmm7
vaddps xmm3, xmm6, xmm4
vmovss xmm0, dword [edi + 0x18]
vmovss xmm1, dword [edi + 0x30]
vmovss dword [esp + 8], xmm1
vmovss xmm4, dword [edi + 0x3c]
vmovlps qword [esp + 0x78], xmm3
vaddss xmm3, xmm1, xmm4
vmulss xmm1, xmm3, dword [0x10129738]
vaddss xmm1, xmm0, xmm1
vmovss dword [esp + 0x80], xmm1
vmulss xmm1, xmm2, dword [esp + 0x10]
vaddss xmm1, xmm1, xmm0
vsubss xmm0, xmm1, xmm0
mov dword [esp + 0x84], 0
vmovsd xmm1, qword [edi + 0x1c]
vmulps xmm1, xmm2, xmm1
vaddps xmm1, xmm1, xmm6
vsubps xmm1, xmm1, xmm6
vmovlps qword [esp + 0x88], xmm1
vmovss dword [esp + 0x90], xmm0
mov dword [esp + 0x94], 0
vbroadcastss xmm6, dword [0x10129978]
vmovaps xmmword [esp + 0x50], xmm6
vmulps xmm5, xmm5, xmm6
vmovlps qword [esp + 0x98], xmm5
vmulss xmm5, xmm3, dword [0x10129978]
vmovss dword [esp + 0xa0], xmm5
vsubss xmm5, xmm4, dword [esp + 8]
mov dword [esp + 0xa4], 0
vmovaps xmm2, xmmword [esp + 0x20]
vsubps xmm3, xmm2, xmmword [esp + 0x30]
vmovaps xmmword [esp + 0x10], xmm7
vmulps xmm3, xmm3, xmm7
vmovlps qword [esp + 0xa8], xmm3
vmulps xmm4, xmm3, xmm3
vmovshdup xmm4, xmm4
vfmadd231ss xmm4, xmm3, xmm3
vmulss xmm2, xmm5, dword [0x10129738]
vmovss dword [esp + 0xb0], xmm2
vfmadd231ss xmm4, xmm2, xmm2
vcvtss2sd xmm2, xmm4, xmm4
vmovsd xmm3, qword [0x10131fe8]
vucomisd xmm3, xmm2
vmulps xmm2, xmm1, xmm1
vmovshdup xmm2, xmm2
vfmadd231ss xmm2, xmm1, xmm1
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb8], 0
seta byte [esp + 0xbc]
vfmadd231ss xmm2, xmm0, xmm0
vxorps xmm0, xmm0, xmm0
vucomiss xmm2, xmm0
mov ecx, dword [0x1017f630]
lea eax, [edi + 0x10]
mov dword [esp + 0x44], eax
setp al
setne dl
or dl, al
mov byte [esp + 0xbd], dl
mov eax, dword [ecx]
lea edx, [esp + 0xc0]
lea ebx, [esp + 0x74]
lea esi, [esp + 0x78]
push edx
push ebx
push 1
push esi
vzeroupper
call dword [eax + 0x14]
vmovss xmm0, dword [esp + 0xec]
vucomiss xmm0, dword [0x10129710]
jne 0x10063b92
jnp 0x10063e02
mov bl, 1
jmp 0x10063d8a
vmulss xmm3, xmm3, xmm5
vbroadcastss xmm5, xmm5
vmulps xmm4, xmm4, xmm5
vsubps xmm1, xmm1, xmm4
vmovlps qword [edi + 0x1c], xmm1
vsubss xmm6, xmm6, xmm3
vmovss dword [esp + 8], xmm6
vmovss dword [edi + 0x24], xmm6
mov eax, dword [0x1017f610]
vmovss xmm2, dword [0x10129710]
vsubss xmm0, xmm2, xmm0
vmulss xmm7, xmm0, dword [eax + 0x20]
vmovsd xmm6, qword [esp + 0xcc]
vmovsd xmm0, qword [edi + 0x28]
vmovaps xmmword [esp + 0x20], xmm0
vmovsd xmm2, qword [edi + 0x34]
vmovaps xmmword [esp + 0x30], xmm2
vaddps xmm3, xmm0, xmm2
vmulps xmm0, xmm3, xmmword [esp + 0x10]
vaddps xmm0, xmm6, xmm0
vmovss xmm2, dword [edi + 0x30]
vmovss dword [esp + 0xc], xmm2
vmovss xmm4, dword [edi + 0x3c]
vmovlps qword [esp + 0x78], xmm0
vmovss xmm0, dword [esp + 0xd4]
vaddss xmm2, xmm2, xmm4
vmulss xmm5, xmm2, dword [0x10129738]
vaddss xmm5, xmm0, xmm5
vmovss dword [esp + 0x80], xmm5
vmulss xmm5, xmm7, dword [esp + 8]
vaddss xmm5, xmm5, xmm0
vsubss xmm0, xmm5, xmm0
vbroadcastss xmm5, xmm7
vmulps xmm1, xmm5, xmm1
vaddps xmm1, xmm1, xmm6
vsubps xmm1, xmm1, xmm6
mov dword [esp + 0x84], 0
vmovlps qword [esp + 0x88], xmm1
vmovss dword [esp + 0x90], xmm0
mov dword [esp + 0x94], 0
vmulps xmm3, xmm3, xmmword [esp + 0x50]
vmovlps qword [esp + 0x98], xmm3
vmulss xmm2, xmm2, dword [0x10129978]
vmovss dword [esp + 0xa0], xmm2
vsubss xmm2, xmm4, dword [esp + 0xc]
mov dword [esp + 0xa4], 0
vmovaps xmm3, xmmword [esp + 0x30]
vsubps xmm3, xmm3, xmmword [esp + 0x20]
vmulps xmm3, xmm3, xmmword [esp + 0x10]
vmovlps qword [esp + 0xa8], xmm3
vmulps xmm4, xmm3, xmm3
vmovshdup xmm4, xmm4
vfmadd231ss xmm4, xmm3, xmm3
vmulss xmm2, xmm2, dword [0x10129738]
vmovss dword [esp + 0xb0], xmm2
vfmadd231ss xmm4, xmm2, xmm2
vcvtss2sd xmm2, xmm4, xmm4
vmovsd xmm3, qword [0x10131fe8]
vucomisd xmm3, xmm2
vmulps xmm2, xmm1, xmm1
vmovshdup xmm2, xmm2
vfmadd231ss xmm2, xmm1, xmm1
vfmadd231ss xmm2, xmm0, xmm0
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb8], 0
seta byte [esp + 0xbc]
vxorps xmm0, xmm0, xmm0
vucomiss xmm2, xmm0
mov ecx, dword [0x1017f630]
setp al
setne dl
or dl, al
mov byte [esp + 0xbd], dl
mov eax, dword [ecx]
lea edx, [esp + 0xc0]
push edx
lea edx, [esp + 0x78]
push edx
push 1
push esi
call dword [eax + 0x14]
vmovss xmm0, dword [esp + 0xec]
vucomiss xmm0, dword [0x10129710]
setp al
setne cl
or cl, al
test cl, bl
mov ebx, 0
je 0x10063e02
vmovss xmm3, dword [esp + 0xe0]
vmovss xmm2, dword [edi + 0x24]
vmovsd xmm4, qword [esp + 0xd8]
vmovsd xmm1, qword [edi + 0x1c]
vmulps xmm5, xmm4, xmm1
vmovshdup xmm5, xmm5
vfmadd231ss xmm5, xmm4, xmm1
vfmadd231ss xmm5, xmm3, xmm2
vmulss xmm6, xmm3, xmm5
vbroadcastss xmm5, xmm5
vmulps xmm5, xmm4, xmm5
vsubps xmm1, xmm1, xmm5
vmovlps qword [edi + 0x1c], xmm1
vsubss xmm6, xmm2, xmm6
vmovss dword [edi + 0x24], xmm6
vmulps xmm5, xmm4, xmm1
vmovshdup xmm5, xmm5
vfmadd231ss xmm5, xmm4, xmm1
vfmadd231ss xmm5, xmm3, xmm6
vxorps xmm2, xmm2, xmm2
vucomiss xmm2, xmm5
ja 0x10063ba0
vmovss dword [esp + 8], xmm6
jmp 0x10063bc5
lea ecx, [esp + 0xcc]
mov eax, dword [ecx + 8]
mov edx, dword [esp + 0x44]
mov dword [edx + 8], eax
vmovsd xmm0, qword [ecx]
vmovsd qword [edx], xmm0
vmovss xmm0, dword [edi + 0x30]
vmovss xmm1, dword [edi + 0x3c]
vmovss dword [esp + 0x20], xmm1
vsubss xmm2, xmm1, xmm0
vmovaps xmm1, xmm0
vmovss xmm3, dword [0x10129738]
vmulss xmm2, xmm2, xmm3
vmovsd xmm4, qword [edi + 0x28]
vmovsd xmm5, qword [edi + 0x34]
vsubps xmm3, xmm5, xmm4
vmovaps xmm7, xmmword [esp + 0x10]
vmulps xmm3, xmm3, xmm7
vmulps xmm6, xmm3, xmm3
vmovshdup xmm6, xmm6
vfmadd231ss xmm6, xmm3, xmm3
vfmadd231ss xmm6, xmm2, xmm2
vcvtss2sd xmm6, xmm6, xmm6
vmovsd xmm0, qword [0x10131fe8]
vucomisd xmm0, xmm6
vaddss xmm0, xmm1, dword [esp + 0x20]
vaddps xmm1, xmm4, xmm5
vmulps xmm4, xmm1, xmm7
vmovsd xmm5, qword [esp + 0xcc]
vaddps xmm4, xmm5, xmm4
vmovlps qword [esp + 0x78], xmm4
vmulss xmm4, xmm0, dword [0x10129738]
vmovss xmm6, dword [esp + 0xd4]
vaddss xmm4, xmm4, xmm6
vmovss dword [esp + 0x80], xmm4
vaddss xmm4, xmm6, dword [0x101298a0]
vsubss xmm4, xmm4, xmm6
vmulps xmm1, xmm1, xmmword [esp + 0x50]
mov dword [esp + 0x84], 0
vsubps xmm5, xmm5, xmm5
vmovlps qword [esp + 0x88], xmm5
vmovss dword [esp + 0x90], xmm4
mov dword [esp + 0x94], 0
vmovlps qword [esp + 0x98], xmm1
vmulss xmm0, xmm0, dword [0x10129978]
vmovss dword [esp + 0xa0], xmm0
mov dword [esp + 0xa4], 0
vmovlps qword [esp + 0xa8], xmm3
vmovss dword [esp + 0xb0], xmm2
vmulps xmm0, xmm5, xmm5
vmovshdup xmm0, xmm0
vfmadd231ss xmm0, xmm5, xmm5
vfmadd231ss xmm0, xmm4, xmm4
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb8], 0
seta byte [esp + 0xbc]
vucomiss xmm0, dword [0x10129730]
mov ecx, dword [0x1017f630]
setp al
setne dl
or dl, al
mov byte [esp + 0xbd], dl
mov eax, dword [ecx]
lea edx, [esp + 0xc0]
push edx
lea edx, [esp + 0x78]
push edx
push 1
push esi
call dword [eax + 0x14]
mov eax, dword [edi + 8]
mov ecx, eax
and ecx, 0xfffffffe
mov dword [edi + 8], ecx
vmovss xmm0, dword [esp + 0xec]
vucomiss xmm0, dword [0x10129710]
jne 0x10063faf
jnp 0x10063fc8
vmovss xmm0, dword [esp + 0xe0]
vucomiss xmm0, dword [0x101299a0]
jbe 0x10063fc8
or eax, 1
mov dword [edi + 8], eax
mov ecx, dword [esp + 0x128]
xor ecx, ebp
call fcn.100d7fe0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 4
vmovss xmm0, dword [edi + 0x24]
vmovss dword [esp + 0x10], xmm0
jmp 0x1006399c
vmovsd qword [esp + 0x50], xmm2
or eax, 1
mov dword [0x10184e14], eax
mov eax, dword [0x1017f5c4]
mov dword [esp + 0xc], eax
lea ecx, [esp + 0xc0]
mov dword [esp + 0x30], ecx
push str.CBasePlayer__m_flMaxspeed
call fcn.10005ce0
mov eax, dword [esp + 0xd0]
mov dword [esp + 0x10], eax
cmp dword [esp + 0xd4], 0x10
jb 0x1006403c
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x30], eax
cmp dword [esp + 0x10], 0
je 0x1006405f
mov eax, dword [esp + 0x10]
lea ecx, [eax - 1]
and eax, 3
mov dword [esp + 0x20], eax
cmp ecx, 3
jae 0x10064066
mov ecx, 0x811c9dc5
xor edx, edx
jmp 0x100640b8
mov ecx, 0x811c9dc5
jmp 0x100640d8
mov eax, dword [esp + 0x10]
and eax, 0xfffffffc
mov dword [esp + 8], eax
mov ecx, 0x811c9dc5
xor edx, edx
mov esi, dword [esp + 0x30]
movzx eax, byte [esi + edx]
xor eax, ecx
imul eax, eax, 0x1000193
movzx ecx, byte [esi + edx + 1]
xor ecx, eax
imul eax, ecx, 0x1000193
movzx ecx, byte [esi + edx + 2]
xor ecx, eax
imul eax, ecx, 0x1000193
movzx ecx, byte [esi + edx + 3]
xor ecx, eax
imul ecx, ecx, 0x1000193
add edx, 4
cmp dword [esp + 8], edx
jne 0x1006407c
cmp dword [esp + 0x20], 0
je 0x100640d8
add edx, dword [esp + 0x30]
xor esi, esi
movzx eax, byte [edx + esi]
xor eax, ecx
imul ecx, eax, 0x1000193
inc esi
cmp dword [esp + 0x20], esi
jne 0x100640c5
mov edx, dword [esp + 0xc]
and ecx, dword [edx + 0x18]
mov eax, dword [edx + 0xc]
mov esi, dword [eax + ecx*8 + 4]
cmp esi, dword [edx + 4]
je 0x1006414b
add ecx, ecx
mov eax, dword [eax + ecx*4]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
cmp eax, dword [esi + 0x18]
jne 0x10064120
cmp dword [esi + 0x1c], 0x10
jb 0x10064108
mov eax, dword [esi + 8]
jmp 0x1006410b
lea eax, [esi + 8]
push dword [esp + 0x10]
push eax
push dword [esp + 0x38]
call sub.VCRUNTIME140.dll_memcmp
add esp, 0xc
test eax, eax
je 0x1006412b
cmp esi, dword [esp + 0x20]
je 0x1006414b
mov esi, dword [esi + 4]
jmp 0x100640f4
add esi, 0x20
lea ecx, [esp + 0xc0]
call fcn.100026e0
mov dword [0x10184e10], esi
vmovsd xmm2, qword [esp + 0x50]
jmp 0x10063928
push 0x1016ba76
call sub.MSVCP140.dll_void___cdecl_std::_Xout_of_range_char_const__
int3