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

Disassembly:
mov qword [rsp + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r14
lea rbp, [rsp - 0x107c0]
mov eax, 0x108c0
call fcn.1400bfa50
sub rsp, rax
mov r14, rcx
mov rsi, r8
mov rcx, rdx
mov rdi, rdx
call fcn.14003c0b0
movsxd rbx, eax
cmp ebx, 9
jne 0x14004cc25
xor r8d, r8d
mov rdx, rsi
mov rcx, r14
call fcn.14004c720
add rsp, 0x108c0
pop r14
pop rdi
pop rsi
pop rbx
pop rbp
ret
mov qword [rsp + 0x108b0], r15
cmp ebx, 4
jne 0x14004cce3
mov r8d, 0x7ffe
lea rcx, [rbp + 0x7a0]
mov rdx, rsi
call fcn.1400b3da4
xor r15d, r15d
lea rcx, [rbp + 0x7a0]
mov word [rbp + 0x1079c], r15w
or rax, 0xffffffffffffffff
inc rax
cmp word [rcx + rax*2], r15w
jne 0x14004cc61
test rax, rax
je 0x14004cc8a
cmp word [rbp + rax*2 + 0x79e], 0x5c
je 0x14004cc8a
mov r14d, 0x5c
mov word [rbp + rax*2 + 0x7a0], r14w
lea rdx, [rdi + 0x12]
nop
movzx eax, word [rdx]
cmp ax, 0x20
je 0x14004cc9f
cmp ax, 9
jne 0x14004cca5
add rdx, 2
jmp 0x14004cc90
lea rcx, [rbp + 0x7a0]
call qword [sym.imp.KERNEL32.dll_SetVolumeLabelW]
lea rcx, [0x1400cefdc]
mov byte [rsp + 0x20], 1
test eax, eax
lea rdx, [0x1400e25dc]
cmovne rdx, rcx
mov rcx, qword [0x140104d40]
xor r9d, r9d
or r8, 0xffffffffffffffff
call fcn.14008f120
jmp 0x14004cf7e
mov rdi, qword [0x1401070a0]
xor r9d, r9d
mov rcx, rdi
mov qword [rsp + 0x108f8], r12
or r8, 0xffffffffffffffff
mov byte [rsp + 0x20], 1
xor edx, edx
call fcn.14008f120
cmp ebx, 8
ja case.0x14004cd23.4
lea r12, sym.MZ____D3_.0Rb__hqjOe_e5e_JE_S3G_n____Y1_H
mov eax, dword [r12 + rbx*4 + 0x4d258]
add rax, r12
jmp rax
xor r15d, r15d
cmp word [rsi], r15w
jne 0x14004cd38
mov ebx, 0x100
jmp 0x14004cdca
lea rdx, str.CDRom
mov rcx, rsi
call fcn.1400ab8c0
test eax, eax
jne 0x14004cd50
lea ebx, [rax + 5]
jmp 0x14004cdca
lea rdx, str.Removable
mov rcx, rsi
call fcn.1400ab8c0
test eax, eax
jne 0x14004cd68
lea ebx, [rax + 2]
jmp 0x14004cdca
lea rdx, str.Fixed
mov rcx, rsi
call fcn.1400ab8c0
test eax, eax
jne 0x14004cd80
lea ebx, [rax + 3]
jmp 0x14004cdca
lea rdx, str.Network
mov rcx, rsi
call fcn.1400ab8c0
test eax, eax
jne 0x14004cd98
lea ebx, [rax + 4]
jmp 0x14004cdca
lea rdx, str.Ramdisk
mov rcx, rsi
call fcn.1400ab8c0
test eax, eax
jne 0x14004cdb0
lea ebx, [rax + 6]
jmp 0x14004cdca
lea rdx, str.Unknown
mov rcx, rsi
call fcn.1400ab8c0
test eax, eax
jne case.0x14004cd23.0
mov ebx, r15d
mov qword [rsp + 0x108b8], r13
lea r12, [rsp + 0x60]
mov r13d, r15d
mov sil, 0x41
nop dword [rax]
movzx eax, sil
lea rcx, [rbp - 0x60]
mov word [rbp - 0x60], ax
mov dword [rbp - 0x5e], 0x5c003a
mov word [rbp - 0x5a], r15w
call qword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, ebx
je 0x14004ce0f
cmp ebx, 0x100
jne 0x14004ce1f
cmp eax, 1
je 0x14004ce1f
movzx eax, sil
inc r13d
mov word [r12], ax
add r12, 2
inc sil
cmp sil, 0x5a
jbe 0x14004cde0
movsxd rax, r13d
lea rdx, [rsp + 0x60]
xor r9d, r9d
mov byte [rsp + 0x20], 1
or r8, 0xffffffffffffffff
mov rcx, rdi
mov word [rsp + rax*2 + 0x60], r15w
call fcn.14008f120
mov r13, qword [rsp + 0x108b8]
cmp word [rsp + 0x60], r15w
jne case.0x14004cd23.4
mov rcx, qword [rbp + 0x107f0]
call fcn.14003c5b0
jmp 0x14004cf76
mov r8d, 0x7ffe
lea rcx, [rbp + 0x7a0]
mov rdx, rsi
call fcn.1400b3da4
xor r15d, r15d
lea rcx, [rbp + 0x7a0]
mov word [rbp + 0x1079c], r15w
or rax, 0xffffffffffffffff
nop word [rax + rax]
inc rax
cmp word [rcx + rax*2], r15w
jne 0x14004cea0
test rax, rax
je 0x14004cec9
cmp word [rbp + rax*2 + 0x79e], 0x5c
je 0x14004cec9
mov r14d, 0x5c
mov word [rbp + rax*2 + 0x7a0], r14w
mov dword [rsp + 0x38], 0xff
lea rax, [rbp + 0x3a0]
mov qword [rsp + 0x30], rax
lea r9, [rbp + 0x10808]
lea rax, [rsp + 0x40]
mov r8d, 0xff
mov qword [rsp + 0x28], rax
lea rdx, [rbp + 0x1a0]
lea rax, [rsp + 0x44]
lea rcx, [rbp + 0x7a0]
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_GetVolumeInformationW]
test eax, eax
je case.0x14004cd23.0
sub ebx, 2
je 0x14004cf94
sub ebx, 1
je 0x14004cf3c
cmp ebx, 2
jne case.0x14004cd23.4
mov edx, dword [rbp + 0x10808]
mov r8b, reloc.OLEAUT32.dll_SafeArrayGetElement
mov rcx, rdi
call fcn.140001280
jmp case.0x14004cd23.4
xor r9d, r9d
mov byte [rsp + 0x20], 1
or r8, 0xffffffffffffffff
lea rdx, [rbp + 0x1a0]
mov rcx, rdi
call fcn.14008f120
mov rcx, qword [0x140104d40]
lea rdx, [0x1400cefdc]
xor r9d, r9d
mov byte [rsp + 0x20], 1
or r8, 0xffffffffffffffff
call fcn.14008f120
mov r12, qword [rsp + 0x108f8]
mov r15, qword [rsp + 0x108b0]
add rsp, 0x108c0
pop r14
pop rdi
pop rsi
pop rbx
pop rbp
ret
xor r9d, r9d
mov byte [rsp + 0x20], 1
or r8, 0xffffffffffffffff
lea rdx, [rbp + 0x3a0]
jmp 0x14004cf4f
mov r8d, 0x7ffe
lea rcx, [rbp + 0x7a0]
mov rdx, rsi
call fcn.1400b3da4
xor r15d, r15d
lea rcx, [rbp + 0x7a0]
mov word [rbp + 0x1079c], r15w
or rax, 0xffffffffffffffff
inc rax
cmp word [rcx + rax*2], r15w
jne 0x14004cfd4
test rax, rax
je 0x14004cffd
cmp word [rbp + rax*2 + 0x79e], 0x5c
je 0x14004cffd
mov r14d, 0x5c
mov word [rbp + rax*2 + 0x7a0], r14w
lea rcx, [rbp + 0x7a0]
call qword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 6
ja case.0x14004cd23.0
mov eax, eax
mov ecx, dword [r12 + rax*4 + 0x4d27c]
add rcx, r12
jmp rcx
xor r9d, r9d
mov byte [rsp + 0x20], 1
or r8, 0xffffffffffffffff
lea rdx, str.Unknown
jmp 0x14004cf4f
xor r9d, r9d
mov byte [rsp + 0x20], 1
or r8, 0xffffffffffffffff
lea rdx, str.Removable
jmp 0x14004cf4f
xor r9d, r9d
mov byte [rsp + 0x20], 1
or r8, 0xffffffffffffffff
lea rdx, str.Fixed
jmp 0x14004cf4f
xor r9d, r9d
mov byte [rsp + 0x20], 1
or r8, 0xffffffffffffffff
lea rdx, str.Network
jmp 0x14004cf4f
xor r9d, r9d
mov byte [rsp + 0x20], 1
or r8, 0xffffffffffffffff
lea rdx, str.CDROM
jmp 0x14004cf4f
xor r9d, r9d
mov byte [rsp + 0x20], 1
or r8, 0xffffffffffffffff
lea rdx, str.RAMDisk
jmp 0x14004cf4f
mov r8d, 0x7ffe
lea rcx, [rbp + 0x7a0]
mov rdx, rsi
call fcn.1400b3da4
xor r15d, r15d
lea rcx, [rbp + 0x7a0]
mov word [rbp + 0x1079c], r15w
or rax, 0xffffffffffffffff
nop dword [rax]
inc rax
cmp word [rcx + rax*2], r15w
jne 0x14004d0e0
test rax, rax
je 0x14004d109
cmp word [rbp + rax*2 + 0x79e], 0x5c
je 0x14004d109
mov r14d, 0x5c
mov word [rbp + rax*2 + 0x7a0], r14w
lea rax, [rsp + 0x48]
lea r9, [rsp + 0x4c]
mov qword [rsp + 0x20], rax
lea r8, [rsp + 0x50]
lea rdx, [rsp + 0x54]
lea rcx, [rbp + 0x7a0]
call qword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceW]
test eax, eax
jne 0x14004d18b
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
je 0x14004d18b
xor r9d, r9d
mov byte [rsp + 0x20], 1
or r8, 0xffffffffffffffff
mov rcx, rdi
cmp eax, 3
je 0x14004d17f
cmp eax, 0x13
je 0x14004d173
cmp eax, 0x15
je 0x14004d167
lea rdx, str.Unknown
jmp 0x14004cf52
lea rdx, str.NotReady
jmp 0x14004cf52
lea rdx, str.ReadOnly
jmp 0x14004cf52
lea rdx, str.Invalid
jmp 0x14004cf52
xor r9d, r9d
mov byte [rsp + 0x20], 1
or r8, 0xffffffffffffffff
lea rdx, str.Ready
jmp 0x14004cf4f
cmp word [rsi], 0
jne 0x14004d1ca
xor r9d, r9d
lea rdx, [rbp + 0xa0]
mov r8d, pe_nt_image_headers64
lea rcx, str.status_cdaudio_mode
call qword [sym.imp.WINMM.dll_mciSendStringW]
test eax, eax
jmp 0x14004d238
mov r9, rsi
lea r8, str.open__s_type_cdaudio_alias_cd_wait_shareable
mov edx, 0x100
lea rcx, [rbp + 0x5a0]
call fcn.14008b9a0
xor r9d, r9d
lea rcx, [rbp + 0x5a0]
xor r8d, r8d
xor edx, edx
call qword [sym.imp.WINMM.dll_mciSendStringW]
test eax, eax
jne case.0x14004cd23.0
xor r9d, r9d
lea rdx, [rbp + 0xa0]
mov r8d, pe_nt_image_headers64
lea rcx, str.status_cd_mode
call qword [sym.imp.WINMM.dll_mciSendStringW]
xor r9d, r9d
lea rcx, str.close_cd_wait
xor r8d, r8d
xor edx, edx
mov ebx, eax
call qword [sym.imp.WINMM.dll_mciSendStringW]
test ebx, ebx
jne case.0x14004cd23.0
xor r9d, r9d
mov byte [rsp + 0x20], 1
or r8, 0xffffffffffffffff
lea rdx, [rbp + 0xa0]
jmp 0x14004cf4f