Function at 0x40198c
Capabilities:
Check if file exists
Copy file
Create directory
Create process on windows
Get common file path
Get file attributes
Get graphical window text
Hide graphical window

Disassembly:
push ebp
lea ebp, [esp - 0x4c0]
sub esp, 0x540
mov eax, dword [0x41f0b0]
push ebx
push esi
mov dword [ebp + 0x4bc], eax
push edi
jmp 0x4019ae
mov ebx, dword [ebp + 0x4c8]
mov esi, dword [sym.imp.USER32.dll_GetDlgItem]
inc dword [0x420928]
push 0
push 1
push ebx
call esi
mov edi, dword [sym.imp.USER32.dll_EnableWindow]
push eax
call edi
push 0
push 2
push ebx
call esi
push eax
call edi
push 0x104
mov edi, 0x420610
push edi
push 0x3e8
push ebx
call esi
push eax
call dword [sym.imp.USER32.dll_GetWindowTextA]
push 0x208
lea eax, [ebp + 0xac]
push eax
push 0x78
push dword [0x42092c]
call dword [sym.imp.USER32.dll_LoadStringA]
lea eax, [ebp + 0xac]
push eax
push ebx
call fcn.004012c2
pop ecx
pop ecx
push 0
push edi
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
push 0x40e1a0
push ebx
call fcn.004012c2
push edi
push 0x420930
call fcn.0040bfae
add esp, 0x10
neg eax
sbb eax, eax
inc eax
mov dword [ebp - 0x5c], eax
call fcn.004026d1
and dword [ebp - 0x60], 0
push 0x208
lea eax, [ebp + 0xac]
push eax
push 0x79
push dword [0x42092c]
call dword [sym.imp.USER32.dll_LoadStringA]
lea eax, [ebp + 0xac]
push eax
push ebx
call fcn.004012c2
push 0x103
lea eax, [ebp + 0x3b8]
push 0x420930
push eax
call fcn.004029f0
lea eax, [ebp + 0x3b8]
push str.reset.exe
push eax
call fcn.004024a8
add esp, 0x1c
xor eax, eax
push eax
push eax
lea ecx, [ebp + 0x3b8]
push ecx
push ecx
push eax
push ebx
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
cmp dword [ebp - 0x5c], 0
jne 0x401dc4
push 0x40e1a0
push ebx
call fcn.004012c2
and dword [0x420714], 0
pop ecx
pop ecx
push 0x208
lea eax, [ebp + 0xac]
push eax
push 0x7c
push dword [0x42092c]
call dword [sym.imp.USER32.dll_LoadStringA]
lea eax, [ebp + 0xac]
push eax
push ebx
call fcn.004012c2
pop ecx
pop ecx
push 0
push str.MixVibes_6
call dword [sym.imp.USER32.dll_FindWindowA]
test eax, eax
je 0x401b46
push 0x208
lea eax, [ebp + 0xac]
push eax
push 0xef5b
push dword [0x42092c]
call dword [sym.imp.USER32.dll_LoadStringA]
push 0x40
push 0x420508
lea eax, [ebp + 0xac]
push eax
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
xor eax, eax
jmp 0x402106
and dword [ebp - 0x5c], 0
cmp dword [0x41effc], 0
jle 0x401c7e
lea eax, [ebp + 0x3b8]
push 0x420930
push eax
call fcn.004028f0
mov eax, dword [ebp - 0x5c]
lea eax, [eax*4 + 0x41ef00]
push dword [eax]
lea eax, [ebp + 0x3b8]
push eax
call fcn.004024a8
add esp, 0x10
lea eax, [ebp + 0x3b8]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x401c6c
lea eax, [ebp + 0x2b4]
push edi
push eax
call fcn.004028f0
mov eax, dword [ebp - 0x5c]
lea eax, [eax*4 + 0x41ef00]
push dword [eax]
lea eax, [ebp + 0x2b4]
push eax
call fcn.004024a8
add esp, 0x10
push 0x208
lea eax, [ebp + 0xac]
push eax
push 0x7d
push dword [0x42092c]
call dword [sym.imp.USER32.dll_LoadStringA]
mov eax, dword [ebp - 0x5c]
lea eax, [eax*4 + 0x41ef00]
push dword [eax]
lea eax, [ebp + 0xac]
push eax
push ebx
call fcn.004012c2
add esp, 0xc
lea eax, [ebp + 0x2b4]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x401c1f
push 0x10
lea eax, [ebp + 0x2b4]
push ebx
push eax
call fcn.004013b2
add esp, 0xc
test eax, eax
je 0x401c6c
push 0x10
push ebx
lea eax, [ebp + 0x2b4]
push eax
lea eax, [ebp + 0x3b8]
push eax
call fcn.00401366
add esp, 0x10
test eax, eax
jne 0x401c6c
lea eax, [ebp + 0x3b8]
push eax
lea eax, [ebp + 0xac]
push str.Error_file__s_not_found_in_distribution
push eax
call fcn.00402b14
add esp, 0xc
push 0
push 0x420508
lea eax, [ebp + 0xac]
push eax
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
inc dword [ebp - 0x5c]
mov eax, dword [ebp - 0x5c]
cmp eax, dword [0x41effc]
jl 0x401b57
and dword [ebp - 0x5c], 0
cmp dword [0x41f008], 0
jle 0x401dc4
lea eax, [ebp + 0x3b8]
push 0x420930
push eax
call fcn.004028f0
mov eax, dword [ebp - 0x5c]
lea eax, [eax*4 + 0x41ef70]
push dword [eax]
lea eax, [ebp + 0x3b8]
push eax
call fcn.004024a8
add esp, 0x10
lea eax, [ebp + 0x3b8]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x401db2
lea eax, [ebp + 0x2b4]
push edi
push eax
call fcn.004028f0
mov eax, dword [ebp - 0x5c]
lea eax, [eax*4 + 0x41ef70]
push dword [eax]
lea eax, [ebp + 0x2b4]
push eax
call fcn.004024a8
add esp, 0x10
push 0x208
lea eax, [ebp + 0xac]
push eax
push 0x7d
push dword [0x42092c]
call dword [sym.imp.USER32.dll_LoadStringA]
mov eax, dword [ebp - 0x5c]
lea eax, [eax*4 + 0x41ef70]
push dword [eax]
lea eax, [ebp + 0xac]
push eax
push ebx
call fcn.004012c2
add esp, 0xc
lea eax, [ebp + 0x2b4]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x401d65
push 0x10
lea eax, [ebp + 0x2b4]
push ebx
push eax
call fcn.004013b2
add esp, 0xc
test eax, eax
jne 0x401d65
lea eax, [ebp + 0x2b4]
push eax
push str.Error_file__s_not_possible_to_update
jmp 0x401d8e
push 0x10
push ebx
lea eax, [ebp + 0x2b4]
push eax
lea eax, [ebp + 0x3b8]
push eax
call fcn.00401366
add esp, 0x10
test eax, eax
jne 0x401db2
lea eax, [ebp + 0x3b8]
push eax
push str.Error_file__s_not_found_in_distribution
lea eax, [ebp + 0xac]
push eax
call fcn.00402b14
add esp, 0xc
push 0
push 0x420508
lea eax, [ebp + 0xac]
push eax
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
inc dword [ebp - 0x5c]
mov eax, dword [ebp - 0x5c]
cmp eax, dword [0x41f008]
jl 0x401c8f
push 0x104
lea eax, [ebp - 0x58]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
and dword [ebp - 0x5c], 0
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp + 0x2b4]
push eax
call fcn.004028f0
mov eax, dword [ebp - 0x5c]
push dword [eax + 0x41f00c]
lea eax, [ebp + 0x2b4]
push eax
call fcn.004024a8
add esp, 0x10
lea eax, [ebp + 0x2b4]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x401e86
lea eax, [ebp + 0x3b8]
push 0x420930
push eax
call fcn.004028f0
mov eax, dword [ebp - 0x5c]
push dword [eax + 0x41f00c]
lea eax, [ebp + 0x3b8]
push eax
call fcn.004024a8
add esp, 0x10
push 0x208
lea eax, [ebp + 0xac]
push eax
push 0x7d
push dword [0x42092c]
call dword [sym.imp.USER32.dll_LoadStringA]
mov eax, dword [ebp - 0x5c]
push dword [eax + 0x41f00c]
lea eax, [ebp + 0xac]
push eax
push ebx
call fcn.004012c2
push 0x414
push ebx
lea eax, [ebp + 0x2b4]
push eax
lea eax, [ebp + 0x3b8]
push eax
call fcn.00401366
add esp, 0x1c
add dword [ebp - 0x5c], 4
cmp dword [ebp - 0x5c], 0xc
jb 0x401dd7
lea eax, [ebp + 0x3b8]
push 0x420930
push eax
call fcn.004028f0
lea eax, [ebp + 0x3b8]
push str.Preset
push eax
call fcn.004024a8
add esp, 0x10
lea eax, [ebp + 0x3b8]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x401f09
lea eax, [ebp + 0x2b4]
push edi
push eax
call fcn.004028f0
lea eax, [ebp + 0x3b8]
mov dword [ebp - 0x78], eax
pop ecx
lea eax, [ebp + 0x2b4]
mov dword [ebp - 0x74], eax
pop ecx
lea eax, [ebp - 0x80]
push eax
mov dword [ebp - 0x80], ebx
mov dword [ebp - 0x7c], 2
mov word [ebp - 0x70], 0x414
call dword [sym.imp.SHELL32.dll_SHFileOperationA]
mov dword [ebp - 0x60], eax
push str.Copy_bitmaps
push ebx
call fcn.004012c2
lea eax, [ebp + 0x3b8]
push 0x420930
push eax
call fcn.004028f0
lea eax, [ebp + 0x3b8]
push str.skins
push eax
call fcn.004024a8
add esp, 0x18
lea eax, [ebp + 0x3b8]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x401f89
lea eax, [ebp + 0x2b4]
push edi
push eax
call fcn.004028f0
lea eax, [ebp + 0x3b8]
mov dword [ebp - 0x78], eax
pop ecx
lea eax, [ebp + 0x2b4]
mov dword [ebp - 0x74], eax
pop ecx
lea eax, [ebp - 0x80]
push eax
mov dword [ebp - 0x80], ebx
mov dword [ebp - 0x7c], 2
mov word [ebp - 0x70], 0x414
call dword [sym.imp.SHELL32.dll_SHFileOperationA]
mov dword [ebp - 0x60], eax
lea eax, [ebp + 0x3b8]
push 0x420930
push eax
call fcn.004028f0
lea eax, [ebp + 0x3b8]
push str.Midi
push eax
call fcn.004024a8
add esp, 0x10
lea eax, [ebp + 0x3b8]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x401ffe
lea eax, [ebp + 0x2b4]
push edi
push eax
call fcn.004028f0
lea eax, [ebp + 0x3b8]
mov dword [ebp - 0x78], eax
pop ecx
lea eax, [ebp + 0x2b4]
mov dword [ebp - 0x74], eax
pop ecx
lea eax, [ebp - 0x80]
push eax
mov dword [ebp - 0x80], ebx
mov dword [ebp - 0x7c], 2
mov word [ebp - 0x70], 0x414
call dword [sym.imp.SHELL32.dll_SHFileOperationA]
mov dword [ebp - 0x60], eax
push dword [0x42060c]
lea eax, [ebp + 0xac]
push 0x40e6f0
push eax
call fcn.00402b14
lea eax, [ebp + 0xac]
push eax
push str.Language
push str.MixVibes_DVS
call fcn.004025a3
mov eax, dword [ebp - 0x60]
add esp, 0x18
test eax, eax
jl 0x402106
push 0
push 0x3e8
push ebx
call esi
mov edi, dword [sym.imp.USER32.dll_ShowWindow]
push eax
call edi
push 0
push 0x3ed
push ebx
call esi
push eax
call edi
push 0
push 0x3ee
push ebx
call esi
push eax
call edi
push 0
push 0x3e9
push ebx
call esi
push eax
call edi
push 0
push 0x3f1
push ebx
call esi
push eax
call edi
push 0
push 0x3f3
push ebx
call esi
push eax
call edi
push 0
push 0x3fd
push ebx
call esi
push eax
call edi
push 5
push 1
push ebx
call esi
push eax
call edi
push 0x208
lea eax, [ebp + 0xac]
push eax
push 0x74
push dword [0x42092c]
call dword [sym.imp.USER32.dll_LoadStringA]
lea eax, [ebp + 0xac]
push eax
push 1
push ebx
call esi
push eax
call dword [sym.imp.USER32.dll_SetWindowTextA]
inc dword [0x420924]
push 1
push 1
push ebx
call esi
push eax
call dword [sym.imp.USER32.dll_EnableWindow]
push 1
push 2
push ebx
call esi
push eax
call dword [sym.imp.USER32.dll_EnableWindow]
push 0
push 2
push ebx
call esi
push eax
call edi
dec dword [0x420928]
mov eax, dword [ebp - 0x60]
mov ecx, dword [ebp + 0x4bc]
pop edi
pop esi
pop ebx
call fcn.004027ec
add ebp, 0x4c0
leave
ret