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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x40
mov esi, ecx
mov dword [ebp - 0x1c], esp
mov dword [ebp - 0x10], 0xffffffff
lea eax, [ebp - 0x18]
mov dword [ebp - 0x14], 0x100f1e40
mov ecx, dword fs:[0]
mov dword [ebp - 0x18], ecx
mov dword fs:[0], eax
cmp byte [esi], 0
je 0x100f17a5
mov eax, dword [ebp - 0x18]
mov dword fs:[0], eax
add esp, 0x40
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [0x1012d350]
cmp byte [eax + 0x17a], 0
je 0x100f1794
mov ecx, dword [0x10132e64]
test ecx, ecx
je 0x100f18d6
mov eax, dword [ecx]
test eax, eax
je 0x100f1794
mov dword [ebp - 0x10], 0xffffffff
push 0
push 0x7ff
call eax
add esp, 8
test eax, eax
je 0x100f1794
mov edi, eax
mov eax, dword [eax]
mov ecx, edi
call dword [eax]
test eax, eax
je 0x100f1794
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x1c]
test eax, eax
je 0x100f1794
mov ebx, eax
add eax, 8
je 0x100f1794
cmp byte [0x10132e6c], 1
mov dword [ebp - 0x4c], eax
jne 0x100f198e
mov ecx, dword [0x10132e68]
mov dword [ecx + 0x54], 0
mov eax, dword [ecx]
mov eax, dword [eax + 0x40]
mov dword [ebp - 0x10], 0xffffffff
push 1
call eax
mov eax, dword [edi]
mov ecx, edi
push 0
call dword [eax + 0x18]
mov eax, dword [edi]
mov ecx, edi
push 0
call dword [eax + 0x10]
mov eax, dword [0x10132e74]
test al, 1
je 0x100f192d
mov edi, dword [0x10132e70]
mov eax, dword [edi + 4]
mov dword [eax + ebx], 0
mov eax, dword [0x10132bb0]
test al, 1
je 0x100f19cc
mov edi, dword [0x10132bac]
mov eax, dword [edi + 4]
vbroadcastss xmm0, dword [0x101014d0]
vmovlps qword [eax + ebx], xmm0
mov dword [eax + ebx + 8], 0xc7000000
mov eax, dword [0x10132bb8]
test al, 1
je 0x100f1a2d
mov edi, dword [0x10132bb4]
mov dword [ebp - 0x10], 0xffffffff
mov eax, dword [edi + 4]
vbroadcastss xmm0, dword [0x101014d4]
vmovlps qword [eax + ebx], xmm0
mov dword [eax + ebx + 8], 0x47000000
mov eax, dword [ebx + 8]
mov edi, dword [ebp - 0x4c]
mov ecx, edi
push 0
call dword [eax + 0x14]
mov eax, dword [ebx + 8]
mov ecx, edi
push 0
call dword [eax + 0x1c]
mov byte [esi], 1
jmp 0x100f1794
mov ecx, dword [0x1012d360]
mov eax, dword [ecx]
call dword [eax + 0x20]
mov ecx, dword [0x10132e64]
test eax, eax
je 0x100f1915
test ecx, ecx
jne 0x100f1915
mov ecx, eax
nop word cs:[eax + eax]
cmp dword [ecx + 0x14], 0x8a
je 0x100f1922
mov ecx, dword [ecx + 0x10]
test ecx, ecx
jne 0x100f1900
jmp 0x100f1794
test ecx, ecx
jne 0x100f17c1
jmp 0x100f1794
mov dword [0x10132e64], ecx
jmp 0x100f17c1
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x2c], esi
or eax, 1
mov dword [0x10132e74], eax
mov eax, dword [0x1012d324]
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x10], 0
lea ecx, [ebp - 0x48]
mov dword [ebp - 0x20], ecx
push str.CPrecipitation__m_nPrecipType
call fcn.100083b0
mov esi, dword [ebp - 0x38]
cmp dword [ebp - 0x34], 0x10
jb 0x100f1969
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x20], eax
test esi, esi
je 0x100f1a8a
mov eax, esi
and eax, 3
mov dword [ebp - 0x24], eax
cmp esi, 4
jae 0x100f1aa5
mov ecx, 0x811c9dc5
xor edx, edx
jmp 0x100f1aee
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x2c], esi
mov byte [0x10132e6c], 1
mov ecx, dword [0x1012d380]
mov eax, dword [ecx]
mov eax, dword [eax + 0x40]
mov dword [ebp - 0x10], 6
push str.r_RainCheck
call eax
mov ecx, eax
mov dword [0x10132e68], eax
mov esi, dword [ebp - 0x2c]
mov ebx, dword [ebp - 0x28]
mov edi, dword [ebp - 0x20]
jmp 0x100f1812
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x2c], esi
or eax, 1
mov dword [0x10132bb0], eax
mov eax, dword [0x1012d324]
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x10], 2
lea ecx, [ebp - 0x48]
mov dword [ebp - 0x20], ecx
push str.CBaseEntity__m_vecMins
call fcn.100083b0
mov esi, dword [ebp - 0x38]
cmp dword [ebp - 0x34], 0x10
jb 0x100f1a08
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x20], eax
test esi, esi
je 0x100f1a91
mov eax, esi
and eax, 3
mov dword [ebp - 0x24], eax
cmp esi, 4
jae 0x100f1b78
mov ecx, 0x811c9dc5
xor edx, edx
jmp 0x100f1bc1
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x2c], esi
or eax, 1
mov dword [0x10132bb8], eax
mov eax, dword [0x1012d324]
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x10], 4
lea ecx, [ebp - 0x48]
mov dword [ebp - 0x20], ecx
push str.CBaseEntity__m_vecMaxs
call fcn.100083b0
mov esi, dword [ebp - 0x38]
cmp dword [ebp - 0x34], 0x10
jb 0x100f1a69
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x20], eax
test esi, esi
je 0x100f1a9b
mov eax, esi
and eax, 3
mov dword [ebp - 0x24], eax
cmp esi, 4
jae 0x100f1c4b
mov ecx, 0x811c9dc5
xor edx, edx
jmp 0x100f1c94
mov ecx, 0x811c9dc5
jmp 0x100f1b0b
mov ecx, 0x811c9dc5
jmp 0x100f1bde
mov ecx, 0x811c9dc5
jmp 0x100f1cb1
mov edi, esi
and edi, 0xfffffffc
mov ecx, 0x811c9dc5
xor edx, edx
mov eax, dword [ebp - 0x20]
movzx ebx, byte [eax + edx]
xor ebx, ecx
imul ecx, ebx, 0x1000193
movzx ebx, byte [eax + edx + 1]
xor ebx, ecx
imul ecx, ebx, 0x1000193
movzx ebx, byte [eax + edx + 2]
xor ebx, ecx
imul ecx, ebx, 0x1000193
movzx ebx, byte [eax + edx + 3]
xor ebx, ecx
imul ecx, ebx, 0x1000193
add edx, 4
cmp edi, edx
jne 0x100f1ab4
cmp dword [ebp - 0x24], 0
je 0x100f1b0b
add edx, dword [ebp - 0x20]
xor edi, edi
movzx ebx, byte [edx + edi]
xor ebx, ecx
imul ecx, ebx, 0x1000193
inc edi
cmp dword [ebp - 0x24], edi
jne 0x100f1af9
mov edx, dword [ebp - 0x30]
and ecx, dword [edx + 0x18]
mov eax, dword [edx + 0xc]
mov edi, dword [eax + ecx*8 + 4]
cmp edi, dword [edx + 4]
je 0x100f1d21
add ecx, ecx
mov ebx, dword [eax + ecx*4]
cmp esi, dword [edi + 0x18]
jne 0x100f1b4a
cmp dword [edi + 0x1c], 0x10
jb 0x100f1b36
mov eax, dword [edi + 8]
jmp 0x100f1b39
lea eax, [edi + 8]
push esi
push eax
push dword [ebp - 0x20]
call sub.VCRUNTIME140.dll_memcmp
add esp, 0xc
test eax, eax
je 0x100f1b5c
cmp edi, ebx
je 0x100f1d21
mov edi, dword [edi + 4]
cmp esi, dword [edi + 0x18]
je 0x100f1b2b
jmp 0x100f1b4a
add edi, 0x20
lea ecx, [ebp - 0x48]
call fcn.100029d0
mov dword [0x10132e70], edi
mov esi, dword [ebp - 0x2c]
mov ebx, dword [ebp - 0x28]
jmp 0x100f184e
mov edi, esi
and edi, 0xfffffffc
mov ecx, 0x811c9dc5
xor edx, edx
mov eax, dword [ebp - 0x20]
movzx ebx, byte [eax + edx]
xor ebx, ecx
imul ecx, ebx, 0x1000193
movzx ebx, byte [eax + edx + 1]
xor ebx, ecx
imul ecx, ebx, 0x1000193
movzx ebx, byte [eax + edx + 2]
xor ebx, ecx
imul ecx, ebx, 0x1000193
movzx ebx, byte [eax + edx + 3]
xor ebx, ecx
imul ecx, ebx, 0x1000193
add edx, 4
cmp edi, edx
jne 0x100f1b87
cmp dword [ebp - 0x24], 0
je 0x100f1bde
add edx, dword [ebp - 0x20]
xor edi, edi
movzx ebx, byte [edx + edi]
xor ebx, ecx
imul ecx, ebx, 0x1000193
inc edi
cmp dword [ebp - 0x24], edi
jne 0x100f1bcc
mov edx, dword [ebp - 0x30]
and ecx, dword [edx + 0x18]
mov eax, dword [edx + 0xc]
mov edi, dword [eax + ecx*8 + 4]
cmp edi, dword [edx + 4]
je 0x100f1d35
add ecx, ecx
mov ebx, dword [eax + ecx*4]
cmp esi, dword [edi + 0x18]
jne 0x100f1c1d
cmp dword [edi + 0x1c], 0x10
jb 0x100f1c09
mov eax, dword [edi + 8]
jmp 0x100f1c0c
lea eax, [edi + 8]
push esi
push eax
push dword [ebp - 0x20]
call sub.VCRUNTIME140.dll_memcmp
add esp, 0xc
test eax, eax
je 0x100f1c2f
cmp edi, ebx
je 0x100f1d35
mov edi, dword [edi + 4]
cmp esi, dword [edi + 0x18]
je 0x100f1bfe
jmp 0x100f1c1d
add edi, 0x20
lea ecx, [ebp - 0x48]
call fcn.100029d0
mov dword [0x10132bac], edi
mov esi, dword [ebp - 0x2c]
mov ebx, dword [ebp - 0x28]
jmp 0x100f186b
mov edi, esi
and edi, 0xfffffffc
mov ecx, 0x811c9dc5
xor edx, edx
mov eax, dword [ebp - 0x20]
movzx ebx, byte [eax + edx]
xor ebx, ecx
imul ecx, ebx, 0x1000193
movzx ebx, byte [eax + edx + 1]
xor ebx, ecx
imul ecx, ebx, 0x1000193
movzx ebx, byte [eax + edx + 2]
xor ebx, ecx
imul ecx, ebx, 0x1000193
movzx ebx, byte [eax + edx + 3]
xor ebx, ecx
imul ecx, ebx, 0x1000193
add edx, 4
cmp edi, edx
jne 0x100f1c5a
cmp dword [ebp - 0x24], 0
je 0x100f1cb1
add edx, dword [ebp - 0x20]
xor edi, edi
movzx ebx, byte [edx + edi]
xor ebx, ecx
imul ecx, ebx, 0x1000193
inc edi
cmp dword [ebp - 0x24], edi
jne 0x100f1c9f
mov edx, dword [ebp - 0x30]
and ecx, dword [edx + 0x18]
mov eax, dword [edx + 0xc]
mov edi, dword [eax + ecx*8 + 4]
cmp edi, dword [edx + 4]
je 0x100f1d49
add ecx, ecx
mov ebx, dword [eax + ecx*4]
cmp esi, dword [edi + 0x18]
jne 0x100f1cf0
cmp dword [edi + 0x1c], 0x10
jb 0x100f1cdc
mov eax, dword [edi + 8]
jmp 0x100f1cdf
lea eax, [edi + 8]
push esi
push eax
push dword [ebp - 0x20]
call sub.VCRUNTIME140.dll_memcmp
add esp, 0xc
test eax, eax
je 0x100f1cfe
cmp edi, ebx
je 0x100f1d49
mov edi, dword [edi + 4]
cmp esi, dword [edi + 0x18]
je 0x100f1cd1
jmp 0x100f1cf0
add edi, 0x20
lea ecx, [ebp - 0x48]
call fcn.100029d0
mov dword [0x10132bb4], edi
mov dword [ebp - 0x10], 0xffffffff
mov esi, dword [ebp - 0x2c]
mov ebx, dword [ebp - 0x28]
jmp 0x100f189e
mov dword [ebp - 0x10], 1
push 0x1011ed9d
call sub.MSVCP140.dll_void___cdecl_std::_Xout_of_range_char_const__
add esp, 4
mov dword [ebp - 0x10], 3
push 0x1011ed9d
call sub.MSVCP140.dll_void___cdecl_std::_Xout_of_range_char_const__
add esp, 4
mov dword [ebp - 0x10], 5
push 0x1011ed9d
call sub.MSVCP140.dll_void___cdecl_std::_Xout_of_range_char_const__
add esp, 4
nop dword [eax]
push ebp
sub esp, 0xc
add ebp, 0xc
lea ecx, [ebp - 0x48]
call fcn.100029d0
add esp, 0xc
pop ebp
ret