Function at 0x14008bc10
Capabilities:
Get thread local storage value

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xa8
mov qword [rsp + 0x80], 0
mov rdi, rdx
mov qword [rsp + 0x88], 0
mov qword [rsp + 0x90], 0
mov qword [rsp + 0x98], 0
cmp rcx, 0xffffffffffffffff
je 0x14008bf80
mov r12d, 3
mov ebp, 2
mov ebx, 1
mov qword [rsp + 0x80], rcx
mov dword [rsp + 0x68], 0
mov eax, dword [0x140548540]
mov dword [rsp + 0x54], eax
cmp eax, 0xffffffff
je 0x14008bcf3
mov rsi, qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
call rsi
test rax, rax
je 0x14008bf9a
mov ecx, dword [0x140548540]
cmp ecx, 0xffffffff
je 0x14008c04d
call rsi
mov dword [rsp + 0x54], 0xffffffff
cmp byte [rax + 0x90], 0
je 0x14008bcf3
mov ecx, dword [0x140548540]
cmp ecx, 0xffffffff
je 0x14008c231
call rsi
mov dword [rsp + 0x54], ebx
mov r8, rax
mov eax, ebx
mov ebx, ebp
mov ebp, r12d
mov rdx, qword [r8 + 0x88]
mov qword [rsp + rax*8 + 0x80], rdx
movabs rax, 0x7fffffffffffffff
cmp qword [rdi], rax
jne 0x14008be60
mov qword [rsp + 0x58], 0xffffffffffffffff
mov esi, 0xffffffff
mov ebp, 0xffffffff
mov qword [rsp + 0x60], 0
mov r12, qword [sym.imp.KERNEL32.dll_Sleep]
mov r15, qword [sym.imp.KERNEL32.dll_WaitForMultipleObjectsEx]
mov r13, r12
jmp 0x14008bd41
test rbp, rbp
je 0x14008be30
test ebx, ebx
jne 0x14008bdf0
test ebp, ebp
jne 0x14008bde0
xor ecx, ecx
call r13
cmp esi, 0xffffffff
jne 0x14008bd38
movabs rax, 0x7fffffffffffffff
cmp qword [rdi], rax
je 0x14008bd38
lea rcx, [rsp + 0x70]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
test eax, eax
je 0x14008bdae
cmp qword [rsp + 0x70], 0
jle 0x14008bdae
mov rax, qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov ebp, 4
lea r14, [rsp + 0x78]
mov qword [rsp + 0x48], rax
mov rax, qword [rsp + 0x48]
mov rcx, r14
call rax
test eax, eax
jne 0x14008bfa7
sub ebp, 1
jne 0x14008bd97
xor eax, eax
mov rdx, qword [rdi]
sub rdx, rax
mov rax, rdx
js 0x14008be30
movabs rdx, 0x431bde82d7b634db
add rax, 0xf423f
mul rdx
shr rdx, 0x12
mov rbp, rdx
jmp 0x14008bd38
mov ecx, ebp
call r12
jmp 0x14008bd56
mov dword [rsp + 0x20], 0
mov r9d, ebp
xor r8d, r8d
mov ecx, ebx
lea rdx, [rsp + 0x80]
call r15
cmp eax, ebx
jae 0x14008bd56
cmp dword [rsp + 0x68], eax
je 0x14008c0f3
cmp dword [rsp + 0x54], eax
je 0x14008c0fe
cmp eax, esi
jne 0x14008bd56
nop
xor r12d, r12d
cmp qword [rsp + 0x58], 0xfffffffffffffffd
ja 0x14008be46
mov rcx, qword [rsp + 0x60]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, r12d
add rsp, 0xa8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
lea r12, [rsp + 0x70]
mov r13, qword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
mov rcx, r12
call r13
test eax, eax
je 0x14008beab
cmp qword [rsp + 0x70], 0
jle 0x14008beab
mov rax, qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov esi, 4
lea r14, [rsp + 0x78]
mov qword [rsp + 0x48], rax
mov rax, qword [rsp + 0x48]
mov rcx, r14
call rax
test eax, eax
jne 0x14008c1a4
sub esi, 1
jne 0x14008be94
xor eax, eax
mov rsi, qword [rdi]
sub rsi, rax
mov rax, rsi
js 0x14008bfde
movabs rdx, 0x431bde82d7b634db
add rax, 0xf423f
mul rdx
mov rsi, rdx
shr rsi, 0x12
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_CreateWaitableTimerA]
mov qword [rsp + 0x60], rax
test rax, rax
je 0x14008c057
cmp rsi, 0x293
jg 0x14008c00b
mov qword [rsp + 0x78], 0
mov r15d, 0x20
test rsi, rsi
jg 0x14008c03c
mov rax, qword [0x1406a3aa0]
test rax, rax
je 0x14008c140
mov rsi, qword [rsp + 0x60]
lea r14, [rsp + 0x78]
xor r9d, r9d
xor r8d, r8d
mov dword [rsp + 0x30], r15d
mov rdx, r14
mov qword [rsp + 0x28], 0
mov rcx, rsi
mov qword [rsp + 0x20], 0
call rax
lea rcx, [rsi - 1]
mov qword [rsp + 0x58], rcx
test eax, eax
je 0x14008c060
mov eax, ebx
mov qword [rsp + rax*8 + 0x80], rsi
mov esi, ebx
mov ebx, ebp
mov ebp, 0xffffffff
jmp 0x14008bd22
mov dword [rsp + 0x68], 0xffffffff
mov r12d, 2
mov ebp, 1
xor ebx, ebx
jmp 0x14008bc80
mov dword [rsp + 0x54], 0xffffffff
jmp 0x14008bcf3
fnstcw word [rsp + 0x6e]
fild qword [rsp + 0x78]
fmul dword [str._knN]
fild qword [rsp + 0x70]
movzx eax, word [rsp + 0x6e]
or ah, 0xc
fdivp st(1)
mov word [rsp + 0x6c], ax
fldcw word [rsp + 0x6c]
fistp qword [rsp + 0x48]
fldcw word [rsp + 0x6e]
mov rax, qword [rsp + 0x48]
jmp 0x14008bdb0
lea rcx, [rsi - 0xf423f]
movabs rdx, 0x431bde82d7b634db
mov rax, rcx
imul rdx
mov rax, rcx
sar rax, 0x3f
sar rdx, 0x12
mov rsi, rdx
sub rsi, rax
jmp 0x14008bed6
movabs rdx, 0x6666666666666667
mov rax, rsi
imul rdx
mov rax, rsi
sar rax, 0x3f
sar rdx, 3
mov r15, rdx
sub r15, rax
mov eax, 0x3e8
cmp r15d, 0x3e8
cmova r15d, eax
imul rsi, rsi, 0xffffffffffffd8f0
mov qword [rsp + 0x78], rsi
jmp 0x14008bf16
movzx eax, byte [0x90]
ud2
mov qword [rsp + 0x58], 0xffffffffffffffff
movabs rax, 0x7fffffffffffffff
cmp qword [rdi], rax
je 0x14008c219
mov rcx, r12
call r13
test eax, eax
je 0x14008c0b2
cmp qword [rsp + 0x70], 0
jle 0x14008c0b2
mov rax, qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov esi, 4
lea r14, [rsp + 0x78]
mov qword [rsp + 0x48], rax
mov rax, qword [rsp + 0x48]
mov rcx, r14
call rax
test eax, eax
jne 0x14008c1e2
sub esi, 1
jne 0x14008c09b
xor eax, eax
mov rsi, qword [rdi]
sub rsi, rax
mov rax, rsi
js 0x14008c177
movabs rdx, 0x431bde82d7b634db
add rax, 0xf423f
mul rdx
mov rax, rdx
shr rax, 0x12
test rax, rax
mov ebp, 0
mov esi, 0xffffffff
cmovns rbp, rax
jmp 0x14008bd22
mov r12d, 1
jmp 0x14008be33
mov ecx, dword [0x140548540]
cmp ecx, 0xffffffff
je 0x14008c1db
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rcx, qword [rax + 0x88]
call qword [sym.imp.KERNEL32.dll_ResetEvent]
mov ecx, 1
call fcn.14053f1b0
xor r8d, r8d
lea rdx, [0x140621270]
mov rcx, rax
call fcn.14053f880
nop dword [rax]
lea rcx, [0x14056694f]
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov rcx, rax
lea rdx, str.SetWaitableTimerEx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
lea rdx, [0x14008a260]
cmove rax, rdx
mov qword [0x1406a3aa0], rax
jmp 0x14008bf26
lea rcx, [rsi - 0xf423f]
movabs rdx, 0x431bde82d7b634db
mov rax, rcx
imul rdx
mov rax, rcx
sar rax, 0x3f
sar rdx, 0x12
sub rdx, rax
mov rax, rdx
jmp 0x14008c0dd
fnstcw word [rsp + 0x6e]
fild qword [rsp + 0x78]
fmul dword [str._knN]
fild qword [rsp + 0x70]
movzx eax, word [rsp + 0x6e]
or ah, 0xc
fdivp st(1)
mov word [rsp + 0x6c], ax
fldcw word [rsp + 0x6c]
fistp qword [rsp + 0x48]
fldcw word [rsp + 0x6e]
mov rax, qword [rsp + 0x48]
jmp 0x14008bead
xor eax, eax
jmp 0x14008c113
fnstcw word [rsp + 0x6e]
fild qword [rsp + 0x78]
fmul dword [str._knN]
fild qword [rsp + 0x70]
movzx eax, word [rsp + 0x6e]
or ah, 0xc
fdivp st(1)
mov word [rsp + 0x6c], ax
fldcw word [rsp + 0x6c]
fistp qword [rsp + 0x48]
fldcw word [rsp + 0x6e]
mov rax, qword [rsp + 0x48]
jmp 0x14008c0b4
or esi, 0xffffffff
mov ebp, 0xffffffff
jmp 0x14008bd22
mov rax, qword [0x88]
ud2