Function at 0x463d97
Capabilities:
Get disk information

Disassembly:
push ebp
lea ebp, [esp - 0x1c8]
sub esp, 0x248
mov eax, dword [0x4f3bd0]
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.00475420
mov eax, dword [0x4bcc0c]
mov dword [ebp + 0x1bc], eax
mov eax, dword [0x4bcc10]
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 0x463e41
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.00404da7
add esp, 0xc
xor eax, eax
jmp 0x463f6f
lea eax, [ebp - 0x50]
push eax
push ebx
lea eax, [ebp - 0x4c]
push eax
mov dword [ebp - 0x50], edi
call fcn.004637b7
mov eax, dword [ebp - 0x50]
cmp eax, edi
jbe 0x463e68
lea eax, [ebp + eax*2 - 0x4e]
cmp word [eax], 0x5c
jne 0x463e68
xor ecx, ecx
mov word [eax], cx
push edi
push edi
push 3
push edi
push 3
push SysReAllocStringLen
lea eax, [ebp - 0x4c]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x58], eax
cmp eax, 0xffffffff
jne 0x463e98
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp - 0x4c]
push eax
push str.CreateFile_VolumeName__s_failed__err___d
jmp 0x463e32
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 0x463f5a
mov esi, dword [sym.imp.KERNEL32.dll_GetLastError]
call esi
cmp eax, 0xea
jne 0x463f49
mov eax, dword [ebp - 0x80]
cmp eax, 1
jbe 0x463f49
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 0x463f63
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 0x463f23
mov eax, dword [ebp - 0x60]
cmp eax, edi
je 0x463f36
mov ecx, dword [ebp - 0x50]
mov ecx, dword [ecx + 8]
mov dword [eax], ecx
jmp 0x463f36
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS_failed__err___d
call fcn.00404da7
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 0x463f63
call esi
push eax
push str.IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS_failed__err___d
call fcn.00404da7
pop ecx
pop ecx
jmp 0x463f63
cmp esi, edi
je 0x463f63
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.0047549a
add ebp, 0x1c8
leave
ret 8