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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x10864
call fcn.0049bf10
push ebx
push esi
push edi
mov esi, edx
mov edi, ecx
call fcn.00432b60
mov ebx, eax
cmp ebx, 9
jne 0x440b79
mov eax, dword [ebp + 8]
push 0
push eax
mov ecx, edi
call fcn.00440750
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp ebx, 4
jne 0x440c2a
push 0x7ffe
lea ecx, [esp + 0x874]
push edi
push ecx
call fcn.004937a4
add esp, 0xc
xor edx, edx
lea eax, [esp + 0x870]
mov word [esp + 0x1086c], dx
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x440bb0
sub eax, edx
sar eax, 1
je 0x440bdb
cmp word [esp + eax*2 + 0x86e], 0x5c
lea eax, [esp + eax*2 + 0x870]
je 0x440bdb
mov ecx, 0x5c
mov word [eax], cx
lea ecx, [esi + 0x12]
mov edi, edi
movzx eax, word [ecx]
cmp eax, 0x20
je 0x440bed
cmp eax, 9
jne 0x440bf2
add ecx, 2
jmp 0x440be0
push ecx
lea edx, [esp + 0x874]
push edx
call dword [sym.imp.KERNEL32.dll_SetVolumeLabelW]
test eax, eax
mov eax, 0x4a4930
jne 0x440c0f
mov eax, 0x4a7324
push 1
push 0
push 0xffffffffffffffff
push eax
mov eax, dword [0x4cbd60]
push eax
call fcn.0047a5f0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov ecx, dword [0x4cb498]
mov dword [esp + 0x10], ecx
call fcn.00415490
cmp ebx, 8
ja case.0x440c42.4
jmp dword [ebx*4 + 0x4410ec]
cmp word [edi], 0
jne 0x440c59
mov edi, 0x100
jmp 0x440ce4
push str.CDRom
push edi
call fcn.00490e99
add esp, 8
test eax, eax
jne 0x440c70
lea edi, [eax + 5]
jmp 0x440ce4
push str.Removable
push edi
call fcn.00490e99
add esp, 8
test eax, eax
jne 0x440c87
lea edi, [eax + 2]
jmp 0x440ce4
push 0x4ae9e8
push edi
call fcn.00490e99
add esp, 8
test eax, eax
jne 0x440c9e
lea edi, [eax + 3]
jmp 0x440ce4
push 0x4ae9f4
push edi
call fcn.00490e99
add esp, 8
test eax, eax
jne 0x440cb5
lea edi, [eax + 4]
jmp 0x440ce4
push str.Ramdisk
push edi
call fcn.00490e99
add esp, 8
test eax, eax
jne 0x440ccc
lea edi, [eax + 6]
jmp 0x440ce4
push 0x4aea14
push edi
call fcn.00490e99
add esp, 8
test eax, eax
jne case.0x440c42.0
xor edi, edi
mov dword [esp + 0x14], 0
mov bl, 0x41
mov edi, edi
movzx esi, bl
lea ecx, [esp + 0x70]
xor eax, eax
push ecx
mov word [esp + 0x74], si
mov dword [esp + 0x76], 0x5c003a
mov word [esp + 0x7a], ax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, edi
je 0x440d23
cmp edi, 0x100
jne 0x440d31
cmp eax, 1
je 0x440d31
mov eax, dword [esp + 0x14]
mov word [esp + eax*2 + 0x30], si
inc eax
mov dword [esp + 0x14], eax
inc bl
cmp bl, 0x5a
jbe 0x440cf0
mov eax, dword [esp + 0x14]
push 1
xor edx, edx
push edx
push 0xffffffffffffffff
lea ecx, [esp + 0x3c]
mov word [esp + eax*2 + 0x3c], dx
mov edx, dword [esp + 0x1c]
push ecx
push edx
call fcn.0047a5f0
cmp word [esp + 0x30], 0
je case.0x440c42.0
jmp case.0x440c42.4
push 0x7ffe
lea eax, [esp + 0x874]
push edi
push eax
call fcn.004937a4
add esp, 0xc
xor ecx, ecx
lea eax, [esp + 0x870]
mov word [esp + 0x1086c], cx
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x440d92
sub eax, edx
sar eax, 1
je 0x440dbd
cmp word [esp + eax*2 + 0x86e], 0x5c
lea eax, [esp + eax*2 + 0x870]
je 0x440dbd
mov edx, 0x5c
mov word [eax], dx
push 0xff
lea eax, [esp + 0x674]
push eax
lea ecx, [esp + 0x34]
push ecx
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x24]
push eax
push 0xff
lea ecx, [esp + 0x288]
push ecx
lea edx, [esp + 0x88c]
push edx
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationW]
test eax, eax
je case.0x440c42.0
mov eax, ebx
sub eax, 2
je 0x440e3d
dec eax
je 0x440e25
sub eax, 2
jne case.0x440c42.4
push 0x18
push eax
mov eax, dword [esp + 0x1c]
push eax
mov eax, dword [esp + 0x1c]
call fcn.00401140
jmp case.0x440c42.4
mov edx, dword [esp + 0x10]
push 1
push 0
push 0xffffffffffffffff
lea ecx, [esp + 0x27c]
push ecx
push edx
jmp 0x441059
lea eax, [esp + 0x670]
jmp 0x44104d
push 0x7ffe
lea edx, [esp + 0x874]
push edi
push edx
call fcn.004937a4
add esp, 0xc
xor eax, eax
mov word [esp + 0x1086c], ax
lea eax, [esp + 0x870]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x440e73
sub eax, edx
sar eax, 1
je 0x440e9e
cmp word [esp + eax*2 + 0x86e], 0x5c
lea eax, [esp + eax*2 + 0x870]
je 0x440e9e
mov ecx, 0x5c
mov word [eax], cx
lea edx, [esp + 0x870]
push edx
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 6
ja case.0x440c42.0
jmp dword [eax*4 + 0x441110]
mov eax, dword [esp + 0x10]
push 1
push 0
push 0xffffffffffffffff
push 0x4aea14
push eax
jmp 0x441059
push 1
push 0
push 0xffffffffffffffff
push str.Removable
jmp 0x441054
mov edx, dword [esp + 0x10]
push 1
push 0
push 0xffffffffffffffff
push 0x4ae9e8
push edx
jmp 0x441059
mov eax, dword [esp + 0x10]
push 1
push 0
push 0xffffffffffffffff
push 0x4ae9f4
push eax
jmp 0x441059
push 1
push 0
push 0xffffffffffffffff
push str.CDROM
jmp 0x441054
mov edx, dword [esp + 0x10]
push 1
push 0
push 0xffffffffffffffff
push str.RAMDisk
push edx
jmp 0x441059
push 0x7ffe
lea eax, [esp + 0x874]
push edi
push eax
call fcn.004937a4
add esp, 0xc
xor ecx, ecx
lea eax, [esp + 0x870]
mov word [esp + 0x1086c], cx
lea edx, [eax + 2]
lea ebx, [ebx]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x440f60
sub eax, edx
sar eax, 1
je 0x440f8b
cmp word [esp + eax*2 + 0x86e], 0x5c
lea eax, [esp + eax*2 + 0x870]
je 0x440f8b
mov edx, 0x5c
mov word [eax], dx
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x880]
push ecx
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceW]
test eax, eax
je 0x440fb5
xor eax, eax
jmp 0x440fc0
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x15
ja case.0x440fc7.1
movzx edx, byte [eax + 0x441140]
jmp dword [edx*4 + 0x44112c]
mov eax, dword [esp + 0x10]
push 1
push 0
push 0xffffffffffffffff
push str.Ready
push eax
jmp 0x441059
push 1
push 0
push 0xffffffffffffffff
push str.Invalid
jmp 0x441054
mov edx, dword [esp + 0x10]
push 1
push 0
push 0xffffffffffffffff
push str.NotReady
push edx
jmp 0x441059
mov eax, dword [esp + 0x10]
push 1
push 0
push 0xffffffffffffffff
push str.ReadOnly
push eax
jmp 0x441059
push 1
push 0
push 0xffffffffffffffff
push 0x4aea14
jmp 0x441054
cmp word [edi], 0
jne 0x44107e
push 0
push 0x80
lea edx, [esp + 0x178]
push edx
push str.status_cdaudio_mode
call dword [sym.imp.WINMM.dll_mciSendStringW]
test eax, eax
jne case.0x440c42.0
lea eax, [esp + 0x170]
push 1
push 0
push 0xffffffffffffffff
push eax
mov ecx, dword [esp + 0x20]
push ecx
call fcn.0047a5f0
mov edx, dword [0x4cbd60]
push 1
push 0
push 0xffffffffffffffff
push 0x4a4930
push edx
call fcn.0047a5f0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push edi
push str.open__s_type_cdaudio_alias_cd_wait_shareable
mov esi, 0x100
lea edi, [esp + 0x478]
call fcn.004772c0
mov esi, dword [sym.imp.WINMM.dll_mciSendStringW]
add esp, 8
push 0
push 0
push 0
mov eax, edi
push eax
call esi
test eax, eax
jne case.0x440c42.0
push eax
push 0x80
lea ecx, [esp + 0x178]
push ecx
push str.status_cd_mode
call esi
push 0
push 0
push 0
push str.close_cd_wait
mov edi, eax
call esi
test edi, edi
je 0x441046
mov edx, dword [ebp + 8]
push edx
call fcn.00432f70
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4