Function at 0x180005370
Capabilities:
Resume thread
Suspend thread

Disassembly:
push rbx
push rsi
push rdi
push r12
push r15
sub rsp, 0x30
xor r12d, r12d
mov rdi, rcx
mov r15d, r12d
mov ebx, r12d
xor eax, eax
mov esi, 1
lock cmpxchg dword [0x1800479bc], esi
je 0x1800053c1
nop dword [rax]
cmp rbx, 0x20
jae 0x1800053aa
xor ecx, ecx
jmp 0x1800053ac
mov ecx, esi
call qword [sym.imp.KERNEL32.dll_Sleep]
inc rbx
xor eax, eax
lock cmpxchg dword [0x1800479bc], esi
jne 0x1800053a0
cmp qword [0x1800479c0], r12
je 0x180005642
mov edx, dword [0x180047c5c]
mov ebx, r12d
test edx, edx
je 0x1800053f4
mov r10, qword [0x180047c50]
mov rax, r10
cmp rdi, qword [rax]
je 0x1800053ff
inc ebx
add rax, 0x38
cmp ebx, edx
jb 0x1800053e5
mov r15d, 4
jmp 0x180005648
cmp ebx, 0xffffffff
je 0x1800053f4
mov eax, ebx
imul r11, rax, 0x38
mov qword [rsp + 0x68], r11
test byte [r11 + r10 + 0x20], 2
je 0x18000553e
lea rcx, [rsp + 0x20]
mov qword [rsp + 0x20], r12
mov qword [rsp + 0x28], r12
call fcn.180004bd0
test eax, eax
jne 0x18000543c
lea r15d, [rax + 9]
jmp 0x180005648
mov qword [rsp + 0x60], rbp
mov qword [rsp + 0x70], r13
mov r13, qword [rsp + 0x20]
mov qword [rsp + 0x78], r14
mov r14d, dword [rsp + 0x2c]
test r13, r13
je 0x1800054af
test r14d, r14d
je 0x1800054af
mov rdi, r13
mov ebp, r14d
nop word [rax + rax]
mov r8d, dword [rdi]
xor edx, edx
lea ecx, [rdx + 0x5a]
call qword [sym.imp.KERNEL32.dll_OpenThread]
mov rsi, rax
test rax, rax
je 0x1800054a5
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_SuspendThread]
xor r8d, r8d
mov edx, ebx
mov rcx, rsi
call fcn.180004a20
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
add rdi, 4
sub rbp, 1
jne 0x180005470
xor edx, edx
mov ecx, ebx
call fcn.180004d40
mov r15d, eax
test r13, r13
je 0x180005514
test r14d, r14d
je 0x180005502
mov rdi, r13
mov rbp, r14
nop dword [rax + rax]
mov r8d, dword [rdi]
xor edx, edx
lea ecx, [rdx + 0x5a]
call qword [sym.imp.KERNEL32.dll_OpenThread]
mov rsi, rax
test rax, rax
je 0x1800054f8
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_ResumeThread]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
add rdi, 4
sub rbp, 1
jne 0x1800054d0
mov rcx, qword [0x1800479c0]
mov r8, r13
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov r14, qword [rsp + 0x78]
mov r13, qword [rsp + 0x70]
mov rbp, qword [rsp + 0x60]
test r15d, r15d
jne 0x180005648
mov edx, dword [0x180047c5c]
mov r10, qword [0x180047c50]
mov r11, qword [rsp + 0x68]
mov r9, qword [r11 + r10 + 0x10]
mov r8, r12
mov rcx, qword [0x180047c60]
mov rax, r9
and rax, 0xfffffffffffff000
test rcx, rcx
je 0x1800055b7
nop dword [rax + rax]
cmp rcx, rax
je 0x180005572
mov r8, rcx
mov rcx, qword [rcx]
test rcx, rcx
jne 0x180005560
jmp 0x1800055b7
mov rax, qword [rcx + 8]
mov qword [r9], rax
add dword [rcx + 0x10], 0xffffffff
mov qword [rcx + 8], r9
jne 0x1800055b7
mov rax, qword [rcx]
test r8, r8
je 0x180005590
mov qword [r8], rax
jmp 0x180005597
mov qword [0x180047c60], rax
xor edx, edx
mov r8d, 0x8000
call qword [sym.imp.KERNEL32.dll_VirtualFree]
mov edx, dword [0x180047c5c]
mov r10, qword [0x180047c50]
mov r11, qword [rsp + 0x68]
dec edx
cmp ebx, edx
jae 0x1800055fa
mov eax, edx
imul rcx, rax, 0x38
movups xmm0, xmmword [rcx + r10]
movups xmmword [r11 + r10], xmm0
movups xmm1, xmmword [rcx + r10 + 0x10]
movups xmmword [r11 + r10 + 0x10], xmm1
movups xmm0, xmmword [rcx + r10 + 0x20]
movups xmmword [r11 + r10 + 0x20], xmm0
movsd xmm1, qword [rcx + r10 + 0x30]
movsd qword [r11 + r10 + 0x30], xmm1
mov r10, qword [0x180047c50]
mov ecx, dword [0x180047c58]
mov eax, ecx
mov dword [0x180047c5c], edx
shr eax, 1
cmp eax, 0x20
jb 0x180005648
cmp eax, edx
jb 0x180005648
mov eax, ecx
mov r8, r10
mov rcx, qword [0x1800479c0]
xor edx, edx
shr rax, 1
imul r9, rax, 0x38
call qword [sym.imp.KERNEL32.dll_HeapReAlloc]
test rax, rax
je 0x180005648
shr dword [0x180047c58], 1
mov qword [0x180047c50], rax
jmp 0x180005648
mov r15d, 2
xchg dword [0x1800479bc], r12d
mov eax, r15d
add rsp, 0x30
pop r15
pop r12
pop rdi
pop rsi
pop rbx
ret