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

Disassembly:
sub esp, 0x540
push ebx
push esi
push edi
mov edi, dword [esp + 0x550]
mov ebx, ecx
mov ecx, edi
mov dword [esp + 0xc], ebx
call fcn.0042ae00
mov esi, eax
cmp esi, 9
jne 0x45fd60
push 0
push dword [esp + 0x558]
mov ecx, ebx
call fcn.0045f830
pop edi
pop esi
pop ebx
add esp, 0x540
ret 8
cmp esi, 4
jne 0x45fdf8
push 0x102
push dword [esp + 0x558]
lea eax, [esp + 0x50]
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncpy]
lea ecx, [esp + 0x54]
mov byte [esp + 0x156], 0
add esp, 0xc
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x45fd92
sub ecx, edx
je 0x45fda9
cmp byte [esp + ecx + 0x47], 0x5c
je 0x45fda9
mov byte [esp + ecx + 0x48], 0x5c
lea eax, [edi + 9]
nop dword [eax]
mov cl, byte [eax]
cmp cl, 0x20
je 0x45fdbc
cmp cl, 9
jne 0x45fdbf
inc eax
jmp 0x45fdb0
push eax
lea eax, [esp + 0x4c]
push eax
call dword [sym.imp.KERNEL32.dll_SetVolumeLabelA]
push 1
test eax, eax
mov edx, 0x4c40b0
push 0
mov ecx, 0x4c3cb0
cmove ecx, edx
push 0xffffffffffffffff
push ecx
mov ecx, dword [0x4d995c]
call fcn.004b04f0
pop edi
pop esi
pop ebx
add esp, 0x540
ret 8
push ebp
mov ebp, dword [0x4db120]
mov ecx, ebp
push 1
push 0
push 0xffffffffffffffff
push 0
call fcn.004b04f0
cmp esi, 8
ja case.0x45fe17.4
jmp dword [esi*4 + 0x460214]
mov esi, dword [esp + 0x558]
cmp byte [esi], 0
jne 0x45fe31
mov esi, 0x100
jmp 0x45feac
mov edi, dword [sym.imp.api_ms_win_crt_multibyte_l1_1_0.dll__mbsicmp]
push str.CDRom
push esi
call edi
add esp, 8
test eax, eax
jne 0x45fe4b
lea esi, [eax + 5]
jmp 0x45feac
push str.Removable
push esi
call edi
add esp, 8
test eax, eax
jne 0x45fe5f
lea esi, [eax + 2]
jmp 0x45feac
push str.Fixed
push esi
call edi
add esp, 8
test eax, eax
jne 0x45fe73
lea esi, [eax + 3]
jmp 0x45feac
push str.Network
push esi
call edi
add esp, 8
test eax, eax
jne 0x45fe87
lea esi, [eax + 4]
jmp 0x45feac
push str.Ramdisk
push esi
call edi
add esp, 8
test eax, eax
jne 0x45fe9b
lea esi, [eax + 6]
jmp 0x45feac
push str.Unknown
push esi
call edi
add esp, 8
test eax, eax
jne case.0x45fe17.0
xor esi, esi
xor edi, edi
mov bl, 0x41
lea eax, [esp + 0x150]
mov byte [esp + 0x150], bl
push eax
mov word [esp + 0x155], 0x5c3a
mov byte [esp + 0x157], 0
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, esi
je 0x45fee8
cmp esi, 0x100
jne 0x45feed
cmp eax, 1
je 0x45feed
mov byte [esp + edi + 0x2c], bl
inc edi
inc bl
cmp bl, 0x5a
jbe 0x45feb0
push 1
push 0
push 0xffffffffffffffff
lea eax, [esp + 0x38]
mov byte [esp + edi + 0x38], 0
push eax
mov ecx, ebp
call fcn.004b04f0
cmp byte [esp + 0x2c], 0
jne case.0x45fe17.4
mov ebx, dword [esp + 0x10]
mov eax, dword [0x4d70f4]
test byte [eax + 0xe0], 1
jne 0x4601f1
push 1
push 0
push 0xffffffffffffffff
push 0x4c40b0
jmp 0x45fff4
push 0x102
push dword [esp + 0x55c]
lea eax, [esp + 0x54]
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncpy]
lea ecx, [esp + 0x58]
mov byte [esp + 0x15a], 0
add esp, 0xc
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x45ff65
sub ecx, edx
je 0x45ff7c
cmp byte [esp + ecx + 0x4b], 0x5c
je 0x45ff7c
mov byte [esp + ecx + 0x4c], 0x5c
push 0xff
lea eax, [esp + 0x354]
push eax
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0x24]
push eax
lea eax, [esp + 0x20]
push eax
push 0xff
lea eax, [esp + 0x268]
push eax
lea eax, [esp + 0x68]
push eax
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
test eax, eax
je case.0x45fe17.0
sub esi, 2
je 0x46000c
sub esi, 1
je 0x45ffd4
sub esi, 2
jne case.0x45fe17.4
push dword [esp + 0x10]
mov ecx, ebp
call fcn.004015b0
jmp case.0x45fe17.4
lea eax, [esp + 0x250]
push 1
push 0
push 0xffffffffffffffff
push eax
mov ecx, ebp
call fcn.004b04f0
push 1
push 0
push 0xffffffffffffffff
push 0x4c3cb0
mov ecx, dword [0x4d995c]
call fcn.004b04f0
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x540
ret 8
lea eax, [esp + 0x350]
jmp 0x45ffdb
push 0x102
push dword [esp + 0x55c]
lea eax, [esp + 0x54]
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncpy]
lea ecx, [esp + 0x58]
mov byte [esp + 0x15a], 0
add esp, 0xc
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x460040
sub ecx, edx
je 0x460057
cmp byte [esp + ecx + 0x4b], 0x5c
je 0x460057
mov byte [esp + ecx + 0x4c], 0x5c
lea eax, [esp + 0x4c]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 6
ja case.0x45fe17.0
jmp dword [eax*4 + 0x460238]
mov eax, str.Unknown
jmp 0x45ffdb
mov eax, str.Removable
jmp 0x45ffdb
mov eax, str.Fixed
jmp 0x45ffdb
mov eax, str.Network
jmp 0x45ffdb
mov eax, str.CDROM
jmp 0x45ffdb
mov eax, str.RAMDisk
jmp 0x45ffdb
push 0x102
push dword [esp + 0x55c]
lea eax, [esp + 0x54]
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncpy]
lea ecx, [esp + 0x58]
mov byte [esp + 0x15a], 0
add esp, 0xc
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4600d7
sub ecx, edx
je 0x4600ee
cmp byte [esp + ecx + 0x4b], 0x5c
je 0x4600ee
mov byte [esp + ecx + 0x4c], 0x5c
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 + 0x5c]
push eax
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceA]
test eax, eax
jne case.0x460127.0
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x15
ja case.0x46006b.76
movzx eax, byte [eax + 0x460268]
jmp dword [eax*4 + 0x460254]
mov eax, str.Invalid
jmp 0x45ffdb
mov eax, str.NotReady
jmp 0x45ffdb
mov eax, str.ReadOnly
jmp 0x45ffdb
mov eax, str.Ready
jmp 0x45ffdb
mov eax, dword [esp + 0x558]
cmp byte [eax], 0
jne 0x460180
push 0
push 0x80
lea eax, [esp + 0x1d8]
push eax
push str.status_cdaudio_mode
call dword [sym.imp.WINMM.dll_mciSendStringA]
test eax, eax
jmp 0x4601df
push eax
push str.open__s_type_cdaudio_alias_cd_wait_shareable
lea eax, [esp + 0x458]
push 0x100
push eax
call fcn.004abdd0
mov edi, dword [sym.imp.WINMM.dll_mciSendStringA]
lea eax, [esp + 0x460]
add esp, 0x10
push 0
push 0
push 0
push eax
call edi
test eax, eax
jne case.0x45fe17.0
push eax
push 0x80
lea eax, [esp + 0x1d8]
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.0x45fe17.0
lea eax, [esp + 0x1d0]
jmp 0x45ffdb
push 0x4c3c29
push 0
push 0x4c40b0
mov ecx, ebx
call fcn.0044d1f0
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x540
ret 8