Function at 0x180093b60
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 0x180093ba9
mov al, 1
xchg byte [rsi + 0x41], al
xor edi, edi
test al, al
jne 0x180095182
xor eax, eax
xchg byte [rsi + 0x41], al
jmp 0x180095182
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 0x180095133
mov rax, qword [r14]
test rax, rax
je 0x180093c64
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 0x180093b90
mov rsi, qword [rsp + 0x30]
mov rcx, rsi
mov rdx, qword [rsp + 0x98]
call fcn.18011c880
mov edi, eax
test al, al
jne 0x180095182
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 0x1800951ce
mov r15, qword [rsp + 0x20]
mov r8, qword [0x18021a978]
test r8, r8
mov esi, 0
jne 0x180093d06
mov qword [rsp + 0x20], 0
lea rcx, [rsp + 0x20]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
test eax, eax
je 0x1800951ce
mov r8, qword [rsp + 0x20]
mov qword [0x18021a978], r8
test r8, r8
je 0x1800951ca
mov rax, r15
or rax, r8
shr rax, 0x20
je 0x180093d20
mov rax, r15
xor edx, edx
div r8
mov rcx, rax
jmp 0x180093d2a
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 0x180093d50
xor edx, edx
div r8
jmp 0x180093d55
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 0x180093da0
mov r9, r13
inc r9
je 0x1800951ca
lea eax, [r12 - 0x3b4e7ec0]
jmp 0x180093dab
lea eax, [r12 + 0x4c4b40]
mov r9, r13
mov r8d, eax
shr r8d, 9
imul r10, r8, 0x44b83
shr r10, 0x27
add r10, r9
jb 0x1800951ca
shr rdx, 0xb
cmp rdx, r10
jb 0x180093dff
imul r9d, edx, 0x3b9aca00
sub ecx, r9d
cmp rdx, r10
jne 0x180094075
imul r8, r8, 0x44b83
shr r8, 0x27
imul r8d, r8d, 0x3b9aca00
sub eax, r8d
cmp eax, ecx
jb 0x180094075
add r13, qword [rsp + 0x50]
mov rdx, qword [rsp + 0x30]
jb 0x1800951ca
add r12d, dword [rsp + 0x48]
cmp r12d, 0x3b9ac9ff
jbe 0x180093e2d
inc r13
je 0x1800951ca
add r12d, 0xc4653600
mov eax, r12d
shr eax, 9
imul rax, rax, 0x44b83
shr rax, 0x27
add rax, r13
jb 0x1800951ca
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, 0x148
mov r8d, 0xd0
cmove rdx, r8
mov r8d, dword [rcx + rdx + 0x138]
cmp r8d, 0x3b9aca00
je 0x1800951ca
add rcx, rdx
add rcx, 0x10
mov rdx, qword [rcx + 0x120]
cmp r12d, 0x3b8b87c0
jbe 0x180093ed0
inc rax
je 0x1800951ca
add r12d, 0xc474783f
jmp 0x180093ed7
add r12d, 0xf423f
mov r9d, r12d
shr r9d, 9
imul rcx, r9, 0x44b83
shr rcx, 0x27
add rcx, rax
jb 0x1800951ca
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.180104610
mov ecx, edx
imul r8, rcx, 0x431bde83
shr r8, 0x32
cmp edx, 0x3b9aca00
cmove rax, rsi
cmove r8d, esi
mov ecx, 0x3e8
mul rcx
add r8, rax
adc rdx, 0
neg rdx
mov ecx, 0
sbb rcx, rcx
or rcx, r8
mov rdx, qword [rsp + 0x30]
mov rax, qword [rdx + 0x40]
nop dword [rax + rax]
cmp rax, rcx
ja 0x180093f73
cmp rax, 0xfffffffffffffffd
ja 0x180093f73
lock cmpxchg qword [rdx + 0x40], rcx
jne 0x180093f60
mov r12, qword [rsp + 0x70]
lea rax, [r12 + 1]
cmp rax, 2
jb 0x180095182
mov rax, qword [r12]
nop dword [rax + rax]
test rax, rax
je 0x180095180
js 0x1800951ca
lea rcx, [rax + 1]
lock cmpxchg qword [r12], rcx
jne 0x180093f90
mov rcx, qword [rsp + 0x68]
call qword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
mov rax, qword [0x18021a998]
shl rax, 1
test rax, rax
jne 0x1800950ea
movzx eax, byte [r12 + 0x18]
test al, al
jne 0x180095150
xor esi, esi
mov eax, dword [r12 + 0xd8]
mov dword [rsp + 0x44], eax
cmp eax, 0x3b9aca00
je 0x1800951ca
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 0x1800951ce
mov rdi, qword [rsp + 0x20]
mov r8, qword [0x18021a978]
test r8, r8
jne 0x18009405c
mov qword [rsp + 0x20], 0
lea rcx, [rsp + 0x20]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
test eax, eax
je 0x1800951ce
mov r8, qword [rsp + 0x20]
mov qword [0x18021a978], r8
test r8, r8
je 0x1800951ca
mov rax, rdi
or rax, r8
shr rax, 0x20
je 0x1800940d9
mov rax, rdi
xor edx, edx
div r8
mov rcx, rax
jmp 0x1800940e2
mov eax, dword [rsp + 0x88]
test eax, eax
je 0x180094f47
cmp eax, 1
jne 0x180094f77
add rdx, qword [rsp + 0x50]
jb 0x1800951ca
add ecx, dword [rsp + 0x48]
cmp ecx, 0x3b9ac9ff
jbe 0x1800940b3
inc rdx
je 0x1800951ca
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 0x180093e47
jmp 0x1800951ca
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 0x1800940fc
xor edx, edx
div r8
jmp 0x180094101
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 0x180094ee0
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 0x18009419a
dec qword [rsp + 0xc8]
mov r12, qword [rsp + 0x70]
mov esi, dword [rsp + 0x8c]
je 0x180094ee0
mov r9, qword [rsp + 0xa0]
test r9w, r9w
je 0x1800941c0
lea eax, [r9 - 1]
and eax, r9d
xor ebx, ebx
mov rdx, qword [rsp + 0x80]
mov r8, qword [rsp + 0x78]
jmp 0x1800941fc
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 0x1800941d0
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 0x180094300
mov rdi, qword [rcx - 0x18]
mov rsi, r14
neg rsi
mov r12d, 1
jmp 0x180094268
add rdi, 0x48
lea rax, [rsi + r12]
inc rax
inc r12
cmp rax, 1
je 0x1800948c3
mov rax, qword [rdi + 0x28]
movzx eax, byte [rax + 0x10]
test al, al
jne 0x1800942e0
cmp byte [rdi + 0x10], 2
jne 0x180094290
mov rax, qword [rdi]
mov rax, qword [rax + 0x10]
cmp rax, 3
jne 0x18009429d
jmp 0x1800942e0
mov rax, qword [rdi]
mov rax, qword [rax + 0x10]
cmp rax, 1
jne 0x1800942e0
mov rdx, qword [rdi + 0x38]
mov r8d, dword [rdi + 0x40]
lea rcx, [rsp + 0x20]
call fcn.180104610
cmp edx, 0x3b9aca00
cmove rax, rbx
cmp rax, qword [rsp + 0x60]
jb 0x180094250
cmp edx, 0x3b9aca00
setne cl
cmp edx, dword [rsp + 0x44]
seta dl
cmp rax, qword [rsp + 0x60]
jne 0x1800942e0
and cl, dl
je 0x180094250
nop
mov rcx, rdi
call fcn.18008da90
mov edi, 1
cmp r12, r14
jne 0x18009430e
jmp 0x1800948d0
xor r12d, r12d
xor edi, edi
cmp r12, r14
je 0x1800948d0
mov rax, qword [rsp + 0x58]
mov rbx, qword [rax - 0x18]
mov qword [rsp + 0xa8], r14
jmp 0x18009436c
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 0x1800948d0
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 0x180094540
mov rcx, qword [rsi + 0x18]
test rcx, rcx
je 0x1800943bd
mov rax, qword [rsi + 0x20]
call qword [rax]
mov rax, qword [rsi + 0x20]
cmp qword [rax + 8], 0
je 0x1800943bd
mov r8, qword [rsi + 0x18]
cmp qword [rax + 0x10], 0x11
jb 0x1800943ae
mov r8, qword [r8 - 8]
mov rcx, qword [0x18021a960]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov rcx, qword [rsi + 0x28]
lock dec qword [rcx]
jne 0x1800943cc
call fcn.18007ad00
inc rdi
movzx edx, byte [rsi + 0x10]
mov rcx, qword [rsi]
lock dec qword [rcx]
sete al
cmp dl, 2
jne 0x180094470
test al, al
je 0x1800943ef
call fcn.18008dcc0
mov r13, qword [rsi + 8]
lock dec qword [r13 + 0x88]
jne 0x180094520
mov qword [rsp + 0x38], rdi
mov edx, 1
lock xadd qword [r13 + 0x38], rdx
mov rbp, rdx
and rbp, 0xffffffffffffffe0
mov rcx, qword [r13 + 0x30]
mov r8, rbp
sub r8, qword [rcx + 0x2300]
jne 0x1800945c0
movabs rax, 0x200000000
lock or qword [rcx + 0x2310], rax
mov rax, qword [r13 + 0x80]
mov r14, qword [rsp + 0xa8]
nop dword [rax]
mov rcx, rax
or rcx, 2
lock cmpxchg qword [r13 + 0x80], rcx
jne 0x180094450
jmp 0x1800944f2
test al, al
je 0x180094479
call fcn.18008dcc0
mov r13, qword [rsi + 8]
lock dec qword [r13 + 0x88]
jne 0x180094520
mov qword [rsp + 0x38], rdi
mov edx, 1
lock xadd qword [r13 + 0x38], rdx
mov rbp, rdx
and rbp, 0xffffffffffffffe0
mov rcx, qword [r13 + 0x30]
mov r8, rbp
sub r8, qword [rcx + 0x2300]
jne 0x180094743
movabs rax, 0x200000000
lock or qword [rcx + 0x2310], rax
mov rax, qword [r13 + 0x80]
mov r14, qword [rsp + 0xa8]
nop word [rax + rax]
mov rcx, rax
or rcx, 2
lock cmpxchg qword [r13 + 0x80], rcx
jne 0x1800944e0
test rax, rax
mov rdi, qword [rsp + 0x38]
jne 0x180094520
mov rax, qword [r13 + 0x70]
mov rcx, qword [r13 + 0x78]
mov qword [r13 + 0x70], 0
lock and qword [r13 + 0x80], 0xfffffffffffffffd
test rax, rax
je 0x180094520
call qword [rax + 8]
nop dword [rax]
mov rcx, qword [rsi + 8]
lock dec qword [rcx]
jne 0x180094360
call fcn.18008def0
jmp 0x180094360
cmp byte [rsi + 0x10], 2
jne 0x180094559
mov rcx, qword [rsi]
mov rcx, qword [rcx + 0x10]
cmp rcx, 3
je 0x180094385
jmp 0x18009456a
mov rcx, qword [rsi]
mov rcx, qword [rcx + 0x10]
cmp rcx, 1
jne 0x180094385
mov rdx, qword [rbx + rax*8 + 0x38]
mov r8d, dword [rbx + rax*8 + 0x40]
lea rcx, [rsp + 0x20]
call fcn.180104610
cmp edx, 0x3b9aca00
mov ecx, 0
cmove rax, rcx
cmp rax, qword [rsp + 0x60]
jb 0x180094321
cmp edx, 0x3b9aca00
setne cl
cmp edx, dword [rsp + 0x44]
seta dl
cmp rax, qword [rsp + 0x60]
jne 0x180094385
and cl, dl
je 0x180094321
jmp 0x180094385
mov rax, rcx
add rax, 0x2300
shr r8, 5
and edx, 0x1f
cmp r8, rdx
seta r14b
jmp 0x1800945f9
xor r14d, r14d
pause
lea rax, [rcx + 0x2300]
cmp qword [rcx + 0x2300], rbp
je 0x18009442c
mov rdi, rcx
mov rcx, qword [rcx + 0x2308]
test rcx, rcx
jne 0x1800946e0
mov r15, qword [rax]
mov rax, qword [0x18021a960]
test rax, rax
jne 0x180094631
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
test rax, rax
je 0x1800951b9
mov qword [0x18021a960], rax
mov r8d, 0x2320
mov rcx, rax
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
test rax, rax
je 0x1800951b9
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 0x18009467d
mov rcx, rdx
jmp 0x1800946e0
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 0x1800946e0
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 0x1800946b0
nop word cs:[rax + rax]
mov rax, qword [rdi + 0x2310]
cmp eax, 0xffffffff
sete al
test r14b, al
je 0x1800945e0
mov rax, rdi
lock cmpxchg qword [r13 + 0x30], rcx
jne 0x1800945e0
mfence
mov rax, qword [r13 + 0x38]
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 0x1800945f9
jmp 0x18009442c
mov rax, rcx
add rax, 0x2300
shr r8, 5
and edx, 0x1f
cmp r8, rdx
seta r14b
jmp 0x180094779
xor r14d, r14d
pause
lea rax, [rcx + 0x2300]
cmp qword [rcx + 0x2300], rbp
je 0x1800944b6
mov rdi, rcx
mov rcx, qword [rcx + 0x2308]
test rcx, rcx
jne 0x180094860
mov r15, qword [rax]
mov rax, qword [0x18021a960]
test rax, rax
jne 0x1800947b1
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
test rax, rax
je 0x1800951b9
mov qword [0x18021a960], rax
mov r8d, 0x2320
mov rcx, rax
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
test rax, rax
je 0x1800951b9
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 0x1800947fd
mov rcx, rdx
jmp 0x180094860
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 0x180094860
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 0x180094830
nop word cs:[rax + rax]
mov rax, qword [rdi + 0x2310]
cmp eax, 0xffffffff
sete al
test r14b, al
je 0x180094760
mov rax, rdi
lock cmpxchg qword [r13 + 0x30], rcx
jne 0x180094760
mfence
mov rax, qword [r13 + 0x38]
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 0x180094779
jmp 0x1800944b6
xor edi, edi
nop word cs:[rax + rax]
sub r14, rdi
mov rsi, qword [rsp + 0x58]
mov qword [rsi - 8], r14
jne 0x180094180
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 0x18009492e
bsr r8w, r8w
xor r8d, 0xf
jmp 0x180094933
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 0x180094961
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 0x18009499e
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 [0x18021a960]
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 0x180094eb0
mov rax, qword [rsp + 0x58]
mov rbx, qword [rax - 0x18]
xor r12d, r12d
mov qword [rsp + 0x38], rsi
jmp 0x1800949ec
inc r12
cmp r12, rsi
je 0x180094eb0
lea rax, [r12 + r12*8]
lea rbp, [rbx + rax*8]
mov rcx, qword [rbx + rax*8 + 0x18]
test rcx, rcx
je 0x180094a2d
mov rax, qword [rbp + 0x20]
call qword [rax]
mov rax, qword [rbp + 0x20]
cmp qword [rax + 8], 0
je 0x180094a2d
mov r8, qword [rbp + 0x18]
cmp qword [rax + 0x10], 0x11
jb 0x180094a1e
mov r8, qword [r8 - 8]
mov rcx, qword [0x18021a960]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov rcx, qword [rbp + 0x28]
lock dec qword [rcx]
jne 0x180094a3c
call fcn.18007ad00
movzx edx, byte [rbp + 0x10]
mov rcx, qword [rbp]
lock dec qword [rcx]
sete al
cmp dl, 2
jne 0x180094ae0
test al, al
je 0x180094a5d
call fcn.18008dcc0
mov r13, qword [rbp + 8]
lock dec qword [r13 + 0x88]
jne 0x180094b80
mov edx, 1
lock xadd qword [r13 + 0x38], rdx
mov rsi, rdx
and rsi, 0xffffffffffffffe0
mov rcx, qword [r13 + 0x30]
mov r8, rsi
sub r8, qword [rcx + 0x2300]
jne 0x180094b98
movabs rax, 0x200000000
lock or qword [rcx + 0x2310], rax
mov rax, qword [r13 + 0x80]
mov rsi, qword [rsp + 0x38]
nop word cs:[rax + rax]
mov rcx, rax
or rcx, 2
lock cmpxchg qword [r13 + 0x80], rcx
jne 0x180094ac0
jmp 0x180094b52
test al, al
je 0x180094ae9
call fcn.18008dcc0
mov r13, qword [rbp + 8]
lock dec qword [r13 + 0x88]
jne 0x180094b80
mov edx, 1
lock xadd qword [r13 + 0x38], rdx
mov rsi, rdx
and rsi, 0xffffffffffffffe0
mov rcx, qword [r13 + 0x30]
mov r8, rsi
sub r8, qword [rcx + 0x2300]
jne 0x180094d23
movabs rax, 0x200000000
lock or qword [rcx + 0x2310], rax
mov rax, qword [r13 + 0x80]
mov rsi, qword [rsp + 0x38]
nop
mov rcx, rax
or rcx, 2
lock cmpxchg qword [r13 + 0x80], rcx
jne 0x180094b40
test rax, rax
jne 0x180094b80
mov rax, qword [r13 + 0x70]
mov rcx, qword [r13 + 0x78]
mov qword [r13 + 0x70], 0
lock and qword [r13 + 0x80], 0xfffffffffffffffd
test rax, rax
je 0x180094b80
call qword [rax + 8]
nop dword [rax + rax]
mov rcx, qword [rbp + 8]
lock dec qword [rcx]
jne 0x1800949e0
call fcn.18008def0
jmp 0x1800949e0
mov rax, rcx
add rax, 0x2300
shr r8, 5
and edx, 0x1f
cmp r8, rdx
seta r14b
jmp 0x180094bd9
xor r14d, r14d
pause
lea rax, [rcx + 0x2300]
cmp qword [rcx + 0x2300], rsi
je 0x180094a95
mov rdi, rcx
mov rcx, qword [rcx + 0x2308]
test rcx, rcx
jne 0x180094cc0
mov r15, qword [rax]
mov rax, qword [0x18021a960]
test rax, rax
jne 0x180094c11
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
test rax, rax
je 0x1800951b9
mov qword [0x18021a960], rax
mov r8d, 0x2320
mov rcx, rax
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
test rax, rax
je 0x1800951b9
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 0x180094c5d
mov rcx, rdx
jmp 0x180094cc0
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 0x180094cc0
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 0x180094c90
nop word cs:[rax + rax]
mov rax, qword [rdi + 0x2310]
cmp eax, 0xffffffff
sete al
test r14b, al
je 0x180094bc0
mov rax, rdi
lock cmpxchg qword [r13 + 0x30], rcx
jne 0x180094bc0
mfence
mov rax, qword [r13 + 0x38]
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 0x180094bd9
jmp 0x180094a95
mov rax, rcx
add rax, 0x2300
shr r8, 5
and edx, 0x1f
cmp r8, rdx
seta r14b
jmp 0x180094d59
xor r14d, r14d
pause
lea rax, [rcx + 0x2300]
cmp qword [rcx + 0x2300], rsi
je 0x180094b21
mov rdi, rcx
mov rcx, qword [rcx + 0x2308]
test rcx, rcx
jne 0x180094e40
mov r15, qword [rax]
mov rax, qword [0x18021a960]
test rax, rax
jne 0x180094d91
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
test rax, rax
je 0x1800951b9
mov qword [0x18021a960], rax
mov r8d, 0x2320
mov rcx, rax
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
test rax, rax
je 0x1800951b9
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 0x180094ddd
mov rcx, rdx
jmp 0x180094e40
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 0x180094e40
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 0x180094e10
nop word cs:[rax + rax]
mov rax, qword [rdi + 0x2310]
cmp eax, 0xffffffff
sete al
test r14b, al
je 0x180094d40
mov rax, rdi
lock cmpxchg qword [r13 + 0x30], rcx
jne 0x180094d40
mfence
mov rax, qword [r13 + 0x38]
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 0x180094d59
jmp 0x180094b21
mov rax, qword [rsp + 0x58]
cmp qword [rax - 0x10], 0
je 0x180094180
mov r8, qword [rax - 0x18]
mov rcx, qword [0x18021a960]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x180094180
test sil, sil
jne 0x180094eff
mov rax, qword [0x18021a998]
movabs rcx, 0x7fffffffffffffff
test rax, rcx
jne 0x18009511b
mov rcx, qword [rsp + 0x68]
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
lock dec qword [r12]
jne 0x180094f19
mov rcx, r12
call fcn.18008d2e0
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 0x180093c31
jmp 0x18009513e
add r13, qword [rsp + 0x50]
mov rdx, qword [rsp + 0x30]
jb 0x1800951ca
add r12d, dword [rsp + 0x48]
cmp r12d, 0x3b9ac9ff
jbe 0x180093e2d
inc r13
jne 0x180093e26
jmp 0x1800951ca
mov rax, rdx
add rax, qword [rsp + 0x50]
jb 0x1800951ca
mov r8, qword [rsp + 0x48]
lea esi, [r8 + rcx]
cmp esi, 0x3b9ac9ff
jbe 0x180094fa5
inc rax
je 0x1800951ca
add esi, 0xc4653600
mov r14d, esi
shr r14d, 9
imul rbx, r14, 0x44b83
shr rbx, 0x27
add rbx, rax
jb 0x1800951ca
mov qword [rsp + 0x20], rdx
mov dword [rsp + 0x28], ecx
lea rcx, [rsp + 0x20]
mov rdx, r13
mov r8d, r12d
call fcn.180104610
mov ecx, edx
mov r9, qword [rsp + 0xb0]
mov rdx, r9
mov r8, qword [rsp + 0xb8]
or rdx, r8
je 0x1800951ca
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.1801463c0
pshufd xmm1, xmm0, 0xee
movq rax, xmm1
test rax, rax
jne 0x1800951ca
movq rcx, xmm0
mov rax, rcx
shr rax, 9
movabs rdx, 0x44b82fa09b5a53
mul rdx
shr rdx, 0xb
sub rbx, rdx
jb 0x1800951ca
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 0x1800950bd
test rbx, rbx
je 0x1800951ca
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 0x180093e47
jmp 0x1800951ca
call fcn.180186710
mov esi, eax
movzx eax, byte [r12 + 0x18]
test al, al
jne 0x18009514b
xor sil, 1
mov eax, dword [r12 + 0xd8]
mov dword [rsp + 0x44], eax
cmp eax, 0x3b9aca00
jne 0x180093ff1
jmp 0x1800951ca
call fcn.180186710
test al, al
jne 0x180094eff
mov byte [r12 + 0x18], 1
jmp 0x180094eff
mov rcx, r15
call qword [rdi + 0x18]
jmp 0x180093b90
mov rsi, qword [rsp + 0x90]
jmp 0x180093b90
test sil, sil
je 0x180095166
mov rax, qword [0x18021a998]
movabs rcx, 0x7fffffffffffffff
test rax, rcx
jne 0x1800951a8
mov rcx, qword [rsp + 0x68]
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
lock dec qword [r12]
jne 0x180095180
mov rcx, r12
call fcn.18008d2e0
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.180186710
test al, al
jne 0x180095166
mov byte [r12 + 0x18], 1
jmp 0x180095166
mov ecx, 8
mov edx, 0x2320
call fcn.18017f950
ud2
ud2
call sub.KERNEL32.dll_GetLastError
ud2