Function at 0x1400a8ec0
Capabilities:
Check for time delay via queryperformancecounter

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x158
movdqa xmmword [rsp + 0x140], xmm7
movaps xmmword [rsp + 0x130], xmm6
mov rsi, qword [rcx + 0x20]
lea rax, [rsi + 0x10]
mov qword [rsp + 0xf8], rax
mov qword [rsp + 0xa8], rdx
mov rax, qword [rdx]
mov qword [rsp + 0xf0], rax
mov rax, qword [rcx + 0x10]
mov qword [rsp + 0x40], rax
mov rax, qword [rcx]
mov r8d, dword [rcx + 8]
movzx edx, byte [rcx + 0x18]
mov dword [rsp + 0xd4], edx
mov edx, 0x3b9aca00
mov qword [rsp + 0x68], rax
mul rdx
mov qword [rsp + 0x60], r8
add rax, r8
mov qword [rsp + 0xe0], rax
adc rdx, 0
mov qword [rsp + 0xe8], rdx
mov rax, qword [rcx + 0x28]
mov qword [rsp + 0x38], rax
add rax, 0x10
mov qword [rsp + 0xa0], rax
xorps xmm6, xmm6
pcmpeqd xmm7, xmm7
mov qword [rsp + 0xb0], rsi
movzx eax, byte [rsi + 0x40]
test al, al
jne 0x1400aa720
mov rcx, qword [rsp + 0xf0]
mov rax, qword [rcx]
mov rcx, qword [rcx + 8]
call qword [rax]
mov r12, rax
mov rbp, rdx
mov al, 1
xchg byte [rsi + 0x20], al
mov esi, 0
test al, al
cmove rsi, qword [rsp + 0xf8]
jne 0x1400aa710
mov rax, qword [rsi]
test rax, rax
je 0x1400a8fbc
mov rcx, qword [rsi + 8]
call qword [rax + 0x18]
mov qword [rsi], r12
mov qword [rsi + 8], rbp
xor eax, eax
xchg byte [rsi + 0x10], al
mov rsi, qword [rsp + 0xb0]
movzx eax, byte [rsi + 0x40]
test al, al
jne 0x1400aa720
xor ecx, ecx
call fcn.140102310
test rax, rax
je 0x1400a9040
movzx esi, byte [rax + 0x4c]
movzx ebx, byte [rax + 0x4d]
test sil, sil
mov rcx, qword [rsp + 0x40]
je 0x1400a9002
test bl, bl
je 0x1400aa736
mov edx, ebx
sub dl, 1
movzx r8d, dl
mov edx, 0
cmovb r8d, edx
test sil, sil
movzx edx, bl
cmovne edx, r8d
mov byte [rax + 0x4d], dl
mov rdx, qword [rsp + 0xa8]
call fcn.1401026a0
test sil, sil
je 0x1400a9052
cmp al, 4
jne 0x1400a9052
jmp 0x1400aa750
mov rcx, qword [rsp + 0x40]
mov rdx, qword [rsp + 0xa8]
call fcn.1401026a0
test al, 0xfb
jne 0x1400aa732
cmp al, 4
sete bpl
mov rax, qword [rsp + 0x40]
je 0x1400aa78a
mov rsi, qword [rax + 0x10]
mov edi, dword [rax + 0x18]
mov qword [rsp + 0x28], 0
lea rcx, [rsp + 0x28]
call sub.KERNEL32.dll_QueryPerformanceCounter
test eax, eax
je 0x1400aa7b0
mov r12, qword [rsp + 0x28]
mov r8, qword [0x1401a4140]
test r8, r8
jne 0x1400a90ce
mov qword [rsp + 0x28], 0
lea rcx, [rsp + 0x28]
call sub.KERNEL32.dll_QueryPerformanceFrequency
test eax, eax
je 0x1400aa7b0
mov r8, qword [rsp + 0x28]
mov qword [0x1401a4140], r8
test r8, r8
je 0x1400aa732
mov rax, r12
or rax, r8
shr rax, 0x20
je 0x1400a90f0
mov rax, r12
xor edx, edx
div r8
mov rcx, rax
jmp 0x1400a90fa
mov eax, r12d
xor edx, edx
div r8d
mov ecx, eax
imul rax, rdx, 0x3b9aca00
mov rdx, rax
or rdx, r8
shr rdx, 0x20
je 0x1400a9120
xor edx, edx
div r8
jmp 0x1400a9125
xor edx, edx
div r8d
imul rcx, rcx, 0x3b9aca00
add rcx, rax
mov rax, rcx
shr rax, 9
movabs rdx, 0x44b82fa09b5a53
mul rdx
cmp edi, 0x3b4e7ec0
jb 0x1400a9160
mov r8, rsi
inc r8
je 0x1400aa732
lea eax, [rdi - 0x3b4e7ec0]
jmp 0x1400a9169
lea eax, [rdi + 0x4c4b40]
mov r8, rsi
shr rdx, 0xb
imul r9d, edx, 0x3b9aca00
sub ecx, r9d
cmp rdx, r8
jb 0x1400a918a
jne 0x1400a93c0
cmp eax, ecx
jb 0x1400a93c0
add rsi, qword [rsp + 0x68]
mov r8, qword [rsp + 0x40]
jb 0x1400aa732
add edi, dword [rsp + 0x60]
cmp edi, 0x3b9aca00
jb 0x1400a91b5
inc rsi
je 0x1400aa732
add edi, 0xc4653600
mov ecx, edi
mov qword [r8 + 0x10], rsi
mov dword [r8 + 0x18], ecx
mov byte [r8 + 0x68], 0
mov rdx, qword [r8 + 8]
cmp qword [r8], 0
mov r8d, 0x120
mov eax, 0xb8
cmove r8, rax
mov eax, dword [rdx + r8 + 0xc8]
cmp eax, 0x3b9aca00
je 0x1400aa732
cmp ecx, 0x3b8b87c1
jb 0x1400a9220
inc rsi
je 0x1400aa732
add ecx, 0xc474783f
cmp ecx, 0x3b9aca00
jne 0x1400a9226
jmp 0x1400aa732
add ecx, 0xf423f
add rdx, r8
add rdx, 0x10
mov rdx, qword [rdx + 0xb0]
mov qword [rsp + 0x90], rsi
mov dword [rsp + 0x98], ecx
mov qword [rsp + 0x28], rdx
mov dword [rsp + 0x30], eax
lea rcx, [rsp + 0x90]
lea rdx, [rsp + 0x28]
call fcn.1400f0810
mov ecx, edx
imul rcx, rcx, 0x431bde83
shr rcx, 0x32
cmp edx, 0x3b9aca00
mov edx, 0
cmove rax, rdx
cmove ecx, edx
mov edx, 0x3e8
mul rdx
add rcx, rax
adc rdx, 0
mov rax, 0xfffffffffffffffd
cmovne rcx, rax
mov r8, qword [rsp + 0x40]
mov rax, qword [r8 + 0x40]
cmp rcx, 0xfffffffffffffffd
mov rdx, 0xfffffffffffffffd
cmovb rdx, rcx
nop
cmp rax, rdx
ja 0x1400a92bd
lock cmpxchg qword [r8 + 0x40], rcx
jne 0x1400a92b0
mov rcx, qword [rsp + 0x38]
lea rax, [rcx + 1]
cmp rax, 2
jb 0x1400aa78a
mov rax, qword [rcx]
nop word cs:[rax + rax]
test rax, rax
je 0x1400aa788
js 0x1400aa732
lea rcx, [rax + 1]
mov rdx, qword [rsp + 0x38]
lock cmpxchg qword [rdx], rcx
jne 0x1400a92e0
mov rsi, qword [rsp + 0x38]
mov qword [rsp + 0x90], rsi
mov rcx, qword [rsp + 0xa0]
call sub.KERNEL32.dll_AcquireSRWLockExclusive
movzx eax, byte [rsi + 0x18]
test al, al
jne 0x1400aa768
mov eax, dword [rsi + 0xd8]
mov dword [rsp + 0x5c], eax
cmp eax, 0x3b9aca00
je 0x1400aa732
mov rax, qword [rsi + 0xd0]
mov qword [rsp + 0x80], rax
mov qword [rsp + 0x28], 0
lea rcx, [rsp + 0x28]
call sub.KERNEL32.dll_QueryPerformanceCounter
test eax, eax
je 0x1400aa7b0
mov r12, qword [rsp + 0x28]
mov r8, qword [0x1401a4140]
test r8, r8
jne 0x1400a93a5
mov qword [rsp + 0x28], 0
lea rcx, [rsp + 0x28]
call sub.KERNEL32.dll_QueryPerformanceFrequency
test eax, eax
je 0x1400aa7b0
mov r8, qword [rsp + 0x28]
mov qword [0x1401a4140], r8
test r8, r8
je 0x1400aa732
mov rax, r12
or rax, r8
shr rax, 0x20
je 0x1400a940f
mov rax, r12
xor edx, edx
div r8
mov rcx, rax
jmp 0x1400a9419
mov eax, dword [rsp + 0xd4]
test eax, eax
mov r8, qword [rsp + 0x40]
je 0x1400aa5a1
cmp eax, 1
jne 0x1400aa5b1
add rdx, qword [rsp + 0x68]
jb 0x1400aa732
add ecx, dword [rsp + 0x60]
cmp ecx, 0x3b9aca00
jb 0x1400aa708
inc rdx
je 0x1400aa732
add ecx, 0xc4653600
mov rsi, rdx
jmp 0x1400a91b7
mov eax, r12d
xor edx, edx
div r8d
mov ecx, eax
imul rax, rdx, 0x3b9aca00
mov rdx, rax
or rdx, r8
shr rdx, 0x20
je 0x1400a9433
xor edx, edx
div r8
jmp 0x1400a9438
xor edx, edx
div r8d
imul rdi, rcx, 0x3b9aca00
add rdi, rax
mov rax, rdi
shr rax, 9
movabs rcx, 0x44b82fa09b5a53
mul rcx
mov rsi, qword [rsp + 0x38]
mov rax, qword [rsi + 0x78]
test rax, rax
je 0x1400aa568
shr rdx, 0xb
mov qword [rsp + 0x88], rdx
mov rcx, rax
imul eax, edx, 0x3b9aca00
sub edi, eax
mov rax, qword [rsp + 0x38]
mov rdx, qword [rax + 0x60]
lea rbx, [rdx + 0x10]
movdqa xmm0, xmmword [rdx]
pmovmskb eax, xmm0
not eax
lea r8d, [rdi + 0x3b9aca00]
mov dword [rsp + 0x58], r8d
mov qword [rsp + 0xd8], rcx
mov qword [rsp + 0x100], rcx
mov qword [rsp + 0xb8], rdx
mov rsi, rdx
mov qword [rsp + 0x78], rdi
jmp 0x1400a94f8
mov rbx, qword [rsp + 0x70]
mov rsi, qword [rsp + 0xc8]
mov rcx, qword [rsp + 0x108]
lea eax, [rcx - 1]
and eax, ecx
dec qword [rsp + 0x100]
je 0x1400aa560
test ax, ax
jne 0x1400a951c
nop dword [rax]
movdqa xmm0, xmmword [rbx]
pmovmskb eax, xmm0
add rsi, 0xfffffffffffffb80
add rbx, 0x10
cmp eax, 0xffff
je 0x1400a9500
not eax
mov qword [rsp + 0xc8], rsi
mov qword [rsp + 0x70], rbx
mov qword [rsp + 0x108], rax
tzcnt eax, eax
neg rax
lea rax, [rax + rax*8]
lea rcx, [rsi + rax*8]
mov rax, qword [rsi + rax*8 - 8]
mov qword [rsp + 0x48], rax
test rax, rax
mov qword [rsp + 0x50], rcx
je 0x1400a9780
mov r12, qword [rcx - 0x18]
xor ebx, ebx
jmp 0x1400a9572
inc rbx
add r12, 0x48
cmp qword [rsp + 0x48], rbx
je 0x1400a9edb
mov rax, qword [r12 + 0x28]
movzx eax, byte [rax + 0x10]
test al, al
jne 0x1400a9760
cmp byte [r12 + 0x10], 2
jne 0x1400a95a0
mov rax, qword [r12]
mov rax, qword [rax + 0x10]
cmp rax, 3
jne 0x1400a95b2
jmp 0x1400a9760
mov rax, qword [r12]
mov rax, qword [rax + 0x10]
cmp rax, 1
jne 0x1400a9760
mov r15, qword [r12 + 0x38]
mov r14d, dword [r12 + 0x40]
mov r8, qword [0x1401a4140]
test r8, r8
jne 0x1400a95f8
mov qword [rsp + 0x28], 0
lea rcx, [rsp + 0x28]
call sub.KERNEL32.dll_QueryPerformanceFrequency
test eax, eax
je 0x1400aa7b0
mov r8, qword [rsp + 0x28]
mov qword [0x1401a4140], r8
test r8, r8
je 0x1400aa732
cmp r8, 0x3b9aca00
ja 0x1400a9610
mov eax, 0x3b9aca00
xor edx, edx
div r8d
jmp 0x1400a9612
xor eax, eax
mov ecx, 0xc4653600
add ecx, eax
xor edx, edx
cmp r8, 2
setb r8b
cmovae ecx, eax
mov eax, ecx
shr eax, 9
imul rax, rax, 0x44b83
shr rax, 0x27
imul eax, eax, 0x3b9aca00
sub ecx, eax
mov rax, r15
sub rax, qword [rsp + 0x88]
jb 0x1400a9652
jne 0x1400a9690
cmp r14d, edi
ja 0x1400a9690
mov rax, qword [rsp + 0x88]
mov ecx, 0x3b9aca00
sub rax, r15
jae 0x1400a9670
jmp 0x1400a9720
cmp r14d, edi
jbe 0x1400a96aa
test rax, rax
je 0x1400a9720
dec rax
mov ecx, dword [rsp + 0x58]
jmp 0x1400a96ac
cmp r14d, edi
jae 0x1400a96d2
test rax, rax
je 0x1400aa732
dec rax
lea r9d, [r14 + 0x3b9aca00]
jmp 0x1400a96d5
mov ecx, edi
sub ecx, r14d
mov edx, ecx
shr edx, 9
imul rdx, rdx, 0x44b83
shr rdx, 0x27
add rax, rdx
jb 0x1400aa732
imul edx, edx, 0x3b9aca00
sub ecx, edx
jmp 0x1400a9720
mov r9d, r14d
sub r9d, edi
mov r10d, r9d
shr r10d, 9
imul r10, r10, 0x44b83
shr r10, 0x27
add rax, r10
jb 0x1400aa732
mov dl, r8b
cmp rax, rdx
jb 0x1400a9714
jne 0x1400a9652
imul eax, r10d, 0x3b9aca00
sub r9d, eax
cmp r9d, ecx
ja 0x1400a9652
xor eax, eax
xor ecx, ecx
nop dword [rax + rax]
cmp ecx, 0x3b9aca00
mov edx, 0
cmove rax, rdx
cmp rax, qword [rsp + 0x80]
jb 0x1400a9560
cmp ecx, 0x3b9aca00
setne dl
cmp ecx, dword [rsp + 0x5c]
seta cl
cmp rax, qword [rsp + 0x80]
jne 0x1400a9760
and dl, cl
je 0x1400a9560
nop
inc rbx
mov rcx, r12
call fcn.14008bdd0
mov r15d, 1
cmp rbx, qword [rsp + 0x48]
jne 0x1400a9790
jmp 0x1400a9ee0
xor ebx, ebx
xor r15d, r15d
cmp rbx, qword [rsp + 0x48]
je 0x1400a9ee0
mov rax, qword [rsp + 0x50]
mov rbp, qword [rax - 0x18]
jmp 0x1400a97ee
mov rax, rbx
sub rax, r15
lea rax, [rax + rax*8]
mov rcx, qword [r13 + 0x40]
mov qword [rbp + rax*8 + 0x40], rcx
movdqu xmm0, xmmword [r13]
movdqu xmm1, xmmword [r13 + 0x10]
movups xmm2, xmmword [r13 + 0x20]
movups xmm3, xmmword [r13 + 0x30]
movups xmmword [rbp + rax*8 + 0x30], xmm3
movups xmmword [rbp + rax*8 + 0x20], xmm2
movdqu xmmword [rbp + rax*8 + 0x10], xmm1
movdqu xmmword [rbp + rax*8], xmm0
nop word [rax + rax]
inc rbx
cmp rbx, qword [rsp + 0x48]
je 0x1400a9ee0
lea rax, [rbx + rbx*8]
lea r13, [rax*8]
add r13, rbp
mov rcx, qword [rbp + rax*8 + 0x28]
movzx ecx, byte [rcx + 0x10]
test cl, cl
je 0x1400a9a00
mov r12, qword [r13 + 0x18]
test r12, r12
je 0x1400a9844
mov rsi, qword [r13 + 0x20]
mov rcx, r12
call qword [rsi]
cmp qword [rsi + 8], 0
je 0x1400a9844
cmp qword [rsi + 0x10], 0x11
jb 0x1400a9833
mov r12, qword [r12 - 8]
mov rcx, qword [0x1401a4160]
xor edx, edx
mov r8, r12
call sub.KERNEL32.dll_HeapFree
mov rax, qword [r13 + 0x28]
lock dec qword [rax]
jne 0x1400a9857
mov rcx, qword [r13 + 0x28]
call fcn.140047ea0
inc r15
cmp byte [r13 + 0x10], 2
jne 0x1400a9910
mov rax, qword [r13]
lock dec qword [rax]
jne 0x1400a9878
mov rcx, qword [r13]
call fcn.14006e3d0
mov rax, qword [r13 + 8]
add r13, 8
lock dec qword [rax + 0x1d0]
jne 0x1400a99e0
mov qword [rsp + 0xc0], r15
mov r14, qword [r13]
mov eax, 1
lock xadd qword [r14 + 0x88], rax
mov r15, rax
and r15, 0xffffffffffffffe0
mov rcx, qword [r14 + 0x80]
mov rdx, r15
sub rdx, qword [rcx + 0x2300]
jne 0x1400a9a92
movabs rax, 0x200000000
lock or qword [rcx + 0x2310], rax
mov rax, qword [r14 + 0x110]
mov rdi, qword [rsp + 0x78]
nop word cs:[rax + rax]
mov rcx, rax
or rcx, 2
lock cmpxchg qword [r14 + 0x110], rcx
jne 0x1400a98f0
jmp 0x1400a99a2
mov rax, qword [r13]
lock dec qword [rax]
jne 0x1400a9923
mov rcx, qword [r13]
call fcn.14006e3d0
mov rax, qword [r13 + 8]
add r13, 8
lock dec qword [rax + 0x1d0]
jne 0x1400a99e0
mov qword [rsp + 0xc0], r15
mov r14, qword [r13]
mov eax, 1
lock xadd qword [r14 + 0x88], rax
mov r15, rax
and r15, 0xffffffffffffffe0
mov rcx, qword [r14 + 0x80]
mov rdx, r15
sub rdx, qword [rcx + 0x2300]
jne 0x1400a9c15
movabs rax, 0x200000000
lock or qword [rcx + 0x2310], rax
mov rax, qword [r14 + 0x110]
mov rdi, qword [rsp + 0x78]
nop
mov rcx, rax
or rcx, 2
lock cmpxchg qword [r14 + 0x110], rcx
jne 0x1400a9990
test rax, rax
mov r15, qword [rsp + 0xc0]
jne 0x1400a99e0
mov rax, qword [r14 + 0x100]
mov rcx, qword [r14 + 0x108]
mov qword [r14 + 0x100], 0
lock and qword [r14 + 0x110], 0xfffffffffffffffd
test rax, rax
je 0x1400a99e0
call qword [rax + 8]
nop dword [rax]
mov rax, qword [r13]
lock dec qword [rax]
jne 0x1400a97e0
mov rcx, qword [r13]
call fcn.14006fc70
jmp 0x1400a97e0
cmp byte [r13 + 0x10], 2
jne 0x1400a9a1b
mov rcx, qword [r13]
mov rcx, qword [rcx + 0x10]
cmp rcx, 3
je 0x1400a980e
jmp 0x1400a9a2d
mov rcx, qword [r13]
mov rcx, qword [rcx + 0x10]
cmp rcx, 1
jne 0x1400a980e
mov rsi, r15
mov r15, qword [rbp + rax*8 + 0x38]
mov r14d, dword [rbp + rax*8 + 0x40]
mov r8, qword [0x1401a4140]
test r8, r8
jne 0x1400a9a76
mov qword [rsp + 0x28], 0
lea rcx, [rsp + 0x28]
call sub.KERNEL32.dll_QueryPerformanceFrequency
test eax, eax
je 0x1400aa7b0
mov r8, qword [rsp + 0x28]
mov qword [0x1401a4140], r8
test r8, r8
je 0x1400aa732
cmp r8, 0x3b9aca00
ja 0x1400a9d95
mov eax, 0x3b9aca00
xor edx, edx
div r8d
jmp 0x1400a9d97
shr rdx, 5
and eax, 0x1f
cmp rdx, rax
seta dil
jmp 0x1400a9ac1
xor edi, edi
pause
cmp qword [rcx + 0x2300], r15
je 0x1400a98c6
mov r12, rcx
mov rcx, qword [rcx + 0x2308]
test rcx, rcx
jne 0x1400a9bb0
mov rsi, qword [r12 + 0x2300]
movzx eax, byte [0x1401a4170]
mov rax, qword [0x1401a4160]
test rax, rax
jne 0x1400a9b04
call sub.KERNEL32.dll_GetProcessHeap
test rax, rax
je 0x1400aa732
mov qword [0x1401a4160], rax
mov r8d, 0x2320
mov rcx, rax
xor edx, edx
call sub.KERNEL32.dll_HeapAlloc
test rax, rax
je 0x1400aa732
mov rdx, rax
add rsi, 0x20
mov qword [rax + 0x2300], rsi
movups xmmword [rax + 0x2308], xmm6
mov qword [rax + 0x2318], 0
xor eax, eax
lock cmpxchg qword [r12 + 0x2308], rdx
jne 0x1400a9b50
mov rcx, rdx
jmp 0x1400a9bb0
mov rcx, rax
mov rax, qword [rax + 0x2300]
add rax, 0x20
mov qword [rdx + 0x2300], rax
xor eax, eax
lock cmpxchg qword [rcx + 0x2308], rdx
je 0x1400a9bb0
mov r8, rax
nop word cs:[rax + rax]
pause
mov rax, qword [r8 + 0x2300]
add rax, 0x20
mov qword [rdx + 0x2300], rax
xor eax, eax
lock cmpxchg qword [r8 + 0x2308], rdx
mov r8, rax
jne 0x1400a9b80
nop word cs:[rax + rax]
mov rax, qword [r12 + 0x2310]
cmp eax, 0xffffffff
sete al
test dil, al
je 0x1400a9ab0
mov rax, r12
lock cmpxchg qword [r14 + 0x80], rcx
jne 0x1400a9ab0
mfence
mov rax, qword [r14 + 0x88]
mov qword [r12 + 0x2318], rax
movabs rax, 0x100000000
lock or qword [r12 + 0x2310], rax
mov dil, 1
pause
cmp qword [rcx + 0x2300], r15
jne 0x1400a9ac1
jmp 0x1400a98c6
shr rdx, 5
and eax, 0x1f
cmp rdx, rax
seta dil
jmp 0x1400a9c41
xor edi, edi
pause
cmp qword [rcx + 0x2300], r15
je 0x1400a9971
mov r12, rcx
mov rcx, qword [rcx + 0x2308]
test rcx, rcx
jne 0x1400a9d30
mov rsi, qword [r12 + 0x2300]
movzx eax, byte [0x1401a4170]
mov rax, qword [0x1401a4160]
test rax, rax
jne 0x1400a9c84
call sub.KERNEL32.dll_GetProcessHeap
test rax, rax
je 0x1400aa732
mov qword [0x1401a4160], rax
mov r8d, 0x2320
mov rcx, rax
xor edx, edx
call sub.KERNEL32.dll_HeapAlloc
test rax, rax
je 0x1400aa732
mov rdx, rax
add rsi, 0x20
mov qword [rax + 0x2300], rsi
movups xmmword [rax + 0x2308], xmm6
mov qword [rax + 0x2318], 0
xor eax, eax
lock cmpxchg qword [r12 + 0x2308], rdx
jne 0x1400a9cd0
mov rcx, rdx
jmp 0x1400a9d30
mov rcx, rax
mov rax, qword [rax + 0x2300]
add rax, 0x20
mov qword [rdx + 0x2300], rax
xor eax, eax
lock cmpxchg qword [rcx + 0x2308], rdx
je 0x1400a9d30
mov r8, rax
nop word cs:[rax + rax]
pause
mov rax, qword [r8 + 0x2300]
add rax, 0x20
mov qword [rdx + 0x2300], rax
xor eax, eax
lock cmpxchg qword [r8 + 0x2308], rdx
mov r8, rax
jne 0x1400a9d00
nop word cs:[rax + rax]
mov rax, qword [r12 + 0x2310]
cmp eax, 0xffffffff
sete al
test dil, al
je 0x1400a9c30
mov rax, r12
lock cmpxchg qword [r14 + 0x80], rcx
jne 0x1400a9c30
mfence
mov rax, qword [r14 + 0x88]
mov qword [r12 + 0x2318], rax
movabs rax, 0x100000000
lock or qword [r12 + 0x2310], rax
mov dil, 1
pause
cmp qword [rcx + 0x2300], r15
jne 0x1400a9c41
jmp 0x1400a9971
xor eax, eax
mov ecx, 0xc4653600
add ecx, eax
xor edx, edx
cmp r8, 2
setb r8b
cmovae ecx, eax
mov eax, ecx
shr eax, 9
imul rax, rax, 0x44b83
shr rax, 0x27
imul eax, eax, 0x3b9aca00
sub ecx, eax
mov rax, r15
sub rax, qword [rsp + 0x88]
jb 0x1400a9dd7
jne 0x1400a9e08
cmp r14d, edi
ja 0x1400a9e08
mov rax, qword [rsp + 0x88]
mov ecx, 0x3b9aca00
sub rax, r15
jae 0x1400a9dee
jmp 0x1400a9e90
cmp r14d, edi
mov r15, rsi
jbe 0x1400a9e22
test rax, rax
je 0x1400a9e93
dec rax
mov ecx, dword [rsp + 0x58]
jmp 0x1400a9e24
cmp r14d, edi
jae 0x1400a9e4a
test rax, rax
je 0x1400aa732
dec rax
lea r9d, [r14 + 0x3b9aca00]
jmp 0x1400a9e4d
mov ecx, edi
sub ecx, r14d
mov edx, ecx
shr edx, 9
imul rdx, rdx, 0x44b83
shr rdx, 0x27
add rax, rdx
jb 0x1400aa732
imul edx, edx, 0x3b9aca00
sub ecx, edx
jmp 0x1400a9e93
mov r9d, r14d
sub r9d, edi
mov r10d, r9d
shr r10d, 9
imul r10, r10, 0x44b83
shr r10, 0x27
add rax, r10
jb 0x1400aa732
mov dl, r8b
cmp rax, rdx
jb 0x1400a9e8c
jne 0x1400a9dd7
imul eax, r10d, 0x3b9aca00
sub r9d, eax
cmp r9d, ecx
ja 0x1400a9dd7
xor eax, eax
xor ecx, ecx
mov r15, rsi
cmp ecx, 0x3b9aca00
mov edx, 0
cmove rax, rdx
cmp rax, qword [rsp + 0x80]
jb 0x1400a979b
cmp ecx, 0x3b9aca00
setne dl
cmp ecx, dword [rsp + 0x5c]
seta cl
cmp rax, qword [rsp + 0x80]
jne 0x1400a980e
and dl, cl
je 0x1400a979b
jmp 0x1400a980e
xor r15d, r15d
nop
mov rax, qword [rsp + 0x48]
sub rax, r15
mov rcx, qword [rsp + 0x50]
mov qword [rcx - 8], rax
jne 0x1400a94d0
mov r8, qword [rsp + 0xb8]
mov rax, r8
sub rax, rcx
sar rax, 3
movabs rcx, 0x8e38e38e38e38e39
imul rax, rcx
lea rcx, [rax - 0x10]
mov rdx, qword [rsp + 0x38]
and rcx, qword [rdx + 0x68]
movdqu xmm0, xmmword [r8 + rcx]
pcmpeqb xmm0, xmm7
psllw xmm0, 7
pmovmskb edx, xmm0
test edx, edx
mov rbx, qword [rsp + 0x70]
mov rsi, qword [rsp + 0xc8]
je 0x1400a9f51
bsr dx, dx
xor edx, 0xf
jmp 0x1400a9f55
mov dx, 0x10
mov r8, qword [rsp + 0xb8]
movdqu xmm0, xmmword [r8 + rax]
pcmpeqb xmm0, xmm7
pmovmskb r8d, xmm0
or r8d, 0x10000
tzcnt r8d, r8d
add edx, r8d
mov r8b, pe_nt_image_headers64
cmp dx, 0xf
ja 0x1400a9f90
mov rdx, qword [rsp + 0x38]
inc qword [rdx + 0x70]
mov r8b, 0xff
mov rdx, qword [rsp + 0xb8]
mov byte [rdx + rax], r8b
mov byte [rcx + rdx + 0x10], r8b
mov rcx, qword [rsp + 0xd8]
dec rcx
mov rax, qword [rsp + 0x38]
mov qword [rsp + 0xd8], rcx
mov qword [rax + 0x78], rcx
mov r14, qword [rsp + 0x50]
cmp byte [r14 - 0x48], 2
jb 0x1400a9ff4
mov r12, qword [r14 - 0x40]
lea rcx, [r12 + 0x18]
mov rax, qword [r12]
mov rdx, qword [r12 + 8]
mov r8, qword [r12 + 0x10]
call qword [rax + 0x10]
mov rcx, qword [0x1401a4160]
xor edx, edx
mov r8, r12
call sub.KERNEL32.dll_HeapFree
lea rcx, [r14 - 0x20]
mov rax, qword [r14 - 0x38]
mov rdx, qword [r14 - 0x30]
mov r8, qword [r14 - 0x28]
call qword [rax + 0x10]
mov rax, qword [r14 - 8]
mov qword [rsp + 0x48], rax
test rax, rax
je 0x1400aa530
mov rax, qword [rsp + 0x50]
mov r14, qword [rax - 0x18]
xor r15d, r15d
jmp 0x1400aa046
inc r15
cmp r15, qword [rsp + 0x48]
mov rsi, qword [rsp + 0xc8]
je 0x1400aa530
lea rax, [r15 + r15*8]
lea r13, [r14 + rax*8]
mov r12, qword [r14 + rax*8 + 0x18]
test r12, r12
je 0x1400aa085
mov rsi, qword [r13 + 0x20]
mov rcx, r12
call qword [rsi]
cmp qword [rsi + 8], 0
je 0x1400aa085
cmp qword [rsi + 0x10], 0x11
jb 0x1400aa074
mov r12, qword [r12 - 8]
mov rcx, qword [0x1401a4160]
xor edx, edx
mov r8, r12
call sub.KERNEL32.dll_HeapFree
mov rax, qword [r13 + 0x28]
lock dec qword [rax]
jne 0x1400aa098
mov rcx, qword [r13 + 0x28]
call fcn.140047ea0
cmp byte [r13 + 0x10], 2
jne 0x1400aa140
mov rax, qword [r13]
lock dec qword [rax]
jne 0x1400aa0b6
mov rcx, qword [r13]
call fcn.14006e3d0
mov rax, qword [r13 + 8]
add r13, 8
lock dec qword [rax + 0x1d0]
jne 0x1400aa210
mov rbp, qword [r13]
mov eax, 1
lock xadd qword [rbp + 0x88], rax
mov rbx, rax
and rbx, 0xffffffffffffffe0
mov rcx, qword [rbp + 0x80]
mov rdx, rbx
sub rdx, qword [rcx + 0x2300]
jne 0x1400aa22c
movabs rax, 0x200000000
lock or qword [rcx + 0x2310], rax
mov rax, qword [rbp + 0x110]
mov rdi, qword [rsp + 0x78]
nop word [rax + rax]
mov rcx, rax
or rcx, 2
lock cmpxchg qword [rbp + 0x110], rcx
jne 0x1400aa120
jmp 0x1400aa1d2
mov rax, qword [r13]
lock dec qword [rax]
jne 0x1400aa153
mov rcx, qword [r13]
call fcn.14006e3d0
mov rax, qword [r13 + 8]
add r13, 8
lock dec qword [rax + 0x1d0]
jne 0x1400aa210
mov rbp, qword [r13]
mov eax, 1
lock xadd qword [rbp + 0x88], rax
mov rbx, rax
and rbx, 0xffffffffffffffe0
mov rcx, qword [rbp + 0x80]
mov rdx, rbx
sub rdx, qword [rcx + 0x2300]
jne 0x1400aa3a5
movabs rax, 0x200000000
lock or qword [rcx + 0x2310], rax
mov rax, qword [rbp + 0x110]
mov rdi, qword [rsp + 0x78]
nop word [rax + rax]
mov rcx, rax
or rcx, 2
lock cmpxchg qword [rbp + 0x110], rcx
jne 0x1400aa1c0
test rax, rax
mov rbx, qword [rsp + 0x70]
jne 0x1400aa210
mov rax, qword [rbp + 0x100]
mov rcx, qword [rbp + 0x108]
mov qword [rbp + 0x100], 0
lock and qword [rbp + 0x110], 0xfffffffffffffffd
test rax, rax
je 0x1400aa210
call qword [rax + 8]
nop word cs:[rax + rax]
mov rax, qword [r13]
lock dec qword [rax]
jne 0x1400aa030
mov rcx, qword [r13]
call fcn.14006fc70
jmp 0x1400aa030
shr rdx, 5
and eax, 0x1f
cmp rdx, rax
seta dil
jmp 0x1400aa251
xor edi, edi
pause
cmp qword [rcx + 0x2300], rbx
je 0x1400aa0fc
mov r12, rcx
mov rcx, qword [rcx + 0x2308]
test rcx, rcx
jne 0x1400aa340
mov rsi, qword [r12 + 0x2300]
movzx eax, byte [0x1401a4170]
mov rax, qword [0x1401a4160]
test rax, rax
jne 0x1400aa294
call sub.KERNEL32.dll_GetProcessHeap
test rax, rax
je 0x1400aa732
mov qword [0x1401a4160], rax
mov r8d, 0x2320
mov rcx, rax
xor edx, edx
call sub.KERNEL32.dll_HeapAlloc
test rax, rax
je 0x1400aa732
mov rdx, rax
add rsi, 0x20
mov qword [rax + 0x2300], rsi
movups xmmword [rax + 0x2308], xmm6
mov qword [rax + 0x2318], 0
xor eax, eax
lock cmpxchg qword [r12 + 0x2308], rdx
jne 0x1400aa2e0
mov rcx, rdx
jmp 0x1400aa340
mov rcx, rax
mov rax, qword [rax + 0x2300]
add rax, 0x20
mov qword [rdx + 0x2300], rax
xor eax, eax
lock cmpxchg qword [rcx + 0x2308], rdx
je 0x1400aa340
mov r8, rax
nop word cs:[rax + rax]
pause
mov rax, qword [r8 + 0x2300]
add rax, 0x20
mov qword [rdx + 0x2300], rax
xor eax, eax
lock cmpxchg qword [r8 + 0x2308], rdx
mov r8, rax
jne 0x1400aa310
nop word cs:[rax + rax]
mov rax, qword [r12 + 0x2310]
cmp eax, 0xffffffff
sete al
test dil, al
je 0x1400aa240
mov rax, r12
lock cmpxchg qword [rbp + 0x80], rcx
jne 0x1400aa240
mfence
mov rax, qword [rbp + 0x88]
mov qword [r12 + 0x2318], rax
movabs rax, 0x100000000
lock or qword [r12 + 0x2310], rax
mov dil, 1
pause
cmp qword [rcx + 0x2300], rbx
jne 0x1400aa251
jmp 0x1400aa0fc
shr rdx, 5
and eax, 0x1f
cmp rdx, rax
seta dil
jmp 0x1400aa3d1
xor edi, edi
pause
cmp qword [rcx + 0x2300], rbx
je 0x1400aa199
mov r12, rcx
mov rcx, qword [rcx + 0x2308]
test rcx, rcx
jne 0x1400aa4c0
mov rsi, qword [r12 + 0x2300]
movzx eax, byte [0x1401a4170]
mov rax, qword [0x1401a4160]
test rax, rax
jne 0x1400aa414
call sub.KERNEL32.dll_GetProcessHeap
test rax, rax
je 0x1400aa732
mov qword [0x1401a4160], rax
mov r8d, 0x2320
mov rcx, rax
xor edx, edx
call sub.KERNEL32.dll_HeapAlloc
test rax, rax
je 0x1400aa732
mov rdx, rax
add rsi, 0x20
mov qword [rax + 0x2300], rsi
movups xmmword [rax + 0x2308], xmm6
mov qword [rax + 0x2318], 0
xor eax, eax
lock cmpxchg qword [r12 + 0x2308], rdx
jne 0x1400aa460
mov rcx, rdx
jmp 0x1400aa4c0
mov rcx, rax
mov rax, qword [rax + 0x2300]
add rax, 0x20
mov qword [rdx + 0x2300], rax
xor eax, eax
lock cmpxchg qword [rcx + 0x2308], rdx
je 0x1400aa4c0
mov r8, rax
nop word cs:[rax + rax]
pause
mov rax, qword [r8 + 0x2300]
add rax, 0x20
mov qword [rdx + 0x2300], rax
xor eax, eax
lock cmpxchg qword [r8 + 0x2308], rdx
mov r8, rax
jne 0x1400aa490
nop word cs:[rax + rax]
mov rax, qword [r12 + 0x2310]
cmp eax, 0xffffffff
sete al
test dil, al
je 0x1400aa3c0
mov rax, r12
lock cmpxchg qword [rbp + 0x80], rcx
jne 0x1400aa3c0
mfence
mov rax, qword [rbp + 0x88]
mov qword [r12 + 0x2318], rax
movabs rax, 0x100000000
lock or qword [r12 + 0x2310], rax
mov dil, 1
pause
cmp qword [rcx + 0x2300], rbx
jne 0x1400aa3d1
jmp 0x1400aa199
mov rax, qword [rsp + 0x50]
cmp qword [rax - 0x10], 0
je 0x1400a94dd
mov r8, qword [rax - 0x18]
mov rcx, qword [0x1401a4160]
xor edx, edx
call sub.KERNEL32.dll_HeapFree
jmp 0x1400a94dd
mov rsi, qword [rsp + 0x90]
mov rcx, qword [rsp + 0xa0]
call fcn.140118b6c
lock dec qword [rsi]
jne 0x1400aa588
lea rcx, [rsp + 0x90]
call fcn.14006e840
mov rsi, qword [rsp + 0xb0]
movzx eax, byte [rsi + 0x40]
test al, al
je 0x1400a8f7b
jmp 0x1400aa720
add rsi, qword [rsp + 0x68]
jae 0x1400a919a
jmp 0x1400aa732
mov rbx, rdx
add rbx, qword [rsp + 0x68]
jb 0x1400aa732
mov rax, qword [rsp + 0x60]
lea r14d, [rax + rcx]
cmp r14d, 0x3b9aca00
jb 0x1400aa5e1
inc rbx
je 0x1400aa732
add r14d, 0xc4653600
mov qword [rsp + 0x90], rdx
mov dword [rsp + 0x98], ecx
mov qword [rsp + 0x28], rsi
mov dword [rsp + 0x30], edi
lea rcx, [rsp + 0x90]
lea rdx, [rsp + 0x28]
call fcn.1400f0810
mov ecx, edx
mov r9, qword [rsp + 0xe0]
mov rdx, r9
mov r8, qword [rsp + 0xe8]
or rdx, r8
je 0x1400aa732
mov edx, 0x3b9aca00
mul rdx
cmp ecx, 0x3b9aca00
mov r10d, 0
cmove ecx, r10d
cmove rdx, r10
cmove rax, r10
add rcx, rax
adc rdx, 0
mov qword [rsp + 0x110], r9
mov qword [rsp + 0x118], r8
mov qword [rsp + 0x120], rcx
mov qword [rsp + 0x128], rdx
lea rcx, [rsp + 0x120]
lea rdx, [rsp + 0x110]
call fcn.14011a470
pshufd xmm1, xmm0, 0xee
movq rax, xmm1
test rax, rax
jne 0x1400aa732
movq rcx, xmm0
mov rax, rcx
shr rax, 9
movabs rdx, 0x44b82fa09b5a53
mul rdx
shr rdx, 0xb
sub rbx, rdx
mov r8, qword [rsp + 0x40]
jb 0x1400aa732
imul eax, edx, 0x3b9aca00
sub ecx, eax
cmp r14d, ecx
jae 0x1400aa6db
test rbx, rbx
je 0x1400aa732
dec rbx
add r14d, 0x3b9aca00
sub r14d, ecx
mov eax, r14d
shr eax, 9
imul rax, rax, 0x44b83
shr rax, 0x27
add rbx, rax
jb 0x1400aa732
imul eax, eax, 0x3b9aca00
sub r14d, eax
mov rsi, rbx
mov ecx, r14d
jmp 0x1400a91b7
mov rsi, rdx
jmp 0x1400a91b7
mov rcx, rbp
call qword [r12 + 0x18]
mov rsi, qword [rsp + 0xb0]
mov al, 1
xchg byte [rsi + 0x41], al
xor ebp, ebp
test al, al
jne 0x1400aa78a
xor eax, eax
xchg byte [rsi + 0x41], al
jmp 0x1400aa78a
ud2
mov rax, qword [rsp + 0xa8]
mov rax, qword [rax]
mov rdx, qword [rax]
mov rcx, qword [rax + 8]
call qword [rdx + 0x10]
mov bpl, 1
jmp 0x1400aa78a
xor ecx, ecx
call fcn.140102310
mov bpl, 1
test rax, rax
je 0x1400aa78a
mov byte [rax + 0x4c], 1
mov byte [rax + 0x4d], bl
jmp 0x1400aa78a
mov rcx, qword [rsp + 0xa0]
call fcn.140118b6c
lock dec qword [rsi]
jne 0x1400aa788
lea rcx, [rsp + 0x90]
call fcn.14006e840
xor ebp, ebp
mov eax, ebp
movaps xmm6, xmmword [rsp + 0x130]
movaps xmm7, xmmword [rsp + 0x140]
add rsp, 0x158
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
call sub.KERNEL32.dll_GetLastError
ud2