Function at 0x140010ba0
Capabilities:
Enumerate disk volumes
Get disk information
Get volume information via ioctl

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x358
mov rbx, qword [sym.imp.libssp_0.dll___stack_chk_guard]
mov edx, 0x100
mov rax, qword [rbx]
mov qword [rsp + 0x348], rax
xor eax, eax
lea r14, [rsp + 0x140]
mov rsi, rcx
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_FindFirstVolumeA]
mov qword [rsp + 0x50], rax
cmp rax, 0xffffffffffffffff
je 0x140011499
lea rax, [rsp + 0x250]
mov qword [rsp + 0x88], rsi
mov qword [rsp + 0x60], rax
lea rax, [rsp + 0x98]
mov qword [rsp + 0x48], rax
lea rax, [rsp + 0x97]
mov qword [rsp + 0x58], 0
mov qword [rsp + 0x68], rax
nop word [rax + rax]
mov rdi, qword [rsp + 0x60]
mov ecx, 0x1e
xor edx, edx
xor r8d, r8d
movabs rax, 0x6e776f6e6b6e55
mov qword [rsp + 0x248], rdx
mov r9, qword [rsp + 0x48]
mov qword [rsp + 0x240], rax
xor eax, eax
mov rdx, qword [rsp + 0x68]
rep stosq qword [rdi], rax
mov rcx, r14
mov qword [rsp + 0xa0], 0
mov dword [rdi], 0
mov byte [rdi + 4], 0
call qword [sym.imp.KERNEL32.dll_GetVolumePathNamesForVolumeNameA]
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xea
jne 0x140010ee0
mov eax, dword [rsp + 0x98]
lea ecx, [rax + 1]
call sym.g_malloc
mov r9, qword [rsp + 0x48]
mov r8d, dword [rsp + 0x98]
mov rcx, r14
mov r15, rax
mov rdx, rax
call qword [sym.imp.KERNEL32.dll_GetVolumePathNamesForVolumeNameA]
test eax, eax
je 0x140010ff0
lea rsi, [rsp + 0x240]
xor r9d, r9d
lea rbx, [rsp + 0x120]
mov dword [rsp + 0x38], 0x20
mov qword [rsp + 0x30], rbx
mov r8d, 0x105
mov rdx, rsi
mov rcx, r14
mov qword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
call qword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
test eax, eax
je 0x1400112d0
mov ecx, 0x58
call sym.g_malloc0
mov rcx, r14
mov rbp, rax
call sym.g_strdup
mov rcx, rbx
mov qword [rbp], rax
call sym.g_strdup
cmp byte [r15], 0
mov qword [rbp + 0x10], rax
je 0x140011320
mov rcx, r15
call sym.g_strdup
mov qword [rbp + 8], rax
mov rcx, r14
mov qword [rsp + 0xc0], 0
call sym.g_strdup
lea rdx, [0x140089e26]
mov rcx, rax
mov qword [rsp + 0x70], rax
mov rsi, rax
call sym.g_str_has_suffix
test eax, eax
je 0x140010d8e
mov rcx, rsi
call sym.strlen
mov byte [rsi + rax - 1], 0
mov rsi, qword [rsp + 0x70]
lea r8, str.opening__s
mov edx, pe_nt_image_headers64
xor ecx, ecx
mov r9, rsi
call sym.g_log
xor r9d, r9d
mov r8d, 1
xor edx, edx
mov qword [rsp + 0x30], 0
mov rcx, rsi
mov dword [rsp + 0x28], 0
mov dword [rsp + 0x20], 3
call qword [sym.imp.KERNEL32.dll_CreateFileA]
mov qword [rsp + 0x78], rax
cmp rax, 0xffffffffffffffff
je 0x140011408
lea r8, str.getting_disk_extents
mov edx, pe_nt_image_headers64
xor ecx, ecx
call sym.g_log
mov ecx, 0x20
lea rsi, [rsp + 0xb8]
call sym.g_malloc0
xor r9d, r9d
xor r8d, r8d
mov qword [rsp + 0x30], rsi
mov dword [rsp + 0x28], 0x20
mov rcx, qword [rsp + 0x78]
mov rdi, rax
mov edx, 0x560000
mov qword [rsp + 0x38], 0
mov rbx, qword [sym.imp.KERNEL32.dll_DeviceIoControl]
mov qword [rsp + 0x20], rax
call rbx
test eax, eax
jne 0x140011090
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xea
je 0x140011040
cmp eax, 1
jne 0x1400113c0
lea r8, str.volume_not_on_disk
mov edx, pe_nt_image_headers64
xor ecx, ecx
call sym.g_log
mov ecx, 0x58
call sym.g_malloc0
mov rcx, qword [rsp + 0x70]
mov byte [rax + 0x38], 1
mov rbx, rax
call sym.g_strdup
lea r8, [rsp + 0xc0]
mov rdx, rbx
mov ecx, 0xffffffff
mov qword [rbx + 0x40], rax
call dbg.get_single_disk_info
mov r13, qword [rsp + 0xc0]
test r13, r13
jne 0x140011380
mov ecx, 0x10
call sym.g_malloc
mov qword [rax + 8], rbx
mov r8, rax
mov qword [rax], 0
jmp 0x14001115d
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rbx, str.failed_to_get_volume_name
xor ebp, ebp
lea rcx, [rsp + 0xa0]
mov qword [rsp + 0x28], rbx
lea r9, str.build_guest_fsinfo
mov r8d, 0x468
lea rdx, str..._qga_commands_win32.c
mov dword [rsp + 0x20], eax
call dbg.error_setg_win32_internal
mov rcx, qword [rsp + 0xa0]
test rcx, rcx
je 0x140010fc8
call sym.error_get_pretty
xor ecx, ecx
mov edx, pe_nt_image_headers64
lea r8, str.failed_to_get_filesystem_info__ignoring_error:__s
mov r9, rax
call sym.g_log
mov rcx, qword [rsp + 0xa0]
call sym.error_free
mov rcx, qword [rsp + 0x50]
mov r8d, 0x100
mov rdx, r14
call qword [sym.imp.KERNEL32.dll_FindNextVolumeA]
test eax, eax
jne 0x140010c30
mov rsi, qword [rsp + 0x88]
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x12
jne 0x140011340
mov rcx, qword [rsp + 0x50]
call qword [sym.imp.KERNEL32.dll_FindVolumeClose]
mov rsi, qword [sym.imp.libssp_0.dll___stack_chk_guard]
mov rax, qword [rsp + 0x348]
sub rax, qword [rsi]
jne 0x1400114d9
mov rax, qword [rsp + 0x58]
add rsp, 0x358
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov ecx, 0x10
call sym.g_malloc
mov rsi, qword [rsp + 0x58]
mov qword [rax + 8], rbp
mov qword [rax], rsi
mov qword [rsp + 0x58], rax
jmp 0x140010f52
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdi, str.failed_to_get_volume_name
lea rcx, [rsp + 0xa0]
mov r8d, 0x46f
mov qword [rsp + 0x28], rdi
lea r9, str.build_guest_fsinfo
lea rdx, str..._qga_commands_win32.c
mov dword [rsp + 0x20], eax
call dbg.error_setg_win32_internal
xor ebp, ebp
mov rcx, r15
call sym.g_free
jmp 0x140010f19
mov rcx, rdi
call sym.g_free
mov ecx, 0x20
call sym.g_malloc0
xor r9d, r9d
xor r8d, r8d
mov qword [rsp + 0x30], rsi
mov dword [rsp + 0x28], 0x20
mov rcx, qword [rsp + 0x78]
mov rdi, rax
mov edx, 0x560000
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x20], rax
call rbx
test eax, eax
je 0x140011457
nop word [rax + rax]
mov r9d, dword [rdi]
lea r8, str.Number_of_extents:__lu
mov edx, pe_nt_image_headers64
xor ecx, ecx
call sym.g_log
mov eax, dword [rdi]
test eax, eax
je 0x14001144c
lea r9, [rsp + 0xc0]
mov qword [rsp + 0x80], rbp
xor r12d, r12d
xor esi, esi
mov r13, r9
jmp 0x1400110f2
mov ecx, 0x10
add esi, 1
call sym.g_malloc
mov qword [rax + 8], rbx
mov r8, rax
mov qword [rax], r12
cmp esi, dword [rdi]
jae 0x140011330
mov r12, rax
mov ecx, 0x58
call sym.g_malloc0
lea rcx, str..PhysicalDrive_lu
mov rbx, rax
mov byte [rax + 0x38], 1
movsxd rax, esi
lea rax, [rax + rax*2]
lea rbp, [rdi + rax*8]
mov edx, dword [rbp + 8]
call sym.g_strdup_printf
mov ecx, dword [rbp + 8]
mov r8, r13
mov rdx, rbx
mov qword [rbx + 0x40], rax
call dbg.get_single_disk_info
mov rbp, qword [rsp + 0xc0]
test rbp, rbp
je 0x1400110d0
mov r13, rbp
lea rcx, [rsp + 0xa0]
mov rbp, qword [rsp + 0x80]
mov rdx, r13
mov r13, rbx
call sym.error_propagate
mov r8, r12
mov qword [rsp + 0x80], r8
mov rcx, qword [rsp + 0x78]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov r8, qword [rsp + 0x80]
mov rcx, r13
mov qword [rsp + 0x78], r8
call dbg.qapi_free_GuestDiskAddress
mov rcx, rdi
call sym.g_free
mov rcx, qword [rsp + 0x70]
call sym.g_free
mov r8, qword [rsp + 0x78]
lea rcx, [0x140089ed3]
mov qword [rbp + 0x50], r8
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
lea rdx, str.GetDiskFreeSpaceExA
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
je 0x140011210
lea rdx, [rsp + 0xa8]
lea r9, [rsp + 0xb8]
mov rcx, r14
lea r8, [rsp + 0xb0]
call rax
test eax, eax
je 0x140011210
movq xmm0, qword [rsp + 0xb8]
mov rax, qword [rsp + 0xb0]
movhps xmm0, qword [rsp + 0xa8]
mov qword [rbp + 0x28], rax
movups xmmword [rbp + 0x18], xmm0
jmp 0x140011029
mov qword [rsp + 0x30], 0
xor r9d, r9d
mov r8d, 7
mov rcx, r14
mov dword [rsp + 0x28], 0x2000000
mov edx, pe_nt_image_headers64
mov dword [rsp + 0x20], 3
call qword [sym.imp.KERNEL32.dll_CreateFileA]
mov rbx, rax
cmp rax, 0xffffffffffffffff
je 0x140011029
lea r9, [rsp + 0xc0]
xor r8d, r8d
mov rcx, rbx
mov qword [rsp + 0x38], 0
lea rax, [rsp + 0x9c]
mov qword [rsp + 0x20], r9
mov edx, 0x90064
xor r9d, r9d
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], 0x60
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x1400112bd
mov eax, dword [rsp + 0xec]
mov rdx, qword [rsp + 0xd0]
imul rdx, rax
imul rax, qword [rsp + 0xd8]
mov qword [rbp + 0x28], rdx
movq xmm0, rax
punpcklqdq xmm0, xmm0
movups xmmword [rbp + 0x18], xmm0
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x140011029
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x15
je 0x140011027
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rbx, str.failed_to_get_volume_info
lea rcx, [rsp + 0xa0]
mov r8d, 0x477
mov qword [rsp + 0x28], rbx
lea r9, str.build_guest_fsinfo
lea rdx, str..._qga_commands_win32.c
mov dword [rsp + 0x20], eax
call dbg.error_setg_win32_internal
jmp 0x140011027
mov rcx, rsi
call sym.g_strdup
jmp 0x140010d4e
mov r13, rbp
mov rbp, qword [rsp + 0x80]
jmp 0x14001115d
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdi, str.failed_to_find_next_volume
mov rcx, rsi
lea r9, global___func__.27
mov qword [rsp + 0x28], rdi
mov r8d, 0x4c8
lea rdx, str..._qga_commands_win32.c
mov dword [rsp + 0x20], eax
call dbg.error_setg_win32_internal
jmp 0x140010f85
mov rcx, r13
mov r13, rbx
call sym.error_get_pretty
lea r8, str.failed_to_get_disk_info__ignoring_error:__s
mov edx, pe_nt_image_headers64
xor ecx, ecx
mov r9, rax
call sym.g_log
mov rcx, qword [rsp + 0xc0]
call sym.error_free
xor r8d, r8d
jmp 0x14001115d
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rbx, str.failed_to_get_disk_extents
xor r13d, r13d
mov r8d, 0x3c8
mov qword [rsp + 0x28], rbx
lea rcx, [rsp + 0xa0]
lea r9, str.build_guest_disk_info
mov dword [rsp + 0x20], eax
lea rdx, str..._qga_commands_win32.c
call dbg.error_setg_win32_internal
xor r8d, r8d
jmp 0x14001115d
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rsi, str.failed_to_open_volume
xor edi, edi
xor r13d, r13d
mov qword [rsp + 0x28], rsi
mov r8d, 0x3a0
lea rcx, [rsp + 0xa0]
lea r9, str.build_guest_disk_info
mov dword [rsp + 0x20], eax
lea rdx, str..._qga_commands_win32.c
call dbg.error_setg_win32_internal
xor r8d, r8d
jmp 0x140011178
xor r8d, r8d
xor r13d, r13d
jmp 0x14001115d
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rbx, str.failed_to_get_disk_extents
xor r13d, r13d
mov r8d, 0x3b3
mov qword [rsp + 0x28], rbx
lea rcx, [rsp + 0xa0]
lea r9, str.build_guest_disk_info
mov dword [rsp + 0x20], eax
lea rdx, str..._qga_commands_win32.c
call dbg.error_setg_win32_internal
xor r8d, r8d
jmp 0x14001115d
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rbx, str.failed_to_find_any_volume
mov rcx, rsi
lea r9, global___func__.27
mov qword [rsp + 0x28], rbx
mov r8d, 0x4b7
lea rdx, str..._qga_commands_win32.c
mov dword [rsp + 0x20], eax
call dbg.error_setg_win32_internal
mov qword [rsp + 0x58], 0
jmp 0x140010f90
call sym.__stack_chk_fail
nop
nop