Function at 0x180106ac0
Capabilities:
Check for time delay via gettickcount

Disassembly:
mov rax, rsp
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xd0
mov qword [rsp + 0x40], 0xfffffffffffffffe
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rbp
mov qword [rax + 0x20], rsi
movaps xmmword [rax - 0x38], xmm6
movaps xmmword [rax - 0x48], xmm7
movaps xmmword [rax - 0x58], xmm8
movaps xmmword [rax - 0x68], xmm9
movaps xmmword [rax - 0x78], xmm10
movaps xmmword [rsp + 0x70], xmm11
movzx r14d, r9b
mov ebp, r8d
mov r12, rdx
mov rsi, rcx
movsd xmm6, qword [rcx + 0x70]
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov r10d, eax
sub r10d, dword [rsi + 0xc8]
cmp r10d, 0x64
jb 0x180106b68
test ebp, ebp
jle 0x180106b49
comisd xmm6, xmmword [0x1803f6ec0]
jb 0x180106b68
movsd xmm0, qword [0x1803f6ef0]
comisd xmm0, xmm6
jmp 0x180106b5f
movsd xmm0, qword [0x1803f6f18]
comisd xmm0, xmm6
jb 0x180106b68
comisd xmm6, xmmword [0x1803f6ef0]
jb 0x180106b68
mov byte [rsi + 0xd8], 1
mov dword [rsi + 0xc8], eax
xor r13d, r13d
test ebp, ebp
jle 0x180106b7f
comisd xmm6, xmmword [0x1803f6f08]
jmp 0x180106b8b
movsd xmm0, qword [0x1803f6ee0]
comisd xmm0, xmm6
jbe 0x180106b9b
mov dword [rsi + 0xdc], r13d
mov byte [rsi + 0xd8], r13b
cmp qword [rsi + 0x28], r13
je 0x180106de9
mov eax, dword [0x1804f3160]
test al, 1
jne 0x180106bc5
or eax, 1
mov dword [0x1804f3160], eax
movsd xmm0, qword [rsi + 0x70]
movsd qword [0x1804f3158], xmm0
test al, 2
jne 0x180106bde
or eax, 2
mov dword [0x1804f3160], eax
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x1804f3150], eax
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov edi, eax
sub edi, dword [0x1804f3150]
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x1804f3150], eax
lea rbx, [rsi + 0xa8]
mov qword [rsp + 0x100], rbx
test rbx, rbx
je 0x180106c1b
mov rcx, qword [rbx]
test rcx, rcx
je 0x180106c1b
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
nop
movups xmm10, xmmword [rsi + 0x78]
movups xmm11, xmmword [rsi + 0x88]
movsd xmm1, qword [rsi + 0x70]
movaps xmm7, xmm1
movsd xmm4, qword [0x1804f3158]
cmp edi, 0x64
jae 0x180106c4c
mov eax, ebp
cdq
xor eax, edx
sub eax, edx
cmp eax, 1
jne 0x180106c4c
movaps xmm7, xmm4
xor al, al
movaps xmm0, xmm7
movsd xmm3, qword [0x1803f6ef8]
subsd xmm0, xmm3
movsd xmm8, qword [0x1803f7390]
andps xmm0, xmm8
movsd xmm2, qword [0x1803f6dd0]
comisd xmm2, xmm0
jbe 0x180106ca3
movaps xmm0, xmm1
subsd xmm0, xmm3
andps xmm0, xmm8
comisd xmm2, xmm0
jbe 0x180106ca3
movaps xmm0, xmm7
subsd xmm0, xmm4
andps xmm0, xmm8
movzx eax, al
mov ecx, 1
comisd xmm2, xmm0
cmova eax, ecx
movsd qword [0x1804f3158], xmm1
test al, al
jne 0x180106d2b
test r14b, r14b
je 0x180106d2b
cmp byte [rsi + 0xd8], al
je 0x180106ce1
subsd xmm1, xmm3
andps xmm1, xmm8
comisd xmm2, xmm1
jbe 0x180106d21
mov eax, dword [rsi + 0xdc]
cmp eax, 1
ja 0x180106d21
inc eax
mov dword [rsi + 0xdc], eax
mov al, 1
jmp 0x180106d23
cmp byte [0x1804f2f24], 0
je 0x180106df0
mov eax, dword [0x1804f2f20]
cmp eax, 4
jae 0x180106d13
subsd xmm1, xmm3
andps xmm1, xmm8
comisd xmm2, xmm1
jbe 0x180106d13
inc eax
mov dword [0x1804f2f20], eax
mov al, 1
jmp 0x180106d23
mov byte [0x1804f2f24], 0
mov dword [0x1804f2f20], r13d
xor al, al
test al, al
jne 0x180106ee8
movsd xmm6, qword [rsi + 0x70]
movsd qword [rsp + 0x30], xmm6
mov rdi, qword [rsi + 0x28]
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0xd0]
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0xc8]
test ebp, ebp
setg r15b
xor r14b, r14b
mov rcx, qword [rsi + 0x68]
test rcx, rcx
je 0x180106d71
mov rax, qword [rcx]
call qword [rax + 0x80]
movzx r14d, al
mov edi, r13d
mov eax, ebp
cdq
mov ebp, eax
xor ebp, edx
sub ebp, edx
test ebp, ebp
jle 0x180106dae
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
movaps xmm3, xmm7
movzx r8d, r15b
movzx edx, r14b
call fcn.18021e760
movsd xmm6, qword [rsp + 0x30]
test al, al
je 0x180106dae
movaps xmm7, xmm6
inc edi
cmp edi, ebp
jl 0x180106d81
movsd xmm7, qword [rsi + 0x70]
movaps xmm0, xmm7
subsd xmm0, xmm6
andps xmm0, xmm8
movsd xmm9, qword [0x1803f6e08]
comisd xmm9, xmm0
jbe 0x180106e10
test rbx, rbx
je 0x180106de9
mov rcx, qword [rbx]
test rcx, rcx
je 0x180106de1
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov qword [rsp + 0x100], r13
xor al, al
jmp 0x180106f05
subsd xmm1, xmm3
andps xmm1, xmm8
comisd xmm2, xmm1
jbe 0x180106d21
mov byte [0x1804f2f24], 1
mov al, 1
jmp 0x180106d23
xorps xmm0, xmm0
movups xmmword [rsp + 0x48], xmm0
xorps xmm1, xmm1
movups xmmword [rsp + 0x58], xmm1
mov rax, qword [r12]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
movsd qword [rsp + 0x30], xmm0
shr rax, 0x20
movd xmm0, eax
cvtdq2pd xmm0, xmm0
movsd qword [rsp + 0x38], xmm0
mov rax, qword [rsi]
lea r9, [rsp + 0x48]
movaps xmm2, xmm6
lea rdx, [rsp + 0x30]
mov rcx, rsi
call qword [rax + 0x120]
movups xmmword [rsi + 0x78], xmm10
movups xmmword [rsi + 0x88], xmm11
movsd qword [rsi + 0x70], xmm7
movsd qword [0x1804f3158], xmm6
test rbx, rbx
je 0x180106e95
mov rcx, qword [rbx]
test rcx, rcx
je 0x180106e8a
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov rbx, r13
mov qword [rsp + 0x100], rbx
movaps xmm1, xmm6
subsd xmm1, xmm7
andps xmm1, xmm8
movaps xmm0, xmm1
movsd xmm2, qword [0x1803f6e18]
subsd xmm0, xmm2
andps xmm0, xmm8
comisd xmm9, xmm0
ja 0x180106ec4
comisd xmm1, xmm2
ja 0x180106ec4
xor dl, dl
jmp 0x180106ec6
mov dl, 1
mov rax, qword [rsi]
mov byte [rsp + 0x28], 0
lea rcx, [rsp + 0x48]
mov qword [rsp + 0x20], rcx
movaps xmm3, xmm6
mov r8, r12
mov rcx, rsi
call qword [rax + 0x158]
nop
test rbx, rbx
je 0x180106f03
mov rcx, qword [rbx]
test rcx, rcx
je 0x180106efb
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov qword [rsp + 0x100], r13
mov al, 1
lea r11, [rsp + 0xd0]
mov rbx, qword [r11 + 0x38]
mov rbp, qword [r11 + 0x40]
mov rsi, qword [r11 + 0x48]
movaps xmm6, xmmword [r11 - 0x10]
movaps xmm7, xmmword [r11 - 0x20]
movaps xmm8, xmmword [r11 - 0x30]
movaps xmm9, xmmword [r11 - 0x40]
movaps xmm10, xmmword [r11 - 0x50]
movaps xmm11, xmmword [r11 - 0x60]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret