Function at 0x180037c84
Capabilities:
Get disk information
Get disk size

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x828
mov qword [rsp + 0x108], 0xfffffffffffffffe
mov rax, qword [0x1800764c0]
xor rax, rsp
mov qword [rsp + 0x810], rax
mov rdi, r9
mov r13, r8
mov ebp, edx
mov dword [rsp + 0x44], edx
mov r12, rcx
mov qword [rsp + 0x78], rcx
mov r15, qword [rsp + 0x890]
xor r14d, r14d
mov esi, r14d
mov dword [rsp + 0x40], r14d
mov rdx, r8
call fcn.180036d58
cmp eax, r14d
je 0x180037cf2
or eax, 0xffffffff
jmp 0x180038539
call qword [sym.imp.KERNEL32.dll_GetLogicalDrives]
bt eax, ebp
jae 0x180037d05
or eax, 0xffffffff
jmp 0x180038539
xor edx, edx
mov r8d, 0x2e0
lea rcx, [rsp + 0x140]
call fcn.18003eb60
mov dword [rsp + 0x3b4], 1
mov dword [rsp + 0x3c8], r14d
mov eax, dword [r15 + 0x5c]
mov dword [rsp + 0x418], eax
mov eax, dword [r15 + 0x60]
mov dword [rsp + 0x41c], eax
mov dword [rsp + 0x3a4], ebp
mov dword [rsp + 0x3a0], r14d
mov dword [rsp + 0x3c0], r14d
mov ebx, 0x48
cmp rdi, r14
je 0x180037d79
lea rcx, [rsp + 0x358]
mov rdx, rdi
mov r8, rbx
call fcn.18003e740
jmp 0x180037d81
mov dword [rsp + 0x358], r14d
mov edi, dword [r15]
cmp edi, r14d
jne 0x180037db0
cmp dword [r15 + 8], r14d
je 0x180037db0
lea rcx, [rsp + 0x3d0]
lea rdx, [r15 + 0x14]
mov r8, rbx
call fcn.18003e740
mov dword [rsp + 0x3cc], 1
jmp 0x180037db8
mov dword [rsp + 0x3cc], r14d
mov dword [rsp + 0x3ac], edi
mov eax, dword [r15 + 4]
mov dword [rsp + 0x3b0], eax
mov eax, dword [r15 + 0xc]
mov dword [rsp + 0x3bc], eax
mov dword [rsp + 0x3b8], 1
mov qword [rsp + 0x130], 0xf
mov qword [rsp + 0x128], r14
mov byte [rsp + 0x118], r14b
xor eax, eax
or rbx, 0xffffffffffffffff
mov rcx, rbx
mov rdi, r13
repne scasb al, byte [rdi]
not rcx
lea r8, [rcx - 1]
mov rdx, r13
lea rcx, [rsp + 0x110]
call fcn.1800023b4
nop
xor r8d, r8d
lea rdx, [0x180062970]
lea rcx, [rsp + 0x110]
call fcn.18000a004
cmp rax, r14
jne 0x180037ea8
mov r9, rbx
lea r8d, [rbx + 5]
lea rdx, [rsp + 0x50]
lea rcx, [rsp + 0x110]
call fcn.18000a0e0
nop
mov r9, rbx
xor r8d, r8d
mov rdx, rax
lea rcx, [rsp + 0x110]
call fcn.1800020ec
nop
cmp qword [rsp + 0x70], 0x10
jb 0x180037e81
mov rcx, qword [rsp + 0x58]
call fcn.18003c660
lea r8, [rsp + 0x118]
cmp qword [rsp + 0x130], 0x10
cmovae r8, qword [rsp + 0x118]
mov edx, 0x104
mov rcx, r13
call fcn.18003e380
xor r8d, r8d
lea rdx, str.Volume
lea rcx, [rsp + 0x110]
call fcn.18000a004
cmp rax, r14
jne 0x180038287
mov r9, qword [rsp + 0x128]
cmp r9, 2
jb 0x180037f44
lea rcx, [r9 - 2]
cmp rcx, rbx
cmova rcx, rbx
lea rdx, [rsp + 0x118]
mov rdi, qword [rsp + 0x118]
mov r8, qword [rsp + 0x130]
cmp r8, 0x10
cmovae rdx, rdi
add rdx, rcx
movzx ecx, word [0x180062980]
cmp byte [rdx], 0x7d
jne 0x180037f15
cmp word [rdx], cx
je 0x180037f2f
lea rax, [rsp + 0x118]
cmp r8, 0x10
cmovae rax, rdi
cmp rdx, rax
je 0x180037f44
dec rdx
jmp 0x180037f0b
lea rax, [rsp + 0x118]
cmp r8, 0x10
cmovae rax, rdi
sub rdx, rax
jmp 0x180037f47
mov rdx, rbx
lea rax, [r9 - 2]
cmp rdx, rax
jne 0x180038287
dec r9
xor r8d, r8d
lea rdx, [rsp + 0x50]
lea rcx, [rsp + 0x110]
call fcn.18000a0e0
cmp qword [rax + 0x20], 0x10
jb 0x180037f79
mov rcx, qword [rax + 8]
jmp 0x180037f7d
lea rcx, [rax + 8]
mov r8d, 0x104
mov rdx, r13
call qword [sym.imp.KERNEL32.dll_QueryDosDeviceA]
cmp eax, r14d
setne dil
cmp qword [rsp + 0x70], 0x10
jb 0x180037fa5
mov rcx, qword [rsp + 0x58]
call fcn.18003c660
cmp dil, r14b
je 0x180038260
mov byte [rsp + 0x28], r14b
mov byte [rsp + 0x20], 1
mov r9b, 1
mov r8b, r9b
mov rdx, r12
lea rcx, [rsp + 0xb0]
call fcn.180037000
nop
mov rax, qword [rsp + 0xc8]
mov r12, rax
mov r14, qword [rsp + 0xd0]
cmp rax, r14
jbe 0x180037ffc
call fcn.18003c608
mov r14, qword [rsp + 0xd0]
mov rax, qword [rsp + 0xc8]
mov rcx, qword [rsp + 0xb0]
mov qword [rsp + 0x48], rcx
mov rbp, rcx
cmp rax, r14
jbe 0x180038023
call fcn.18003c608
mov rcx, qword [rsp + 0xb0]
mov qword [rsp + 0x48], rcx
xor edi, edi
cmp rbp, rdi
je 0x18003802f
cmp rbp, rcx
je 0x180038034
call fcn.18003c608
cmp r12, r14
je 0x180038245
cmp rbp, rdi
jne 0x18003804c
call fcn.18003c608
mov rdx, rdi
jmp 0x180038050
mov rdx, qword [rbp]
cmp r12, qword [rdx + 0x20]
jb 0x18003805b
call fcn.18003c608
mov rdx, r12
lea rcx, [rsp + 0x420]
call fcn.180038560
nop
cmp byte [rsp + 0x422], dil
jne 0x1800381d3
lea rdx, [rsp + 0x478]
lea rcx, [rsp + 0xe0]
call fcn.18003794c
nop
or esi, 1
mov dword [rsp + 0x40], esi
cmp qword [rax + 0x20], 8
jb 0x1800380a4
mov rdx, qword [rax + 8]
jmp 0x1800380a8
lea rdx, [rax + 8]
lea r8, [rsp + 0x600]
mov rcx, qword [rsp + 0x78]
call fcn.180036e8c
cmp eax, edi
je 0x180038137
mov qword [rsp + 0xa0], 0xf
mov qword [rsp + 0x98], rdi
mov byte [rsp + 0x88], dil
xor eax, eax
mov rcx, rbx
mov rdi, r13
repne scasb al, byte [rdi]
not rcx
lea r8, [rcx - 1]
mov rdx, r13
lea rcx, [rsp + 0x80]
call fcn.1800023b4
nop
or esi, 2
mov dword [rsp + 0x40], esi
lea rdx, [rsp + 0x80]
lea rcx, [rsp + 0x50]
call fcn.18003794c
nop
or esi, 4
mov dword [rsp + 0x40], esi
lea rdx, [rsp + 0x600]
mov rcx, rax
call fcn.18001e83c
xor edi, edi
cmp al, dil
je 0x180038137
mov dil, 1
test sil, 4
je 0x180038169
and esi, 0xfffffffb
cmp qword [rsp + 0x70], 8
jb 0x180038152
mov rcx, qword [rsp + 0x58]
call fcn.18003c660
mov qword [rsp + 0x70], 7
xor eax, eax
mov qword [rsp + 0x68], rax
mov word [rsp + 0x58], ax
jmp 0x18003816b
xor eax, eax
test sil, 2
je 0x1800381a9
and esi, 0xfffffffd
cmp qword [rsp + 0xa0], 0x10
jb 0x18003818e
mov rcx, qword [rsp + 0x88]
call fcn.18003c660
xor eax, eax
mov qword [rsp + 0xa0], 0xf
mov qword [rsp + 0x98], rax
mov byte [rsp + 0x88], al
test sil, 1
je 0x1800381cc
and esi, 0xfffffffe
cmp qword [rsp + 0x100], 8
jb 0x1800381cc
mov rcx, qword [rsp + 0xe8]
call fcn.18003c660
xor eax, eax
cmp dil, al
jne 0x18003820f
xor edi, edi
lea rcx, [rsp + 0x420]
call fcn.1800369ec
cmp rbp, rdi
jne 0x1800381ef
call fcn.18003c608
mov rdx, rdi
jmp 0x1800381f3
mov rdx, qword [rbp]
cmp r12, qword [rdx + 0x20]
jb 0x1800381fe
call fcn.18003c608
add r12, 0xc8
mov rcx, qword [rsp + 0x48]
jmp 0x180038025
lea r8, [rsp + 0x480]
cmp qword [rsp + 0x498], 0x10
cmovae r8, qword [rsp + 0x480]
mov edx, 0x104
mov rcx, r13
call fcn.18003e380
nop
lea rcx, [rsp + 0x420]
call fcn.1800369ec
nop
lea rcx, [rsp + 0xb0]
call fcn.180039008
mov ebp, dword [rsp + 0x44]
mov r12, qword [rsp + 0x78]
xor r14d, r14d
jmp 0x180038287
lea r8, [rsp + 0x118]
cmp qword [rsp + 0x130], 0x10
cmovae r8, qword [rsp + 0x118]
mov edx, 0x104
mov rcx, r13
call fcn.18003e380
lea r8, [rsp + 0x44]
mov rdx, r13
lea rcx, [rsp + 0x150]
call fcn.180037a2c
cmp dword [rsp + 0x44], r14d
jne 0x18003840b
xor r8d, r8d
lea rdx, [0x180061fe0]
lea rcx, [rsp + 0x110]
call fcn.18000a004
cmp rax, r14
jne 0x18003835a
mov r9, rbx
mov r8d, 1
lea rdx, [rsp + 0xe0]
lea rcx, [rsp + 0x110]
call fcn.18000a0e0
nop
mov r8, rax
lea rdx, [0x180062984]
lea rcx, [rsp + 0x50]
call fcn.18003195c
cmp qword [rax + 0x20], 0x10
jb 0x180038307
mov r8, qword [rax + 8]
jmp 0x18003830b
lea r8, [rax + 8]
mov edx, 0x104
lea rcx, [rsp + 0x150]
call fcn.18003e380
cmp qword [rsp + 0x70], 0x10
jb 0x18003832f
mov rcx, qword [rsp + 0x58]
call fcn.18003c660
mov qword [rsp + 0x70], 0xf
mov qword [rsp + 0x68], r14
mov byte [rsp + 0x58], r14b
cmp qword [rsp + 0x100], 0x10
jb 0x18003835a
mov rcx, qword [rsp + 0xe8]
call fcn.18003c660
mov r8d, 0x103
lea rdx, [rsp + 0x4f0]
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_GetVolumePathNameA]
cmp eax, r14d
je 0x18003840b
lea rax, [rsp + 0x40]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x40]
lea r8, [rsp + 0x44]
lea rdx, [rsp + 0x40]
lea rcx, [rsp + 0x4f0]
call qword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceA]
mov ecx, dword [rsp + 0x3a8]
cmp eax, r14d
cmovne ecx, dword [rsp + 0x44]
mov dword [rsp + 0x3a8], ecx
cmp dword [rsp + 0x3ac], r14d
jne 0x18003840b
mov dword [rsp + 0x38], r14d
mov qword [rsp + 0x30], r14
lea rax, [rsp + 0x48]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x40]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0x4f0]
call qword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
cmp eax, r14d
je 0x18003840b
mov eax, dword [rsp + 0x48]
shr eax, 0x13
and eax, 1
mov dword [rsp + 0x3ac], eax
lea rcx, [rsp + 0x150]
call qword [sym.imp.KERNEL32.dll_lstrlenA]
cmp eax, r14d
jne 0x180038435
lea rdx, [0x18005f470]
lea rcx, [rsp + 0x150]
call qword [sym.imp.KERNEL32.dll_lstrcpyW]
jmp 0x180038444
mov edx, eax
lea rcx, [rsp + 0x150]
call fcn.180036ce8
cmp dword [r15 + 0x10], r14d
je 0x180038499
mov r9d, 4
lea r8, [rsp + 0x3c4]
lea rdx, [0x180062988]
lea rcx, [rsp + 0x150]
call fcn.18003e4a0
cmp eax, 1
jne 0x18003847a
mov dword [rsp + 0x3c0], eax
jmp 0x180038499
cmp qword [rsp + 0x130], 0x10
jb 0x180038492
mov rcx, qword [rsp + 0x118]
call fcn.18003c660
mov eax, ebx
jmp 0x180038539
mov qword [rsp + 0x38], r14
lea rax, [rsp + 0xa8]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], 0x2e0
lea rax, [rsp + 0x140]
mov qword [rsp + 0x20], rax
mov r9d, 0x2e0
lea r8, [rsp + 0x140]
mov edx, 0x22200c
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
cmp eax, r14d
je 0x18003851f
mov edi, dword [rsp + 0x140]
cmp edi, r14d
jne 0x180038503
xor r8d, r8d
mov edx, ebp
mov ecx, 0x8000
call fcn.180037ae4
mov edi, dword [rsp + 0x140]
cmp qword [rsp + 0x130], 0x10
jb 0x18003851b
mov rcx, qword [rsp + 0x118]
call fcn.18003c660
mov eax, edi
jmp 0x180038539
cmp qword [rsp + 0x130], 0x10
jb 0x180038537
mov rcx, qword [rsp + 0x118]
call fcn.18003c660
mov eax, ebx
mov rcx, qword [rsp + 0x810]
xor rcx, rsp
call fcn.18003c1a0
add rsp, 0x828
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret