Function at 0x40bf94
Capabilities:
Create process on windows
Get common file path
Set current directory

Disassembly:
push rbx
push rdi
mov eax, 0x4318
call fcn.0040d260
sub rsp, rax
mov rax, qword [0x00413830]
mov qword [rsp + 0x4300], rax
test rdx, rdx
mov rbx, rdx
mov rdi, rcx
je 0x40c078
mov rcx, qword [rdx + 8]
test rcx, rcx
je 0x40c078
mov rax, qword [rdx + 0x10]
sub rax, rcx
sar rax, 3
cmp rax, 1
jbe 0x40c078
mov rcx, qword [rcx + 8]
lea rdx, str._create_i4j_log
call qword [sym.imp.msvcrt.dll_wcscmp]
test eax, eax
je 0x40c044
mov rcx, qword [rbx + 8]
lea rdx, str._create_e4j_log
mov rcx, qword [rcx + 8]
call qword [sym.imp.msvcrt.dll_wcscmp]
test eax, eax
je 0x40c044
mov rcx, qword [rbx + 8]
lea rdx, [0x00410748]
mov rcx, qword [rcx + 8]
call qword [sym.imp.msvcrt.dll_wcscmp]
test eax, eax
je 0x40c044
mov rcx, qword [rbx + 8]
lea rdx, [0x00410728]
mov rcx, qword [rcx + 8]
call qword [sym.imp.msvcrt.dll_wcscmp]
test eax, eax
jne 0x40c078
mov rdx, qword [rbx + 8]
mov r8, qword [rbx + 0x10]
add rdx, 8
lea rcx, [rdx + 8]
cmp rcx, r8
je 0x40c06c
sub rdx, rcx
mov rax, qword [rcx]
mov qword [rdx + rcx], rax
add rcx, 8
cmp rcx, r8
jne 0x40c05c
add qword [rbx + 0x10], 0xfffffffffffffff8
mov byte [0x0041fa0a], 1
call fcn.00403ee0
lea rdx, [rsp + 0x50]
mov r8d, 2
mov ecx, 0x7d1
mov qword [0x0041fa00], rdi
call fcn.00403e40
movzx r11d, word [rsp + 0x50]
lea rax, str.exe4j
cmp r11b, 0x65
lea rcx, str.install4j
mov byte [0x0041f9f0], r11b
cmovne rax, rcx
cmp byte [0x0041fa09], 0
mov qword [0x0041f9f8], rax
jne 0x40c136
lea rdx, [rsp + 0x300]
mov r8d, 0x2000
mov ecx, 0x92
call fcn.00403e40
cmp byte [rsp + 0x300], 0
je 0x40c12a
lea rdx, [rsp + 0x300]
lea rcx, [rsp + 0x2300]
mov r8b, 1
call fcn.00404ff4
lea rcx, [rsp + 0x2300]
call qword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
lea rdx, [rsp + 0x2300]
lea rcx, str.change_working_directory_to__s
call fcn.0040a860
jmp 0x40c136
lea rcx, str.working_directory_unchanged
call fcn.0040a860
cmp byte [0x0041fa0a], 0
je 0x40c279
call fcn.0040a7cc
lea rdx, str.The_following_log_file_will_be_created:_n_n_s_n_nDo_you_want_to_open_an_Explorer_window_
lea rcx, [rsp + 0x300]
mov r8, rax
call qword [sym.imp.msvcrt.dll_sprintf]
mov r8, qword [0x0041f9f8]
lea rdx, [rsp + 0x300]
mov r9d, 4
xor ecx, ecx
call qword [sym.imp.USER32.dll_MessageBoxA]
cmp eax, 6
jne 0x40c279
call fcn.0040a7cc
mov ebx, 0x104
lea rdx, [rsp + 0xe0]
mov rcx, rax
mov r8d, ebx
call qword [sym.imp.KERNEL32.dll_GetShortPathNameA]
lea rcx, [rsp + 0x1f0]
mov edx, ebx
call qword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
lea r9, [rsp + 0xe0]
lea r8, [rsp + 0x1f0]
lea rdx, str._sexplorer.exe__select__s
lea rcx, [rsp + 0x300]
call qword [sym.imp.msvcrt.dll_sprintf]
lea rdx, [rsp + 0x300]
lea rcx, str.calling__s
call fcn.0040a860
xor edx, edx
lea rcx, [rsp + 0x58]
lea r8d, [rdx + 0x18]
call sub.msvcrt.dll_memset
mov ebx, 0x68
lea rcx, [rsp + 0x70]
mov r8, rbx
xor edx, edx
call sub.msvcrt.dll_memset
lea rax, [rsp + 0x58]
lea rdx, [rsp + 0x300]
mov qword [rsp + 0x48], rax
lea rax, [rsp + 0x70]
xor r9d, r9d
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x30], 0
xor r8d, r8d
xor ecx, ecx
mov dword [rsp + 0x28], 0x20
mov dword [rsp + 0x20], 1
mov dword [rsp + 0x70], ebx
call qword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
jne 0x40c279
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.could_not_open_explorer_window__d
mov edx, eax
call fcn.0040a860
mov rcx, qword [rsp + 0x4300]
call fcn.0040d230
add rsp, 0x4318
pop rdi
pop rbx
ret