Function at 0x407819
Capabilities:
Get common file path
Get disk information
Get disk size
Read file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x42041b
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x162c
call fcn.0041dab0
mov eax, dword [0x42f028]
xor eax, esp
mov dword [esp + 0x1628], eax
push ebx
push esi
push edi
mov eax, dword [0x42f028]
xor eax, esp
push eax
lea eax, [esp + 0x1640]
mov dword fs:[0], eax
mov eax, dword [0x42fe90]
xor edi, edi
mov ebx, ecx
cmp eax, edi
jne 0x407871
mov dword [esp + 0x1c], edi
jmp 0x407878
mov eax, dword [eax + 0x20]
mov dword [esp + 0x1c], eax
call sub.mfc90u.dll_AfxGetModuleState
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x44]
push edi
push 0x50000000
push dword [esp + 0x24]
lea ecx, [ebx + 0x14]
push 0x421928
or esi, 0xffffffff
push eax
mov dword [ecx + 0xc8], 1
mov dword [ecx + 0xd0], edi
mov dword [ecx + 0xf0], edi
mov dword [ecx + 0xf4], edi
mov dword [ecx + 0xdc], edi
mov dword [ecx + 0xe0], esi
mov dword [ecx + 0xe4], esi
mov dword [ecx + 0xe8], edi
call fcn.0040184c
test eax, eax
je 0x408095
push esi
lea ecx, [ebx + 0x2130c]
push edi
call sub.mfc90u.dll_CStringArray::SetSize
push esi
lea ecx, [ebx + 0x21320]
push edi
call sub.mfc90u.dll_CStringArray::SetSize
push esi
lea ecx, [ebx + 0x21334]
push edi
call sub.mfc90u.dll_CStringArray::SetSize
push esi
lea ecx, [ebx + 0x21348]
push edi
call sub.mfc90u.dll_CStringArray::SetSize
xor esi, esi
push esi
call dword [0x42fca8]
pop ecx
test eax, eax
je 0x4079cc
mov eax, dword [0x42fe90]
push 1
push esi
push dword [eax + 0x11d0]
call dword [0x42fc98]
add esp, 0xc
test eax, eax
je 0x4079cc
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], edi
mov dword [esp + 0x1fc], edi
mov dword [esp + 0x200], edi
lea eax, [esp + 0x1fc]
push eax
lea eax, [esp + 0x28]
push eax
mov eax, dword [0x42fe90]
push dword [eax + 0x11d0]
call dword [0x42fc78]
add esp, 0xc
push 1
push edi
push edi
push edi
lea eax, [esp + 0x214]
push eax
call dword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
je 0x4079a9
lea eax, [esp + 0x204]
push eax
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [esp + 0x204]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageW]
push 0xa
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [esp + 0x1fc]
and eax, 0xffff0000
cmp dword [esp + 0x200], edi
ja 0x407955
jb 0x4079cc
cmp eax, edi
ja 0x407955
inc esi
cmp esi, 0x80
jb 0x407910
mov esi, str.Hard_drive
lea edx, [ebx + 0x14]
call fcn.00401021
mov esi, str.CD_DVD
lea edx, [ebx + 0x14]
mov dword [esp + 0x50], eax
call fcn.00401021
mov esi, str.Removable
lea edx, [ebx + 0x14]
mov dword [esp + 0x44], eax
call fcn.00401021
mov esi, str.Partitions
lea edx, [ebx + 0x14]
mov dword [esp + 0x3c], eax
call fcn.00401021
mov dword [esp + 0x24], eax
call dword [sym.imp.KERNEL32.dll_GetLogicalDrives]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], edi
test dword [esp + 0x1c], 1
je 0x407ef2
mov eax, dword [0x422a88]
mov dword [esp + 0x1fc], eax
mov eax, dword [0x422a8c]
mov esi, 0x422a90
lea edi, [esp + 0x204]
movsd dword es:[edi], dword [esi]
mov dword [esp + 0x200], eax
movsw word es:[edi], word [esi]
xor eax, eax
lea edi, [esp + 0x20a]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosw word es:[edi], ax
mov eax, dword [esp + 0x18]
add eax, 0x41
mov word [esp + 0x1fc], ax
mov word [esp + 0x204], ax
lea eax, [esp + 0x1fc]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
dec eax
dec eax
je 0x407e8b
dec eax
je 0x407aac
dec eax
dec eax
je 0x407d02
dec eax
jne 0x407ef0
mov edi, 0x100
push edi
lea eax, [esp + 0x638]
push eax
xor esi, esi
push esi
push esi
push esi
push edi
lea eax, [esp + 0x44c]
push eax
lea eax, [esp + 0x218]
push eax
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationW]
cmp eax, esi
je 0x407ef8
push esi
lea eax, [esp + 0x60]
push eax
push esi
lea eax, [esp + 0x208]
push eax
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExW]
push 1
push dword [esp + 0x200]
lea ecx, [esp + 0x50]
call dword [0x4214ac]
lea ecx, [ebx + 0x21384]
mov dword [esp + 0x1648], esi
mov edx, dword [ecx + 8]
push eax
push edx
call sub.mfc90u.dll_CStringArray::SetAtGrow
or dword [esp + 0x1648], 0xffffffff
lea ecx, [esp + 0x48]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
lea eax, [esp + 0x1fc]
push eax
lea ecx, [esp + 0x58]
call dword [0x421644]
lea ecx, [ebx + 0x21370]
mov dword [esp + 0x1648], 1
mov edx, dword [ecx + 8]
push eax
push edx
call sub.mfc90u.dll_CStringArray::SetAtGrow
or dword [esp + 0x1648], 0xffffffff
lea ecx, [esp + 0x54]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
push edi
lea eax, [esp + 0x838]
push eax
push dword [esp + 0x68]
push dword [esp + 0x68]
call fcn.00406574
xor eax, eax
push 0x206
mov word [esp + 0x230], ax
lea eax, [esp + 0x232]
push esi
push eax
call sub.MSVCR90.dll_memset
add esp, 0xc
push 0x104
lea eax, [esp + 0x230]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
lea eax, [esp + 0x22c]
push eax
lea ecx, [esp + 0x38]
call dword [0x421644]
lea eax, [esp + 0xa34]
push eax
lea eax, [esp + 0xc38]
push eax
lea eax, [esp + 0xe3c]
push eax
lea eax, [esp + 0x22c]
push eax
mov dword [esp + 0x1658], 2
push dword [esp + 0x44]
call dword [sym.imp.MSVCR90.dll__wsplitpath]
add esp, 0x14
lea ecx, [esp + 0x14]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_class]
lea ecx, [esp + 0x20]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_class]
lea ecx, [esp + 0x30]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_class]
mov byte [esp + 0x1648], 5
lea eax, [esp + 0x220]
push eax
lea ecx, [esp + 0x24]
call dword [0x42165c]
lea eax, [esp + 0x204]
push eax
lea ecx, [esp + 0x34]
call dword [0x42165c]
push dword [esp + 0x30]
lea ecx, [esp + 0x24]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::Compare]
lea ecx, [esp + 0x14]
test eax, eax
jne 0x407d5f
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::Empty]
push 0x422a98
lea ecx, [esp + 0x18]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::operator_1]
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x18]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::operator]
push 0x422a9c
lea ecx, [esp + 0x18]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::operator_1]
lea eax, [esp + 0x434]
push eax
lea ecx, [esp + 0x18]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::operator_1]
push 0x42322c
lea ecx, [esp + 0x18]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::operator_1]
push 0x4219d8
push str.IDS_SYS_DRIVE
lea eax, [esp + 0x54]
push eax
mov ecx, 0x42fd78
call dword [sym.imp.SolvusoftWMhelper.dll_public:_class_ATL::CStringT_wchar_t__class_StrTraitMFC_DLL_wchar_t__class_ATL::ChTraitsCRT_wchar_t______thiscall_CSystweakApp::LoadStringW_wchar_t_const___wchar_t_const__]
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x164c], 6
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::operator]
lea ecx, [esp + 0x4c]
mov byte [esp + 0x1648], 5
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
push 0x423234
jmp 0x407d9d
push 0x4219d8
push str.IDS_OPT_CD_DVD_STRING
lea eax, [esp + 0x60]
push eax
mov ecx, 0x42fd78
call dword [sym.imp.SolvusoftWMhelper.dll_public:_class_ATL::CStringT_wchar_t__class_StrTraitMFC_DLL_wchar_t__class_ATL::ChTraitsCRT_wchar_t______thiscall_CSystweakApp::LoadStringW_wchar_t_const___wchar_t_const__]
movzx ecx, word [esp + 0x1fc]
push ecx
push dword [eax]
lea eax, [esp + 0x6c]
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea ecx, [esp + 0x58]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
push dword [esp + 0x18]
mov ecx, dword [esp + 0x48]
lea eax, [esp + 0x68]
push eax
lea esi, [ebx + 0x14]
call fcn.00401047
lea ecx, [ebx + 0x21320]
jmp 0x407ee3
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::Empty]
push 0x422a98
lea ecx, [esp + 0x18]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::operator_1]
lea eax, [esp + 0x204]
push eax
lea ecx, [esp + 0x18]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::operator_1]
push 0x423234
lea ecx, [esp + 0x18]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::operator_1]
lea eax, [esp + 0x434]
push eax
lea ecx, [esp + 0x18]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::operator_1]
mov esi, 0x422ac0
push esi
lea ecx, [esp + 0x18]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::operator_1]
lea eax, [esp + 0x634]
push eax
lea ecx, [esp + 0x18]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::operator_1]
push esi
lea ecx, [esp + 0x18]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::operator_1]
lea eax, [esp + 0x834]
push eax
lea ecx, [esp + 0x18]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::operator_1]
mov esi, dword [0x42fe90]
mov edi, dword [esi + 0x326d0]
add esi, 0x326c8
test edi, edi
jl 0x4080b9
lea eax, [edi + 1]
call fcn.0040735b
lea eax, [esp + 0x14]
push eax
mov eax, dword [esi + 4]
lea ecx, [eax + edi*4]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::operator_2]
push dword [esp + 0x14]
lea eax, [esp + 0x68]
push 0x421a18
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
mov ecx, dword [esp + 0x5c]
add esp, 0xc
push dword [esp + 0x18]
lea eax, [esp + 0x68]
push eax
lea esi, [ebx + 0x14]
call fcn.00401047
lea ecx, [ebx + 0x2130c]
mov eax, dword [ecx + 8]
lea edx, [esp + 0x64]
push edx
push eax
call sub.mfc90u.dll_CStringArray::SetAtGrow_1
lea ecx, [esp + 0x30]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
lea ecx, [esp + 0x20]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
lea ecx, [esp + 0x14]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
or dword [esp + 0x1648], 0xffffffff
lea ecx, [esp + 0x34]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
jmp 0x407ef0
push 0x4219d8
push str.IDS_OPT_REM_DRIVE_STRING
lea eax, [esp + 0x48]
push eax
mov ecx, 0x42fd78
call dword [sym.imp.SolvusoftWMhelper.dll_public:_class_ATL::CStringT_wchar_t__class_StrTraitMFC_DLL_wchar_t__class_ATL::ChTraitsCRT_wchar_t______thiscall_CSystweakApp::LoadStringW_wchar_t_const___wchar_t_const__]
movzx ecx, word [esp + 0x1fc]
push ecx
push dword [eax]
lea eax, [esp + 0x6c]
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea ecx, [esp + 0x40]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
push dword [esp + 0x18]
mov ecx, dword [esp + 0x40]
lea eax, [esp + 0x68]
push eax
lea esi, [ebx + 0x14]
call fcn.00401047
lea ecx, [ebx + 0x21334]
lea eax, [esp + 0x64]
push eax
push dword [ecx + 8]
call sub.mfc90u.dll_CStringArray::SetAtGrow_1
xor edi, edi
shr dword [esp + 0x1c], 1
jmp 0x407efa
xor edi, edi
inc dword [esp + 0x18]
cmp dword [esp + 0x18], 0x20
jb 0x407a2b
lea eax, [esp + 0x38]
push eax
mov eax, dword [0x42fe90]
push dword [eax + 0x11d0]
call dword [0x42fca0]
pop ecx
pop ecx
test eax, eax
je 0x407faf
mov dword [esp + 0x18], edi
cmp dword [esp + 0x38], edi
jbe 0x407faf
lea eax, [esp + 0x64]
push eax
push dword [esp + 0x1c]
mov eax, dword [0x42fe90]
push dword [eax + 0x11d0]
call dword [0x42fc9c]
add esp, 0xc
test eax, eax
je 0x407fa1
push 0x104
lea eax, [esp + 0x230]
push eax
push 0xffffffffffffffff
lea eax, [esp + 0x106]
push eax
push edi
push edi
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push dword [esp + 0x18]
mov ecx, dword [esp + 0x28]
lea eax, [esp + 0x230]
push eax
lea esi, [ebx + 0x14]
call fcn.00401047
lea eax, [esp + 0x22c]
push eax
lea ecx, [ebx + 0x21348]
push dword [ecx + 8]
call sub.mfc90u.dll_CStringArray::SetAtGrow_1
inc dword [esp + 0x18]
mov eax, dword [esp + 0x18]
cmp eax, dword [esp + 0x38]
jb 0x407f33
mov eax, dword [ebx + 0x21314]
mov dword [ebx + 0x21360], eax
mov eax, dword [ebx + 0x21328]
mov dword [ebx + 0x21364], eax
mov eax, dword [ebx + 0x2133c]
mov dword [ebx + 0x21368], eax
mov eax, dword [ebx + 0x21350]
mov dword [ebx + 0x2136c], eax
lea eax, [ebx + 0x293c0]
push eax
push 0x4000
mov dword [esp + 0x2c], eax
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
push 0x5c
pop ecx
mov word [ebx + eax*2 + 0x293c0], cx
push str.optionsUndelete.ini
lea eax, [ebx + eax*2 + 0x293c2]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
push 0x90
lea esi, [ebx + 0x31454]
push edi
push esi
call sub.MSVCR90.dll_memset
mov eax, dword [esi]
and eax, 0xffeaabff
or eax, 0x2aabf0
add esp, 0xc
mov dword [esi], eax
mov esi, 0x94
push esi
add ebx, 0x313c0
push edi
push ebx
call sub.MSVCR90.dll_memset
mov eax, dword [ebx]
add esp, 0xc
push edi
push edi
push 3
push edi
push 1
and eax, 0xff555ffb
push 0x80000000
push dword [esp + 0x3c]
or eax, 0x1555f80
mov dword [ebx], eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [esp + 0x24], eax
cmp eax, 0xffffffff
je 0x408092
push edi
lea ecx, [esp + 0x40]
push ecx
push esi
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_ReadFile]
push dword [esp + 0x24]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
inc eax
mov ecx, dword [esp + 0x1640]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x1628]
xor ecx, esp
call fcn.0041d342
mov esp, ebp
pop ebp
ret
call sub.mfc90u.dll_AfxThrowInvalidArgException
int3