Function at 0x461448
Capabilities:
Get disk information

Disassembly:
push ebp
lea ebp, [esp - 0x1c8]
sub esp, 0x248
mov eax, dword [0x4ed820]
xor eax, ebp
mov dword [ebp + 0x1c4], eax
push ebx
push esi
mov esi, dword [ebp + 0x1d4]
push edi
push 8
pop ecx
xor eax, eax
lea edi, [ebp - 0x80]
rep stosd dword es:[edi], eax
push 0x206
mov word [ebp - 0x4c], ax
xor edi, edi
lea eax, [ebp - 0x4a]
push edi
push eax
mov dword [ebp - 0x60], esi
call fcn.004701a0
mov eax, dword [0x4b781c]
mov dword [ebp + 0x1bc], eax
mov eax, dword [0x4b7820]
mov dword [ebp + 0x1c0], eax
mov ax, word [ebp + 0x1d0]
add esp, 0xc
mov word [ebp + 0x1bc], ax
mov ebx, 0x104
push ebx
lea eax, [ebp - 0x4c]
push eax
lea eax, [ebp + 0x1bc]
push eax
call dword [sym.imp.KERNEL32.dll_GetVolumeNameForVolumeMountPointW]
test eax, eax
jne 0x4614f2
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp + 0x1bc]
push eax
push str.GetVolumeNameForVolumeMountPoint_failed__VolumeMountPoint__s__err___d
call fcn.00404d3e
add esp, 0xc
xor eax, eax
jmp 0x461620
lea eax, [ebp - 0x50]
push eax
push ebx
lea eax, [ebp - 0x4c]
push eax
mov dword [ebp - 0x50], edi
call fcn.00460e68
mov eax, dword [ebp - 0x50]
cmp eax, edi
jbe 0x461519
lea eax, [ebp + eax*2 - 0x4e]
cmp word [eax], 0x5c
jne 0x461519
xor ecx, ecx
mov word [eax], cx
push edi
push edi
push 3
push edi
push 3
push closesocket
lea eax, [ebp - 0x4c]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x58], eax
cmp eax, 0xffffffff
jne 0x461549
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp - 0x4c]
push eax
push str.CreateFile_VolumeName__s_failed__err___d
jmp 0x4614e3
mov ebx, dword [sym.imp.KERNEL32.dll_DeviceIoControl]
push edi
lea ecx, [ebp - 0x5c]
push ecx
push 0x20
lea ecx, [ebp - 0x80]
push ecx
push edi
push edi
push 0x560000
push eax
mov dword [ebp - 0x5c], edi
call ebx
mov dword [ebp - 0x54], eax
cmp eax, edi
jne 0x46160b
mov esi, dword [sym.imp.KERNEL32.dll_GetLastError]
call esi
cmp eax, 0xea
jne 0x4615fa
mov eax, dword [ebp - 0x80]
cmp eax, 1
jbe 0x4615fa
lea esi, [eax - 1]
imul esi, esi, 0x18
add esi, 0x20
push esi
push 8
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov dword [ebp - 0x50], eax
cmp eax, edi
je 0x461614
push edi
lea ecx, [ebp - 0x5c]
push ecx
push esi
push eax
push edi
push edi
push 0x560000
push dword [ebp - 0x58]
call ebx
mov dword [ebp - 0x54], eax
cmp eax, edi
je 0x4615d4
mov eax, dword [ebp - 0x60]
cmp eax, edi
je 0x4615e7
mov ecx, dword [ebp - 0x50]
mov ecx, dword [ecx + 8]
mov dword [eax], ecx
jmp 0x4615e7
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS_failed__err___d
call fcn.00404d3e
pop ecx
pop ecx
push dword [ebp - 0x50]
push edi
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x461614
call esi
push eax
push str.IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS_failed__err___d
call fcn.00404d3e
pop ecx
pop ecx
jmp 0x461614
cmp esi, edi
je 0x461614
mov eax, dword [ebp - 0x78]
mov dword [esi], eax
push dword [ebp - 0x58]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x54]
mov ecx, dword [ebp + 0x1c4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0047021a
add ebp, 0x1c8
leave
ret 8