Function at 0x1000d48e0
Capabilities:
Check for time delay via queryperformancecounter
Get thread local storage value

Disassembly:
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x5e0
mov qword [rsp + 0xa8], 0xfffffffffffffffe
mov rax, qword [0x10022f440]
xor rax, rsp
mov qword [rsp + 0x5d8], rax
mov qword [rsp + 0xa0], r8
mov r13, rdx
mov rbx, rcx
mov qword [rsp + 0x68], rcx
mov qword [rsp + 0x48], rdx
mov r12d, dword [rcx]
shr r12d, 4
and r12d, 1
mov dword [rsp + 0x34], r12d
mov rdi, qword [rdx + 0x98]
mov qword [rsp + 0x38], rdi
mov r14, qword [rdx + 0xa0]
mov qword [rsp + 0x40], r14
mov dword [rsp + 0x30], 0x80000000
call fcn.1001672c0
test eax, eax
je 0x1000d497c
call qword [0x1002aaa48]
test eax, eax
je 0x1000d497c
call qword [0x1002aab98]
lea rcx, [rbx + 0x30]
call qword [0x1002aab90]
test r12d, r12d
je 0x1000d49a8
lock inc dword [r14 + 0xa9c]
mov rax, qword [r14]
mov rdx, rdi
mov rcx, r14
call qword [rax + reloc.WS2_32.dll_htonl]
mov rcx, qword [rdi + 0x228]
or dword [rcx + 0xe0], 4
call fcn.1000d47f0
call fcn.100073440
test eax, eax
je 0x1000d4a9d
lea rcx, [rsp + 0x110]
call fcn.1000733f0
mov rdx, r13
lea rcx, [rsp + 0x110]
call fcn.100073460
mov rdx, qword [rbx + 8]
lea rcx, [rsp + 0x110]
call fcn.100073470
mov rdi, qword [r13 + 0x38]
call fcn.10011b7d0
test eax, eax
je 0x1000d4a08
lea rcx, [rsp + 0x90]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov rbx, qword [rsp + 0x90]
jmp 0x1000d4a10
mov rbx, qword [0x7ffe0008]
cmp rbx, rdi
jb 0x1000d4a30
sub rbx, rdi
cmp rbx, 0xffffffffffffffff
jne 0x1000d4a32
or rsi, rbx
mov rax, rsi
movabs r15, 0xcccccccccccccccd
jmp 0x1000d4a79
xor ebx, ebx
call fcn.10011b7d0
test eax, eax
je 0x1000d4a5e
call fcn.10011b7f0
mov r11, rax
imul rbx, rbx, 0xf4240
xor edx, edx
mov rax, rbx
div r11
movabs r15, 0xcccccccccccccccd
jmp 0x1000d4a75
movabs r15, 0xcccccccccccccccd
mov rax, r15
mul rbx
mov rax, rdx
shr rax, 3
or rsi, 0xffffffffffffffff
mov rdx, rax
lea rcx, [rsp + 0x110]
call fcn.100073480
lea rcx, [rsp + 0x110]
call fcn.100073490
mov rbx, qword [rsp + 0x68]
jmp 0x1000d4aab
or rsi, 0xffffffffffffffff
movabs r15, 0xcccccccccccccccd
xor edx, edx
lea rax, [fcn.100062040]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
lea rcx, [rsp + 0xd0]
call fcn.10005b410
nop
mov rcx, qword [rbx + 0x10]
call qword [rbx + reloc.WS2_32.dll_htonl]
mov rcx, qword [rsp + 0xa0]
mov qword [rcx], rax
mov dword [rsp + 0x30], 0
lea rcx, [rsp + 0xd0]
call fcn.10005b4f0
nop
jmp 0x1000d4b14
call fcn.100068a00
mov qword [rsp + 0x78], rax
mov rax, qword gs:[0x30]
mov qword [rsp + 0xc8], rax
mov rdi, qword [rsp + 0x78]
lea rbx, [rax + rdi]
mov qword [rsp + 0x98], rbx
mov rcx, rdi
call fcn.10006c530
test eax, eax
jne 0x1000d4b5f
mov ecx, edi
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rbx, rax
mov qword [rsp + 0x98], rax
test rbx, rbx
je 0x1000d4b78
mov rax, qword [rbx + 0xd8]
mov qword [rsp + 0x80], rax
test rax, rax
jne 0x1000d4bd1
call fcn.100063d30
call fcn.100068a00
mov qword [rsp + 0x50], rax
mov rax, qword gs:[0x30]
mov qword [rsp + 0xb0], rax
mov rdi, qword [rsp + 0x50]
lea rbx, [rax + rdi]
mov qword [rsp + 0x70], rbx
mov rcx, rdi
call fcn.10006c530
test eax, eax
jne 0x1000d4bc2
mov ecx, edi
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rbx, rax
mov qword [rsp + 0x70], rax
mov rax, qword [rbx + 0xd8]
mov qword [rsp + 0x80], rax
mov eax, dword [rax + 0x204]
mov dword [rsp + 0x88], eax
test eax, eax
je 0x1000d4be8
call fcn.1000618f0
nop
jmp 0x1000d4c07
call fcn.100073600
test eax, eax
je 0x1000d4d5f
lea rcx, [rsp + 0x370]
call fcn.1000735b0
mov rdx, r13
lea rcx, [rsp + 0x370]
call fcn.100073620
call fcn.10011b7d0
test eax, eax
je 0x1000d4c4c
lea rcx, [rsp + 0x58]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov r11, qword [rsp + 0x58]
jmp 0x1000d4c54
mov r11, qword [0x7ffe0008]
mov rdx, qword [r13 + 0x98]
mov rax, qword [rdx + 0x3a0]
mov rcx, qword [r13 + 0x168]
cmp rax, rcx
jb 0x1000d4c73
sub rax, rcx
jmp 0x1000d4c75
xor eax, eax
mov rcx, qword [rdx + 0x2e8]
cmp r11, rcx
jb 0x1000d4c86
sub r11, rcx
jmp 0x1000d4c89
xor r11d, r11d
lea rbx, [r11 + rax]
cmp rbx, 0xffffffffffffffff
jne 0x1000d4c98
mov rax, rsi
jmp 0x1000d4cc7
call fcn.10011b7d0
test eax, eax
je 0x1000d4cba
call fcn.10011b7f0
mov r11, rax
imul rbx, rbx, 0xf4240
xor edx, edx
mov rax, rbx
div r11
jmp 0x1000d4cc7
mov rax, r15
mul rbx
mov rax, rdx
shr rax, 3
mov rdx, rax
lea rcx, [rsp + 0x370]
call fcn.100073630
mov rdi, qword [r13 + 0x38]
call fcn.10011b7d0
test eax, eax
je 0x1000d4cf6
lea rcx, [rsp + 0x60]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov rbx, qword [rsp + 0x60]
jmp 0x1000d4cfe
mov rbx, qword [0x7ffe0008]
cmp rbx, rdi
jb 0x1000d4d0e
sub rbx, rdi
cmp rbx, 0xffffffffffffffff
jne 0x1000d4d10
jmp 0x1000d4d42
xor ebx, ebx
call fcn.10011b7d0
test eax, eax
je 0x1000d4d35
call fcn.10011b7f0
mov r11, rax
imul rbx, rbx, 0xf4240
xor edx, edx
mov rax, rbx
div r11
mov rsi, rax
jmp 0x1000d4d42
mov rax, r15
mul rbx
mov rsi, rdx
shr rsi, 3
mov rdx, rsi
lea rcx, [rsp + 0x370]
call fcn.100073640
lea rcx, [rsp + 0x370]
call fcn.100073650
test r12d, r12d
je 0x1000d4db6
call fcn.100068a00
mov rdi, rax
mov rbx, qword gs:[0x30]
add rbx, rax
mov rcx, rax
call fcn.10006c530
test eax, eax
jne 0x1000d4d8f
mov ecx, edi
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rbx, rax
mov ecx, dword [rbx + 0xe0]
mov r8d, ecx
xor r8d, 4
and r8d, ecx
mov dword [rbx + 0xe0], r8d
mov rcx, rbx
call fcn.1000d47f0
lock dec dword [r14 + 0xa9c]
mov rdx, qword [rsp + 0x38]
test byte [rdx + 0x2d8], 4
je 0x1000d4dd3
mov rax, qword [r14]
mov r8d, 1
mov rcx, r14
call qword [rax + 0x10]
mov eax, dword [rsp + 0x30]
mov rcx, qword [rsp + 0x5d8]
xor rcx, rsp
call fcn.10005f420
add rsp, 0x5e0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
ret