Function at 0x414fb0
Capabilities:
Create directory
Get common file path
Move file
Set current directory

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x188
mov eax, dword [0x454004]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push str.VentoyStartService_..._n
push 1
mov esi, ecx
call fcn.00401a20
add esp, 8
test esi, esi
js 0x4152ac
cmp esi, dword [0x455ba8]
jge 0x4152ac
imul ebx, esi, 0x20c
add ebx, dword [0x455b60]
je 0x4152ac
movsx eax, byte [ebx]
lea esi, [ebx + 0xc4]
push edi
lea edi, [ebx + 0x1c4]
push edi
push esi
push eax
push str.Start_service_at__C:__s__s_..._n
push 1
call fcn.00401a20
mov al, byte [ebx]
mov byte [0x45cf00], al
mov word [0x45cf01], 0x5c3a
mov byte [0x45cf03], 0
mov eax, dword [ebx + 0x40]
mov dword [0x45d1d0], eax
mov eax, dword [ebx + 0x204]
mov dword [0x45d394], eax
mov eax, dword [ebx + 0x208]
mov dword [0x45d398], eax
lea eax, [ebx + 0x44]
push eax
push 0x40
push 0x45d1d4
call fcn.0042939d
lea eax, [ebx + 0x84]
push eax
push 0x40
push 0x45d214
call fcn.0042939d
push esi
push 0x100
push 0x45d254
call fcn.0042939d
push edi
push 0x40
push 0x45d354
call fcn.0042939d
add esp, 0x44
push 0x45cf00
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
push 0x45cf00
push eax
push str.SetCurrentDirectoryA__u___s__n
push 1
call fcn.00401a20
add esp, 0x10
mov byte [ebp - 0x188], 0
lea eax, [ebp - 0x188]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea eax, [ebp - 0x188]
push eax
push str.CurDir__s__n
push 1
call fcn.00401a20
add esp, 0xc
lea ecx, [ebp - 0x188]
mov eax, 0x45cf00
pop edi
nop
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x415110
test dl, dl
je 0x41510c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x415110
add eax, 2
add ecx, 2
test dl, dl
jne 0x4150f0
xor eax, eax
jmp 0x415115
sbb eax, eax
or eax, 1
test eax, eax
je 0x415128
push str.Failed_to_change_current_directory.
push 1
call fcn.00401a20
add esp, 8
push str.ventoy
mov byte [0x45cf02], 0
call fcn.00402310
add esp, 4
test eax, eax
je 0x415243
cmp dword [0x45d1d0], 0
je 0x41523c
push str.ventoy_directory_already_exist__check_case_sensitive._n
push 1
call fcn.00401a20
push str.ventoy
lea eax, [ebp - 0x84]
push 0x80
push eax
call fcn.0042939d
xor edx, edx
lea ecx, [ebp - 0x84]
call fcn.00402130
mov esi, eax
lea eax, [ebp - 0x84]
push esi
push eax
push str.ventoy_path_case_actual_path_is___s___count:_d__n
push 1
call fcn.00401a20
add esp, 0x24
test esi, esi
je 0x415263
push str.ventoy
lea eax, [ebp - 0x84]
push eax
push str.ventoy_directory_case_mismatch__rename__s______s__n
push 1
call fcn.00401a20
add esp, 0x10
lea eax, [ebp - 0x84]
push str.ventoy
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileA]
test eax, eax
je 0x41520c
push str.ventoy
lea eax, [ebp - 0x84]
push eax
push str.Rename___s______s__success_n
push 1
call fcn.00401a20
add esp, 0x10
mov edx, 0x45d3bc
mov ecx, 0x45d39c
call fcn.004232c0
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00423c62
mov esp, ebp
pop ebp
ret
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.ventoy
lea eax, [ebp - 0x84]
push eax
push str.Rename___s______s__failed__u_n
push 1
call fcn.00401a20
mov eax, dword [0x455b6c]
add esp, 0x14
push 0x10
push dword [eax]
push dword [eax + 0x10]
jmp 0x4152a4
push str.ventoy_directory_already_exist__no_need_to_check_case_sensitive._n
jmp 0x415259
push 0
push str.ventoy
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
je 0x415282
push str.Create_ventoy_directory_success._n
push 1
call fcn.00401a20
add esp, 8
mov edx, 0x45d3bc
mov ecx, 0x45d39c
call fcn.004232c0
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00423c62
mov esp, ebp
pop ebp
ret
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Create_ventoy_directory_failed__u._n
push 1
call fcn.00401a20
mov eax, dword [0x455b6c]
add esp, 0xc
push 0x10
push dword [eax]
push dword [eax + 0xc]
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
mov ecx, dword [ebp - 4]
mov eax, 1
pop esi
xor ecx, ebp
pop ebx
call fcn.00423c62
mov esp, ebp
pop ebp
ret