Function at 0x140045340
Capabilities:
Get disk information

Disassembly:
mov qword [rsp + 8], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x180]
sub rsp, 0x280
mov rax, qword [0x14016a508]
xor rax, rsp
mov qword [rbp + 0x170], rax
mov rax, qword [rbp + 0x1e0]
mov rdi, r9
mov qword [rsp + 0x48], rax
mov ebx, r8d
xor eax, eax
mov qword [rsp + 0x50], r9
mov r15b, al
mov byte [rsp + 0x30], al
mov qword [rsp + 0x40], rax
mov r12b, al
mov byte [rsp + 0x32], al
mov r13d, eax
mov byte [rsp + 0x33], al
mov rsi, rdx
mov byte [rsp + 0x31], al
mov dword [rsp + 0x34], eax
mov qword [rsp + 0x38], rax
mov rcx, qword [0x14016a048]
lea rdx, [0x14016a048]
lea r14d, [rax + 1]
cmp rcx, rdx
je 0x1400453f2
test byte [rcx + 0x1c], r14b
je 0x1400453f2
cmp byte [rcx + 0x19], 4
jb 0x1400453f2
mov rcx, qword [rcx + 0x10]
lea edx, [rax + 0x5e]
lea r8, [0x14014b118]
call fcn.14000c0e8
xor eax, eax
lea rdx, [0x14016a048]
mov byte [rdi], al
mov rcx, qword [0x14016a048]
cmp rcx, rdx
je 0x140045469
test byte [rcx + 0x1c], r14b
je 0x140045432
cmp byte [rcx + 0x19], 4
jb 0x140045432
mov rcx, qword [rcx + 0x10]
lea r8, [0x14014b118]
mov edx, 0x5f
mov r9, rsi
call fcn.140014f10
mov rcx, qword [0x14016a048]
lea rdx, [0x14016a048]
cmp rcx, rdx
je 0x140045469
test byte [rcx + 0x1c], r14b
je 0x140045469
cmp byte [rcx + 0x19], 4
jb 0x140045469
mov rcx, qword [rcx + 0x10]
lea r8, [0x14014b118]
mov edx, 0x60
mov r9d, ebx
call fcn.14000c114
mov rcx, qword [0x14016a048]
lea rdx, [0x14016a048]
test rsi, rsi
jne 0x1400454ab
mov ebx, 0x80070057
cmp rcx, rdx
je 0x140045b63
test byte [rcx + 0x1c], r14b
je 0x140045b63
lea edi, [rsi + 2]
cmp byte [rcx + 0x19], dil
jb 0x140045b63
lea edx, [rsi + 0x61]
mov rcx, qword [rcx + 0x10]
lea r8, [0x14014b118]
call fcn.14000c0e8
jmp 0x140045b63
mov edi, 2
sub ebx, edi
je 0x1400454ee
sub ebx, edi
je 0x1400454e9
sub ebx, r14d
je 0x1400454e9
cmp ebx, r14d
je 0x1400454e9
mov ebx, 0x80070057
cmp rcx, rdx
je 0x140045b63
test byte [rcx + 0x1c], r14b
je 0x140045b63
cmp byte [rcx + 0x19], dil
jb 0x140045b63
lea edx, [rdi + 0x60]
jmp 0x140045496
mov r15b, r14b
jmp 0x1400454f3
mov byte [rsp + 0x30], r14b
lea r8, [rsp + 0x32]
xor edx, edx
mov rcx, rsi
call fcn.1400890b4
mov ebx, eax
xor eax, eax
test ebx, ebx
jns 0x140045572
cmp ebx, 0x8078011a
je 0x140045568
cmp ebx, 0x8078006f
je 0x140045568
cmp ebx, 0x80780071
je 0x140045568
mov rcx, qword [0x14016a048]
lea r8, [0x14016a048]
cmp rcx, r8
je 0x140045b63
test byte [rcx + 0x1c], r14b
je 0x140045b63
cmp byte [rcx + 0x19], dil
jb 0x140045b63
lea edx, [rax + 0x63]
mov rcx, qword [rcx + 0x10]
lea r8, [0x14014b118]
mov r9d, ebx
call fcn.14000c114
jmp 0x140045b63
mov ebx, 0x80780083
jmp 0x140045b63
cmp byte [rsp + 0x32], al
jne 0x140045568
mov r8d, 0x104
lea rdx, [rsp + 0x60]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetVolumePathNameW]
nop dword [rax + rax]
test eax, eax
jne 0x140045614
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
mov ebx, eax
mov rcx, qword [0x14016a048]
lea r8, [0x14016a048]
cmp rcx, r8
je 0x1400455df
test byte [rcx + 0x1c], 1
je 0x1400455df
cmp byte [rcx + 0x19], dil
jb 0x1400455df
mov rcx, qword [rcx + 0x10]
lea r8, [0x14014b118]
mov edx, 0x64
mov dword [rsp + 0x20], eax
mov r9, rsi
call fcn.14003fbc0
lea eax, [rbx - 2]
mov r14d, 1
lea rdi, [0x14016a048]
cmp eax, r14d
jbe 0x14004560a
test ebx, ebx
jle 0x140045b6a
movzx ebx, bx
or ebx, 0x80070000
jmp 0x140045b6a
mov ebx, 0x80780057
jmp 0x140045b6a
lea rcx, [rsp + 0x60]
call qword [sym.imp.KERNEL32.dll_GetDriveTypeW]
nop dword [rax + rax]
sub eax, edi
je 0x140045b58
sub eax, 1
je 0x140045675
sub eax, 1
je 0x140045653
mov r14d, 1
lea rdi, [0x14016a048]
cmp eax, r14d
jne 0x14004560a
mov ebx, 0x80780082
jmp 0x140045b6a
lea r8, [0x1401486f4]
mov edx, 0x748
lea rcx, str.base_stor_blbengine_serviceengine.cpp
call fcn.140088f60
mov ebx, 0x80780083
jmp 0x140045b5d
lea rdx, [rsp + 0x31]
lea rcx, [rsp + 0x60]
call fcn.14012e208
mov ebx, eax
xor eax, eax
test ebx, ebx
jns 0x14004572e
cmp ebx, 0x80780076
jne 0x1400456e2
mov rcx, qword [0x14016a048]
lea rax, [0x14016a048]
mov r14d, 1
cmp rcx, rax
je 0x140045782
test byte [rcx + 0x1c], r14b
je 0x140045782
cmp byte [rcx + 0x19], 4
jb 0x140045782
mov rcx, qword [rcx + 0x10]
lea edx, [r14 + 0x64]
lea r8, [0x14014b118]
call fcn.14000c0e8
jmp 0x140045782
cmp ebx, 0x80070003
jne 0x1400456f4
mov ebx, 0x8078007c
jmp 0x140045b5d
mov rcx, qword [0x14016a048]
lea rax, [0x14016a048]
mov r14d, 1
cmp rcx, rax
je 0x140045b63
test byte [rcx + 0x1c], r14b
je 0x140045b63
cmp byte [rcx + 0x19], dil
jb 0x140045b63
lea edx, [r14 + 0x65]
jmp 0x140045550
cmp byte [rsp + 0x31], al
je 0x14004577c
mov rcx, qword [0x14016a048]
lea rax, [0x14016a048]
mov r14d, 1
cmp rcx, rax
je 0x140045772
test byte [rcx + 0x1c], r14b
je 0x140045772
cmp byte [rcx + 0x19], dil
jb 0x140045772
mov rcx, qword [rcx + 0x10]
lea edx, [r14 + 0x66]
lea r9, [rsp + 0x60]
lea r8, [0x14014b118]
call fcn.140014f10
mov ebx, 0x80780077
jmp 0x140045b63
mov r14d, 1
lea r8, [rsp + 0x34]
mov dl, r14b
lea rcx, [rsp + 0x60]
call fcn.14012d4e0
xor edx, edx
mov ebx, eax
test eax, eax
jns 0x1400457ea
mov rcx, qword [0x14016a048]
lea rax, [0x14016a048]
cmp rcx, rax
je 0x140045b63
test byte [rcx + 0x1c], r14b
je 0x140045b63
cmp byte [rcx + 0x19], dil
jb 0x140045b63
mov edx, 0x68
lea r9, [rsp + 0x60]
mov rcx, qword [rcx + 0x10]
lea r8, [0x14014b118]
mov dword [rsp + 0x20], ebx
call fcn.140014f78
jmp 0x140045b63
mov eax, dword [rsp + 0x34]
bt eax, 0xb
jae 0x140045841
mov rcx, qword [0x14016a048]
lea r8, [0x14016a048]
cmp rcx, r8
je 0x14004583a
test byte [rcx + 0x1c], r14b
je 0x14004583a
cmp byte [rcx + 0x19], 4
jb 0x14004583a
mov rcx, qword [rcx + 0x10]
lea r9, [rsp + 0x60]
mov edx, 0x69
mov dword [rsp + 0x20], eax
lea r8, [0x14014b118]
call fcn.140014f78
mov rcx, qword [0x14016a048]
xor edx, edx
mov ebx, 0x807800c7
jmp 0x140045848
mov rcx, qword [0x14016a048]
or r14, 0xffffffffffffffff
test r15b, r15b
je 0x140045909
mov rax, r14
inc rax
cmp word [rsi + rax*2], dx
jne 0x140045858
cmp word [rsi + rax*2 - 2], 0x3a
jne 0x1400458a8
lea rax, [0x14016a048]
mov r14d, 1
cmp rcx, rax
je 0x14004589e
test byte [rcx + 0x1c], r14b
je 0x14004589e
cmp byte [rcx + 0x19], dil
jb 0x14004589e
mov rcx, qword [rcx + 0x10]
lea edx, [r14 + 0x69]
mov r9, rsi
lea r8, [0x14014b118]
call fcn.140014f10
mov ebx, 0x80780057
jmp 0x140045b63
mov byte [rsp + 0x31], dl
mov rcx, rsi
lea rdx, [rsp + 0x31]
call fcn.1400fc328
xor edx, edx
mov ebx, eax
test eax, eax
jns 0x1400458f9
mov rcx, qword [0x14016a048]
lea rax, [0x14016a048]
lea r14d, [rdx + 1]
cmp rcx, rax
je 0x140045b63
test byte [rcx + 0x1c], r14b
je 0x140045b63
cmp byte [rcx + 0x19], dil
jb 0x140045b63
lea edx, [r14 + 0x6a]
jmp 0x140045550
cmp byte [rsp + 0x31], dl
jne 0x140045909
mov ebx, 0x80780057
jmp 0x140045b5d
inc r14
cmp word [rsi + r14*2], dx
jne 0x140045909
mov r8, r14
lea rdx, [rsp + 0x60]
mov rcx, rsi
call qword [sym.imp.msvcrt.dll__wcsnicmp]
nop dword [rax + rax]
xor ecx, ecx
test eax, eax
movzx r14d, cl
lea eax, [rcx + 1]
cmove r14d, eax
cmp byte [rsp + 0x30], cl
je 0x140045951
test r14b, r14b
jne 0x140045951
mov ebx, 0x80780057
mov r14d, eax
jmp 0x140045b63
test r15b, r15b
je 0x140045b4e
mov byte [rsp + 0x30], cl
lea rdx, [rsp + 0x40]
mov rcx, rsi
call fcn.14008f864
mov ebx, eax
test eax, eax
jns 0x1400459ab
mov rcx, qword [0x14016a048]
lea rax, [0x14016a048]
mov r14d, 1
cmp rcx, rax
je 0x140045b63
test byte [rcx + 0x1c], r14b
je 0x140045b63
cmp byte [rcx + 0x19], dil
jb 0x140045b63
lea edx, [r14 + 0x6b]
jmp 0x140045550
mov r15, qword [rsp + 0x40]
lea rdx, [rsp + 0x30]
mov rcx, r15
call fcn.14012d090
xor ecx, ecx
mov ebx, eax
test eax, eax
jns 0x1400459ff
mov rcx, qword [0x14016a048]
lea rax, [0x14016a048]
mov r14d, 1
cmp rcx, rax
je 0x140045b63
test byte [rcx + 0x1c], r14b
je 0x140045b63
cmp byte [rcx + 0x19], dil
jb 0x140045b63
lea edx, [r14 + 0x6c]
jmp 0x140045550
cmp byte [rsp + 0x30], cl
jne 0x140045a0f
mov ebx, 0x80780084
jmp 0x140045b5d
test r15, r15
je 0x140045aad
lea rdx, [rsp + 0x38]
mov rcx, r15
call fcn.14012eda4
xor ecx, ecx
mov ebx, eax
test eax, eax
jns 0x140045a7b
mov rcx, qword [0x14016a048]
lea rdi, [0x14016a048]
cmp rcx, rdi
je 0x140045a6b
test dword [rcx + 0x1c], 0x200
je 0x140045a6b
cmp byte [rcx + 0x19], 3
jb 0x140045a6b
mov rcx, qword [rcx + 0x10]
lea r8, [0x14014b118]
mov edx, 0x6e
mov dword [rsp + 0x20], eax
mov r9, r15
call fcn.140014f78
mov r13, qword [rsp + 0x38]
mov r14d, 1
jmp 0x140045b6a
mov r13, qword [rsp + 0x38]
test r14b, r14b
je 0x140045a9d
mov rcx, r13
call fcn.14008caf0
xor ecx, ecx
test al, al
je 0x140045a9d
mov ebx, 0x80780193
jmp 0x140045b5d
mov rax, qword [rsp + 0x48]
test rax, rax
je 0x140045aad
mov qword [rax], r13
mov r13, rcx
mov byte [rsp + 0x30], cl
lea rdx, [rsp + 0x30]
mov rcx, rsi
call fcn.1400fc1a8
mov ebx, eax
xor eax, eax
test ebx, ebx
jns 0x140045af8
mov rcx, qword [0x14016a048]
lea rax, [0x14016a048]
mov r14d, 1
cmp rcx, rax
je 0x140045b63
test byte [rcx + 0x1c], r14b
je 0x140045b63
cmp byte [rcx + 0x19], dil
jb 0x140045b63
lea edx, [r14 + 0x6e]
jmp 0x140045550
cmp byte [rsp + 0x30], al
je 0x140045b05
mov ebx, 0x80780085
jmp 0x140045b5d
lea rdx, [rsp + 0x33]
mov rcx, rsi
call fcn.1400fc40c
mov ebx, eax
test eax, eax
jns 0x140045b49
mov rcx, qword [0x14016a048]
lea rax, [0x14016a048]
mov r14d, 1
cmp rcx, rax
je 0x140045b63
test byte [rcx + 0x1c], r14b
je 0x140045b63
cmp byte [rcx + 0x19], dil
jb 0x140045b63
lea edx, [r14 + 0x6f]
mov r9, rsi
jmp 0x1400457d1
mov r12b, byte [rsp + 0x33]
mov rax, qword [rsp + 0x50]
mov byte [rax], r12b
jmp 0x140045b5d
mov ebx, 0x8078012f
mov r14d, 1
lea rdi, [0x14016a048]
mov rcx, qword [rsp + 0x40]
call qword [sym.imp.ole32.dll_CoTaskMemFree]
nop dword [rax + rax]
test r13, r13
je 0x140045b8f
mov rcx, r13
call qword [sym.imp.ole32.dll_CoTaskMemFree]
nop dword [rax + rax]
mov rcx, qword [0x14016a048]
cmp rcx, rdi
je 0x140045bbc
test byte [rcx + 0x1c], r14b
je 0x140045bbc
cmp byte [rcx + 0x19], 4
jb 0x140045bbc
mov rcx, qword [rcx + 0x10]
lea r8, [0x14014b118]
mov edx, 0x71
call fcn.14000c0e8
mov eax, ebx
mov rcx, qword [rbp + 0x170]
xor rcx, rsp
call fcn.1400071e0
mov rbx, qword [rsp + 0x2c0]
add rsp, 0x280
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret