Function at 0x51fa7d
Capabilities:
Get disk information

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x5845e8
push eax
mov dword fs:[0], esp
sub esp, 0x130
push ebx
push ebp
push esi
mov esi, ecx
push edi
mov eax, dword [esi + 0x248]
test eax, eax
jne 0x51fb51
lea eax, [esp + 0x18]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
push ecx
push edx
call dword [sym.imp.USER32.dll_WindowFromPoint]
push eax
call sub.MFC42.DLL_CWnd::FromHandle
push 0x68
mov edi, eax
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [esp + 0x20], eax
test eax, eax
mov dword [esp + 0x148], 0
je 0x51fad9
push edi
mov ecx, eax
call fcn.00526260
jmp 0x51fadb
xor eax, eax
mov dword [esp + 0x148], 0xffffffff
mov dword [esi + 0x248], eax
call sub.MFC42.DLL_AfxGetModuleState
mov eax, dword [eax + 8]
push 0x3e7
push eax
call dword [sym.imp.USER32.dll_LoadMenuA]
mov ecx, dword [esi + 0x248]
push eax
call fcn.00526490
mov eax, dword [esi + 0x248]
mov ebx, dword [sym.imp.USER32.dll_GetSubMenu]
push 0
mov eax, dword [eax + 4]
push eax
call ebx
push eax
call sub.MFC42.DLL_CMenu::FromHandle
mov ebp, eax
mov ecx, dword [ebp + 4]
push ecx
call dword [sym.imp.USER32.dll_GetMenuItemCount]
mov edi, eax
cmp edi, 4
jle 0x51fb57
mov edx, dword [ebp + 4]
dec edi
push 0x400
push edi
push edx
call dword [sym.imp.USER32.dll_RemoveMenu]
cmp edi, 4
jg 0x51fb39
jmp 0x51fb57
mov ebx, dword [sym.imp.USER32.dll_GetSubMenu]
mov eax, dword [esi + 0x248]
push 0
mov eax, dword [eax + 4]
push eax
call ebx
push eax
call sub.MFC42.DLL_CMenu::FromHandle
mov ecx, dword [eax + 4]
push 2
push ecx
mov dword [esp + 0x28], eax
call ebx
push eax
call sub.MFC42.DLL_CMenu::FromHandle
mov ebp, eax
test ebp, ebp
je 0x51fcc9
mov edx, dword [ebp + 4]
mov edi, dword [sym.imp.USER32.dll_DeleteMenu]
push 0x400
push 0
push edx
call edi
test eax, eax
je 0x51fbaf
mov eax, dword [ebp + 4]
push 0x400
push 0
push eax
call edi
test eax, eax
jne 0x51fb9e
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::CString_3
mov dword [esp + 0x148], 1
mov dword [esp + 0x14], 0
mov dword [esp + 0x24], 0x514
mov ebx, 0x41
mov dword [esp + 0x18], 0x1a
push ebx
lea ecx, [esp + 0x14]
push 0x5d4608
push ecx
call sub.MFC42.DLL_CString::Format
mov edx, dword [esp + 0x1c]
add esp, 0xc
push edx
call dword [sym.imp.KERNEL32.DLL_GetDriveTypeA]
cmp eax, 5
jne 0x51fc82
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x3d]
mov byte [esp + 0x3c], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov edx, dword [esp + 0x10]
push 0
stosb byte es:[edi], al
lea eax, [esp + 0x2c]
push 0
push eax
push 0
push 0
lea ecx, [esp + 0x50]
push 0x104
push ecx
push edx
mov dword [esp + 0x48], 0
call dword [sym.imp.KERNEL32.DLL_GetVolumeInformationA]
test eax, eax
je 0x51fc82
lea eax, [esp + 0x3c]
push ebx
push eax
lea ecx, [esp + 0x18]
push str._s___c:_
push ecx
call sub.MFC42.DLL_CString::Format
mov edx, dword [esp + 0x20]
mov edi, dword [esp + 0x34]
mov eax, dword [ebp + 4]
add esp, 0x10
push edx
push edi
push 0
push eax
call dword [sym.imp.USER32.dll_AppendMenuA]
mov ecx, dword [esp + 0x14]
inc ecx
inc edi
mov dword [esp + 0x14], ecx
mov dword [esp + 0x24], edi
mov eax, dword [esp + 0x18]
inc ebx
dec eax
mov dword [esp + 0x18], eax
jne 0x51fbe0
mov eax, dword [esp + 0x14]
test eax, eax
jne 0x51fcaf
mov ecx, dword [esp + 0x20]
push 0x400
push 2
mov edx, dword [ecx + 4]
push edx
call dword [sym.imp.USER32.dll_RemoveMenu]
lea ecx, [esp + 0x10]
mov dword [esp + 0x148], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov ebx, dword [sym.imp.USER32.dll_GetSubMenu]
mov ecx, dword [esi + 0x58]
mov eax, dword [esi + 0x4c]
lea edx, [esp + 0x2c]
mov dword [esp + 0x30], ecx
push edx
mov ecx, esi
mov dword [esp + 0x30], eax
call sub.MFC42.DLL_CWnd::ClientToScreen
mov eax, dword [esi + 0x20]
push eax
call dword [sym.imp.USER32.dll_SetForegroundWindow]
mov ecx, dword [esi + 0x248]
push 1
call fcn.00526ce0
mov eax, dword [esi + 0x248]
push 0
mov ecx, dword [eax + 4]
push ecx
call ebx
push eax
call sub.MFC42.DLL_CMenu::FromHandle
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
push 0
push esi
push edx
push ecx
push 0x102
mov ecx, eax
call sub.MFC42.DLL_CMenu::TrackPopupMenu
mov edi, eax
call fcn.004c4010
mov edx, dword [eax + 0x20]
and edi, 0xffff
push 0
push edi
push 0x111
push edx
call dword [sym.imp.USER32.dll_SendMessageA]
mov ecx, dword [esi + 0x248]
test ecx, ecx
je 0x51fd70
call sub.MFC42.DLL_CMenu::DestroyMenu
mov ecx, dword [esi + 0x248]
test ecx, ecx
je 0x51fd66
mov eax, dword [ecx]
push 1
call dword [eax + 4]
mov dword [esi + 0x248], 0
mov ecx, dword [esp + 0x140]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x13c
ret 0xc