Function at 0x451680
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 dword [esp + 0xc], ebx
test edi, edi
je 0x451ba0
cmp byte [edi], 0
je 0x451ba0
mov esi, dword [sym.imp.api_ms_win_crt_multibyte_l1_1_0.dll__mbsicmp]
push str.List
push edi
call esi
add esp, 8
test eax, eax
jne 0x45180d
mov eax, dword [0x4cbec8]
mov ecx, eax
push 1
push 0
push 0xffffffffffffffff
push 0
mov dword [esp + 0x20], eax
call fcn.004a2db0
mov edi, dword [esp + 0x554]
cmp byte [edi], 0
jne 0x4516eb
mov esi, 0x100
jmp 0x451760
push str.CDRom
push edi
call esi
add esp, 8
test eax, eax
jne 0x4516ff
lea esi, [eax + 5]
jmp 0x451760
push str.Removable
push edi
call esi
add esp, 8
test eax, eax
jne 0x451713
lea esi, [eax + 2]
jmp 0x451760
push str.Fixed
push edi
call esi
add esp, 8
test eax, eax
jne 0x451727
lea esi, [eax + 3]
jmp 0x451760
push str.Network
push edi
call esi
add esp, 8
test eax, eax
jne 0x45173b
lea esi, [eax + 4]
jmp 0x451760
push str.Ramdisk
push edi
call esi
add esp, 8
test eax, eax
jne 0x45174f
lea esi, [eax + 6]
jmp 0x451760
push str.Unknown
push edi
call esi
add esp, 8
test eax, eax
jne case.0x45198b.71
xor esi, esi
push ebp
mov ebp, dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
xor edi, edi
mov bl, 0x41
nop dword [eax + eax]
lea eax, [esp + 0x150]
mov byte [esp + 0x150], bl
push eax
mov word [esp + 0x155], 0x5c3a
mov byte [esp + 0x157], 0
call ebp
cmp eax, esi
je 0x4517a4
cmp esi, 0x100
jne 0x4517a9
cmp eax, 1
je 0x4517a9
mov byte [esp + edi + 0x2c], bl
inc edi
inc bl
cmp bl, 0x5a
jbe 0x451770
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x2c]
push 1
push 0
push 0xffffffffffffffff
push eax
mov byte [esp + edi + 0x3c], 0
call fcn.004a2db0
cmp byte [esp + 0x2c], 0
pop ebp
jne 0x451cb2
mov ebx, dword [esp + 0xc]
mov eax, dword [0x4c8024]
test byte [eax + 0xe0], 1
jne 0x451cd4
mov ecx, dword [0x4ca738]
push 1
push 0
push 0xffffffffffffffff
push 0x4bb578
call fcn.004a2db0
pop edi
pop esi
pop ebx
add esp, 0x540
ret 8
push str.FileSystem
push edi
call esi
add esp, 8
test eax, eax
je 0x451bd4
push 0x4bede8
push edi
call esi
add esp, 8
test eax, eax
je 0x451bd4
push str.Label
push edi
call esi
add esp, 8
test eax, eax
jne 0x45184a
lea esi, [eax + 3]
jmp 0x451bd9
push 9
push str.SetLabel:
push edi
call dword [sym.imp.api_ms_win_crt_multibyte_l1_1_0.dll__mbsnbicmp]
add esp, 0xc
test eax, eax
jne 0x4518f8
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]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x451890
sub ecx, edx
je 0x4518a7
cmp byte [esp + ecx + 0x47], 0x5c
je 0x4518a7
mov byte [esp + ecx + 0x48], 0x5c
lea eax, [edi + 9]
nop word [eax + eax]
mov cl, byte [eax]
cmp cl, 0x20
je 0x4518bc
cmp cl, 9
jne 0x4518bf
inc eax
jmp 0x4518b0
push eax
lea eax, [esp + 0x4c]
push eax
call dword [sym.imp.KERNEL32.dll_SetVolumeLabelA]
push 1
test eax, eax
mov edx, 0x4bb578
push 0
mov ecx, 0x4b6c08
cmove ecx, edx
push 0xffffffffffffffff
push ecx
mov ecx, dword [0x4ca738]
call fcn.004a2db0
pop edi
pop esi
pop ebx
add esp, 0x540
ret 8
push str.Serial
push edi
call esi
add esp, 8
test eax, eax
jne 0x45190f
lea esi, [eax + 5]
jmp 0x451bd9
push str.Type
push edi
call esi
add esp, 8
test eax, eax
jne 0x4519da
mov esi, dword [0x4cbec8]
mov ecx, esi
push 1
push eax
push 0xffffffffffffffff
push eax
call fcn.004a2db0
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]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x451960
sub ecx, edx
je 0x451977
cmp byte [esp + ecx + 0x47], 0x5c
je 0x451977
mov byte [esp + ecx + 0x48], 0x5c
lea eax, [esp + 0x48]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 6
ja case.0x45198b.71
jmp dword [eax*4 + 0x451cf4]
mov eax, str.Unknown
mov ecx, esi
jmp 0x451ca6
mov eax, str.Removable
mov ecx, esi
jmp 0x451ca6
mov eax, str.Fixed
mov ecx, esi
jmp 0x451ca6
mov eax, str.Network
mov ecx, esi
jmp 0x451ca6
mov eax, str.CDROM
mov ecx, esi
jmp 0x451ca6
mov eax, str.RAMDisk
mov ecx, esi
jmp 0x451ca6
push str.Status
push edi
call esi
add esp, 8
test eax, eax
jne 0x451abf
mov esi, dword [0x4cbec8]
mov ecx, esi
push 1
push eax
push 0xffffffffffffffff
push eax
call fcn.004a2db0
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]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x451a30
sub ecx, edx
je 0x451a47
cmp byte [esp + ecx + 0x47], 0x5c
je 0x451a47
mov byte [esp + ecx + 0x48], 0x5c
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 + 0x58]
push eax
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceA]
test eax, eax
jne case.0x451a7c.0
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x15
ja case.0x451a7c.1
movzx eax, byte [eax + 0x451d24]
jmp dword [eax*4 + 0x451d10]
mov eax, str.Invalid
mov ecx, esi
jmp 0x451ca6
mov eax, str.NotReady
mov ecx, esi
jmp 0x451ca6
mov eax, str.ReadOnly
mov ecx, esi
jmp 0x451ca6
mov eax, str.Unknown
mov ecx, esi
jmp 0x451ca6
mov eax, str.Ready
mov ecx, esi
jmp 0x451ca6
push str.StatusCD
push edi
call esi
add esp, 8
test eax, eax
jne 0x451b82
mov ebx, dword [0x4cbec8]
mov ecx, ebx
push 1
push eax
push 0xffffffffffffffff
push eax
call fcn.004a2db0
mov eax, dword [esp + 0x554]
cmp byte [eax], 0
jne 0x451b0f
push 0
push 0x80
lea eax, [esp + 0x1d4]
push eax
push str.status_cdaudio_mode
call dword [sym.imp.WINMM.dll_mciSendStringA]
test eax, eax
jmp 0x451b6e
push eax
push str.open__s_type_cdaudio_alias_cd_wait_shareable
lea eax, [esp + 0x254]
push 0x100
push eax
call fcn.0049e760
mov edi, dword [sym.imp.WINMM.dll_mciSendStringA]
lea eax, [esp + 0x25c]
add esp, 0x10
push 0
push 0
push 0
push eax
call edi
test eax, eax
jne 0x4517d5
push eax
push 0x80
lea eax, [esp + 0x1d4]
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 0x4517d5
lea eax, [esp + 0x1cc]
mov ecx, ebx
jmp 0x451ca6
push str.Capacity
push edi
call esi
add esp, 8
test eax, eax
je 0x451bb8
push 0x4bee20
push edi
call esi
add esp, 8
test eax, eax
je 0x451bb8
mov ecx, dword [0x4cbec8]
push 1
push 0
push 0xffffffffffffffff
push 0
call fcn.004a2db0
jmp case.0x45198b.71
push 0
push dword [esp + 0x558]
mov ecx, ebx
call fcn.00451190
pop edi
pop esi
pop ebx
add esp, 0x540
ret 8
mov esi, 2
mov edi, dword [0x4cbec8]
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.004a2db0
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 0x451c25
sub ecx, edx
je 0x451c3c
cmp byte [esp + ecx + 0x47], 0x5c
je 0x451c3c
mov byte [esp + ecx + 0x48], 0x5c
push 0xff
lea eax, [esp + 0x450]
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 + 0x364]
push eax
lea eax, [esp + 0x64]
push eax
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
test eax, eax
je case.0x45198b.71
sub esi, 2
je 0x451c9d
sub esi, 1
je 0x451c94
sub esi, 2
jne 0x451cb2
push dword [esp + 0x10]
mov ecx, edi
call fcn.004014c0
jmp 0x451cb2
lea eax, [esp + 0x34c]
jmp 0x451ca4
lea eax, [esp + 0x44c]
mov ecx, edi
push 1
push 0
push 0xffffffffffffffff
push eax
call fcn.004a2db0
mov ecx, dword [0x4ca738]
push 1
push 0
push 0xffffffffffffffff
push 0x4b6c08
call fcn.004a2db0
pop edi
pop esi
pop ebx
add esp, 0x540
ret 8
push 0x4b6ba9
push 0
push 0x4bb578
mov ecx, ebx
call fcn.0043e6c0
pop edi
pop esi
pop ebx
add esp, 0x540
ret 8