Function at 0x140023670
Capabilities:
Check mutex on windows
Create process on windows

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x5c8]
sub rsp, 0x6c8
mov rax, qword [0x1401e7e78]
xor rax, rsp
mov qword [rbp + 0x5b0], rax
cmp byte [rcx + 0x80], 0
mov r15, r9
mov rax, qword [rbp + 0x630]
mov rdi, r8
mov r13, qword [rbp + 0x638]
mov r14d, edx
mov qword [rsp + 0x68], rax
mov rsi, rcx
je 0x1400236cd
or eax, 0xffffffff
jmp 0x140023a45
xor edx, edx
lea rcx, [rbp + 0x1a0]
mov r8d, 0x410
or ebx, 0xffffffff
call fcn.14013b230
mov eax, dword [0x14016a970]
lea r8d, [rbx + 0x65]
movsd xmm0, qword [0x14016a968]
lea rcx, [rbp - 0x7c]
mov dword [rbp - 8], eax
xor edx, edx
movzx eax, word [0x14016a974]
mov word [rbp - 4], ax
xor eax, eax
movsd qword [rbp - 0x10], xmm0
xorps xmm0, xmm0
mov word [rbp + 0x2e], ax
mov qword [rsp + 0x60], rax
movups xmmword [rbp - 2], xmm0
movups xmmword [rbp + 0xe], xmm0
movups xmmword [rbp + 0x1e], xmm0
movups xmmword [rsp + 0x50], xmm0
call fcn.14013b230
and dword [r13], 0
lea r8, str.ConEmuDefTermProc._u
mov r9d, r14d
mov dword [rbp - 0x80], 0x68
lea edx, [rbx + 0x41]
lea rcx, [rbp + 0x120]
call fcn.140120394
call fcn.140123b88
mov rcx, rax
lea r8, [rbp + 0x120]
lea edx, [rbx + 2]
call qword [sym.imp.KERNEL32.dll_CreateMutexW]
mov qword [rsp + 0x70], rax
test rax, rax
je 0x140023785
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r12d, eax
jmp 0x140023788
xor r12d, r12d
mov rdx, qword [rdi]
test rdx, rdx
jne 0x1400237db
mov r8d, r14d
mov ecx, 0x100400
call qword [sym.imp.KERNEL32.dll_OpenProcess]
mov qword [rdi], rax
mov rdx, rax
test rax, rax
jne 0x1400237db
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [r13], eax
lea rdx, str.OpenProcess_fails__code_u
mov r8d, eax
lea rcx, [rbp + 0x30]
call fcn.140003da0
mov rax, qword [rsi]
lea r8, [rbp + 0x30]
mov edx, r14d
mov rcx, rsi
call qword [rax + 0x50]
jmp 0x140023a33
cmp r12d, 0xb7
jne 0x1400237ff
xor ebx, ebx
mov dword [r15], 0x90
lea rdx, str.Mutex_already_exists
lea rcx, [rbp + 0x30]
call fcn.140003da0
jmp 0x1400237c6
mov ecx, r14d
call fcn.140126f14
mov r12d, eax
cmp eax, 0x20
je 0x140023837
cmp eax, 0x40
je 0x14002382e
mov rcx, qword [rdi]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov r8d, r12d
lea rdx, str.Unsupported_process_bitness___i_
mov ebx, 0xfffffffe
jmp 0x1400237bd
lea r12, str.ConEmuC64.exe
jmp 0x14002383e
lea r12, str.ConEmuC.exe
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x58]
mov r9, qword [rsp + 0x68]
lea rdx, str.__LOG
test al, al
mov dword [rsp + 0x30], r14d
lea rcx, [0x14015a140]
cmovne rcx, rdx
lea r8, str.__s_s__s__DEFTRM_u
mov qword [rsp + 0x28], rcx
mov edx, 0x208
lea rcx, [rbp + 0x1a0]
mov qword [rsp + 0x20], r12
call fcn.140120394
cmp byte [rsi + 0x80], 0
jne 0x140023a33
lea rax, [rbp - 0x10]
mov dword [rbp - 0x44], 1
mov qword [rbp - 0x68], rax
lea r8, [rbp + 0x1a0]
mov rax, qword [rsi]
mov edx, r14d
mov rcx, rsi
call qword [rax + 0x50]
lea rax, [rsp + 0x50]
xor r9d, r9d
mov qword [rsp + 0x48], rax
lea rdx, [rbp + 0x1a0]
lea rax, [rbp - 0x80]
xor r8d, r8d
mov qword [rsp + 0x40], rax
xor ecx, ecx
and qword [rsp + 0x38], 0
and qword [rsp + 0x30], 0
and dword [rsp + 0x28], 0
and dword [rsp + 0x20], 0
call qword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
jne 0x140023920
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [r13], eax
mov rcx, qword [rdi]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov r8d, dword [r13]
lea rdx, str.Fails_to_start_service_process__code_u
mov ebx, 0xfffffffd
jmp 0x1400237bd
mov rcx, qword [rsp + 0x58]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov r8d, dword [rsp + 0x60]
lea rdx, str.Service_process_PID_u_started
lea rcx, [rbp + 0x30]
call fcn.140003da0
mov rax, qword [rsi]
lea r8, [rbp + 0x30]
mov edx, r14d
mov rcx, rsi
call qword [rax + 0x50]
call fcn.1401385a4
mov rbx, rax
call fcn.140138588
cqo
idiv rbx
mov rcx, rax
imul rax, rdx, 0x3b9aca00
cqo
idiv rbx
mov rbx, rax
imul rax, rcx, 0x3b9aca00
add rbx, rax
jmp 0x1400239da
mov rcx, qword [rsp + 0x50]
mov edx, 0x64
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
je 0x1400239e3
call fcn.1401385a4
mov rdi, rax
call fcn.140138588
cqo
idiv rdi
mov r8, rax
imul rax, rdx, 0x3b9aca00
cqo
idiv rdi
mov rdx, rax
imul rax, r8, 0x3b9aca00
add rdx, rax
sub rdx, rbx
cmp byte [rsi + 8], 0
jne 0x1400239da
movabs rax, 0x6fc23ac00
cmp rdx, rax
jge 0x1400239e3
cmp byte [rsi + 0x80], 0
je 0x140023980
mov rcx, qword [rsp + 0x50]
mov rdx, r15
call qword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
test eax, eax
jne 0x1400239fe
or r9d, 0xffffffff
mov dword [r15], r9d
jmp 0x140023a01
mov r9d, dword [r15]
mov r8d, dword [rsp + 0x60]
lea rdx, str.Service_process_PID_u_finished_with_code_u
lea rcx, [rbp + 0x30]
call fcn.140003da0
mov rax, qword [rsi]
lea r8, [rbp + 0x30]
mov edx, r14d
mov rcx, rsi
call qword [rax + 0x50]
mov rcx, qword [rsp + 0x50]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
xor ebx, ebx
mov rcx, qword [rsp + 0x70]
test rcx, rcx
je 0x140023a43
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, ebx
mov rcx, qword [rbp + 0x5b0]
xor rcx, rsp
call fcn.140139b10
add rsp, 0x6c8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret