Function at 0x14003c890
Capabilities:
Create thread

Disassembly:
push r15
push r14
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x68
mov ebp, r8d
mov rdi, rdx
mov rbx, rcx
xor ecx, ecx
mov edx, 1
xor r8d, r8d
xor r9d, r9d
call qword [sym.imp.KERNEL32.dll_CreateEventW]
mov rsi, rax
mov qword [rdi + 8], rax
test rax, rax
jne 0x14003c985
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r14d, eax
mov rax, qword [rdi]
mov rcx, rdi
mov edx, 1
call qword [rax]
mov qword [rsp + 0x30], 0
mov rax, qword [0x14014efa8]
shr rax, 1
movabs rcx, 0x595588bd12bf6fe8
cmp rax, rcx
je 0x14003c925
mov rax, qword [0x14014efa0]
mov rax, qword [rax + 0x30]
lea rcx, [0x1400056a0]
cmp rax, rcx
je 0x14003c925
lea rcx, [0x14014efa0]
mov edx, r14d
call rax
jmp 0x14003c92b
test r14d, r14d
setne al
movzx eax, al
or rax, 2
mov qword [rsp + 0x40], rax
mov dword [rsp + 0x30], r14d
lea rax, [0x14014efa0]
mov qword [rsp + 0x38], rax
lea rax, str.win_thread.ipp
mov qword [rsp + 0x48], rax
lea rax, str.void___cdecl_boost::asio::detail::win_thread::start_thread_func_base___unsigned_int_
mov qword [rsp + 0x50], rax
movabs rax, 0x50000004c
mov qword [rsp + 0x58], rax
lea rdx, str.thread.entry_event
lea rcx, [rsp + 0x30]
lea r8, [rsp + 0x48]
call fcn.140035cd0
xor ecx, ecx
mov edx, 1
xor r8d, r8d
xor r9d, r9d
call qword [sym.imp.KERNEL32.dll_CreateEventW]
mov r14, rax
mov qword [rbx + 0x10], rax
mov qword [rdi + 0x10], rax
test rax, rax
jne 0x14003ca69
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r15d, eax
mov rax, qword [rdi]
mov rcx, rdi
mov edx, 1
call qword [rax]
mov qword [rsp + 0x30], 0
mov rax, qword [0x14014efa8]
shr rax, 1
movabs rcx, 0x595588bd12bf6fe8
cmp rax, rcx
je 0x14003ca09
mov rax, qword [0x14014efa0]
mov rax, qword [rax + 0x30]
lea rcx, [0x1400056a0]
cmp rax, rcx
je 0x14003ca09
lea rcx, [0x14014efa0]
mov edx, r15d
call rax
jmp 0x14003ca0f
test r15d, r15d
setne al
movzx eax, al
or rax, 2
mov qword [rsp + 0x40], rax
mov dword [rsp + 0x30], r15d
lea rax, [0x14014efa0]
mov qword [rsp + 0x38], rax
lea rax, str.win_thread.ipp
mov qword [rsp + 0x48], rax
lea rax, str.void___cdecl_boost::asio::detail::win_thread::start_thread_func_base___unsigned_int_
mov qword [rsp + 0x50], rax
movabs rax, 0x500000056
mov qword [rsp + 0x58], rax
lea rdx, str.thread.exit_event
lea rcx, [rsp + 0x30]
lea r8, [rsp + 0x48]
call fcn.140035cd0
mov dword [rsp + 0x64], 0
lea rax, [rsp + 0x64]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], 0
lea r8, [0x14003cc30]
xor ecx, ecx
mov edx, ebp
mov r9, rdi
call fcn.1400cd400
mov qword [rbx + 8], rax
test rax, rax
jne 0x14003cb78
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
mov rax, qword [rdi]
mov rcx, rdi
mov edx, 1
call qword [rax]
test rsi, rsi
je 0x14003cac6
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
test r14, r14
je 0x14003cad4
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rsp + 0x30], 0
mov rax, qword [0x14014efa8]
shr rax, 1
movabs rcx, 0x595588bd12bf6fe8
cmp rax, rcx
je 0x14003cb1a
mov rax, qword [0x14014efa0]
mov rax, qword [rax + 0x30]
lea rcx, [0x1400056a0]
cmp rax, rcx
je 0x14003cb1a
lea rcx, [0x14014efa0]
mov edx, ebx
call rax
jmp 0x14003cb1f
test ebx, ebx
setne al
movzx eax, al
or rax, 2
mov qword [rsp + 0x40], rax
mov dword [rsp + 0x30], ebx
lea rax, [0x14014efa0]
mov qword [rsp + 0x38], rax
lea rax, str.win_thread.ipp
mov qword [rsp + 0x48], rax
lea rax, str.void___cdecl_boost::asio::detail::win_thread::start_thread_func_base___unsigned_int_
mov qword [rsp + 0x50], rax
movabs rax, 0x500000066
mov qword [rsp + 0x58], rax
lea rdx, str.thread
lea rcx, [rsp + 0x30]
lea r8, [rsp + 0x48]
call fcn.140035cd0
test rsi, rsi
je 0x14003cb94
mov rcx, rsi
mov edx, 0xffffffff
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
nop
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r14
pop r15
ret