Function at 0x4507f0
Capabilities:
Get disk information
Get disk size

Disassembly:
mov eax, 0x1085c
call fcn.004bdab0
push ebx
push esi
push edi
mov edi, dword [esp + 0x1086c]
mov ebx, ecx
mov dword [esp + 0xc], ebx
test edi, edi
je 0x450d5c
cmp word [edi], 0
je 0x450d5c
mov esi, dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsicmp]
push str.List
push edi
call esi
add esp, 8
test eax, eax
jne 0x45097f
mov eax, dword [0x4eaff0]
mov ecx, eax
push 1
push 0
push 0xffffffffffffffff
push 0
mov dword [esp + 0x20], eax
call fcn.004a6070
mov edi, dword [esp + 0x10870]
cmp word [edi], 0
jne 0x450861
mov esi, 0x100
jmp 0x4508d6
push str.CDRom
push edi
call esi
add esp, 8
test eax, eax
jne 0x450875
lea esi, [eax + 5]
jmp 0x4508d6
push str.Removable
push edi
call esi
add esp, 8
test eax, eax
jne 0x450889
lea esi, [eax + 2]
jmp 0x4508d6
push str.Fixed
push edi
call esi
add esp, 8
test eax, eax
jne 0x45089d
lea esi, [eax + 3]
jmp 0x4508d6
push str.Network
push edi
call esi
add esp, 8
test eax, eax
jne 0x4508b1
lea esi, [eax + 4]
jmp 0x4508d6
push str.Ramdisk
push edi
call esi
add esp, 8
test eax, eax
jne 0x4508c5
lea esi, [eax + 6]
jmp 0x4508d6
push str.Unknown
push edi
call esi
add esp, 8
test eax, eax
jne case.0x450b30.2151
xor esi, esi
xor edi, edi
mov bl, 0x41
push ebp
nop dword [eax + eax]
xor eax, eax
movzx ebp, bl
mov word [esp + 0x72], ax
lea eax, [esp + 0x6c]
push eax
mov word [esp + 0x70], bp
mov dword [esp + 0x72], 0x5c003a
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, esi
je 0x450913
cmp esi, 0x100
jne 0x450919
cmp eax, 1
je 0x450919
mov word [esp + edi*2 + 0x2c], bp
inc edi
inc bl
cmp bl, 0x5a
jbe 0x4508e0
mov ecx, dword [esp + 0x14]
xor eax, eax
push 1
push eax
mov word [esp + edi*2 + 0x34], ax
lea eax, [esp + 0x34]
push 0xffffffffffffffff
push eax
call fcn.004a6070
cmp word [esp + 0x2c], 0
pop ebp
jne 0x450e92
mov ebx, dword [esp + 0xc]
mov eax, dword [0x4e7024]
test byte [eax + 0x100], 1
jne 0x450eb4
mov ecx, dword [0x4e97d8]
push 1
push 0
push 0xffffffffffffffff
push 0x4d4ebc
call fcn.004a6070
pop edi
pop esi
pop ebx
add esp, 0x1085c
ret 8
push str.FileSystem
push edi
call esi
add esp, 8
test eax, eax
je 0x450d90
push 0x4db6c8
push edi
call esi
add esp, 8
test eax, eax
je 0x450d90
push str.Label
push edi
call esi
add esp, 8
test eax, eax
jne 0x4509bc
lea esi, [eax + 3]
jmp 0x450d95
push 9
push str.SetLabel:
push edi
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsnicmp]
add esp, 0xc
test eax, eax
jne 0x450a80
push 0x7ffe
push dword [esp + 0x10874]
lea eax, [esp + 0x870]
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_wcsncpy]
add esp, 0xc
lea ecx, [esp + 0x868]
xor eax, eax
lea edx, [ecx + 2]
mov word [esp + 0x10864], ax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x450a06
sub ecx, edx
sar ecx, 1
je 0x450a2f
cmp word [esp + ecx*2 + 0x866], 0x5c
je 0x450a2f
mov eax, 0x5c
mov word [esp + ecx*2 + 0x868], ax
lea eax, [edi + 0x12]
movzx ecx, word [eax]
cmp ecx, 0x20
je 0x450a3f
cmp ecx, 9
jne 0x450a44
add eax, 2
jmp 0x450a32
push eax
lea eax, [esp + 0x86c]
push eax
call dword [sym.imp.KERNEL32.dll_SetVolumeLabelW]
push 1
test eax, eax
mov edx, 0x4d4ebc
push 0
mov ecx, 0x4bfc24
cmove ecx, edx
push 0xffffffffffffffff
push ecx
mov ecx, dword [0x4e97d8]
call fcn.004a6070
pop edi
pop esi
pop ebx
add esp, 0x1085c
ret 8
push str.Serial
push edi
call esi
add esp, 8
test eax, eax
jne 0x450a97
lea esi, [eax + 5]
jmp 0x450d95
push str.Type
push edi
call esi
add esp, 8
test eax, eax
jne 0x450b7f
mov esi, dword [0x4eaff0]
mov ecx, esi
push 1
push eax
push 0xffffffffffffffff
push eax
call fcn.004a6070
push 0x7ffe
push dword [esp + 0x10874]
lea eax, [esp + 0x870]
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_wcsncpy]
add esp, 0xc
lea ecx, [esp + 0x868]
xor eax, eax
lea edx, [ecx + 2]
mov word [esp + 0x10864], ax
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x450af0
sub ecx, edx
sar ecx, 1
je 0x450b19
cmp word [esp + ecx*2 + 0x866], 0x5c
je 0x450b19
mov eax, 0x5c
mov word [esp + ecx*2 + 0x868], ax
lea eax, [esp + 0x868]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 6
ja case.0x450b30.2151
jmp dword [eax*4 + 0x450ed4]
mov eax, str.Unknown
mov ecx, esi
jmp 0x450e86
mov eax, str.Removable
mov ecx, esi
jmp 0x450e86
mov eax, str.Fixed
mov ecx, esi
jmp 0x450e86
mov eax, str.Network
mov ecx, esi
jmp 0x450e86
mov eax, str.CDROM
mov ecx, esi
jmp 0x450e86
mov eax, str.RAMDisk
mov ecx, esi
jmp 0x450e86
push str.Status
push edi
call esi
add esp, 8
test eax, eax
jne 0x450c7a
mov esi, dword [0x4eaff0]
mov ecx, esi
push 1
push eax
push 0xffffffffffffffff
push eax
call fcn.004a6070
push 0x7ffe
push dword [esp + 0x10874]
lea eax, [esp + 0x870]
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_wcsncpy]
add esp, 0xc
lea ecx, [esp + 0x868]
xor eax, eax
lea edx, [ecx + 2]
mov word [esp + 0x10864], ax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x450bd6
sub ecx, edx
sar ecx, 1
je 0x450bff
cmp word [esp + ecx*2 + 0x866], 0x5c
je 0x450bff
mov eax, 0x5c
mov word [esp + ecx*2 + 0x868], ax
lea eax, [esp + 0xc]
push eax
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x28]
push eax
lea eax, [esp + 0x878]
push eax
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceW]
test eax, eax
jne case.0x450c37.0
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x15
ja case.0x450c37.1
movzx eax, byte [eax + 0x450f04]
jmp dword [eax*4 + 0x450ef0]
mov eax, str.Invalid
mov ecx, esi
jmp 0x450e86
mov eax, str.NotReady
mov ecx, esi
jmp 0x450e86
mov eax, str.ReadOnly
mov ecx, esi
jmp 0x450e86
mov eax, str.Unknown
mov ecx, esi
jmp 0x450e86
mov eax, str.Ready
mov ecx, esi
jmp 0x450e86
push str.StatusCD
push edi
call esi
add esp, 8
test eax, eax
jne 0x450d3e
mov ebx, dword [0x4eaff0]
mov ecx, ebx
push 1
push eax
push 0xffffffffffffffff
push eax
call fcn.004a6070
mov eax, dword [esp + 0x10870]
cmp word [eax], 0
jne 0x450ccb
push 0
push 0x80
lea eax, [esp + 0x170]
push eax
push str.status_cdaudio_mode
call dword [sym.imp.WINMM.dll_mciSendStringW]
test eax, eax
jmp 0x450d2a
push eax
push str.open__s_type_cdaudio_alias_cd_wait_shareable
lea eax, [esp + 0x270]
push 0x100
push eax
call fcn.004a1b10
mov edi, dword [sym.imp.WINMM.dll_mciSendStringW]
lea eax, [esp + 0x278]
add esp, 0x10
push 0
push 0
push 0
push eax
call edi
test eax, eax
jne 0x450947
push eax
push 0x80
lea eax, [esp + 0x170]
push eax
push str.status_cd_mode
call edi
push 0
push 0
push 0
push str.close_cd_wait
mov esi, eax
call edi
test esi, esi
jne 0x450947
lea eax, [esp + 0x168]
mov ecx, ebx
jmp 0x450e86
push str.Capacity
push edi
call esi
add esp, 8
test eax, eax
je 0x450d74
push 0x4db72c
push edi
call esi
add esp, 8
test eax, eax
je 0x450d74
mov ecx, dword [0x4eaff0]
push 1
push 0
push 0xffffffffffffffff
push 0
call fcn.004a6070
jmp case.0x450b30.2151
push 0
push dword [esp + 0x10874]
mov ecx, ebx
call fcn.00450390
pop edi
pop esi
pop ebx
add esp, 0x1085c
ret 8
mov esi, 2
mov edi, dword [0x4eaff0]
mov ecx, edi
mov byte [esp + 0xc], 1
push dword [esp + 0xc]
mov byte [esp + 0x14], 0
push dword [esp + 0x14]
push 0xffffffffffffffff
push 0
call fcn.004a6070
push 0x7ffe
push dword [esp + 0x10874]
lea eax, [esp + 0x870]
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_wcsncpy]
add esp, 0xc
lea ecx, [esp + 0x868]
xor eax, eax
lea edx, [ecx + 2]
mov word [esp + 0x10864], ax
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x450df0
sub ecx, edx
sar ecx, 1
je 0x450e19
cmp word [esp + ecx*2 + 0x866], 0x5c
je 0x450e19
mov eax, 0x5c
mov word [esp + ecx*2 + 0x868], ax
push 0xff
lea eax, [esp + 0x66c]
push eax
lea eax, [esp + 0x28]
push eax
lea eax, [esp + 0x30]
push eax
lea eax, [esp + 0x20]
push eax
push 0xff
lea eax, [esp + 0x480]
push eax
lea eax, [esp + 0x884]
push eax
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationW]
test eax, eax
je case.0x450b30.2151
sub esi, 2
je 0x450e7d
sub esi, 1
je 0x450e74
sub esi, 2
jne 0x450e92
push dword [esp + 0x10]
mov ecx, edi
call fcn.00401490
jmp 0x450e92
lea eax, [esp + 0x468]
jmp 0x450e84
lea eax, [esp + 0x668]
mov ecx, edi
push 1
push 0
push 0xffffffffffffffff
push eax
call fcn.004a6070
mov ecx, dword [0x4e97d8]
push 1
push 0
push 0xffffffffffffffff
push 0x4bfc24
call fcn.004a6070
pop edi
pop esi
pop ebx
add esp, 0x1085c
ret 8
push 0x4bfba0
push 0
push 0x4d4ebc
mov ecx, ebx
call fcn.0043e4d0
pop edi
pop esi
pop ebx
add esp, 0x1085c
ret 8