Function at 0x48caa6
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28c
push edi
push 0x40
xor edi, edi
lea eax, [ebp - 0x18c]
push edi
push eax
mov dword [ebp - 0x1c], edi
call fcn.0049a3b0
add esp, 0xc
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_IsMenu]
test eax, eax
je 0x48cd2f
push 0x20
lea eax, [ebp - 0x18c]
push eax
push str.ext_cdda
push str.cda:__
call fcn.00427818
add esp, 0x10
test eax, eax
je 0x48cd2f
cmp word [ebp - 0x18c], 0x31
jne 0x48cd2f
push esi
mov esi, edi
push edi
lea eax, [esi + 0x9d83]
push eax
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_DeleteMenu]
inc esi
cmp esi, 5
jl 0x48cb0c
push 0xa
pop ecx
xor eax, eax
mov dword [ebp - 0x4c], 0x30
mov dword [ebp - 0x48], 0x32
lea edi, [ebp - 0x44]
rep stosd dword es:[edi], eax
mov dword [ebp - 0x3c], 0x9d83
call dword [sym.imp.KERNEL32.dll_GetLogicalDrives]
mov edx, eax
xor edi, edi
xor eax, eax
mov dword [ebp - 0xc], edx
mov ecx, eax
mov dword [0x531e90], eax
inc edi
mov dword [ebp - 8], ecx
xor eax, eax
inc eax
shl eax, cl
test edx, eax
je 0x48cd21
push 1
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
mov esi, eax
xor eax, eax
push 0x80
push eax
lea eax, [ebp - 0xfc]
push eax
call fcn.0049a3b0
xor eax, eax
push 0x80
push eax
lea eax, [ebp - 0x28c]
push eax
call fcn.0049a3b0
xor eax, eax
push 0x50
push eax
lea eax, [ebp - 0x14c]
push eax
call fcn.0049a3b0
xor eax, eax
push 0x80
push eax
lea eax, [ebp - 0x20c]
push eax
call fcn.0049a3b0
xor eax, eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x14], eax
mov al, byte [ebp - 8]
add al, 0x41
mov byte [ebp - 1], al
movsx eax, al
push eax
push str._c:_
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0xfc]
push 0x40
push eax
call fcn.0040adba
add esp, 0x40
lea eax, [ebp - 0xfc]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 5
jne 0x48cd1b
test edi, edi
je 0x48cc44
push 9
pop ecx
xor eax, eax
mov dword [ebp - 0x7c], 0x30
mov dword [ebp - 0x78], 0x12
lea edi, [ebp - 0x70]
mov dword [ebp - 0x74], 0x800
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x7c]
mov dword [ebp - 0x6c], 0x9d87
push eax
push 1
push 4
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_InsertMenuItemW]
xor ecx, ecx
mov edi, ecx
jmp 0x48cc46
xor ecx, ecx
push ecx
push ecx
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x14]
push eax
push ecx
push 0x28
lea eax, [ebp - 0x14c]
push eax
lea eax, [ebp - 0xfc]
push eax
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationW]
push esi
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
cmp word [ebp - 0x14c], 0
je 0x48cc80
lea eax, [ebp - 0x14c]
jmp 0x48cc96
push 0x40
lea eax, [ebp - 0x20c]
push eax
push 0x1e6
call fcn.00441947
add esp, 0xc
push eax
push dword [ebp - 0x18]
lea eax, [ebp - 0x28c]
push 0x40
push eax
push 0x1e5
call fcn.00441947
add esp, 0xc
push eax
lea eax, [ebp - 0xfc]
push 0x100
push eax
call fcn.0040adba
mov edx, dword [0x531e90]
add esp, 0x14
mov al, byte [ebp - 1]
mov byte [edx + 0x531e8c], al
lea eax, [ebp - 0xfc]
mov ecx, eax
mov dword [ebp - 0x28], eax
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, word [ebp - 0x1c]
jne 0x48cce2
lea eax, [ebp - 0x4c]
sub ecx, esi
push eax
push 1
lea eax, [edx + 4]
sar ecx, 1
push eax
push dword [ebp + 8]
mov dword [ebp - 0x24], ecx
call dword [sym.imp.USER32.dll_InsertMenuItemW]
mov eax, dword [0x531e90]
inc dword [ebp - 0x3c]
inc eax
mov dword [0x531e90], eax
cmp eax, 4
je 0x48cd2e
mov edx, dword [ebp - 0xc]
mov ecx, dword [ebp - 8]
inc ecx
mov dword [ebp - 8], ecx
cmp ecx, 0x20
jl 0x48cb5c
pop esi
pop edi
leave
ret