Function at 0x180009ee0
Capabilities:
Check if file exists
Create thread
Get common file path
Print debug messages

Disassembly:
mov qword [rsp + 8], rbx
push rdi
sub rsp, 0x270
mov rax, qword [0x1803b0b00]
xor rax, rsp
mov qword [rsp + 0x260], rax
mov rbx, rcx
mov edi, edx
lea rcx, [rsp + 0x151]
xor edx, edx
mov r8d, 0x103
mov byte [rsp + 0x150], 0
call fcn.18014af80
lea rdx, str.DllMain_call__d.
lea rcx, [rsp + 0x150]
mov r8d, edi
call fcn.180147ef4
lea rcx, [rsp + 0x150]
call qword [sym.imp.KERNEL32.dll_OutputDebugStringA]
cmp edi, 1
jne 0x18000a123
cmp qword [0x1803cac60], 0
jne 0x18000a175
lea rcx, str.DLL_PROCESS_ATTACH............_n
mov qword [0x1803cac60], rbx
call qword [sym.imp.KERNEL32.dll_OutputDebugStringA]
lea rcx, [rsp + 0x41]
xor edx, edx
mov r8d, 0x103
mov byte [rsp + 0x40], 0
call fcn.18014af80
call fcn.180008fb0
test eax, eax
jne 0x180009fd4
lea rcx, [0x180365260]
call fcn.18000b040
lea r8, [0x1803651b8]
xor edx, edx
mov ecx, 0x1f0003
call qword [sym.imp.KERNEL32.dll_OpenEventA]
mov rdi, rax
test rax, rax
je 0x18000a175
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_SetEvent]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x18000a175
lea r8, [0x1803651b8]
xor edx, edx
mov ecx, 0x1f0003
call qword [sym.imp.KERNEL32.dll_OpenEventA]
mov rdi, rax
test rax, rax
je 0x18000a068
lea rdx, [rsp + 0x40]
mov r8d, 0x104
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea rdx, str.UHelper.exe
lea rcx, [rsp + 0x40]
call qword [sym.imp.SHLWAPI.dll_StrStrIA]
test rax, rax
je 0x18000a053
lea rcx, str.udisk_load_by_c30.
call qword [sym.imp.KERNEL32.dll_OutputDebugStringA]
lea r11, [rsp + 0x30]
lea r8, [0x1800097f0]
mov qword [rsp + 0x28], r11
xor r9d, r9d
xor edx, edx
xor ecx, ecx
mov dword [rsp + 0x20], 0
call fcn.1801494bc
mov qword [0x1803cac58], rax
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
lea rcx, str.udisk_UCHKONE_event_exist.
jmp 0x18000a16f
lea rcx, str.udisk_load_by_expolorer.
call qword [sym.imp.KERNEL32.dll_OutputDebugStringA]
lea rdx, [rsp + 0x40]
mov ecx, 0x104
call qword [sym.imp.KERNEL32.dll_GetTempPathA]
xor eax, eax
or rcx, 0xffffffffffffffff
lea rdi, [rsp + 0x40]
repne scasb al, byte [rdi]
movzx eax, word [0x1803652f4]
or rcx, 0xffffffffffffffff
mov word [rdi - 1], ax
xor eax, eax
lea rdi, [rsp + 0x40]
repne scasb al, byte [rdi]
mov rax, qword [str.UHelper.exe]
lea rcx, [rsp + 0x40]
mov qword [rdi - 1], rax
mov eax, dword [0x180365298]
mov dword [rdi + 7], eax
call qword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
jne 0x18000a0eb
lea rdx, [rsp + 0x40]
lea ecx, [rax + 0x78]
call fcn.180009160
test eax, eax
jne 0x18000a0eb
lea rcx, str.udisk_release_uhelper_fail.
call qword [sym.imp.KERNEL32.dll_OutputDebugStringA]
lea rcx, [rsp + 0x40]
call qword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
je 0x18000a11a
lea rcx, str.udisk_release_uhelper_success.
call qword [sym.imp.KERNEL32.dll_OutputDebugStringA]
lea rcx, [rsp + 0x40]
call fcn.180009dd0
lea rcx, str.udisk_exec_uhelper_end.
jmp 0x18000a16f
lea rcx, str.udisk_release_uhelper_fail.
jmp 0x18000a16f
test edi, edi
jne 0x18000a175
cmp qword [0x1803cac58], 0
je 0x18000a168
lea rcx, str.udisk_wait_exit.
call qword [sym.imp.KERNEL32.dll_OutputDebugStringA]
mov rcx, qword [0x1803cac58]
or edx, 0xffffffff
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov rcx, qword [0x1803cac58]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [0x1803cac58], 0
jmp 0x18000a175
lea rcx, str.udisk_not_wait_exit.
call qword [sym.imp.KERNEL32.dll_OutputDebugStringA]
mov eax, 1
mov rcx, qword [rsp + 0x260]
xor rcx, rsp
call fcn.180146c80
mov rbx, qword [rsp + 0x280]
add rsp, 0x270
pop rdi
ret