Function at 0x180097590
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, 0x118
movdqa xmmword [rsp + 0x100], xmm7
movaps xmmword [rsp + 0xf0], xmm6
mov rsi, qword [rcx + 0x20]
movzx eax, byte [rsi + 0x40]
test al, al
je 0x1800975d9
mov al, 1
xchg byte [rsi + 0x41], al
xor edi, edi
test al, al
jne 0x180098c12
xor eax, eax
xchg byte [rsi + 0x41], al
jmp 0x180098c12
lea rbx, [rsi + 0x40]
mov r8, qword [rdx]
mov rax, qword [rcx + 0x10]
mov qword [rsp + 0x30], rax
mov rax, qword [rcx]
mov r9d, dword [rcx + 8]
movzx edx, byte [rcx + 0x18]
mov dword [rsp + 0x88], edx
mov edx, 0x3b9aca00
mov qword [rsp + 0x50], rax
mul rdx
mov qword [rsp + 0x48], r9
add rax, r9
mov qword [rsp + 0xb0], rax
adc rdx, 0
mov qword [rsp + 0xb8], rdx
mov r12, qword [rcx + 0x28]
lea rax, [r12 + 0x10]
mov qword [rsp + 0x68], rax
mov rax, qword [rcx + 0x20]
mov qword [rsp + 0x90], rax
add rax, 0x40
mov qword [rsp + 0xc0], rax
xor r13d, r13d
xorps xmm6, xmm6
pcmpeqd xmm7, xmm7
mov qword [rsp + 0x70], r12
mov qword [rsp + 0x98], r8
lea r14, [rsi + 0x10]
mov rax, qword [r8]
mov rcx, qword [r8 + 8]
call qword [rax]
mov rdi, rax
mov al, 1
xchg byte [rsi + 0x20], al
mov r15, rdx
test al, al
cmovne r14, r13
jne 0x180098bc3
mov rax, qword [r14]
test rax, rax
je 0x180097694
mov rcx, qword [r14 + 8]
call qword [rax + 0x18]
mov qword [r14], rdi
mov qword [r14 + 8], r15
xor eax, eax
xchg byte [r14 + 0x10], al
movzx eax, byte [rbx]
test al, al
jne 0x1800975c0
mov rsi, qword [rsp + 0x30]
mov rcx, rsi
mov rdx, qword [rsp + 0x98]
call fcn.18011b1c0
mov edi, eax
test al, al
jne 0x180098c12
mov r13, qword [rsi + 0x10]
mov r12d, dword [rsi + 0x18]
mov qword [rsp + 0x20], 0
lea rcx, [rsp + 0x20]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x180098c5e
mov r15, qword [rsp + 0x20]
mov r8, qword [0x180219970]
test r8, r8
mov esi, 0
jne 0x180097736
mov qword [rsp + 0x20], 0
lea rcx, [rsp + 0x20]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
test eax, eax
je 0x180098c5e
mov r8, qword [rsp + 0x20]
mov qword [0x180219970], r8
test r8, r8
je 0x180098c5a
mov rax, r15
or rax, r8
shr rax, 0x20
je 0x180097750
mov rax, r15
xor edx, edx
div r8
mov rcx, rax
jmp 0x18009775a
mov eax, r15d
xor edx, edx
div r8d
mov ecx, eax
imul rax, rdx, 0x3b9aca00
mov rdx, rax
or rdx, r8
shr rdx, 0x20
je 0x180097780
xor edx, edx
div r8
jmp 0x180097785
xor edx, edx
div r8d
imul rcx, rcx, 0x3b9aca00
add rcx, rax
mov rax, rcx
shr rax, 9
movabs rdx, 0x44b82fa09b5a53
mul rdx
cmp r12d, 0x3b4e7ebf
jbe 0x1800977d0
mov r9, r13
inc r9
je 0x180098c5a
lea eax, [r12 - 0x3b4e7ec0]
jmp 0x1800977db
lea eax, [r12 + 0x4c4b40]
mov r9, r13
mov r8d, eax
shr r8d, 9
imul r10, r8, 0x44b83
shr r10, 0x27
add r10, r9
jb 0x180098c5a
shr rdx, 0xb
cmp rdx, r10
jb 0x18009782f
imul r9d, edx, 0x3b9aca00
sub ecx, r9d
cmp rdx, r10
jne 0x180097aa5
imul r8, r8, 0x44b83
shr r8, 0x27
imul r8d, r8d, 0x3b9aca00
sub eax, r8d
cmp eax, ecx
jb 0x180097aa5
add r13, qword [rsp + 0x50]
mov rdx, qword [rsp + 0x30]
jb 0x180098c5a
add r12d, dword [rsp + 0x48]
cmp r12d, 0x3b9ac9ff
jbe 0x18009785d
inc r13
je 0x180098c5a
add r12d, 0xc4653600
mov eax, r12d
shr eax, 9
imul rax, rax, 0x44b83
shr rax, 0x27
add rax, r13
jb 0x180098c5a
mov ecx, r12d
shr ecx, 9
imul rcx, rcx, 0x44b83
shr rcx, 0x27
imul ecx, ecx, 0x3b9aca00
sub r12d, ecx
mov qword [rdx + 0x10], rax
mov dword [rdx + 0x18], r12d
mov byte [rdx + 0x68], 0
mov rcx, qword [rdx + 8]
cmp qword [rdx], 0
mov edx, 0x120
mov r8d, 0xb8
cmove rdx, r8
mov r8d, dword [rcx + rdx + 0xc8]
cmp r8d, 0x3b9aca00
je 0x180098c5a
add rcx, rdx
add rcx, 0x10
mov rdx, qword [rcx + 0xb0]
cmp r12d, 0x3b8b87c0
jbe 0x180097900
inc rax
je 0x180098c5a
add r12d, 0xc474783f
jmp 0x180097907
add r12d, 0xf423f
mov r9d, r12d
shr r9d, 9
imul rcx, r9, 0x44b83
shr rcx, 0x27
add rcx, rax
jb 0x180098c5a
imul rax, r9, 0x44b83
shr rax, 0x27
imul eax, eax, 0x3b9aca00
sub r12d, eax
mov qword [rsp + 0x20], rcx
mov dword [rsp + 0x28], r12d
lea rcx, [rsp + 0x20]
call fcn.180104920
mov ecx, edx
imul rcx, rcx, 0x431bde83
shr rcx, 0x32
cmp edx, 0x3b9aca00
cmove rax, rsi
cmove ecx, esi
mov edx, 0x3e8
mul rdx
add rcx, rax
adc rdx, 0
mov rax, 0xfffffffffffffffd
cmovne rcx, rax
mov rdx, qword [rsp + 0x30]
mov rax, qword [rdx + 0x40]
nop word [rax + rax]
cmp rax, rcx
ja 0x1800979a3
cmp rax, 0xfffffffffffffffd
ja 0x1800979a3
lock cmpxchg qword [rdx + 0x40], rcx
jne 0x180097990
mov r12, qword [rsp + 0x70]
lea rax, [r12 + 1]
cmp rax, 2
jb 0x180098c12
mov rax, qword [r12]
nop dword [rax + rax]
test rax, rax
je 0x180098c10
js 0x180098c5a
lea rcx, [rax + 1]
lock cmpxchg qword [r12], rcx
jne 0x1800979c0
mov rcx, qword [rsp + 0x68]
call qword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
mov rax, qword [0x180219990]
shl rax, 1
test rax, rax
jne 0x180098b7a
movzx eax, byte [r12 + 0x18]
test al, al
jne 0x180098be0
xor esi, esi
mov eax, dword [r12 + 0xd8]
mov dword [rsp + 0x44], eax
cmp eax, 0x3b9aca00
je 0x180098c5a
mov rax, qword [r12 + 0xd0]
mov qword [rsp + 0x60], rax
mov qword [rsp + 0x20], 0
lea rcx, [rsp + 0x20]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x180098c5e
mov rdi, qword [rsp + 0x20]
mov r8, qword [0x180219970]
test r8, r8
jne 0x180097a8c
mov qword [rsp + 0x20], 0
lea rcx, [rsp + 0x20]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
test eax, eax
je 0x180098c5e
mov r8, qword [rsp + 0x20]
mov qword [0x180219970], r8
test r8, r8
je 0x180098c5a
mov rax, rdi
or rax, r8
shr rax, 0x20
je 0x180097b09
mov rax, rdi
xor edx, edx
div r8
mov rcx, rax
jmp 0x180097b12
mov eax, dword [rsp + 0x88]
test eax, eax
je 0x1800989d7
cmp eax, 1
jne 0x180098a07
add rdx, qword [rsp + 0x50]
jb 0x180098c5a
add ecx, dword [rsp + 0x48]
cmp ecx, 0x3b9ac9ff
jbe 0x180097ae3
inc rdx
je 0x180098c5a
add ecx, 0xc4653600
mov eax, ecx
shr eax, 9
imul rax, rax, 0x44b83
shr rax, 0x27
mov r12d, ecx
add rax, rdx
mov rdx, qword [rsp + 0x30]
jae 0x180097877
jmp 0x180098c5a
mov eax, edi
xor edx, edx
div r8d
mov ecx, eax
imul rax, rdx, 0x3b9aca00
mov rdx, rax
or rdx, r8
shr rdx, 0x20
je 0x180097b2c
xor edx, edx
div r8
jmp 0x180097b31
xor edx, edx
div r8d
imul rcx, rcx, 0x3b9aca00
add rcx, rax
mov rax, rcx
shr rax, 9
movabs rdx, 0x44b82fa09b5a53
mul rdx
shr rdx, 0xb
imul eax, edx, 0x3b9aca00
sub ecx, eax
mov qword [rsp + 0x20], rdx
mov dword [rsp + 0x28], ecx
mov rax, qword [r12 + 0x78]
mov qword [rsp + 0xc8], rax
test rax, rax
je 0x180098970
mov rax, qword [r12 + 0x60]
lea rcx, [rax + 0x10]
mov qword [rsp + 0x78], rcx
mov qword [rsp + 0x80], rax
movdqa xmm0, xmmword [rax]
pmovmskb eax, xmm0
not eax
mov qword [rsp + 0xa0], rax
mov dword [rsp + 0x8c], esi
jmp 0x180097bca
dec qword [rsp + 0xc8]
mov r12, qword [rsp + 0x70]
mov esi, dword [rsp + 0x8c]
je 0x180098970
mov r9, qword [rsp + 0xa0]
test r9w, r9w
je 0x180097bf0
lea eax, [r9 - 1]
and eax, r9d
xor ebx, ebx
mov rdx, qword [rsp + 0x80]
mov r8, qword [rsp + 0x78]
jmp 0x180097c2c
xor ebx, ebx
mov rdx, qword [rsp + 0x80]
mov r8, qword [rsp + 0x78]
nop
movdqa xmm0, xmmword [r8]
pmovmskb r9d, xmm0
add rdx, 0xfffffffffffffb80
add r8, 0x10
cmp r9w, 0xffff
je 0x180097c00
mov ecx, 0xfffffffe
sub ecx, r9d
not r9d
mov eax, r9d
and eax, ecx
mov qword [rsp + 0x78], r8
mov ecx, r9d
tzcnt ecx, ecx
mov qword [rsp + 0xa0], rax
neg rcx
lea rax, [rcx + rcx*8]
lea rcx, [rdx + rax*8]
mov qword [rsp + 0x80], rdx
mov r14, qword [rdx + rax*8 - 8]
test r14, r14
mov qword [rsp + 0x58], rcx
je 0x180097d30
mov rdi, qword [rcx - 0x18]
mov rsi, r14
neg rsi
mov r12d, 1
jmp 0x180097c98
add rdi, 0x48
lea rax, [rsi + r12]
inc rax
inc r12
cmp rax, 1
je 0x180098329
mov rax, qword [rdi + 0x28]
movzx eax, byte [rax + 0x10]
test al, al
jne 0x180097d10
cmp byte [rdi + 0x10], 2
jne 0x180097cc0
mov rax, qword [rdi]
mov rax, qword [rax + 0x10]
cmp rax, 3
jne 0x180097ccd
jmp 0x180097d10
mov rax, qword [rdi]
mov rax, qword [rax + 0x10]
cmp rax, 1
jne 0x180097d10
mov rdx, qword [rdi + 0x38]
mov r8d, dword [rdi + 0x40]
lea rcx, [rsp + 0x20]
call fcn.180104920
cmp edx, 0x3b9aca00
cmove rax, rbx
cmp rax, qword [rsp + 0x60]
jb 0x180097c80
cmp edx, 0x3b9aca00
setne cl
cmp edx, dword [rsp + 0x44]
seta dl
cmp rax, qword [rsp + 0x60]
jne 0x180097d10
and cl, dl
je 0x180097c80
nop
mov rcx, rdi
call fcn.18008dfd0
mov edi, 1
cmp r12, r14
jne 0x180097d3e
jmp 0x180098330
xor r12d, r12d
xor edi, edi
cmp r12, r14
je 0x180098330
mov rax, qword [rsp + 0x58]
mov rbx, qword [rax - 0x18]
mov qword [rsp + 0xa8], r14
jmp 0x180097d9c
mov rax, r12
sub rax, rdi
lea rax, [rax + rax*8]
mov rcx, qword [rsi + 0x40]
mov qword [rbx + rax*8 + 0x40], rcx
movdqu xmm0, xmmword [rsi]
movdqu xmm1, xmmword [rsi + 0x10]
movups xmm2, xmmword [rsi + 0x20]
movups xmm3, xmmword [rsi + 0x30]
movups xmmword [rbx + rax*8 + 0x30], xmm3
movups xmmword [rbx + rax*8 + 0x20], xmm2
movdqu xmmword [rbx + rax*8 + 0x10], xmm1
movdqu xmmword [rbx + rax*8], xmm0
nop word [rax + rax]
inc r12
cmp r12, r14
je 0x180098330
lea rax, [r12 + r12*8]
lea rsi, [rbx + rax*8]
mov rcx, qword [rbx + rax*8 + 0x28]
movzx ecx, byte [rcx + 0x10]
test cl, cl
je 0x180097f90
mov rcx, qword [rsi + 0x18]
test rcx, rcx
je 0x180097ded
mov rax, qword [rsi + 0x20]
call qword [rax]
mov rax, qword [rsi + 0x20]
cmp qword [rax + 8], 0
je 0x180097ded
mov r8, qword [rsi + 0x18]
cmp qword [rax + 0x10], 0x11
jb 0x180097dde
mov r8, qword [r8 - 8]
mov rcx, qword [0x180219958]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov rcx, qword [rsi + 0x28]
lock dec qword [rcx]
jne 0x180097dfc
call fcn.1800799d0
inc rdi
movzx edx, byte [rsi + 0x10]
mov rcx, qword [rsi]
lock dec qword [rcx]
sete al
cmp dl, 2
jne 0x180097eb0
test al, al
je 0x180097e1f
call fcn.180092c70
mov r13, qword [rsi + 8]
lock dec qword [r13 + 0x1d0]
jne 0x180097f70
mov qword [rsp + 0x38], rdi
mov edx, 1
lock xadd qword [r13 + 0x88], rdx
mov rbp, rdx
and rbp, 0xffffffffffffffe0
mov rcx, qword [r13 + 0x80]
mov r8, rbp
sub r8, qword [rcx + 0x2300]
jne 0x180098010
movabs rax, 0x200000000
lock or qword [rcx + 0x2310], rax
mov rax, qword [r13 + 0x110]
mov r14, qword [rsp + 0xa8]
nop word cs:[rax + rax]
mov rcx, rax
or rcx, 2
lock cmpxchg qword [r13 + 0x110], rcx
jne 0x180097e90
jmp 0x180097f32
test al, al
je 0x180097eb9
call fcn.180092c70
mov r13, qword [rsi + 8]
lock dec qword [r13 + 0x1d0]
jne 0x180097f70
mov qword [rsp + 0x38], rdi
mov edx, 1
lock xadd qword [r13 + 0x88], rdx
mov rbp, rdx
and rbp, 0xffffffffffffffe0
mov rcx, qword [r13 + 0x80]
mov r8, rbp
sub r8, qword [rcx + 0x2300]
jne 0x180098199
movabs rax, 0x200000000
lock or qword [rcx + 0x2310], rax
mov rax, qword [r13 + 0x110]
mov r14, qword [rsp + 0xa8]
nop dword [rax]
mov rcx, rax
or rcx, 2
lock cmpxchg qword [r13 + 0x110], rcx
jne 0x180097f20
test rax, rax
mov rdi, qword [rsp + 0x38]
jne 0x180097f70
mov rax, qword [r13 + 0x100]
mov rcx, qword [r13 + 0x108]
mov qword [r13 + 0x100], 0
lock and qword [r13 + 0x110], 0xfffffffffffffffd
test rax, rax
je 0x180097f70
call qword [rax + 8]
nop word cs:[rax + rax]
mov rcx, qword [rsi + 8]
lock dec qword [rcx]
jne 0x180097d90
call fcn.18008e3f0
jmp 0x180097d90
cmp byte [rsi + 0x10], 2
jne 0x180097fa9
mov rcx, qword [rsi]
mov rcx, qword [rcx + 0x10]
cmp rcx, 3
je 0x180097db5
jmp 0x180097fba
mov rcx, qword [rsi]
mov rcx, qword [rcx + 0x10]
cmp rcx, 1
jne 0x180097db5
mov rdx, qword [rbx + rax*8 + 0x38]
mov r8d, dword [rbx + rax*8 + 0x40]
lea rcx, [rsp + 0x20]
call fcn.180104920
cmp edx, 0x3b9aca00
mov ecx, 0
cmove rax, rcx
cmp rax, qword [rsp + 0x60]
jb 0x180097d51
cmp edx, 0x3b9aca00
setne cl
cmp edx, dword [rsp + 0x44]
seta dl
cmp rax, qword [rsp + 0x60]
jne 0x180097db5
and cl, dl
je 0x180097d51
jmp 0x180097db5
mov rax, rcx
add rax, 0x2300
shr r8, 5
and edx, 0x1f
cmp r8, rdx
seta r14b
jmp 0x180098049
xor r14d, r14d
pause
lea rax, [rcx + 0x2300]
cmp qword [rcx + 0x2300], rbp
je 0x180097e62
mov rdi, rcx
mov rcx, qword [rcx + 0x2308]
test rcx, rcx
jne 0x180098130
mov r15, qword [rax]
mov rax, qword [0x180219958]
test rax, rax
jne 0x180098081
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
test rax, rax
je 0x180098c49
mov qword [0x180219958], rax
mov r8d, 0x2320
mov rcx, rax
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
test rax, rax
je 0x180098c49
mov rdx, rax
add r15, 0x20
mov qword [rax + 0x2300], r15
movups xmmword [rax + 0x2308], xmm6
mov qword [rax + 0x2318], 0
xor eax, eax
lock cmpxchg qword [rdi + 0x2308], rdx
jne 0x1800980cd
mov rcx, rdx
jmp 0x180098130
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 0x180098130
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 0x180098100
nop word cs:[rax + rax]
mov rax, qword [rdi + 0x2310]
cmp eax, 0xffffffff
sete al
test r14b, al
je 0x180098030
mov rax, rdi
lock cmpxchg qword [r13 + 0x80], rcx
jne 0x180098030
mfence
mov rax, qword [r13 + 0x88]
mov qword [rdi + 0x2318], rax
movabs rax, 0x100000000
lock or qword [rdi + 0x2310], rax
mov r14b, 1
pause
lea rax, [rcx + 0x2300]
cmp qword [rcx + 0x2300], rbp
jne 0x180098049
jmp 0x180097e62
mov rax, rcx
add rax, 0x2300
shr r8, 5
and edx, 0x1f
cmp r8, rdx
seta r14b
jmp 0x1800981d9
xor r14d, r14d
pause
lea rax, [rcx + 0x2300]
cmp qword [rcx + 0x2300], rbp
je 0x180097efc
mov rdi, rcx
mov rcx, qword [rcx + 0x2308]
test rcx, rcx
jne 0x1800982c0
mov r15, qword [rax]
mov rax, qword [0x180219958]
test rax, rax
jne 0x180098211
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
test rax, rax
je 0x180098c49
mov qword [0x180219958], rax
mov r8d, 0x2320
mov rcx, rax
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
test rax, rax
je 0x180098c49
mov rdx, rax
add r15, 0x20
mov qword [rax + 0x2300], r15
movups xmmword [rax + 0x2308], xmm6
mov qword [rax + 0x2318], 0
xor eax, eax
lock cmpxchg qword [rdi + 0x2308], rdx
jne 0x18009825d
mov rcx, rdx
jmp 0x1800982c0
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 0x1800982c0
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 0x180098290
nop word cs:[rax + rax]
mov rax, qword [rdi + 0x2310]
cmp eax, 0xffffffff
sete al
test r14b, al
je 0x1800981c0
mov rax, rdi
lock cmpxchg qword [r13 + 0x80], rcx
jne 0x1800981c0
mfence
mov rax, qword [r13 + 0x88]
mov qword [rdi + 0x2318], rax
movabs rax, 0x100000000
lock or qword [rdi + 0x2310], rax
mov r14b, 1
pause
lea rax, [rcx + 0x2300]
cmp qword [rcx + 0x2300], rbp
jne 0x1800981d9
jmp 0x180097efc
xor edi, edi
nop dword [rax + rax]
sub r14, rdi
mov rsi, qword [rsp + 0x58]
mov qword [rsi - 8], r14
jne 0x180097bb0
mov r10, qword [rsp + 0x70]
mov rax, qword [r10 + 0x60]
mov rcx, rax
sub rcx, rsi
sar rcx, 3
movabs rdx, 0x8e38e38e38e38e39
imul rcx, rdx
lea rdx, [rcx - 0x10]
and rdx, qword [r10 + 0x68]
movdqu xmm0, xmmword [rax + rdx]
pcmpeqb xmm0, xmm7
psllw xmm0, 7
pmovmskb r8d, xmm0
test r8d, r8d
je 0x18009838e
bsr r8w, r8w
xor r8d, 0xf
jmp 0x180098393
mov r8w, 0x10
movdqu xmm0, xmmword [rax + rcx]
pcmpeqb xmm0, xmm7
pmovmskb r9d, xmm0
or r9d, 0x10000
tzcnt r9d, r9d
add r8d, r9d
mov r9b, 0x80
cmp r8w, 0xf
ja 0x1800983c1
inc qword [r10 + 0x70]
mov r9b, 0xff
mov byte [rax + rcx], r9b
mov byte [rdx + rax + 0x10], r9b
dec qword [r10 + 0x78]
cmp byte [rsi - 0x48], 2
jb 0x1800983fe
mov rax, qword [rsi - 0x40]
lea rcx, [rax + 0x18]
mov r9, qword [rax]
mov rdx, qword [rax + 8]
mov r8, qword [rax + 0x10]
call qword [r9 + 0x10]
mov r8, qword [rsi - 0x40]
mov rcx, qword [0x180219958]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
lea rcx, [rsi - 0x20]
mov rax, qword [rsi - 0x38]
mov rdx, qword [rsi - 0x30]
mov r8, qword [rsi - 0x28]
call qword [rax + 0x10]
mov rsi, qword [rsi - 8]
test rsi, rsi
je 0x180098940
mov rax, qword [rsp + 0x58]
mov rbx, qword [rax - 0x18]
xor r12d, r12d
mov qword [rsp + 0x38], rsi
jmp 0x18009844c
inc r12
cmp r12, rsi
je 0x180098940
lea rax, [r12 + r12*8]
lea rbp, [rbx + rax*8]
mov rcx, qword [rbx + rax*8 + 0x18]
test rcx, rcx
je 0x18009848d
mov rax, qword [rbp + 0x20]
call qword [rax]
mov rax, qword [rbp + 0x20]
cmp qword [rax + 8], 0
je 0x18009848d
mov r8, qword [rbp + 0x18]
cmp qword [rax + 0x10], 0x11
jb 0x18009847e
mov r8, qword [r8 - 8]
mov rcx, qword [0x180219958]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov rcx, qword [rbp + 0x28]
lock dec qword [rcx]
jne 0x18009849c
call fcn.1800799d0
movzx edx, byte [rbp + 0x10]
mov rcx, qword [rbp]
lock dec qword [rcx]
sete al
cmp dl, 2
jne 0x180098540
test al, al
je 0x1800984bd
call fcn.180092c70
mov r13, qword [rbp + 8]
lock dec qword [r13 + 0x1d0]
jne 0x180098600
mov edx, 1
lock xadd qword [r13 + 0x88], rdx
mov rsi, rdx
and rsi, 0xffffffffffffffe0
mov rcx, qword [r13 + 0x80]
mov r8, rsi
sub r8, qword [rcx + 0x2300]
jne 0x180098618
movabs rax, 0x200000000
lock or qword [rcx + 0x2310], rax
mov rax, qword [r13 + 0x110]
mov rsi, qword [rsp + 0x38]
nop dword [rax]
mov rcx, rax
or rcx, 2
lock cmpxchg qword [r13 + 0x110], rcx
jne 0x180098520
jmp 0x1800985c2
test al, al
je 0x180098549
call fcn.180092c70
mov r13, qword [rbp + 8]
lock dec qword [r13 + 0x1d0]
jne 0x180098600
mov edx, 1
lock xadd qword [r13 + 0x88], rdx
mov rsi, rdx
and rsi, 0xffffffffffffffe0
mov rcx, qword [r13 + 0x80]
mov r8, rsi
sub r8, qword [rcx + 0x2300]
jne 0x1800987a9
movabs rax, 0x200000000
lock or qword [rcx + 0x2310], rax
mov rax, qword [r13 + 0x110]
mov rsi, qword [rsp + 0x38]
nop word cs:[rax + rax]
mov rcx, rax
or rcx, 2
lock cmpxchg qword [r13 + 0x110], rcx
jne 0x1800985b0
test rax, rax
jne 0x180098600
mov rax, qword [r13 + 0x100]
mov rcx, qword [r13 + 0x108]
mov qword [r13 + 0x100], 0
lock and qword [r13 + 0x110], 0xfffffffffffffffd
test rax, rax
je 0x180098600
call qword [rax + 8]
nop word cs:[rax + rax]
mov rcx, qword [rbp + 8]
lock dec qword [rcx]
jne 0x180098440
call fcn.18008e3f0
jmp 0x180098440
mov rax, rcx
add rax, 0x2300
shr r8, 5
and edx, 0x1f
cmp r8, rdx
seta r14b
jmp 0x180098659
xor r14d, r14d
pause
lea rax, [rcx + 0x2300]
cmp qword [rcx + 0x2300], rsi
je 0x1800984fb
mov rdi, rcx
mov rcx, qword [rcx + 0x2308]
test rcx, rcx
jne 0x180098740
mov r15, qword [rax]
mov rax, qword [0x180219958]
test rax, rax
jne 0x180098691
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
test rax, rax
je 0x180098c49
mov qword [0x180219958], rax
mov r8d, 0x2320
mov rcx, rax
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
test rax, rax
je 0x180098c49
mov rdx, rax
add r15, 0x20
mov qword [rax + 0x2300], r15
movups xmmword [rax + 0x2308], xmm6
mov qword [rax + 0x2318], 0
xor eax, eax
lock cmpxchg qword [rdi + 0x2308], rdx
jne 0x1800986dd
mov rcx, rdx
jmp 0x180098740
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 0x180098740
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 0x180098710
nop word cs:[rax + rax]
mov rax, qword [rdi + 0x2310]
cmp eax, 0xffffffff
sete al
test r14b, al
je 0x180098640
mov rax, rdi
lock cmpxchg qword [r13 + 0x80], rcx
jne 0x180098640
mfence
mov rax, qword [r13 + 0x88]
mov qword [rdi + 0x2318], rax
movabs rax, 0x100000000
lock or qword [rdi + 0x2310], rax
mov r14b, 1
pause
lea rax, [rcx + 0x2300]
cmp qword [rcx + 0x2300], rsi
jne 0x180098659
jmp 0x1800984fb
mov rax, rcx
add rax, 0x2300
shr r8, 5
and edx, 0x1f
cmp r8, rdx
seta r14b
jmp 0x1800987e9
xor r14d, r14d
pause
lea rax, [rcx + 0x2300]
cmp qword [rcx + 0x2300], rsi
je 0x180098587
mov rdi, rcx
mov rcx, qword [rcx + 0x2308]
test rcx, rcx
jne 0x1800988d0
mov r15, qword [rax]
mov rax, qword [0x180219958]
test rax, rax
jne 0x180098821
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
test rax, rax
je 0x180098c49
mov qword [0x180219958], rax
mov r8d, 0x2320
mov rcx, rax
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
test rax, rax
je 0x180098c49
mov rdx, rax
add r15, 0x20
mov qword [rax + 0x2300], r15
movups xmmword [rax + 0x2308], xmm6
mov qword [rax + 0x2318], 0
xor eax, eax
lock cmpxchg qword [rdi + 0x2308], rdx
jne 0x18009886d
mov rcx, rdx
jmp 0x1800988d0
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 0x1800988d0
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 0x1800988a0
nop word cs:[rax + rax]
mov rax, qword [rdi + 0x2310]
cmp eax, 0xffffffff
sete al
test r14b, al
je 0x1800987d0
mov rax, rdi
lock cmpxchg qword [r13 + 0x80], rcx
jne 0x1800987d0
mfence
mov rax, qword [r13 + 0x88]
mov qword [rdi + 0x2318], rax
movabs rax, 0x100000000
lock or qword [rdi + 0x2310], rax
mov r14b, 1
pause
lea rax, [rcx + 0x2300]
cmp qword [rcx + 0x2300], rsi
jne 0x1800987e9
jmp 0x180098587
mov rax, qword [rsp + 0x58]
cmp qword [rax - 0x10], 0
je 0x180097bb0
mov r8, qword [rax - 0x18]
mov rcx, qword [0x180219958]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x180097bb0
test sil, sil
jne 0x18009898f
mov rax, qword [0x180219990]
movabs rcx, 0x7fffffffffffffff
test rax, rcx
jne 0x180098bab
mov rcx, qword [rsp + 0x68]
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
lock dec qword [r12]
jne 0x1800989a9
mov rcx, r12
call fcn.18008d880
mov rbx, qword [rsp + 0xc0]
movzx eax, byte [rbx]
mov rsi, qword [rsp + 0x90]
test al, al
mov r8, qword [rsp + 0x98]
mov r13d, 0
je 0x180097661
jmp 0x180098bce
add r13, qword [rsp + 0x50]
mov rdx, qword [rsp + 0x30]
jb 0x180098c5a
add r12d, dword [rsp + 0x48]
cmp r12d, 0x3b9ac9ff
jbe 0x18009785d
inc r13
jne 0x180097856
jmp 0x180098c5a
mov rax, rdx
add rax, qword [rsp + 0x50]
jb 0x180098c5a
mov r8, qword [rsp + 0x48]
lea esi, [r8 + rcx]
cmp esi, 0x3b9ac9ff
jbe 0x180098a35
inc rax
je 0x180098c5a
add esi, 0xc4653600
mov r14d, esi
shr r14d, 9
imul rbx, r14, 0x44b83
shr rbx, 0x27
add rbx, rax
jb 0x180098c5a
mov qword [rsp + 0x20], rdx
mov dword [rsp + 0x28], ecx
lea rcx, [rsp + 0x20]
mov rdx, r13
mov r8d, r12d
call fcn.180104920
mov ecx, edx
mov r9, qword [rsp + 0xb0]
mov rdx, r9
mov r8, qword [rsp + 0xb8]
or rdx, r8
je 0x180098c5a
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 + 0xd0], r9
mov qword [rsp + 0xd8], r8
mov qword [rsp + 0xe0], rcx
mov qword [rsp + 0xe8], rdx
lea rcx, [rsp + 0xe0]
lea rdx, [rsp + 0xd0]
call fcn.180145580
pshufd xmm1, xmm0, 0xee
movq rax, xmm1
test rax, rax
jne 0x180098c5a
movq rcx, xmm0
mov rax, rcx
shr rax, 9
movabs rdx, 0x44b82fa09b5a53
mul rdx
shr rdx, 0xb
sub rbx, rdx
jb 0x180098c5a
imul rax, r14, 0x44b83
shr rax, 0x27
imul eax, eax, 0x3b9aca00
sub esi, eax
imul eax, edx, 0x3b9aca00
sub ecx, eax
cmp esi, ecx
jae 0x180098b4d
test rbx, rbx
je 0x180098c5a
dec rbx
add esi, 0x3b9aca00
sub esi, ecx
mov eax, esi
shr eax, 9
imul rax, rax, 0x44b83
shr rax, 0x27
mov r12d, esi
add rax, rbx
mov rdx, qword [rsp + 0x30]
mov esi, 0
jae 0x180097877
jmp 0x180098c5a
call fcn.180185070
mov esi, eax
movzx eax, byte [r12 + 0x18]
test al, al
jne 0x180098bdb
xor sil, 1
mov eax, dword [r12 + 0xd8]
mov dword [rsp + 0x44], eax
cmp eax, 0x3b9aca00
jne 0x180097a21
jmp 0x180098c5a
call fcn.180185070
test al, al
jne 0x18009898f
mov byte [r12 + 0x18], 1
jmp 0x18009898f
mov rcx, r15
call qword [rdi + 0x18]
jmp 0x1800975c0
mov rsi, qword [rsp + 0x90]
jmp 0x1800975c0
test sil, sil
je 0x180098bf6
mov rax, qword [0x180219990]
movabs rcx, 0x7fffffffffffffff
test rax, rcx
jne 0x180098c38
mov rcx, qword [rsp + 0x68]
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
lock dec qword [r12]
jne 0x180098c10
mov rcx, r12
call fcn.18008d880
xor edi, edi
mov eax, edi
movaps xmm6, xmmword [rsp + 0xf0]
movaps xmm7, xmmword [rsp + 0x100]
add rsp, 0x118
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
call fcn.180185070
test al, al
jne 0x180098bf6
mov byte [r12 + 0x18], 1
jmp 0x180098bf6
mov ecx, 8
mov edx, 0x2320
call fcn.18017ea70
ud2
ud2
call fcn.18016fe79
ud2