Function at 0x14016c8f0
Capabilities:
Allocate thread local storage
Encode data using xor
Get file size
Hash data using fnv

Disassembly:
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x88
mov rsi, r8
lea r9, [rcx + 8]
mov r8d, 4
mov rbx, rcx
call fcn.14016c800
test eax, eax
je 0x14016c930
cmp eax, 0x13
jne 0x14016c921
test byte [rbx + 0x1a], 2
je 0x14016c921
xor eax, eax
add rsp, 0x88
pop rbx
pop rsi
pop rdi
pop rbp
ret
test byte [rbx + 0x1a], 0x20
je 0x14016cb20
mov rcx, qword [rbx + 8]
xor r8d, r8d
xor edx, edx
mov r9d, 1
mov dword [rsp + 0x20], 0
call qword [sym.imp.KERNEL32.dll_LockFile]
test eax, eax
je 0x14016cbd8
mov dword [rsi], 1
xor edx, edx
mov rcx, qword [rbx + 8]
call qword [sym.imp.KERNEL32.dll_GetFileSize]
mov edx, dword [rbx + 0x24]
mov ebp, eax
lea edi, [rdx - 1]
mov rax, rbp
add rdi, 2
shl rdi, 6
cmp rbp, rdi
jl 0x14016cb70
add rax, 0xffffffffffffff80
shr rax, 6
add eax, 1
mov dword [rbx + 0x24], eax
mov rcx, qword [rbx + 8]
xor r9d, r9d
mov r8d, 4
xor edx, edx
mov qword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0
call qword [sym.imp.KERNEL32.dll_CreateFileMappingA]
mov rdi, rax
test rax, rax
je 0x14016cba8
xor r9d, r9d
xor r8d, r8d
mov edx, 2
mov rcx, rax
mov qword [rsp + 0x28], 0
mov qword [rsp + 0x20], rbp
call qword [sym.imp.KERNEL32.dll_MapViewOfFileEx]
mov rcx, rdi
mov qword [rbx + 0x48], rax
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rax, qword [rbx + 0x48]
test rax, rax
je 0x14016cba8
mov edx, dword [rsi]
test edx, edx
jle 0x14016cc90
mov eax, dword [0x14026a0c0]
test eax, eax
je 0x14016cc38
mov rcx, qword [rbx + 8]
lea rdx, [rsp + 0x40]
call qword [sym.imp.KERNEL32.dll_GetFileInformationByHandle]
test eax, eax
je 0x14016cba8
movq xmm0, qword [rsp + 0x5c]
movq xmm1, qword [rsp + 0x6c]
lea rdx, [rsp + 0x30]
lea r9, [rsp + 0x3c]
mov eax, dword [rsp + 0x70]
mov r10, qword [rbx + 0x48]
movabs r8, 0x100000001b3
punpckldq xmm0, xmm1
mov dword [rsp + 0x38], eax
movabs rax, 0xcbf29ce484222325
movq qword [rsp + 0x30], xmm0
nop dword [rax + rax]
movzx ecx, byte [rdx]
add rdx, 1
xor rax, rcx
imul rax, r8
cmp rdx, r9
jne 0x14016ca80
mov qword [r10 + 0x18], rax
mov rcx, rbx
lea rbp, [rbx + 0x100]
lea rdi, [0x14026a0d0]
call fcn.14016c2a0
mov r8, rbp
xor edx, edx
mov rcx, rdi
mov byte [rbx + 0x10a], 0x72
mov rsi, qword [sym.imp.KERNEL32.dll_CreateMutexA]
call rsi
mov qword [rbx + 0xf0], rax
test rax, rax
je 0x14016cba8
mov byte [rbx + 0x10a], 0x77
mov r8, rbp
xor edx, edx
mov rcx, rdi
call rsi
mov qword [rbx + 0xf8], rax
test rax, rax
je 0x14016cba8
mov rax, qword [rbx + 0x48]
mov rdx, qword [0x14023a380]
mov qword [rax + 8], 0
mov qword [rax], rdx
mov dword [rax + 0x10], 0
xor eax, eax
jmp 0x14016c921
call qword [sym.imp.KERNEL32.dll_TlsAlloc]
mov dword [rbx + 0xa8], eax
cmp eax, 0xffffffff
je 0x14016cbc0
movsxd rax, dword [0x140269fa0]
or dword [rbx + 0x18], 0x10000000
cmp eax, 0x3f
jg 0x14016cd28
lea edx, [rax + 1]
mov ecx, dword [rbx + 0xa8]
mov dword [0x140269fa0], edx
lea rdx, [0x140269fc0]
mov dword [rdx + rax*4], ecx
jmp 0x14016c93a
mov ecx, dword [rsi]
test ecx, ecx
jle 0x14016c98d
xor r9d, r9d
xor r8d, r8d
mov rcx, qword [rbx + 8]
mov edx, edi
call qword [sym.imp.KERNEL32.dll_SetFilePointer]
cmp eax, edi
jne 0x14016cba8
mov rcx, qword [rbx + 8]
mov rbp, rdi
call qword [sym.imp.KERNEL32.dll_SetEndOfFile]
test eax, eax
jne 0x14016c99b
nop dword [rax]
mov rsi, qword [sym.imp.KERNEL32.dll_GetLastError]
mov rax, rsi
add rsp, 0x88
pop rbx
pop rsi
pop rdi
pop rbp
jmp rax
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
je 0x14016cb35
jmp 0x14016c921
pxor xmm0, xmm0
lea rax, [rsp + 0x40]
mov rcx, qword [rbx + 8]
xor r8d, r8d
xor edx, edx
mov qword [rsp + 0x28], rax
mov r9d, 1
mov dword [rsp + 0x20], 0
movups xmmword [rsp + 0x40], xmm0
movups xmmword [rsp + 0x50], xmm0
call qword [sym.imp.KERNEL32.dll_LockFileEx]
test eax, eax
je 0x14016cc20
mov dword [rsi], 0
jmp 0x14016c965
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x14016c921
jmp 0x14016c965
lea rsi, [0x14026a100]
mov edx, 1
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_InitializeSecurityDescriptor]
xor r9d, r9d
xor r8d, r8d
mov edx, 1
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_SetSecurityDescriptorDacl]
mov qword [0x14026a0d8], rsi
mov dword [0x14026a0d0], 0x18
mov dword [0x14026a0e0], 0
mov dword [0x14026a0c0], 1
jmp 0x14016ca21
cmp dword [rax], 0xbeefc0de
jne 0x14016cd3c
cmp dword [rax + 4], 0x8138002
jne 0x14016cd32
mov rsi, qword [sym.imp.KERNEL32.dll_GetLastError]
call rsi
lea edx, [rax - 0xb]
and edx, 0xfffffffd
je 0x14016ccc2
test eax, eax
jne 0x14016c921
mov rcx, rbx
lea rbp, [rbx + 0x100]
call fcn.14016c2a0
mov r8, rbp
xor edx, edx
mov ecx, 0x100000
mov byte [rbx + 0x10a], 0x72
mov rdi, qword [sym.imp.KERNEL32.dll_OpenMutexA]
call rdi
mov qword [rbx + 0xf0], rax
test rax, rax
je 0x14016cbaf
mov byte [rbx + 0x10a], 0x77
mov r8, rbp
xor edx, edx
mov ecx, 0x100000
call rdi
mov qword [rbx + 0xf8], rax
test rax, rax
je 0x14016cbaf
xor eax, eax
jmp 0x14016c921
mov eax, 0xffff87bb
jmp 0x14016c921
mov eax, 0xffff87b6
jmp 0x14016c921
mov eax, 0xffff87b7
jmp 0x14016c921