Function at 0x100016f50
Capabilities:
Terminate thread

Disassembly:
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
sub rsp, 0x30
mov qword [rsp + 0x20], 0xfffffffffffffffe
mov qword [rsp + 0x68], rbx
mov rbx, rcx
lea rax, [0x100064f30]
mov qword [rcx], rax
xor edi, edi
cmp qword [rcx + 0xa0], rdi
je 0x100016f99
mov rcx, qword [rcx + 0xa0]
cmp rcx, rdi
je 0x10001e49a
call fcn.1000184d8
jmp 0x100016f99
cmp qword [rbx + 0x90], rdi
je 0x100016fb9
mov rcx, qword [rbx + 0x90]
cmp rcx, rdi
je 0x10001e4b5
call fcn.1000166c4
jmp 0x100016fb9
mov rcx, qword [rbx + 0xe8]
cmp rcx, rdi
je 0x100016fd2
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rbx + 0xe8], rdi
mov rcx, qword [rbx + 0xe0]
cmp rcx, rdi
je 0x100017001
mov edx, 0x32
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0x102
je 0x10001e4d0
mov rcx, qword [rbx + 0xe0]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [rbx + 0x130]
cmp rcx, rdi
je 0x100017013
call qword [sym.imp.USER32.dll_DestroyIcon]
mov rcx, qword [rbx + 0x138]
cmp rcx, rdi
je 0x100017025
call qword [sym.imp.USER32.dll_DestroyIcon]
mov rcx, qword [rbx + 0x140]
cmp rcx, rdi
je 0x100017038
call qword [sym.imp.GDI32.dll_DeleteObject]
nop
lea rcx, [rbx + 0xf8]
call fcn.1000171c8
nop
mov rdx, qword [rbx + 0xf0]
sub rdx, 0x18
or esi, 0xffffffff
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, esi
cmp eax, edi
jg 0x10001706a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
nop
lea rax, [0x1000650a8]
mov qword [rbx + 0xa8], rax
mov rax, qword [rbx + 0x98]
mov ecx, esi
lock xadd dword [rax], ecx
mov ebp, 1
add ecx, esi
je 0x10001e4e5
mov rax, qword [rbx + 0x88]
mov ecx, esi
lock xadd dword [rax], ecx
add ecx, esi
jne 0x1000170d0
mov rcx, qword [rbx + 0x90]
cmp rcx, rdi
je 0x1000170b6
mov rax, qword [rcx]
mov edx, ebp
call qword [rax]
mov qword [rbx + 0x90], rdi
mov rcx, qword [rbx + 0x88]
call sub.msvcrt.dll_free
mov qword [rbx + 0x88], rdi
mov rax, qword [rbx + 0x78]
mov ecx, esi
lock xadd dword [rax], ecx
add ecx, esi
jne 0x100017106
mov rcx, qword [rbx + 0x80]
cmp rcx, rdi
je 0x1000170f2
mov rax, qword [rcx]
mov edx, ebp
call qword [rax + 8]
mov qword [rbx + 0x80], rdi
mov rcx, qword [rbx + 0x78]
call sub.msvcrt.dll_free
mov qword [rbx + 0x78], rdi
mov rax, qword [rbx + 0x68]
mov ecx, esi
lock xadd dword [rax], ecx
add ecx, esi
jne 0x100017136
mov rcx, qword [rbx + 0x70]
cmp rcx, rdi
je 0x100017125
mov rax, qword [rcx]
mov edx, ebp
call qword [rax + 8]
mov qword [rbx + 0x70], rdi
mov rcx, qword [rbx + 0x68]
call sub.msvcrt.dll_free
mov qword [rbx + 0x68], rdi
mov rax, qword [rbx + 0x58]
mov ecx, esi
lock xadd dword [rax], ecx
add ecx, esi
jne 0x100017166
mov rcx, qword [rbx + 0x60]
cmp rcx, rdi
je 0x100017155
mov rax, qword [rcx]
mov edx, ebp
call qword [rax + 8]
mov qword [rbx + 0x60], rdi
mov rcx, qword [rbx + 0x58]
call sub.msvcrt.dll_free
mov qword [rbx + 0x58], rdi
mov rax, qword [rbx + 0x48]
mov ecx, esi
lock xadd dword [rax], ecx
add ecx, esi
jne 0x100017196
mov rcx, qword [rbx + 0x50]
cmp rcx, rdi
je 0x100017185
mov rax, qword [rcx]
mov edx, ebp
call qword [rax + 8]
mov qword [rbx + 0x50], rdi
mov rcx, qword [rbx + 0x48]
call sub.msvcrt.dll_free
mov qword [rbx + 0x48], rdi
lea rax, [rbx + 0x10]
mov qword [rsp + 0x50], rax
mov rdx, qword [rax + 0x18]
cmp rdx, rdi
je 0x1000171b5
mov rcx, qword [0x100090148]
call qword [sym.imp.KERNEL32.dll_InterlockedPushEntrySList]
mov rbx, qword [rsp + 0x68]
add rsp, 0x30
pop rdi
pop rsi
pop rbp
ret
mov dword [rsp + 0x58], edi
lea rdx, [0x1000788f0]
lea rcx, [rsp + 0x58]
call sub.msvcrt.dll__CxxThrowException
int3
mov dword [rsp + 0x60], edi
lea rdx, [0x1000788f0]
lea rcx, [rsp + 0x60]
call sub.msvcrt.dll__CxxThrowException
int3
xor edx, edx
mov rcx, qword [rbx + 0xe0]
call qword [sym.imp.KERNEL32.dll_TerminateThread]
nop
jmp 0x100016ff4
mov rcx, qword [rbx + 0xa0]
cmp rcx, rdi
je 0x10001e4f8
mov rax, qword [rcx]
mov edx, ebp
call qword [rax]
mov qword [rbx + 0xa0], rdi
mov rcx, qword [rbx + 0x98]
call sub.msvcrt.dll_free
mov qword [rbx + 0x98], rdi
jmp 0x100017092