Function at 0x404230
Capabilities:
Enumerate disk volumes
Get disk information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3a0
mov eax, dword [0x4f22ec]
xor eax, ebp
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
push ebx
mov ebx, dword [ebp + 0x10]
push esi
push edi
mov dword [ebp - 0x394], eax
or esi, 0xffffffff
mov eax, dword [ebp + 0xc]
push 0x80
mov dword [ebp - 0x398], eax
lea eax, [ebp - 0x29c]
push 0
push eax
mov dword [ebp - 0x39c], edx
mov dword [ebp - 0x378], ecx
mov dword [ebp - 0x370], ebx
mov dword [ebp - 0x384], 0
mov dword [ebp - 0x388], 1
mov dword [ebp - 0x368], 0xffffffff
mov dword [ebp - 0x37c], esi
mov dword [ebp - 0x38c], 0
call fcn.00493600
add esp, 0xc
mov dword [ebp - 0x390], 0x10
xor edi, edi
mov dword [ebp - 0x36c], edi
push 4
push 0x10
call fcn.0049570f
add esp, 8
mov dword [ebp - 0x380], eax
test eax, eax
jne 0x4042e9
push str.Could_not_allocate_string_array
call fcn.004407e0
add esp, 4
mov eax, dword [ebp - 0x378]
test eax, eax
js 0x404867
cmp eax, 0x80
jb 0x404305
cmp eax, 0xc0
jbe 0x404322
push 0x109
push str.C:UsersgamerDownloads_rufus72_rufus_7_srcdrive.c
push str._DriveIndex___DRIVE_INDEX_MIN____DriveIndex___DRIVE_INDEX_MAX_
call fcn.0049ed6b
mov eax, dword [ebp - 0x378]
add esp, 0xc
add eax, 0xffffff80
cmp eax, 0x40
ja 0x404867
xor eax, eax
mov dword [ebp - 0x374], eax
jmp 0x404340
test eax, eax
lea eax, [ebp - 0x114]
push 0x104
push eax
jne 0x404381
call dword [sym.imp.KERNEL32.dll_FindFirstVolumeA]
mov dword [ebp - 0x37c], eax
cmp eax, 0xffffffff
jne 0x404390
test ebx, ebx
jne 0x404867
call fcn.00440bb0
push eax
push str.Could_not_access_first_GUID_volume:__s
call fcn.004407e0
add esp, 8
jmp 0x404867
push esi
call dword [sym.imp.KERNEL32.dll_FindNextVolumeA]
test eax, eax
je 0x4047bd
lea esi, [ebp - 0x114]
lea ecx, [esi + 1]
lea esp, [esp]
mov al, byte [esi]
inc esi
test al, al
jne 0x4043a0
sub esi, ecx
cmp esi, 4
ja 0x4043c5
push 0x11d
push str.C:UsersgamerDownloads_rufus72_rufus_7_srcdrive.c
push str.len___4
call fcn.0049ed6b
add esp, 0xc
push 4
lea eax, [ebp - 0x114]
push 0x4cdfa0
push eax
call fcn.0049f4a7
add esp, 0xc
test eax, eax
je 0x4043f6
push 0x11e
push str.C:UsersgamerDownloads_rufus72_rufus_7_srcdrive.c
push str.safe_strnicmp_volume_name__volume_start__4___0
call fcn.0049ed6b
add esp, 0xc
cmp byte [ebp + esi - 0x115], 0x5c
lea ebx, [ebp + esi - 0x115]
je 0x40441e
push 0x11f
push str.C:UsersgamerDownloads_rufus72_rufus_7_srcdrive.c
push str.volume_name_len___1___
call fcn.0049ed6b
add esp, 0xc
lea eax, [ebp - 0x114]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 2
je 0x404439
cmp eax, 3
jne 0x404780
dec esi
cmp esi, 0x104
jae 0x4048dc
push 0x104
lea eax, [ebp - 0x21c]
mov byte [ebp + esi - 0x114], 0
push eax
lea eax, [ebp - 0x110]
push eax
call dword [sym.imp.KERNEL32.dll_QueryDosDeviceA]
test eax, eax
jne 0x404498
mov ebx, dword [ebp - 0x370]
test ebx, ebx
jne 0x404786
call fcn.00440bb0
push eax
lea eax, [ebp - 0x114]
push eax
push str.Failed_to_get_device_path_for_GUID_volume__s:__s
call fcn.004407e0
add esp, 0xc
jmp 0x404786
xor esi, esi
lea ebx, [ebx]
mov edx, dword [esi*4 + 0x4c9eb4]
test edx, edx
jne 0x4044af
xor ecx, ecx
jmp 0x4044bd
mov ecx, edx
lea edi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4044b4
sub ecx, edi
push ecx
push edx
lea eax, [ebp - 0x21c]
push eax
call fcn.0049f4a7
add esp, 0xc
test eax, eax
je 0x404532
inc esi
cmp esi, 2
jb 0x4044a0
sub esp, 0x18
lea ecx, [ebp - 0x114]
call fcn.004416c0
mov esi, eax
add esp, 0x18
mov dword [ebp - 0x368], esi
cmp esi, 0xffffffff
jne 0x404560
mov ebx, dword [ebp - 0x370]
test ebx, ebx
jne 0x40451a
call fcn.00440bb0
push eax
lea eax, [ebp - 0x114]
push eax
push str.Could_not_open_GUID_volume__s:__s
call fcn.004407e0
add esp, 0xc
mov eax, dword [ebp - 0x374]
mov edi, dword [ebp - 0x36c]
inc eax
mov esi, dword [ebp - 0x37c]
jmp 0x404330
cmp esi, 2
jae 0x4044d8
mov ebx, dword [ebp - 0x370]
test ebx, ebx
jne 0x404555
lea eax, [ebp - 0x21c]
push eax
push str.Skipping_GUID_volume_for__s
call fcn.004407e0
add esp, 8
mov edi, dword [ebp - 0x36c]
jmp 0x404786
push 0
lea eax, [ebp - 0x38c]
push eax
push 0xc8
lea eax, [ebp - 0x364]
push eax
push 0
push 0
push 0x560000
push esi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x404734
cmp dword [ebp - 0x38c], 0
je 0x404734
test esi, esi
je 0x4045ae
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
or esi, 0xffffffff
mov dword [ebp - 0x368], esi
mov eax, dword [ebp - 0x364]
test eax, eax
jne 0x4045e1
mov ebx, dword [ebp - 0x370]
test ebx, ebx
jne 0x4045d6
lea eax, [ebp - 0x114]
push eax
push str.Ignoring_volume__s_because_it_has_no_extents...
call fcn.004407e0
add esp, 8
mov edi, dword [ebp - 0x36c]
jmp 0x40478c
cmp eax, 1
je 0x40460f
mov ebx, dword [ebp - 0x370]
test ebx, ebx
jne 0x4045d6
lea eax, [ebp - 0x114]
push eax
push str.Ignoring_volume__s_because_it_has_more_than_one_extent__RAID__...
call fcn.004407e0
mov edi, dword [ebp - 0x36c]
add esp, 8
jmp 0x40478c
mov eax, dword [ebp - 0x378]
mov edi, dword [ebp - 0x36c]
add eax, 0xffffff80
cmp dword [ebp - 0x35c], eax
jne 0x404778
cmp edi, 0x10
je 0x4047a9
cmp dword [ebp - 0x39c], 0
je 0x40463f
mov byte [ebx], 0x5c
mov ebx, dword [ebp - 0x380]
mov eax, dword [ebp - 0x354]
mov ecx, dword [ebp - 0x350]
mov dword [ebp + edi*8 - 0x29c], eax
mov dword [ebp + edi*8 - 0x298], ecx
test ebx, ebx
je 0x4046d4
mov eax, dword [ebp - 0x390]
cmp edi, eax
jne 0x4046a8
add eax, eax
mov esi, ebx
mov dword [ebp - 0x390], eax
shl eax, 2
push eax
push ebx
call fcn.00495be1
mov ebx, eax
add esp, 8
mov dword [ebp - 0x380], ebx
test ebx, ebx
jne 0x4046a8
push esi
call fcn.004998ec
add esp, 4
push str.Could_not_reallocate_string_array
call fcn.004407e0
add esp, 4
jmp 0x4046d4
lea eax, [ebp - 0x114]
push eax
call fcn.0049f1d2
add esp, 4
mov dword [ebx + edi*4], eax
test eax, eax
jne 0x4046cd
push str.Could_not_store_string_in_array
call fcn.004407e0
add esp, 4
jmp 0x4046d4
inc edi
mov dword [ebp - 0x36c], edi
mov ebx, dword [ebp - 0x370]
test ebx, ebx
jne 0x404786
cmp dword [ebp - 0x388], ebx
je 0x404709
mov dword [ebp - 0x388], ebx
cmp dword [0x542fb4], ebx
je 0x404786
push str.Windows_volumes_from_this_device:
call fcn.004407e0
add esp, 4
cmp dword [0x542fb4], 0
je 0x404786
push dword [ebp - 0x350]
lea eax, [ebp - 0x114]
push dword [ebp - 0x354]
push eax
push str.__s___lld
call fcn.004407e0
add esp, 0x10
jmp 0x404786
mov ebx, dword [ebp - 0x370]
test ebx, ebx
jne 0x40475c
test eax, eax
je 0x404749
mov eax, str._empty_data_
jmp 0x40474e
call fcn.00440bb0
push eax
push str.Could_not_get_Disk_Extents:__s
call fcn.004407e0
add esp, 8
test esi, esi
je 0x404770
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
or esi, 0xffffffff
mov dword [ebp - 0x368], esi
mov edi, dword [ebp - 0x36c]
jmp 0x40478c
mov ebx, dword [ebp - 0x370]
jmp 0x40478c
mov ebx, dword [ebp - 0x370]
mov esi, dword [ebp - 0x368]
mov eax, dword [ebp - 0x374]
inc eax
mov dword [ebp - 0x374], eax
cmp esi, 0xffffffff
jne 0x4047df
mov esi, dword [ebp - 0x37c]
jmp 0x404340
push 0x10
push str.Error:_Trying_to_process_a_disk_with_more_than__d_partitions_
call fcn.004407e0
add esp, 8
jmp 0x404855
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x12
je 0x4047df
test ebx, ebx
jne 0x4047df
call fcn.00440bb0
push eax
push str.Could_not_access_next_GUID_volume:__s
call fcn.004407e0
add esp, 8
test edi, edi
je 0x404855
mov edx, dword [ebp - 0x394]
xor ecx, ecx
mov esi, dword [ebp - 0x398]
mov eax, edx
or eax, esi
je 0x4048b6
cmp edx, dword [ebp + ecx*8 - 0x29c]
jne 0x404811
cmp esi, dword [ebp + ecx*8 - 0x298]
je 0x4048ae
inc ecx
cmp ecx, edi
jb 0x4047fb
mov ecx, dword [ebp - 0x378]
push ebx
push esi
push edx
mov edx, dword [ebp - 0x39c]
call fcn.004048f0
mov ecx, eax
add esp, 0xc
mov dword [ebp - 0x384], ecx
test ecx, ecx
je 0x404855
push 0x20
push ecx
call fcn.00492830
add esp, 8
test eax, eax
je 0x404855
push str.Warning:_Using_physical_device_to_access_partition_data
call fcn.004407e0
add esp, 4
mov eax, dword [ebp - 0x37c]
cmp eax, 0xffffffff
je 0x404867
push eax
call dword [sym.imp.KERNEL32.dll_FindVolumeClose]
mov ebx, dword [ebp - 0x380]
test ebx, ebx
je 0x40488e
xor esi, esi
test edi, edi
je 0x40488e
push dword [ebx + esi*4]
call fcn.004998ec
mov dword [ebx + esi*4], 0
add esp, 4
inc esi
cmp esi, edi
jb 0x404877
push ebx
call fcn.004998ec
mov ecx, dword [ebp - 8]
add esp, 4
mov eax, dword [ebp - 0x384]
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.00491940
mov esp, ebp
pop ebp
ret
cmp ecx, edi
jae 0x404816
mov eax, dword [ebp - 0x380]
mov eax, dword [eax + ecx*4]
test eax, eax
jne 0x4048cb
mov dword [ebp - 0x384], eax
jmp 0x404855
push eax
call fcn.0049f1d2
mov dword [ebp - 0x384], eax
jmp 0x404852
call fcn.00491a70
int3