Function at 0x1401853a0
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 0x140186c00
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 0x140186bf0
mov rax, qword [rsi]
test rax, rax
je 0x14018549c
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 0x140186c00
xor ecx, ecx
call fcn.1401d91c0
test rax, rax
je 0x140185520
movzx esi, byte [rax + 0x4c]
movzx ebx, byte [rax + 0x4d]
test sil, sil
mov rcx, qword [rsp + 0x40]
je 0x1401854e2
test bl, bl
je 0x140186c16
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.1401d9550
test sil, sil
je 0x140185532
cmp al, 4
jne 0x140185532
jmp 0x140186c30
mov rcx, qword [rsp + 0x40]
mov rdx, qword [rsp + 0xa8]
call fcn.1401d9550
test al, 0xfb
jne 0x140186c12
cmp al, 4
sete bpl
mov rax, qword [rsp + 0x40]
je 0x140186c6a
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 0x140186c90
mov r12, qword [rsp + 0x28]
mov r8, qword [0x1402d9130]
test r8, r8
jne 0x1401855ae
mov qword [rsp + 0x28], 0
lea rcx, [rsp + 0x28]
call sub.kernel32.dll_QueryPerformanceFrequency
test eax, eax
je 0x140186c90
mov r8, qword [rsp + 0x28]
mov qword [0x1402d9130], r8
test r8, r8
je 0x140186c12
mov rax, r12
or rax, r8
shr rax, 0x20
je 0x1401855d0
mov rax, r12
xor edx, edx
div r8
mov rcx, rax
jmp 0x1401855da
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 0x140185600
xor edx, edx
div r8
jmp 0x140185605
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 0x140185640
mov r8, rsi
inc r8
je 0x140186c12
lea eax, [rdi - 0x3b4e7ec0]
jmp 0x140185649
lea eax, [rdi + 0x4c4b40]
mov r8, rsi
shr rdx, 0xb
imul r9d, edx, 0x3b9aca00
sub ecx, r9d
cmp rdx, r8
jb 0x14018566a
jne 0x1401858a0
cmp eax, ecx
jb 0x1401858a0
add rsi, qword [rsp + 0x68]
mov r8, qword [rsp + 0x40]
jb 0x140186c12
add edi, dword [rsp + 0x60]
cmp edi, 0x3b9aca00
jb 0x140185695
inc rsi
je 0x140186c12
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 0x140186c12
cmp ecx, 0x3b8b87c1
jb 0x140185700
inc rsi
je 0x140186c12
add ecx, 0xc474783f
cmp ecx, 0x3b9aca00
jne 0x140185706
jmp 0x140186c12
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.1401c9ca0
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 0x14018579d
lock cmpxchg qword [r8 + 0x40], rcx
jne 0x140185790
mov rcx, qword [rsp + 0x38]
lea rax, [rcx + 1]
cmp rax, 2
jb 0x140186c6a
mov rax, qword [rcx]
nop word cs:[rax + rax]
test rax, rax
je 0x140186c68
js 0x140186c12
lea rcx, [rax + 1]
mov rdx, qword [rsp + 0x38]
lock cmpxchg qword [rdx], rcx
jne 0x1401857c0
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 0x140186c48
mov eax, dword [rsi + 0xd8]
mov dword [rsp + 0x5c], eax
cmp eax, 0x3b9aca00
je 0x140186c12
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 0x140186c90
mov r12, qword [rsp + 0x28]
mov r8, qword [0x1402d9130]
test r8, r8
jne 0x140185885
mov qword [rsp + 0x28], 0
lea rcx, [rsp + 0x28]
call sub.kernel32.dll_QueryPerformanceFrequency
test eax, eax
je 0x140186c90
mov r8, qword [rsp + 0x28]
mov qword [0x1402d9130], r8
test r8, r8
je 0x140186c12
mov rax, r12
or rax, r8
shr rax, 0x20
je 0x1401858ef
mov rax, r12
xor edx, edx
div r8
mov rcx, rax
jmp 0x1401858f9
mov eax, dword [rsp + 0xd4]
test eax, eax
mov r8, qword [rsp + 0x40]
je 0x140186a81
cmp eax, 1
jne 0x140186a91
add rdx, qword [rsp + 0x68]
jb 0x140186c12
add ecx, dword [rsp + 0x60]
cmp ecx, 0x3b9aca00
jb 0x140186be8
inc rdx
je 0x140186c12
add ecx, 0xc4653600
mov rsi, rdx
jmp 0x140185697
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 0x140185913
xor edx, edx
div r8
jmp 0x140185918
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 0x140186a48
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 0x1401859d8
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 0x140186a40
test ax, ax
jne 0x1401859fc
nop dword [rax]
movdqa xmm0, xmmword [rbx]
pmovmskb eax, xmm0
add rsi, 0xfffffffffffffb80
add rbx, 0x10
cmp eax, 0xffff
je 0x1401859e0
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 0x140185c60
mov r12, qword [rcx - 0x18]
xor ebx, ebx
jmp 0x140185a52
inc rbx
add r12, 0x48
cmp qword [rsp + 0x48], rbx
je 0x1401863bb
mov rax, qword [r12 + 0x28]
movzx eax, byte [rax + 0x10]
test al, al
jne 0x140185c40
cmp byte [r12 + 0x10], 2
jne 0x140185a80
mov rax, qword [r12]
mov rax, qword [rax + 0x10]
cmp rax, 3
jne 0x140185a92
jmp 0x140185c40
mov rax, qword [r12]
mov rax, qword [rax + 0x10]
cmp rax, 1
jne 0x140185c40
mov r15, qword [r12 + 0x38]
mov r14d, dword [r12 + 0x40]
mov r8, qword [0x1402d9130]
test r8, r8
jne 0x140185ad8
mov qword [rsp + 0x28], 0
lea rcx, [rsp + 0x28]
call sub.kernel32.dll_QueryPerformanceFrequency
test eax, eax
je 0x140186c90
mov r8, qword [rsp + 0x28]
mov qword [0x1402d9130], r8
test r8, r8
je 0x140186c12
cmp r8, 0x3b9aca00
ja 0x140185af0
mov eax, 0x3b9aca00
xor edx, edx
div r8d
jmp 0x140185af2
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 0x140185b32
jne 0x140185b70
cmp r14d, edi
ja 0x140185b70
mov rax, qword [rsp + 0x88]
mov ecx, 0x3b9aca00
sub rax, r15
jae 0x140185b50
jmp 0x140185c00
cmp r14d, edi
jbe 0x140185b8a
test rax, rax
je 0x140185c00
dec rax
mov ecx, dword [rsp + 0x58]
jmp 0x140185b8c
cmp r14d, edi
jae 0x140185bb2
test rax, rax
je 0x140186c12
dec rax
lea r9d, [r14 + 0x3b9aca00]
jmp 0x140185bb5
mov ecx, edi
sub ecx, r14d
mov edx, ecx
shr edx, 9
imul rdx, rdx, 0x44b83
shr rdx, 0x27
add rax, rdx
jb 0x140186c12
imul edx, edx, 0x3b9aca00
sub ecx, edx
jmp 0x140185c00
mov r9d, r14d
sub r9d, edi
mov r10d, r9d
shr r10d, 9
imul r10, r10, 0x44b83
shr r10, 0x27
add rax, r10
jb 0x140186c12
mov dl, r8b
cmp rax, rdx
jb 0x140185bf4
jne 0x140185b32
imul eax, r10d, 0x3b9aca00
sub r9d, eax
cmp r9d, ecx
ja 0x140185b32
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 0x140185a40
cmp ecx, 0x3b9aca00
setne dl
cmp ecx, dword [rsp + 0x5c]
seta cl
cmp rax, qword [rsp + 0x80]
jne 0x140185c40
and dl, cl
je 0x140185a40
nop
inc rbx
mov rcx, r12
call fcn.140168b70
mov r15d, 1
cmp rbx, qword [rsp + 0x48]
jne 0x140185c70
jmp 0x1401863c0
xor ebx, ebx
xor r15d, r15d
cmp rbx, qword [rsp + 0x48]
je 0x1401863c0
mov rax, qword [rsp + 0x50]
mov rbp, qword [rax - 0x18]
jmp 0x140185cce
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 0x1401863c0
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 0x140185ee0
mov r12, qword [r13 + 0x18]
test r12, r12
je 0x140185d24
mov rsi, qword [r13 + 0x20]
mov rcx, r12
call qword [rsi]
cmp qword [rsi + 8], 0
je 0x140185d24
cmp qword [rsi + 0x10], 0x11
jb 0x140185d13
mov r12, qword [r12 - 8]
mov rcx, qword [0x1402d9150]
xor edx, edx
mov r8, r12
call sub.kernel32.dll_HeapFree
mov rax, qword [r13 + 0x28]
lock dec qword [rax]
jne 0x140185d37
mov rcx, qword [r13 + 0x28]
call fcn.140077a90
inc r15
cmp byte [r13 + 0x10], 2
jne 0x140185df0
mov rax, qword [r13]
lock dec qword [rax]
jne 0x140185d58
mov rcx, qword [r13]
call fcn.14014c020
mov rax, qword [r13 + 8]
add r13, 8
lock dec qword [rax + 0x1d0]
jne 0x140185ec0
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 0x140185f72
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 0x140185dd0
jmp 0x140185e82
mov rax, qword [r13]
lock dec qword [rax]
jne 0x140185e03
mov rcx, qword [r13]
call fcn.14014c020
mov rax, qword [r13 + 8]
add r13, 8
lock dec qword [rax + 0x1d0]
jne 0x140185ec0
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 0x1401860f5
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 0x140185e70
test rax, rax
mov r15, qword [rsp + 0xc0]
jne 0x140185ec0
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 0x140185ec0
call qword [rax + 8]
nop dword [rax]
mov rax, qword [r13]
lock dec qword [rax]
jne 0x140185cc0
mov rcx, qword [r13]
call fcn.14014d870
jmp 0x140185cc0
cmp byte [r13 + 0x10], 2
jne 0x140185efb
mov rcx, qword [r13]
mov rcx, qword [rcx + 0x10]
cmp rcx, 3
je 0x140185cee
jmp 0x140185f0d
mov rcx, qword [r13]
mov rcx, qword [rcx + 0x10]
cmp rcx, 1
jne 0x140185cee
mov rsi, r15
mov r15, qword [rbp + rax*8 + 0x38]
mov r14d, dword [rbp + rax*8 + 0x40]
mov r8, qword [0x1402d9130]
test r8, r8
jne 0x140185f56
mov qword [rsp + 0x28], 0
lea rcx, [rsp + 0x28]
call sub.kernel32.dll_QueryPerformanceFrequency
test eax, eax
je 0x140186c90
mov r8, qword [rsp + 0x28]
mov qword [0x1402d9130], r8
test r8, r8
je 0x140186c12
cmp r8, 0x3b9aca00
ja 0x140186275
mov eax, 0x3b9aca00
xor edx, edx
div r8d
jmp 0x140186277
shr rdx, 5
and eax, 0x1f
cmp rdx, rax
seta dil
jmp 0x140185fa1
xor edi, edi
pause
cmp qword [rcx + 0x2300], r15
je 0x140185da6
mov r12, rcx
mov rcx, qword [rcx + 0x2308]
test rcx, rcx
jne 0x140186090
mov rsi, qword [r12 + 0x2300]
movzx eax, byte [0x1402d9160]
mov rax, qword [0x1402d9150]
test rax, rax
jne 0x140185fe4
call sub.kernel32.dll_GetProcessHeap
test rax, rax
je 0x140186c12
mov qword [0x1402d9150], rax
mov r8d, 0x2320
mov rcx, rax
xor edx, edx
call sub.kernel32.dll_HeapAlloc
test rax, rax
je 0x140186c12
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 0x140186030
mov rcx, rdx
jmp 0x140186090
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 0x140186090
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 0x140186060
nop word cs:[rax + rax]
mov rax, qword [r12 + 0x2310]
cmp eax, 0xffffffff
sete al
test dil, al
je 0x140185f90
mov rax, r12
lock cmpxchg qword [r14 + 0x80], rcx
jne 0x140185f90
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 0x140185fa1
jmp 0x140185da6
shr rdx, 5
and eax, 0x1f
cmp rdx, rax
seta dil
jmp 0x140186121
xor edi, edi
pause
cmp qword [rcx + 0x2300], r15
je 0x140185e51
mov r12, rcx
mov rcx, qword [rcx + 0x2308]
test rcx, rcx
jne 0x140186210
mov rsi, qword [r12 + 0x2300]
movzx eax, byte [0x1402d9160]
mov rax, qword [0x1402d9150]
test rax, rax
jne 0x140186164
call sub.kernel32.dll_GetProcessHeap
test rax, rax
je 0x140186c12
mov qword [0x1402d9150], rax
mov r8d, 0x2320
mov rcx, rax
xor edx, edx
call sub.kernel32.dll_HeapAlloc
test rax, rax
je 0x140186c12
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 0x1401861b0
mov rcx, rdx
jmp 0x140186210
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 0x140186210
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 0x1401861e0
nop word cs:[rax + rax]
mov rax, qword [r12 + 0x2310]
cmp eax, 0xffffffff
sete al
test dil, al
je 0x140186110
mov rax, r12
lock cmpxchg qword [r14 + 0x80], rcx
jne 0x140186110
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 0x140186121
jmp 0x140185e51
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 0x1401862b7
jne 0x1401862e8
cmp r14d, edi
ja 0x1401862e8
mov rax, qword [rsp + 0x88]
mov ecx, 0x3b9aca00
sub rax, r15
jae 0x1401862ce
jmp 0x140186370
cmp r14d, edi
mov r15, rsi
jbe 0x140186302
test rax, rax
je 0x140186373
dec rax
mov ecx, dword [rsp + 0x58]
jmp 0x140186304
cmp r14d, edi
jae 0x14018632a
test rax, rax
je 0x140186c12
dec rax
lea r9d, [r14 + 0x3b9aca00]
jmp 0x14018632d
mov ecx, edi
sub ecx, r14d
mov edx, ecx
shr edx, 9
imul rdx, rdx, 0x44b83
shr rdx, 0x27
add rax, rdx
jb 0x140186c12
imul edx, edx, 0x3b9aca00
sub ecx, edx
jmp 0x140186373
mov r9d, r14d
sub r9d, edi
mov r10d, r9d
shr r10d, 9
imul r10, r10, 0x44b83
shr r10, 0x27
add rax, r10
jb 0x140186c12
mov dl, r8b
cmp rax, rdx
jb 0x14018636c
jne 0x1401862b7
imul eax, r10d, 0x3b9aca00
sub r9d, eax
cmp r9d, ecx
ja 0x1401862b7
xor eax, eax
xor ecx, ecx
mov r15, rsi
cmp ecx, 0x3b9aca00
mov edx, 0
cmove rax, rdx
cmp rax, qword [rsp + 0x80]
jb 0x140185c7b
cmp ecx, 0x3b9aca00
setne dl
cmp ecx, dword [rsp + 0x5c]
seta cl
cmp rax, qword [rsp + 0x80]
jne 0x140185cee
and dl, cl
je 0x140185c7b
jmp 0x140185cee
xor r15d, r15d
nop
mov rax, qword [rsp + 0x48]
sub rax, r15
mov rcx, qword [rsp + 0x50]
mov qword [rcx - 8], rax
jne 0x1401859b0
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 0x140186431
bsr dx, dx
xor edx, 0xf
jmp 0x140186435
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 0x140186470
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 0x1401864d4
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 [0x1402d9150]
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 0x140186a10
mov rax, qword [rsp + 0x50]
mov r14, qword [rax - 0x18]
xor r15d, r15d
jmp 0x140186526
inc r15
cmp r15, qword [rsp + 0x48]
mov rsi, qword [rsp + 0xc8]
je 0x140186a10
lea rax, [r15 + r15*8]
lea r13, [r14 + rax*8]
mov r12, qword [r14 + rax*8 + 0x18]
test r12, r12
je 0x140186565
mov rsi, qword [r13 + 0x20]
mov rcx, r12
call qword [rsi]
cmp qword [rsi + 8], 0
je 0x140186565
cmp qword [rsi + 0x10], 0x11
jb 0x140186554
mov r12, qword [r12 - 8]
mov rcx, qword [0x1402d9150]
xor edx, edx
mov r8, r12
call sub.kernel32.dll_HeapFree
mov rax, qword [r13 + 0x28]
lock dec qword [rax]
jne 0x140186578
mov rcx, qword [r13 + 0x28]
call fcn.140077a90
cmp byte [r13 + 0x10], 2
jne 0x140186620
mov rax, qword [r13]
lock dec qword [rax]
jne 0x140186596
mov rcx, qword [r13]
call fcn.14014c020
mov rax, qword [r13 + 8]
add r13, 8
lock dec qword [rax + 0x1d0]
jne 0x1401866f0
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 0x14018670c
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 0x140186600
jmp 0x1401866b2
mov rax, qword [r13]
lock dec qword [rax]
jne 0x140186633
mov rcx, qword [r13]
call fcn.14014c020
mov rax, qword [r13 + 8]
add r13, 8
lock dec qword [rax + 0x1d0]
jne 0x1401866f0
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 0x140186885
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 0x1401866a0
test rax, rax
mov rbx, qword [rsp + 0x70]
jne 0x1401866f0
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 0x1401866f0
call qword [rax + 8]
nop word cs:[rax + rax]
mov rax, qword [r13]
lock dec qword [rax]
jne 0x140186510
mov rcx, qword [r13]
call fcn.14014d870
jmp 0x140186510
shr rdx, 5
and eax, 0x1f
cmp rdx, rax
seta dil
jmp 0x140186731
xor edi, edi
pause
cmp qword [rcx + 0x2300], rbx
je 0x1401865dc
mov r12, rcx
mov rcx, qword [rcx + 0x2308]
test rcx, rcx
jne 0x140186820
mov rsi, qword [r12 + 0x2300]
movzx eax, byte [0x1402d9160]
mov rax, qword [0x1402d9150]
test rax, rax
jne 0x140186774
call sub.kernel32.dll_GetProcessHeap
test rax, rax
je 0x140186c12
mov qword [0x1402d9150], rax
mov r8d, 0x2320
mov rcx, rax
xor edx, edx
call sub.kernel32.dll_HeapAlloc
test rax, rax
je 0x140186c12
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 0x1401867c0
mov rcx, rdx
jmp 0x140186820
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 0x140186820
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 0x1401867f0
nop word cs:[rax + rax]
mov rax, qword [r12 + 0x2310]
cmp eax, 0xffffffff
sete al
test dil, al
je 0x140186720
mov rax, r12
lock cmpxchg qword [rbp + 0x80], rcx
jne 0x140186720
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 0x140186731
jmp 0x1401865dc
shr rdx, 5
and eax, 0x1f
cmp rdx, rax
seta dil
jmp 0x1401868b1
xor edi, edi
pause
cmp qword [rcx + 0x2300], rbx
je 0x140186679
mov r12, rcx
mov rcx, qword [rcx + 0x2308]
test rcx, rcx
jne 0x1401869a0
mov rsi, qword [r12 + 0x2300]
movzx eax, byte [0x1402d9160]
mov rax, qword [0x1402d9150]
test rax, rax
jne 0x1401868f4
call sub.kernel32.dll_GetProcessHeap
test rax, rax
je 0x140186c12
mov qword [0x1402d9150], rax
mov r8d, 0x2320
mov rcx, rax
xor edx, edx
call sub.kernel32.dll_HeapAlloc
test rax, rax
je 0x140186c12
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 0x140186940
mov rcx, rdx
jmp 0x1401869a0
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 0x1401869a0
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 0x140186970
nop word cs:[rax + rax]
mov rax, qword [r12 + 0x2310]
cmp eax, 0xffffffff
sete al
test dil, al
je 0x1401868a0
mov rax, r12
lock cmpxchg qword [rbp + 0x80], rcx
jne 0x1401868a0
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 0x1401868b1
jmp 0x140186679
mov rax, qword [rsp + 0x50]
cmp qword [rax - 0x10], 0
je 0x1401859bd
mov r8, qword [rax - 0x18]
mov rcx, qword [0x1402d9150]
xor edx, edx
call sub.kernel32.dll_HeapFree
jmp 0x1401859bd
mov rsi, qword [rsp + 0x90]
mov rcx, qword [rsp + 0xa0]
call fcn.1401f2d54
lock dec qword [rsi]
jne 0x140186a68
lea rcx, [rsp + 0x90]
call fcn.14014c490
mov rsi, qword [rsp + 0xb0]
movzx eax, byte [rsi + 0x40]
test al, al
je 0x14018545b
jmp 0x140186c00
add rsi, qword [rsp + 0x68]
jae 0x14018567a
jmp 0x140186c12
mov rbx, rdx
add rbx, qword [rsp + 0x68]
jb 0x140186c12
mov rax, qword [rsp + 0x60]
lea r14d, [rax + rcx]
cmp r14d, 0x3b9aca00
jb 0x140186ac1
inc rbx
je 0x140186c12
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.1401c9ca0
mov ecx, edx
mov r9, qword [rsp + 0xe0]
mov rdx, r9
mov r8, qword [rsp + 0xe8]
or rdx, r8
je 0x140186c12
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.1401ec960
pshufd xmm1, xmm0, 0xee
movq rax, xmm1
test rax, rax
jne 0x140186c12
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 0x140186c12
imul eax, edx, 0x3b9aca00
sub ecx, eax
cmp r14d, ecx
jae 0x140186bbb
test rbx, rbx
je 0x140186c12
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 0x140186c12
imul eax, eax, 0x3b9aca00
sub r14d, eax
mov rsi, rbx
mov ecx, r14d
jmp 0x140185697
mov rsi, rdx
jmp 0x140185697
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 0x140186c6a
xor eax, eax
xchg byte [rsi + 0x41], al
jmp 0x140186c6a
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 0x140186c6a
xor ecx, ecx
call fcn.1401d91c0
mov bpl, 1
test rax, rax
je 0x140186c6a
mov byte [rax + 0x4c], 1
mov byte [rax + 0x4d], bl
jmp 0x140186c6a
mov rcx, qword [rsp + 0xa0]
call fcn.1401f2d54
lock dec qword [rsi]
jne 0x140186c68
lea rcx, [rsp + 0x90]
call fcn.14014c490
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