Function at 0x1400034f6
Capabilities:
Enumerate disk properties

Disassembly:
push rbp
push rbx
sub rsp, 0x98
lea rbp, [rsp + 0x90]
mov r9d, 2
mov r8d, 0
mov edx, 0
mov rax, qword [0x140041030]
mov rcx, rax
mov rax, qword [sym.imp.SETUPAPI.dll_SetupDiGetClassDevsA]
call rax
mov qword [rbp - 8], rax
cmp qword [rbp - 8], 0xffffffffffffffff
jne 0x140003581
lea rax, str.Error_getting_device_information:
mov rdx, rax
mov rax, qword [sym.imp.libstdc_6.dll_std::cerr]
mov rcx, rax
call sym.std::basic_ostream_char__std::char_traits_char____std::operator____std::char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rbx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
mov rcx, rbx
call sym.std::ostream::operator___unsigned_long_
mov rcx, rax
mov rax, qword [0x1400410b0]
mov rdx, rax
call sym.std::ostream::operator___std::ostream____std::ostream__
mov eax, 0
jmp 0x1400037e6
mov dword [rbp - 0x40], 0x20
lea rdx, [rbp - 0x40]
mov rax, qword [rbp - 8]
mov r8, rdx
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
call rax
test eax, eax
sete al
test al, al
je 0x140003608
lea rax, str.Error_enumerating_device_info:
mov rdx, rax
mov rax, qword [sym.imp.libstdc_6.dll_std::cerr]
mov rcx, rax
call sym.std::basic_ostream_char__std::char_traits_char____std::operator____std::char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rbx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
mov rcx, rbx
call sym.std::ostream::operator___unsigned_long_
mov rcx, rax
mov rax, qword [0x1400410b0]
mov rdx, rax
call sym.std::ostream::operator___std::ostream____std::ostream__
mov rax, qword [rbp - 8]
mov rcx, rax
mov rax, qword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
call rax
mov eax, 0
jmp 0x1400037e6
lea rdx, [rbp - 0x40]
mov rax, qword [rbp - 8]
lea rcx, [rbp - 0x44]
mov qword [rsp + 0x30], rcx
mov dword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
mov r9d, 0
mov r8d, 0xc
mov rcx, rax
mov rax, qword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyW]
call rax
mov eax, dword [rbp - 0x44]
mov ebx, eax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcessHeap]
call rax
mov r8, rbx
mov edx, 8
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_HeapAlloc]
call rax
mov qword [rbp - 0x10], rax
cmp qword [rbp - 0x10], 0
jne 0x1400036ca
lea rax, str.Memory_allocation_error:
mov rdx, rax
mov rax, qword [sym.imp.libstdc_6.dll_std::cerr]
mov rcx, rax
call sym.std::basic_ostream_char__std::char_traits_char____std::operator____std::char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rbx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
mov rcx, rbx
call sym.std::ostream::operator___unsigned_long_
mov rcx, rax
mov rax, qword [0x1400410b0]
mov rdx, rax
call sym.std::ostream::operator___std::ostream____std::ostream__
mov rax, qword [rbp - 8]
mov rcx, rax
mov rax, qword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
call rax
mov eax, 0
jmp 0x1400037e6
mov ecx, dword [rbp - 0x44]
lea rdx, [rbp - 0x40]
mov rax, qword [rbp - 8]
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], ecx
mov rcx, qword [rbp - 0x10]
mov qword [rsp + 0x20], rcx
mov r9d, 0
mov r8d, 0xc
mov rcx, rax
mov rax, qword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyW]
call rax
test eax, eax
sete al
test al, al
je 0x140003785
lea rax, str.Error_getting_HDD_name:
mov rdx, rax
mov rax, qword [sym.imp.libstdc_6.dll_std::cerr]
mov rcx, rax
call sym.std::basic_ostream_char__std::char_traits_char____std::operator____std::char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rbx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
mov rcx, rbx
call sym.std::ostream::operator___unsigned_long_
mov rcx, rax
mov rax, qword [0x1400410b0]
mov rdx, rax
call sym.std::ostream::operator___std::ostream____std::ostream__
mov rax, qword [sym.imp.KERNEL32.dll_GetProcessHeap]
call rax
mov rdx, qword [rbp - 0x10]
mov r8, rdx
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_HeapFree]
call rax
mov rax, qword [rbp - 8]
mov rcx, rax
mov rax, qword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
call rax
mov eax, 0
jmp 0x1400037e6
mov rax, qword [rbp - 0x10]
mov rcx, rax
mov rax, qword [sym.imp.USER32.dll_CharUpperW]
call rax
mov rax, qword [rbp - 0x10]
lea rdx, str.VBOX
mov rcx, rax
call sym.wcsstr
test rax, rax
setne al
mov byte [rbp - 0x11], al
mov rax, qword [sym.imp.KERNEL32.dll_GetProcessHeap]
call rax
mov rdx, qword [rbp - 0x10]
mov r8, rdx
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_HeapFree]
call rax
mov rax, qword [rbp - 8]
mov rcx, rax
mov rax, qword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
call rax
movzx eax, byte [rbp - 0x11]
add rsp, 0x98
pop rbx
pop rbp
ret