Function at 0x10005ae60
Capabilities:
Execute anti-debugging instructions
Get thread local storage value

Disassembly:
mov qword [rsp + 0x20], rbx
push rsi
push rdi
push r12
push r13
push r15
sub rsp, 0x20
mov r12d, r9d
mov r13, r8
mov r15d, edx
mov rsi, rcx
call fcn.100068a00
mov rbx, qword gs:[0x30]
mov rcx, rax
mov rdi, rax
add rbx, rax
call fcn.10006c530
test eax, eax
jne 0x10005aea8
mov ecx, edi
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rbx, rax
test rbx, rbx
je 0x10005aeb9
mov rbx, qword [rbx + 0xd8]
test rbx, rbx
jne 0x10005aef0
call fcn.100063d30
call fcn.100068a00
mov rbx, qword gs:[0x30]
mov rcx, rax
mov rdi, rax
add rbx, rax
call fcn.10006c530
test eax, eax
jne 0x10005aee9
mov ecx, edi
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rbx, rax
mov rbx, qword [rbx + 0xd8]
test r15d, r15d
je 0x10005af42
mov rcx, qword [rbx + 0x210]
test rcx, rcx
je 0x10005af42
mov eax, dword [rcx + 0xb4]
test al, 4
je 0x10005af42
mov rax, qword [rcx + 0x98]
test byte [rax + 0x220], 1
jne 0x10005af42
mov eax, dword [rax + 0x2d8]
test al, al
js 0x10005af42
bt eax, 8
jb 0x10005af42
mov eax, 2
mov rbx, qword [rsp + 0x68]
add rsp, 0x20
pop r15
pop r13
pop r12
pop rdi
pop rsi
ret
mov r8, qword [rbx + 0x218]
xor edi, edi
mov qword [rsp + 0x60], r14
test r8, r8
je 0x10005b064
rdtsc
shl rdx, 0x20
movabs r9, 0x7fffffffffffffff
or rax, rdx
mov rdx, qword [rbx + 0x2f8]
cmp rax, rdx
ja 0x10005af94
mov rcx, rdx
sub rcx, rax
cmp rcx, qword [r8 + 0xab0]
jbe 0x10005b064
cmp rdx, r9
je 0x10005b064
cmp dword [rsi], 1
jne 0x10005b064
test r15d, r15d
je 0x10005b064
mov qword [rsp + 0x50], rbp
call fcn.100068a00
mov rbp, qword gs:[0x30]
mov rcx, rax
mov r14, rax
add rbp, rax
call fcn.10006c530
test eax, eax
jne 0x10005afd7
mov ecx, r14d
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rbp, rax
test rbp, rbp
je 0x10005afe8
mov rcx, qword [rbp + 0xd8]
test rcx, rcx
jne 0x10005b020
call fcn.100063d30
call fcn.100068a00
mov rbp, qword gs:[0x30]
mov rcx, rax
mov r14, rax
add rbp, rax
call fcn.10006c530
test eax, eax
jne 0x10005b019
mov ecx, r14d
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rbp, rax
mov rcx, qword [rbp + 0xd8]
rdtsc
mov r8, qword [rcx + 0x2f8]
mov rbp, qword [rsp + 0x50]
shl rdx, 0x20
or rax, rdx
cmp rax, r8
ja 0x10005b05f
mov rdx, r8
sub rdx, rax
mov rax, qword [rcx + 0x218]
cmp rdx, qword [rax + 0xab0]
jbe 0x10005b064
movabs rax, 0x7fffffffffffffff
cmp r8, rax
je 0x10005b064
call fcn.1000655c0
lea r14, [rsi + 0x20]
call fcn.100064800
mov edx, eax
xor eax, eax
lock cmpxchg dword [r14], edx
je 0x10005b080
mov rcx, r14
call fcn.10005ad30
cmp dword [rsi], edi
jne 0x10005b0f8
test r15d, r15d
je 0x10005b0ee
lea rcx, [rsi + 8]
test r12d, r12d
je 0x10005b0aa
mov rax, qword [rcx + 8]
mov qword [rbx + 8], rax
mov rax, qword [rcx + 8]
mov qword [rax], rbx
mov qword [rcx + 8], rbx
mov qword [rbx], rcx
jmp 0x10005b0be
mov rax, qword [rcx]
mov qword [rbx], rax
mov rax, qword [rcx]
mov qword [rax + 8], rbx
mov qword [rcx], rbx
mov qword [rbx + 8], rcx
mov qword [rbx + 0x290], rcx
mov qword [rbx + 0x298], r14
mov rcx, r13
mov dword [r14], edi
call fcn.1000cfc60
mov edx, r15d
mov rcx, rbx
call fcn.1000d54f0
mov rcx, r13
mov edi, eax
call fcn.1000cfe30
jmp 0x10005b10c
mov dword [r14], edi
mov edi, 0x102
jmp 0x10005b10c
cmp dword [rsi + 4], 1
jne 0x10005b109
mov eax, dword [rsi]
dec qword [rsi + 0x18]
cmove eax, edi
mov dword [rsi], eax
mov dword [r14], edi
mov r14, qword [rsp + 0x60]
mov rbx, qword [rsp + 0x68]
mov eax, edi
add rsp, 0x20
pop r15
pop r13
pop r12
pop rdi
pop rsi
ret