Function at 0x180046d60
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 [0x1801ba360], esi
je 0x180046db1
nop dword [rax]
cmp rbx, 0x20
jae 0x180046d9a
xor ecx, ecx
jmp 0x180046d9c
mov ecx, esi
call qword [sym.imp.KERNEL32.dll_Sleep]
inc rbx
xor eax, eax
lock cmpxchg dword [0x1801ba360], esi
jne 0x180046d90
cmp qword [0x1801ba368], r12
je 0x180047032
mov edx, dword [0x1801ba77c]
mov ebx, r12d
test edx, edx
je 0x180046de4
mov r10, qword [0x1801ba770]
mov rax, r10
cmp rdi, qword [rax]
je 0x180046def
inc ebx
add rax, 0x38
cmp ebx, edx
jb 0x180046dd5
mov r15d, 4
jmp 0x180047038
cmp ebx, 0xffffffff
je 0x180046de4
mov eax, ebx
imul r11, rax, 0x38
mov qword [rsp + 0x68], r11
test byte [r11 + r10 + 0x20], 2
je 0x180046f2e
lea rcx, [rsp + 0x20]
mov qword [rsp + 0x20], r12
mov qword [rsp + 0x28], r12
call fcn.180046540
test eax, eax
jne 0x180046e2c
lea r15d, [rax + 9]
jmp 0x180047038
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 0x180046e9f
test r14d, r14d
je 0x180046e9f
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 0x180046e95
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_SuspendThread]
xor r8d, r8d
mov edx, ebx
mov rcx, rsi
call fcn.180046390
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
add rdi, 4
sub rbp, 1
jne 0x180046e60
xor edx, edx
mov ecx, ebx
call fcn.1800466b0
mov r15d, eax
test r13, r13
je 0x180046f04
test r14d, r14d
je 0x180046ef2
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 0x180046ee8
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 0x180046ec0
mov rcx, qword [0x1801ba368]
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 0x180047038
mov edx, dword [0x1801ba77c]
mov r10, qword [0x1801ba770]
mov r11, qword [rsp + 0x68]
mov r9, qword [r11 + r10 + 0x10]
mov r8, r12
mov rcx, qword [0x1801ba780]
mov rax, r9
and rax, 0xfffffffffffff000
test rcx, rcx
je 0x180046fa7
nop dword [rax + rax]
cmp rcx, rax
je 0x180046f62
mov r8, rcx
mov rcx, qword [rcx]
test rcx, rcx
jne 0x180046f50
jmp 0x180046fa7
mov rax, qword [rcx + 8]
mov qword [r9], rax
add dword [rcx + 0x10], 0xffffffff
mov qword [rcx + 8], r9
jne 0x180046fa7
mov rax, qword [rcx]
test r8, r8
je 0x180046f80
mov qword [r8], rax
jmp 0x180046f87
mov qword [0x1801ba780], rax
xor edx, edx
mov r8d, 0x8000
call qword [sym.imp.KERNEL32.dll_VirtualFree]
mov edx, dword [0x1801ba77c]
mov r10, qword [0x1801ba770]
mov r11, qword [rsp + 0x68]
dec edx
cmp ebx, edx
jae 0x180046fea
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 [0x1801ba770]
mov ecx, dword [0x1801ba778]
mov eax, ecx
mov dword [0x1801ba77c], edx
shr eax, 1
cmp eax, 0x20
jb 0x180047038
cmp eax, edx
jb 0x180047038
mov eax, ecx
mov r8, r10
mov rcx, qword [0x1801ba368]
xor edx, edx
shr rax, 1
imul r9, rax, 0x38
call qword [sym.imp.KERNEL32.dll_HeapReAlloc]
test rax, rax
je 0x180047038
shr dword [0x1801ba778], 1
mov qword [0x1801ba770], rax
jmp 0x180047038
mov r15d, 2
xchg dword [0x1801ba360], r12d
mov eax, r15d
add rsp, 0x30
pop r15
pop r12
pop rdi
pop rsi
pop rbx
ret