Function at 0x2d9e3c9f70
Capabilities:
Get storage device properties

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rsi
mov qword [rsp + 0x18], rdi
push rbp
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x80
mov rax, qword [0x2d9e415008]
xor rax, rsp
mov qword [rbp - 0x10], rax
xor eax, eax
lea rcx, [0x2d9e409788]
xor r15d, r15d
mov qword [rbp - 0x40], rax
mov qword [rbp - 0x38], rax
mov ebx, r15d
mov qword [rbp - 0x28], r15
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov rcx, rax
lea rdx, [0x2d9e409798]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
or rsi, 0xffffffffffffffff
mov r14, rax
test rax, rax
je 0x2d9e3ca17b
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov ecx, 0x52534d42
call r14
mov edi, eax
test eax, eax
je 0x2d9e3ca17b
mov ecx, edi
call fcn.2d9e3da838
mov qword [rbp - 0x28], rax
mov r13, rax
test rax, rax
je 0x2d9e3ca17b
mov r9d, edi
mov r8, rax
xor edx, edx
mov ecx, 0x52534d42
call r14
mov r8d, dword [r13 + 4]
lea rcx, [r13 + 8]
lea edx, [rax - 8]
cmp r8d, edx
jne 0x2d9e3ca17b
mov edx, r15d
test r8d, r8d
je 0x2d9e3ca17b
cmp byte [rcx], 1
je 0x2d9e3ca06b
movzx eax, byte [rcx + 1]
add rcx, rax
cmp word [rcx], bx
je 0x2d9e3ca05b
inc rcx
cmp word [rcx], bx
jne 0x2d9e3ca053
add rcx, 2
inc edx
cmp edx, r8d
jb 0x2d9e3ca042
jmp 0x2d9e3ca17b
movzx edx, byte [rcx + 4]
test dl, dl
je 0x2d9e3ca0dc
movzx ebx, byte [rcx + 1]
add rbx, rcx
cmp dl, 1
jbe 0x2d9e3ca0a7
nop
cmp byte [rbx], r15b
je 0x2d9e3ca0ac
mov rax, rsi
nop dword [rax + rax]
inc rax
cmp byte [rbx + rax], r15b
jne 0x2d9e3ca090
inc rbx
add dl, 0xff
add rbx, rax
cmp dl, 1
ja 0x2d9e3ca080
cmp byte [rbx], r15b
jne 0x2d9e3ca0b1
mov rbx, r15
jmp 0x2d9e3ca0dc
mov rdx, rsi
inc rdx
cmp byte [rbx + rdx], r15b
jne 0x2d9e3ca0b4
test rdx, rdx
je 0x2d9e3ca0dc
mov r8, rbx
movzx eax, byte [r8]
sub al, 0x20
cmp al, 0x5e
jbe 0x2d9e3ca0d3
mov byte [r8], 0x2e
inc r8
sub rdx, 1
jne 0x2d9e3ca0c5
movzx eax, byte [r13 + 2]
mov edx, 0x100
movzx r8d, byte [r13 + 1]
movsx edx, dx
imul r8d, edx
add r8w, ax
mov eax, 0x206
cmp r8w, ax
jl 0x2d9e3ca173
movzx eax, byte [rcx + 0xb]
mov byte [rbp - 0x40], al
movzx eax, byte [rcx + 0xa]
mov byte [rbp - 0x3f], al
movzx eax, byte [rcx + 9]
mov byte [rbp - 0x3e], al
movzx eax, byte [rcx + 8]
mov byte [rbp - 0x3d], al
movzx eax, byte [rcx + 0xd]
mov byte [rbp - 0x3c], al
movzx eax, byte [rcx + 0xc]
mov byte [rbp - 0x3b], al
movzx eax, byte [rcx + 0xf]
mov byte [rbp - 0x3a], al
movzx eax, byte [rcx + 0xe]
mov byte [rbp - 0x39], al
movzx eax, byte [rcx + 0x10]
mov byte [rbp - 0x38], al
movzx eax, byte [rcx + 0x11]
mov byte [rbp - 0x37], al
movzx eax, byte [rcx + 0x12]
mov byte [rbp - 0x36], al
movzx eax, byte [rcx + 0x13]
mov byte [rbp - 0x35], al
movzx eax, byte [rcx + 0x14]
mov byte [rbp - 0x34], al
movzx eax, byte [rcx + 0x15]
mov byte [rbp - 0x33], al
movzx eax, byte [rcx + 0x16]
mov byte [rbp - 0x32], al
movzx eax, byte [rcx + 0x17]
mov byte [rbp - 0x31], al
jmp 0x2d9e3ca17b
movups xmm0, xmmword [rcx + 8]
movups xmmword [rbp - 0x40], xmm0
mov ecx, 0x2000
call fcn.2d9e3da838
mov r12, rax
mov rdi, r15
test rax, rax
je 0x2d9e3ca22c
xor edx, edx
mov r8d, 0x2000
mov rcx, rax
call fcn.2d9e3e3840
xor eax, eax
mov qword [rsp + 0x30], r15
mov qword [rbp - 0x20], rax
lea rcx, [0x2d9e4097c0]
mov dword [rsp + 0x28], r15d
xor r9d, r9d
mov edx, 0x80000000
mov dword [rbp - 0x30], r15d
lea r8d, [rax + 3]
mov qword [rbp - 0x1c], rax
mov dword [rbp - 0x20], r15d
mov dword [rsp + 0x20], 3
call qword [sym.imp.KERNEL32.dll_CreateFileA]
mov r14, rax
cmp rax, 0xffffffffffffffff
je 0x2d9e3ca22c
mov qword [rsp + 0x38], r15
lea rax, [rbp - 0x30]
mov qword [rsp + 0x30], rax
lea r8, [rbp - 0x20]
mov dword [rsp + 0x28], 0x2000
mov r9d, 0xc
mov edx, 0x2d1400
mov qword [rsp + 0x20], r12
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
mov rcx, r14
cmovne rdi, r12
call qword [sym.imp.KERNEL32.dll_CloseHandle]
test rbx, rbx
je 0x2d9e3ca243
mov rax, rsi
cmp byte [rbx + rax + 1], r15b
lea rax, [rax + 1]
jne 0x2d9e3ca234
lea r15d, [rax + 1]
test rdi, rdi
je 0x2d9e3ca2bf
mov eax, dword [rdi + 0xc]
test eax, eax
je 0x2d9e3ca265
lea rcx, [r12 + rax]
mov rax, rsi
inc rax
cmp byte [rcx + rax], 0
jne 0x2d9e3ca256
inc r15d
add r15d, eax
mov eax, dword [rdi + 0x10]
test eax, eax
je 0x2d9e3ca282
lea rcx, [r12 + rax]
mov rax, rsi
inc rax
cmp byte [rcx + rax], 0
jne 0x2d9e3ca273
inc r15d
add r15d, eax
mov eax, dword [rdi + 0x14]
test eax, eax
je 0x2d9e3ca29f
lea rcx, [r12 + rax]
mov rax, rsi
inc rax
cmp byte [rcx + rax], 0
jne 0x2d9e3ca290
inc r15d
add r15d, eax
mov eax, dword [rdi + 0x18]
test eax, eax
je 0x2d9e3ca2bf
lea rcx, [r12 + rax]
mov rax, rsi
nop dword [rax]
inc rax
cmp byte [rcx + rax], 0
jne 0x2d9e3ca2b0
inc r15d
add r15d, eax
mov r13d, r15d
lea rcx, [r13 + 0x28]
call fcn.2d9e3da838
mov r14, rax
test rax, rax
je 0x2d9e3ca452
lea r8, [r13 + 0x28]
xor edx, edx
mov rcx, rax
call fcn.2d9e3e3840
mov dword [r14], r15d
mov ecx, 0x28
movups xmm0, xmmword [rbp - 0x40]
movups xmmword [r14 + 4], xmm0
test rbx, rbx
je 0x2d9e3ca32e
mov rdx, r14
mov dword [r14 + 0x14], ecx
sub rdx, rbx
mov rcx, rbx
nop dword [rax + rax]
movzx eax, byte [rcx]
mov byte [rcx + rdx + 0x28], al
lea rcx, [rcx + 1]
test al, al
jne 0x2d9e3ca310
mov rcx, rsi
inc rcx
cmp byte [rbx + rcx], 0
jne 0x2d9e3ca322
add ecx, 0x29
test rdi, rdi
je 0x2d9e3ca452
cmp dword [rdi + 0xc], 0
je 0x2d9e3ca37d
mov dword [r14 + 0x18], ecx
mov edx, dword [rdi + 0xc]
add rdx, r12
mov r8d, ecx
add r8, r14
nop dword [rax]
movzx eax, byte [rdx]
lea rdx, [rdx + 1]
mov byte [r8], al
lea r8, [r8 + 1]
test al, al
jne 0x2d9e3ca350
mov edx, dword [rdi + 0xc]
mov rax, rsi
add rdx, r12
nop dword [rax + rax]
inc rax
cmp byte [rdx + rax], 0
jne 0x2d9e3ca370
inc ecx
add ecx, eax
cmp dword [rdi + 0x10], 0
je 0x2d9e3ca3cd
mov dword [r14 + 0x1c], ecx
mov edx, dword [rdi + 0x10]
add rdx, r12
mov r8d, ecx
add r8, r14
nop dword [rax]
nop word [rax + rax]
movzx eax, byte [rdx]
lea rdx, [rdx + 1]
mov byte [r8], al
lea r8, [r8 + 1]
test al, al
jne 0x2d9e3ca3a0
mov edx, dword [rdi + 0x10]
mov rax, rsi
add rdx, r12
nop dword [rax + rax]
inc rax
cmp byte [rdx + rax], 0
jne 0x2d9e3ca3c0
inc ecx
add ecx, eax
cmp dword [rdi + 0x14], 0
je 0x2d9e3ca41d
mov dword [r14 + 0x20], ecx
mov edx, dword [rdi + 0x14]
add rdx, r12
mov r8d, ecx
add r8, r14
nop dword [rax]
nop word [rax + rax]
movzx eax, byte [rdx]
lea rdx, [rdx + 1]
mov byte [r8], al
lea r8, [r8 + 1]
test al, al
jne 0x2d9e3ca3f0
mov eax, dword [rdi + 0x14]
add rax, r12
nop dword [rax + rax]
inc rsi
cmp byte [rax + rsi], 0
jne 0x2d9e3ca410
inc ecx
add ecx, esi
cmp dword [rdi + 0x18], 0
je 0x2d9e3ca452
mov dword [r14 + 0x24], ecx
mov edx, dword [rdi + 0x18]
add rdx, r12
mov r8d, ecx
add r8, r14
nop dword [rax]
nop word [rax + rax]
movzx eax, byte [rdx]
lea rdx, [rdx + 1]
mov byte [r8], al
lea r8, [r8 + 1]
test al, al
jne 0x2d9e3ca440
test r12, r12
je 0x2d9e3ca45f
mov rcx, r12
call fcn.2d9e3da7f4
mov rax, qword [rbp - 0x28]
test rax, rax
je 0x2d9e3ca470
mov rcx, rax
call fcn.2d9e3da7f4
mov rax, r14
mov rcx, qword [rbp - 0x10]
xor rcx, rsp
call fcn.2d9e3da7d0
lea r11, [rsp + 0x80]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x38]
mov rdi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret