Function at 0x180137880
Capabilities:
Get disk information

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
push rdi
sub rsp, 0x20
mov rdi, rdx
mov rsi, rcx
call fcn.180131830
mov rbx, qword [rax]
test rbx, rbx
je 0x1801378d0
mov qword [rsp + 0x30], rbp
xor ebp, ebp
nop dword [rax]
cmp dword [rbx + 0x28], ebp
je 0x1801378c2
mov rcx, qword [rbx + 0x18]
call qword [sym.imp.KERNEL32.dll_FlushFileBuffers]
mov dword [rbx + 0x28], ebp
mov rbx, qword [rbx + 0x20]
test rbx, rbx
jne 0x1801378b0
mov rbp, qword [rsp + 0x30]
lea rdx, str.native
mov rcx, rsi
call sym.tcl86t.dll_hcl_FSGetInternalRep
xor r8d, r8d
mov rdx, rdi
mov rcx, rax
mov rbx, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
jmp 0x180137900
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x3c0]
sub rsp, 0x4c0
mov rax, qword [0x18018f008]
xor rax, rsp
mov qword [rbp + 0x3b0], rax
xor r15d, r15d
mov dword [rsp + 0x58], r8d
mov rsi, rdx
mov qword [rsp + 0x30], r15
mov dword [rsp + 0x28], 0x2200000
xor r9d, r9d
mov edx, 0x80000000
mov dword [rsp + 0x50], 1
lea r8d, [r15 + 7]
mov dword [rsp + 0x20], 3
mov r12, rcx
mov r14d, r15d
mov r13d, r15d
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov rbx, rax
cmp rax, 0xffffffffffffffff
je 0x180137ab3
lea rdx, [rbp + 0x40]
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetFileInformationByHandle]
mov rcx, rbx
cmp eax, 1
je 0x1801379df
call qword [sym.imp.KERNEL32.dll_GetFileType]
mov rcx, rbx
mov r13d, eax
call qword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [r13 - 1]
cmp ecx, 1
jbe 0x1801379c5
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__errno]
mov dword [rax], 2
lea rax, [r15 - 1]
jmp 0x180137e43
mov qword [rbp + 0x40], r14
mov r9, r15
mov qword [rbp + 0x60], r14
mov r10, r15
mov qword [rbp + 0x68], r14
mov rdx, r15
jmp 0x180137a83
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [rbp + 0x4c]
movabs r8, 0xfe624e212ac18000
mov r14d, dword [rbp + 0x70]
movabs r11, 0xd6bf94d5e57a42bd
mov dword [rsp + 0x40], eax
mov eax, dword [rbp + 0x50]
mov dword [rsp + 0x44], eax
mov eax, dword [rbp + 0x54]
mov dword [rsp + 0x48], eax
mov eax, dword [rbp + 0x58]
mov dword [rsp + 0x4c], eax
mov eax, dword [rbp + 0x44]
mov dword [rsp + 0x50], eax
mov eax, dword [rbp + 0x48]
mov dword [rsp + 0x54], eax
mov rax, r11
mov rcx, qword [rsp + 0x50]
add rcx, r8
imul rcx
lea r9, [rcx + rdx]
mov rcx, qword [rsp + 0x48]
add rcx, r8
sar r9, 0x17
add r8, qword [rsp + 0x40]
mov rax, r9
shr rax, 0x3f
add r9, rax
mov rax, r11
imul rcx
mov rax, r11
lea r10, [rcx + rdx]
imul r8
sar r10, 0x17
add rdx, r8
mov rcx, r10
sar rdx, 0x17
mov rax, rdx
shr rcx, 0x3f
shr rax, 0x3f
add r10, rcx
add rdx, rax
mov qword [rsi + 0x20], rdx
mov qword [rsi + 0x28], r10
mov qword [rsi + 0x30], r9
mov eax, dword [rbp + 0x64]
mov ecx, dword [rbp + 0x60]
mov edi, dword [rbp + 0x40]
shl rcx, 0x20
or rcx, rax
mov eax, dword [rbp + 0x68]
or r14d, dword [rbp + 0x6c]
mov qword [rsi + 0x18], rcx
mov dword [rsp + 0x50], eax
jmp 0x180137be4
lea r8, [rbp + 0x40]
xor edx, edx
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_GetFileAttributesExW]
cmp eax, 1
je 0x180137b29
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x20
jne 0x180137af1
lea rdx, [rbp + 0x160]
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov rcx, rax
cmp rax, 0xffffffffffffffff
jne 0x180137b04
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, eax
call sym.tcl86t.dll_hclWinConvertError
mov rax, 0xffffffffffffffff
jmp 0x180137e43
movaps xmm0, xmmword [rbp + 0x160]
movaps xmm1, xmmword [rbp + 0x170]
mov eax, dword [rbp + 0x180]
movups xmmword [rbp + 0x40], xmm0
mov dword [rbp + 0x60], eax
movups xmmword [rbp + 0x50], xmm1
call qword [sym.imp.KERNEL32.dll_FindClose]
mov eax, dword [rbp + 0x60]
movabs r8, 0xfe624e212ac18000
mov ecx, dword [rbp + 0x5c]
movabs r11, 0xd6bf94d5e57a42bd
mov edi, dword [rbp + 0x40]
shl rcx, 0x20
or rcx, rax
mov eax, dword [rbp + 0x4c]
mov dword [rsp + 0x40], eax
mov eax, dword [rbp + 0x50]
mov dword [rsp + 0x44], eax
mov rax, r11
mov qword [rsi + 0x18], rcx
mov rcx, qword [rsp + 0x40]
add rcx, r8
imul rcx
add rdx, rcx
sar rdx, 0x17
mov rax, rdx
shr rax, 0x3f
add rdx, rax
mov eax, dword [rbp + 0x54]
mov dword [rsp + 0x40], eax
mov eax, dword [rbp + 0x58]
mov dword [rsp + 0x44], eax
mov rax, r11
mov rcx, qword [rsp + 0x40]
mov qword [rsi + 0x20], rdx
add rcx, r8
imul rcx
add rdx, rcx
sar rdx, 0x17
mov rax, rdx
shr rax, 0x3f
add rdx, rax
mov eax, dword [rbp + 0x44]
mov dword [rsp + 0x40], eax
mov eax, dword [rbp + 0x48]
mov dword [rsp + 0x44], eax
mov rax, r11
mov rcx, qword [rsp + 0x40]
mov qword [rsi + 0x28], rdx
add rcx, r8
imul rcx
add rdx, rcx
sar rdx, 0x17
mov rax, rdx
shr rax, 0x3f
add rdx, rax
mov qword [rsi + 0x30], rdx
lea r9, [rsp + 0x40]
mov edx, 0x104
lea r8, [rbp + 0x160]
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_GetFullPathNameW]
lea rax, [rsp + 0x70]
mov dword [rsp + 0x68], r15d
mov rbx, 0xffffffffffffffff
mov qword [rsp + 0x60], rax
mov rax, rbx
mov dword [rsp + 0x6c], 0xc8
mov byte [rsp + 0x70], r15b
lea rcx, [rbp + 0x160]
nop dword [rax + rax]
inc rax
cmp word [rcx + rax*2], r15w
jne 0x180137c30
lea r8, [rsp + 0x60]
mov edx, eax
lea rcx, [rbp + 0x160]
call sym.tcl86t.dll_hcl_UniCharToUtfDString
mov r15, rax
movzx eax, byte [rax]
cmp al, 0x5c
jne 0x180137d6a
cmp byte [r15 + 1], al
jne 0x180137d6a
lea rcx, [r15 + 2]
mov edx, 0x5c
call qword [sym.imp.VCRUNTIME140.dll_strchr]
mov edx, 0x5c
lea rcx, [rax + 1]
call qword [sym.imp.VCRUNTIME140.dll_strchr]
test rax, rax
jne 0x180137caa
lea r8d, [rax + 1]
lea rdx, [0x180163090]
lea rcx, [rsp + 0x60]
call sym.tcl86t.dll_hcl_DStringAppend
mov r15, rax
movsxd rax, dword [rsp + 0x68]
add rax, r15
jmp 0x180137cad
inc rax
mov dword [rbp + 0x88], 0
lea rcx, [rbp + 0x90]
mov qword [rbp + 0x80], rcx
mov dword [rbp + 0x8c], 0xc8
mov byte [rbp + 0x90], 0
test r15, r15
jne 0x180137ce0
mov rax, r15
jmp 0x180137cf7
sub eax, r15d
lea r8, [rbp + 0x80]
mov edx, eax
mov rcx, r15
call sym.tcl86t.dll_hcl_UtfToUniCharDString
xor r15d, r15d
mov dword [rsp + 0x38], r15d
lea r9, [rsp + 0x48]
mov qword [rsp + 0x30], r15
xor r8d, r8d
mov qword [rsp + 0x28], r15
xor edx, edx
mov rcx, rax
mov qword [rsp + 0x20], r15
mov dword [rsp + 0x48], 0xffffffff
call qword [sym.imp.KERNEL32.dll_GetVolumeInformationW]
mov rcx, qword [rbp + 0x80]
lea rax, [rbp + 0x90]
mov ebx, dword [rsp + 0x48]
cmp rcx, rax
je 0x180137d42
call sym.tcl86t.dll_hclpFree
lea rax, [rbp + 0x90]
mov dword [rbp + 0x88], r15d
mov qword [rbp + 0x80], rax
mov dword [rbp + 0x8c], 0xc8
mov byte [rbp + 0x90], 0
jmp 0x180137d83
test al, al
je 0x180137d83
cmp byte [r15 + 1], 0x3a
jne 0x180137d83
movsx ecx, al
call sym.tcl86t.dll_hcl_UniCharToLower
movzx ebx, ax
sub ebx, 0x61
mov rcx, qword [rsp + 0x60]
lea rax, [rsp + 0x70]
cmp rcx, rax
je 0x180137d97
call sym.tcl86t.dll_hclpFree
mov rcx, r12
call fcn.180137650
cmp dword [rsp + 0x58], 0
je 0x180137db3
bt edi, 0xa
jae 0x180137db3
mov ecx, 0xa000
jmp 0x180137dc4
test dil, 0x10
mov ecx, 0x8000
mov edx, 0x4040
cmovne ecx, edx
shl edi, 7
not edi
and edi, 0x80
or edi, ecx
mov ecx, edi
bts ecx, 8
test eax, eax
je 0x180137de3
mov ecx, edi
or ecx, 0x140
mov eax, ecx
shr eax, 3
and eax, 0x38
or eax, ecx
mov ecx, eax
shr ecx, 6
and cx, 7
or cx, ax
cmp r13d, 2
jne 0x180137e0e
mov eax, 0xfff
and cx, ax
mov eax, 0x2000
jmp 0x180137e21
cmp r13d, 1
jne 0x180137e24
mov eax, 0xfff
and cx, ax
mov eax, 0x6000
or cx, ax
mov eax, dword [rsp + 0x50]
mov word [rsi + 8], ax
xor eax, eax
mov dword [rsi], ebx
mov word [rsi + 4], r14w
mov word [rsi + 6], cx
mov dword [rsi + 0xa], 0
mov dword [rsi + 0x10], ebx
mov rcx, qword [rbp + 0x3b0]
xor rcx, rsp
call fcn.180146240
mov rbx, qword [rsp + 0x510]
add rsp, 0x4c0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret