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

Disassembly:
mov eax, 0x1085c
call fcn.004cd440
push ebx
push esi
push edi
mov edi, dword [esp + 0x1086c]
mov ebx, ecx
mov ecx, edi
mov dword [esp + 0x14], ebx
call fcn.0042cb60
mov esi, eax
cmp esi, 9
jne 0x45f5d4
push 0
push dword [esp + 0x10874]
mov ecx, ebx
call fcn.0045f150
pop edi
pop esi
pop ebx
add esp, 0x1085c
ret 8
cmp esi, 4
jne 0x45f68e
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 0x45f610
sub ecx, edx
sar ecx, 1
je 0x45f639
cmp word [esp + ecx*2 + 0x866], 0x5c
je 0x45f639
mov eax, 0x5c
mov word [esp + ecx*2 + 0x868], ax
lea eax, [edi + 0x12]
nop dword [eax]
movzx ecx, word [eax]
cmp ecx, 0x20
je 0x45f64d
cmp ecx, 9
jne 0x45f652
add eax, 2
jmp 0x45f640
push eax
lea eax, [esp + 0x86c]
push eax
call dword [sym.imp.KERNEL32.dll_SetVolumeLabelW]
push 1
test eax, eax
mov edx, 0x4e613c
push 0
mov ecx, 0x4cfcf8
cmove ecx, edx
push 0xffffffffffffffff
push ecx
mov ecx, dword [0x4fb9e4]
call fcn.004b55f0
pop edi
pop esi
pop ebx
add esp, 0x1085c
ret 8
push ebp
mov ebp, dword [0x4fd228]
mov ecx, ebp
push 1
push 0
push 0xffffffffffffffff
push 0
call fcn.004b55f0
cmp esi, 8
ja case.0x45f6ad.4
jmp dword [esi*4 + 0x45fb14]
mov esi, dword [esp + 0x10874]
cmp word [esi], 0
jne 0x45f6c8
mov esi, 0x100
jmp 0x45f747
mov edi, dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsicmp]
push str.CDRom
push esi
call edi
add esp, 8
test eax, eax
jne 0x45f6e2
lea esi, [eax + 5]
jmp 0x45f747
push str.Removable
push esi
call edi
add esp, 8
test eax, eax
jne 0x45f6f6
lea esi, [eax + 2]
jmp 0x45f747
push str.Fixed
push esi
call edi
add esp, 8
test eax, eax
jne 0x45f70a
lea esi, [eax + 3]
jmp 0x45f747
push str.Network
push esi
call edi
add esp, 8
test eax, eax
jne 0x45f71e
lea esi, [eax + 4]
jmp 0x45f747
push str.Ramdisk
push esi
call edi
add esp, 8
test eax, eax
jne 0x45f732
lea esi, [eax + 6]
jmp 0x45f747
push str.Unknown
push esi
call edi
add esp, 8
test eax, eax
jne case.0x45f6ad.0
xor esi, esi
xor edi, edi
mov bl, 0x41
nop dword [eax + eax]
movzx eax, bl
mov word [esp + 0x14], ax
mov word [esp + 0x6c], ax
xor eax, eax
mov word [esp + 0x72], ax
lea eax, [esp + 0x6c]
push eax
mov dword [esp + 0x72], 0x5c003a
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, esi
je 0x45f788
cmp esi, 0x100
jne 0x45f793
cmp eax, 1
je 0x45f793
mov ax, word [esp + 0x14]
mov word [esp + edi*2 + 0x2c], ax
inc edi
inc bl
cmp bl, 0x5a
jbe 0x45f750
xor eax, eax
mov ecx, ebp
push 1
push eax
mov word [esp + edi*2 + 0x34], ax
lea eax, [esp + 0x34]
push 0xffffffffffffffff
push eax
call fcn.004b55f0
cmp word [esp + 0x2c], 0
jne case.0x45f6ad.4
mov ebx, dword [esp + 0x18]
mov eax, dword [0x4f90f4]
test byte [eax + 0x100], 1
jne 0x45faf4
push 1
push 0
push 0xffffffffffffffff
push 0x4e613c
jmp 0x45f8b9
push 0x7ffe
push dword [esp + 0x10878]
lea eax, [esp + 0x874]
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_wcsncpy]
add esp, 0xc
lea ecx, [esp + 0x86c]
xor eax, eax
lea edx, [ecx + 2]
mov word [esp + 0x10868], ax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x45f815
sub ecx, edx
sar ecx, 1
je 0x45f83e
cmp word [esp + ecx*2 + 0x86a], 0x5c
je 0x45f83e
mov eax, 0x5c
mov word [esp + ecx*2 + 0x86c], ax
push 0xff
lea eax, [esp + 0x470]
push eax
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x20]
push eax
push 0xff
lea eax, [esp + 0x284]
push eax
lea eax, [esp + 0x888]
push eax
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationW]
test eax, eax
je case.0x45f6ad.0
sub esi, 2
je 0x45f8d1
sub esi, 1
je 0x45f899
sub esi, 2
jne case.0x45f6ad.4
push dword [esp + 0x10]
mov ecx, ebp
call fcn.00401600
jmp case.0x45f6ad.4
lea eax, [esp + 0x26c]
push 1
push 0
push 0xffffffffffffffff
push eax
mov ecx, ebp
call fcn.004b55f0
push 1
push 0
push 0xffffffffffffffff
push 0x4cfcf8
mov ecx, dword [0x4fb9e4]
call fcn.004b55f0
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x1085c
ret 8
lea eax, [esp + 0x46c]
jmp 0x45f8a0
push 0x7ffe
push dword [esp + 0x10878]
lea eax, [esp + 0x874]
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_wcsncpy]
add esp, 0xc
lea ecx, [esp + 0x86c]
xor eax, eax
lea edx, [ecx + 2]
mov word [esp + 0x10868], ax
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x45f910
sub ecx, edx
sar ecx, 1
je 0x45f939
cmp word [esp + ecx*2 + 0x86a], 0x5c
je 0x45f939
mov eax, 0x5c
mov word [esp + ecx*2 + 0x86c], ax
lea eax, [esp + 0x86c]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 6
ja case.0x45f6ad.0
jmp dword [eax*4 + 0x45fb38]
mov eax, str.Unknown
jmp 0x45f8a0
mov eax, str.Removable
jmp 0x45f8a0
mov eax, str.Fixed
jmp 0x45f8a0
mov eax, str.Network
jmp 0x45f8a0
mov eax, str.CDROM
jmp 0x45f8a0
mov eax, str.RAMDisk
jmp 0x45f8a0
push 0x7ffe
push dword [esp + 0x10878]
lea eax, [esp + 0x874]
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_wcsncpy]
add esp, 0xc
lea ecx, [esp + 0x86c]
xor eax, eax
lea edx, [ecx + 2]
mov word [esp + 0x10868], ax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x45f9c4
sub ecx, edx
sar ecx, 1
je 0x45f9ed
cmp word [esp + ecx*2 + 0x86a], 0x5c
je 0x45f9ed
mov eax, 0x5c
mov word [esp + ecx*2 + 0x86c], ax
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0x24]
push eax
lea eax, [esp + 0x2c]
push eax
lea eax, [esp + 0x34]
push eax
lea eax, [esp + 0x87c]
push eax
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceW]
test eax, eax
jne case.0x45fa29.0
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x15
ja case.0x45f950.2156
movzx eax, byte [eax + 0x45fb68]
jmp dword [eax*4 + 0x45fb54]
mov eax, str.Invalid
jmp 0x45f8a0
mov eax, str.NotReady
jmp 0x45f8a0
mov eax, str.ReadOnly
jmp 0x45f8a0
mov eax, str.Ready
jmp 0x45f8a0
mov eax, dword [esp + 0x10874]
cmp word [eax], 0
jne 0x45fa83
push 0
push 0x80
lea eax, [esp + 0x174]
push eax
push str.status_cdaudio_mode
call dword [sym.imp.WINMM.dll_mciSendStringW]
test eax, eax
jmp 0x45fae2
push eax
push str.open__s_type_cdaudio_alias_cd_wait_shareable
lea eax, [esp + 0x674]
push 0x100
push eax
call fcn.004b0fe0
mov edi, dword [sym.imp.WINMM.dll_mciSendStringW]
lea eax, [esp + 0x67c]
add esp, 0x10
push 0
push 0
push 0
push eax
call edi
test eax, eax
jne case.0x45f6ad.0
push eax
push 0x80
lea eax, [esp + 0x174]
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 case.0x45f6ad.0
lea eax, [esp + 0x16c]
jmp 0x45f8a0
push 0x4cfc30
push 0
push 0x4e613c
mov ecx, ebx
call fcn.0044e0b0
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x1085c
ret 8