Function at 0x18001d338
Capabilities:
Get disk information
Get disk size
Get memory capacity

Disassembly:
mov r11, rsp
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x120
mov qword [rsp + 0x98], 0xfffffffffffffffe
mov qword [r11 + 0x18], rbx
mov rax, qword [0x18009c600]
xor rax, rsp
mov qword [rsp + 0x110], rax
mov rdi, rdx
mov r15, rcx
mov dword [r11 - 0x68], 0x20
xor r12d, r12d
mov esi, r12d
lea r8, [r11 - 0x68]
xor edx, edx
mov rcx, rdi
call qword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
or rbp, 0xffffffffffffffff
cmp eax, r12d
je 0x18001d950
lea r14d, [r12 + 7]
lea r13d, [r12 + 0xc]
mov rbx, r12
mov dword [rsp + 0x40], r12d
lea rax, [rsp + 0x40]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], r12d
mov qword [rsp + 0x20], r12
lea r9, [rsp + 0x44]
mov r8d, r14d
lea rdx, [rsp + 0xf0]
mov rcx, rdi
call qword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyA]
cmp eax, r12d
jne 0x18001d932
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x18001d449
cmp rbx, r12
je 0x18001d400
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_LocalFree]
mov edx, dword [rsp + 0x40]
mov ecx, 0x40
call qword [sym.imp.KERNEL32.dll_LocalAlloc]
mov rbx, rax
lea rax, [rsp + 0x40]
mov qword [rsp + 0x30], rax
mov eax, dword [rsp + 0x40]
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], rbx
lea r9, [rsp + 0x44]
mov r8d, r14d
lea rdx, [rsp + 0xf0]
mov rcx, rdi
call qword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyA]
cmp eax, r12d
je 0x18001d3e7
jmp 0x18001d45d
mov r8d, r14d
lea rdx, [rsp + 0xf0]
mov rcx, rdi
call qword [sym.imp.SETUPAPI.dll_SetupDiDestroyDriverInfoList]
cmp rbx, r12
je 0x18001d932
mov rdx, rbx
lea rcx, [rsp + 0x48]
call fcn.180002274
nop
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_LocalFree]
lea rdx, str.Display
mov rcx, qword [rsp + 0x48]
call fcn.180052958
cmp eax, r12d
jne 0x18001d629
lea rcx, section..data
mov rax, qword [section..data]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x90], rax
mov rbx, r12
mov dword [rsp + 0x40], r12d
lea rax, [rsp + 0x40]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], r12d
mov qword [rsp + 0x20], r12
lea r9, [rsp + 0x44]
xor r8d, r8d
lea rdx, [rsp + 0xf0]
mov rcx, rdi
call qword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyA]
cmp eax, r12d
jne 0x18001d564
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x18001d550
cmp rbx, r12
je 0x18001d507
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_LocalFree]
mov edx, dword [rsp + 0x40]
mov ecx, 0x40
call qword [sym.imp.KERNEL32.dll_LocalAlloc]
mov rbx, rax
lea rax, [rsp + 0x40]
mov qword [rsp + 0x30], rax
mov eax, dword [rsp + 0x40]
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], rbx
lea r9, [rsp + 0x44]
xor r8d, r8d
lea rdx, [rsp + 0xf0]
mov rcx, rdi
call qword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyA]
cmp eax, r12d
je 0x18001d4ee
jmp 0x18001d564
xor r8d, r8d
lea rdx, [rsp + 0xf0]
mov rcx, rdi
call qword [sym.imp.SETUPAPI.dll_SetupDiDestroyDriverInfoList]
mov rdx, rbx
lea rcx, [rsp + 0x58]
call fcn.180002274
nop
cmp rbx, r12
je 0x18001d580
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_LocalFree]
mov rax, qword [r15 + 0x10]
cmp dword [rax - 0x10], r12d
jne 0x18001d59a
mov rdx, qword [rsp + 0x58]
lea rcx, [r15 + 0x10]
call fcn.180002840
jmp 0x18001d5e5
lea r8, [rsp + 0x58]
lea rdx, [0x18007e788]
lea rcx, [rsp + 0x88]
call fcn.18001f10c
nop
mov rdx, qword [rax]
lea rcx, [r15 + 0x10]
call fcn.1800023e0
nop
mov rdx, qword [rsp + 0x88]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, ebp
cmp eax, r12d
jg 0x18001d5e5
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x58]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, ebp
cmp eax, r12d
jg 0x18001d606
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x90]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, ebp
cmp eax, r12d
jg 0x18001d629
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, str.DiskDrive
mov rcx, qword [rsp + 0x48]
call fcn.180052958
cmp eax, r12d
jne 0x18001d7c9
lea rcx, section..data
mov rax, qword [section..data]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x78], rax
mov rbx, r12
mov dword [rsp + 0x40], r12d
lea rax, [rsp + 0x40]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], r12d
mov qword [rsp + 0x20], r12
lea r9, [rsp + 0x44]
mov r8d, r13d
lea rdx, [rsp + 0xf0]
mov rcx, rdi
call qword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyA]
cmp eax, r12d
jne 0x18001d70d
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x18001d6f9
cmp rbx, r12
je 0x18001d6b0
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_LocalFree]
mov edx, dword [rsp + 0x40]
mov ecx, 0x40
call qword [sym.imp.KERNEL32.dll_LocalAlloc]
mov rbx, rax
lea rax, [rsp + 0x40]
mov qword [rsp + 0x30], rax
mov eax, dword [rsp + 0x40]
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], rbx
lea r9, [rsp + 0x44]
mov r8d, r13d
lea rdx, [rsp + 0xf0]
mov rcx, rdi
call qword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyA]
cmp eax, r12d
je 0x18001d697
jmp 0x18001d70d
mov r8d, r13d
lea rdx, [rsp + 0xf0]
mov rcx, rdi
call qword [sym.imp.SETUPAPI.dll_SetupDiDestroyDriverInfoList]
mov rdx, rbx
lea rcx, [rsp + 0x50]
call fcn.180002274
nop
cmp rbx, r12
je 0x18001d729
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_LocalFree]
mov rax, qword [r15 + 8]
cmp dword [rax - 0x10], r12d
jne 0x18001d743
mov rdx, qword [rsp + 0x50]
lea rcx, [r15 + 8]
call fcn.180002840
jmp 0x18001d788
lea r8, [rsp + 0x50]
lea rdx, [0x18007e788]
lea rcx, [rsp + 0x68]
call fcn.18001f10c
nop
mov rdx, qword [rax]
lea rcx, [r15 + 8]
call fcn.1800023e0
nop
mov rdx, qword [rsp + 0x68]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, ebp
cmp eax, r12d
jg 0x18001d788
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x50]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, ebp
cmp eax, r12d
jg 0x18001d7a9
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x78]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, ebp
cmp eax, r12d
jg 0x18001d7c9
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, str.Processor
mov rcx, qword [rsp + 0x48]
call fcn.180052958
cmp eax, r12d
jne 0x18001d912
lea rcx, section..data
mov rax, qword [section..data]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x80], rax
mov rbx, r12
mov dword [rsp + 0x40], r12d
lea rax, [rsp + 0x40]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], r12d
mov qword [rsp + 0x20], r12
lea r9, [rsp + 0x44]
mov r8d, r13d
lea rdx, [rsp + 0xf0]
mov rcx, rdi
call qword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyA]
cmp eax, r12d
jne 0x18001d89a
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x18001d89a
cmp rbx, r12
je 0x18001d853
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_LocalFree]
mov edx, dword [rsp + 0x40]
mov ecx, 0x40
call qword [sym.imp.KERNEL32.dll_LocalAlloc]
mov rbx, rax
lea rax, [rsp + 0x40]
mov qword [rsp + 0x30], rax
mov eax, dword [rsp + 0x40]
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], rbx
lea r9, [rsp + 0x44]
mov r8d, r13d
lea rdx, [rsp + 0xf0]
mov rcx, rdi
call qword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyA]
cmp eax, r12d
je 0x18001d83a
mov rdx, rbx
lea rcx, [rsp + 0x60]
call fcn.180002274
nop
cmp rbx, r12
je 0x18001d8b6
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_LocalFree]
mov rax, qword [r15]
cmp dword [rax - 0x10], r12d
jne 0x18001d8cd
mov rdx, qword [rsp + 0x60]
mov rcx, r15
call fcn.180002840
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, ebp
cmp eax, r12d
jg 0x18001d8ee
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x80]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, ebp
cmp eax, r12d
jg 0x18001d912
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x48]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, ebp
cmp eax, r12d
jg 0x18001d932
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
inc esi
lea r8, [rsp + 0xf0]
mov edx, esi
mov rcx, rdi
call qword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
cmp eax, r12d
jne 0x18001d3a9
mov rcx, rdi
call qword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
mov edi, r12d
call qword [sym.imp.KERNEL32.dll_GetLogicalDrives]
cmp eax, r12d
je 0x18001d971
test al, 1
je 0x18001d96d
inc edi
shr eax, 1
jne 0x18001d967
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetLogicalDriveStringsW]
movsxd rbx, eax
mov eax, 2
mul rbx
cmovo rax, rbp
mov rcx, rax
call fcn.18004a00c
mov rbp, rax
mov rdx, rax
mov ecx, ebx
call qword [sym.imp.KERNEL32.dll_GetLogicalDriveStringsW]
mov rsi, r12
mov rbx, rbp
mov r14d, 0xa
mov rcx, r14
call fcn.18004a00c
mov r12, rax
mov rcx, r14
call fcn.18004a00c
mov r13, rax
mov rcx, r14
call fcn.18004a00c
mov r14, rax
test edi, edi
jle 0x18001da16
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 3
jne 0x18001da0c
lea r9, [rsp + 0xa8]
lea r8, [rsp + 0x70]
lea rdx, [rsp + 0xa0]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExW]
test eax, eax
je 0x18001da06
add rsi, qword [rsp + 0x70]
add rbx, 8
jmp 0x18001da10
add rbx, 8
sub rdi, 1
jne 0x18001d9d1
mov rcx, r12
call fcn.180052b58
mov rcx, r13
call fcn.180052b58
mov rcx, r14
call fcn.180052b58
mov rcx, rbp
call fcn.180052b58
shr rsi, 0x1e
mov dword [r15 + 0x18], esi
mov dword [rsp + 0xb0], 0x40
lea rcx, [rsp + 0xb0]
call qword [sym.imp.KERNEL32.dll_GlobalMemoryStatusEx]
mov r11, qword [rsp + 0xb8]
shr r11, 0x14
mov dword [r15 + 0x1c], r11d
mov eax, 1
mov rcx, qword [rsp + 0x110]
xor rcx, rsp
call fcn.1800520e0
mov rbx, qword [rsp + 0x170]
add rsp, 0x120
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret