Function at 0x40f060
Capabilities:
Get disk information

Disassembly:
mov rax, rsp
sub rsp, 0x168
mov qword [rsp + 0xa8], 0xfffffffffffffffe
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rbp
mov qword [rax + 0x20], rsi
mov qword [rax - 8], rdi
mov qword [rax - 0x10], r12
mov rax, qword [0x006443a8]
xor rax, rsp
mov qword [rsp + 0x140], rax
mov rsi, rcx
mov qword [rsp + 0x48], 7
xor r12d, r12d
mov qword [rsp + 0x40], r12
mov word [rsp + 0x30], r12w
xor r8d, r8d
lea edx, [r12 + 0x13]
lea rcx, [rsp + 0x28]
call fcn.005118a0
lea rcx, [rsp + 0x30]
mov rdx, qword [rsp + 0x48]
cmp rdx, 8
cmovae rcx, qword [rsp + 0x30]
add rdx, rdx
lea r9d, [r12 + 0x26]
lea r8, str.CRealVolume::Update
call fcn.00568a50
mov qword [rsp + 0x40], reloc.OLEAUT32.dll_SafeArrayGetLBound
lea rax, [rsp + 0x30]
cmp qword [rsp + 0x48], 8
cmovae rax, qword [rsp + 0x30]
mov word [rax + 0x26], r12w
lea r8d, [r12 + 2]
lea rdx, [rsp + 0x28]
lea rcx, [rsp + 0xe0]
call fcn.0044a650
nop
cmp qword [rsp + 0x48], 8
jb 0x40f139
mov rcx, qword [rsp + 0x30]
call fcn.00568830
mov qword [rsp + 0x48], 7
mov qword [rsp + 0x40], r12
mov word [rsp + 0x30], 0
mov rax, qword [rsi]
lea rdx, [rsp + 0x20]
mov rcx, rsi
call qword [rax + 0x50]
test eax, eax
jns 0x40f185
mov edx, eax
lea rcx, [rsp + 0xe0]
call fcn.00445a10
mov edi, eax
lea rcx, [rsp + 0xe0]
call fcn.0044a9c0
mov eax, edi
jmp 0x40f550
lea rcx, [rsi + 0x20]
mov r9, 0xffffffffffffffff
lea r8d, [r9 + 5]
lea rdx, [rsp + 0xb0]
call fcn.0040be90
nop
mov word [rsp + 0x24], 0
lea r8, [rsp + 0x24]
mov edx, 0x12c
lea rcx, [rsp + 0x28]
call fcn.0040e4d0
nop
mov rbp, qword [rsp + 0x38]
mov rbx, qword [rsp + 0x30]
test rbx, rbx
jne 0x40f1d2
mov rdi, r12
jmp 0x40f1dd
mov rdi, rbp
sub rdi, rbx
sar rdi, 1
jne 0x40f1e2
call fcn.0056a700
lea rcx, [rsp + 0xb8]
cmp qword [rsp + 0xd0], 8
cmovae rcx, qword [rsp + 0xb8]
lea r8d, [rdi - 1]
mov rdx, rbx
call qword [sym.imp.KERNEL32.dll_QueryDosDeviceW]
test eax, eax
jne 0x40f322
lea r8, [rsp + 0xb0]
lea rdx, str.Failed_querying_dos_device
lea rcx, [rsp + 0x80]
call fcn.0040ccb0
nop
lea r8, str._for_device_name.
mov rdx, rax
lea rcx, [rsp + 0x58]
call fcn.00405600
nop
mov r8d, 0x80000000
mov rdx, rax
lea rcx, [rsp + 0xe0]
call fcn.004493c0
nop
cmp qword [rsp + 0x78], 8
jb 0x40f26c
mov rcx, qword [rsp + 0x60]
call fcn.00568830
mov qword [rsp + 0x78], 7
mov qword [rsp + 0x70], r12
mov word [rsp + 0x60], 0
cmp qword [rsp + 0xa0], 8
jb 0x40f299
mov rcx, qword [rsp + 0x88]
call fcn.00568830
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jg 0x40f2ab
call qword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x40f2b9
call qword [sym.imp.KERNEL32.dll_GetLastError]
movzx eax, ax
or eax, 0x80070000
mov edx, eax
lea rcx, [rsp + 0xe0]
call fcn.00445a10
mov edi, eax
test rbx, rbx
je 0x40f2d8
mov rcx, rbx
call fcn.00568830
nop
cmp qword [rsp + 0xd0], 8
jb 0x40f2f0
mov rcx, qword [rsp + 0xb8]
call fcn.00568830
mov qword [rsp + 0xd0], 7
mov qword [rsp + 0xc8], r12
mov word [rsp + 0xb8], 0
lea rcx, [rsp + 0xe0]
call fcn.0044a9c0
mov eax, edi
jmp 0x40f550
test rbx, rbx
je 0x40f32f
sub rbp, rbx
sar rbp, 1
jne 0x40f334
call fcn.0056a700
xor eax, eax
mov rcx, 0xffffffffffffffff
mov rdi, rbx
repne scasw ax, word [rdi]
not rcx
lea r8, [rcx - 1]
mov rdx, rbx
lea rcx, [rsi + 0x48]
call fcn.00404ad0
movzx edx, word [rsp + 0x20]
test dx, dx
je 0x40f4d3
cmp qword [rsi + 0x98], 0
jne 0x40f4ce
mov qword [rsp + 0x50], r12
lea rcx, [rsp + 0x50]
call fcn.0040ac70
mov edi, eax
test eax, eax
jns 0x40f43c
lea r8, [rsi + 0x48]
lea rdx, str.Failed_creating_instance_of_SnapShotVolume_for
lea rcx, [rsp + 0x80]
call fcn.0040ccb0
nop
mov r8d, 0x80000000
mov rdx, rax
lea rcx, [rsp + 0xe0]
call fcn.004493c0
nop
cmp qword [rsp + 0xa0], 8
jb 0x40f3d3
mov rcx, qword [rsp + 0x88]
call fcn.00568830
mov edx, edi
lea rcx, [rsp + 0xe0]
call fcn.00445a10
mov edi, eax
test rbx, rbx
je 0x40f3f2
mov rcx, rbx
call fcn.00568830
nop
cmp qword [rsp + 0xd0], 8
jb 0x40f40a
mov rcx, qword [rsp + 0xb8]
call fcn.00568830
mov qword [rsp + 0xd0], 7
mov qword [rsp + 0xc8], r12
mov word [rsp + 0xb8], 0
lea rcx, [rsp + 0xe0]
call fcn.0044a9c0
mov eax, edi
jmp 0x40f550
mov rdx, rsi
mov rdi, qword [rsp + 0x50]
mov rcx, rdi
call fcn.0043a220
test eax, eax
jns 0x40f4b9
mov edx, eax
lea rcx, [rsp + 0xe0]
call fcn.00445a10
mov edi, eax
test rbx, rbx
je 0x40f46f
mov rcx, rbx
call fcn.00568830
nop
cmp qword [rsp + 0xd0], 8
jb 0x40f487
mov rcx, qword [rsp + 0xb8]
call fcn.00568830
mov qword [rsp + 0xd0], 7
mov qword [rsp + 0xc8], r12
mov word [rsp + 0xb8], 0
lea rcx, [rsp + 0xe0]
call fcn.0044a9c0
mov eax, edi
jmp 0x40f550
mov qword [rsi + 0x98], rdi
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov dx, word [rsp + 0x20]
test dx, dx
jne 0x40f4ec
mov rcx, qword [rsi + 0x98]
test rcx, rcx
je 0x40f4ec
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
mov qword [rsi + 0x98], r12
xor edx, edx
lea rcx, [rsp + 0xe0]
call fcn.00445a10
mov edi, eax
test rbx, rbx
je 0x40f50b
mov rcx, rbx
call fcn.00568830
nop
cmp qword [rsp + 0xd0], 8
jb 0x40f523
mov rcx, qword [rsp + 0xb8]
call fcn.00568830
mov qword [rsp + 0xd0], 7
mov qword [rsp + 0xc8], r12
mov word [rsp + 0xb8], 0
lea rcx, [rsp + 0xe0]
call fcn.0044a9c0
mov eax, edi
mov rcx, qword [rsp + 0x140]
xor rcx, rsp
call fcn.00568fb0
mov rbx, qword [rsp + 0x178]
mov rbp, qword [rsp + 0x180]
mov rsi, qword [rsp + 0x188]
mov rdi, qword [rsp + 0x160]
mov r12, qword [rsp + 0x158]
add rsp, 0x168
ret