Function at 0x532280
Capabilities:
Get disk information
Get disk size
Get storage device properties
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x2f0
mov edi, dword [ebp + 8]
mov ebx, ecx
bt edx, edi
jae 0x53234b
add edi, 0x41
lea esi, [esp + 0x10]
mov word [esp + 0x10], di
mov dword [esp + 0x12], 0x5c003a
mov word [esp + 0x16], 0
push esi
call sub.kernel32.dll_GetDriveTypeW
lea ecx, [eax - 4]
cmp ecx, 0xfffffffe
jb 0x53234b
mov dword [esp + 0xc], edi
lea edi, [esp + 0xe2]
mov dword [esp + 0xd0], eax
push 0x20a
push 0
push edi
call sub.msvcrt.dll_memset
add esp, 0xc
pxor xmm0, xmm0
mov eax, esi
lea esi, [esp + 0x50]
movdqa xmmword [esp + 0x80], xmm0
movdqa xmmword [esp + 0x70], xmm0
movdqa xmmword [esp + 0x60], xmm0
movdqa xmmword [esp + 0x50], xmm0
push 0x20
push esi
push 0
push 0
push 0
push 0x105
push edi
push eax
call sub.kernel32.dll_GetVolumeInformationW
test eax, eax
je 0x53234b
xor ecx, ecx
nop dword [eax]
cmp word [esp + ecx*2 + 0xe2], 0
je 0x532359
inc ecx
cmp ecx, 0x105
jne 0x532330
mov ecx, 0x105
jmp 0x532365
mov dword [ebx], 3
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
cmp ecx, 0x106
jae 0x532652
lea eax, [esp + ecx*2 + 0xe2]
lea ecx, [esp + 0x98]
lea edx, [esp + 0xa4]
mov word [esp + 0xa4], 0
mov dword [esp + 0xa8], edi
mov dword [esp + 0xac], eax
call sym.__ZN95__LT_alloc..string..String_u20_as_u20_core..iter..traits..collect..FromIterator_LT_char_GT__GT_9from_iter17h9bcbc6b248dc
mov ecx, dword [esp + 0x98]
mov eax, dword [esp + 0xa0]
cmp word [esp + 0x50], 0
mov dword [esp + 0x34], ebx
mov dword [esp + 0x48], eax
mov dword [esp + 0x2c], ecx
je 0x532550
cmp word [esp + 0x52], 0
je 0x532564
cmp word [esp + 0x54], 0
je 0x53256e
cmp word [esp + 0x56], 0
je 0x532578
cmp word [esp + 0x58], 0
je 0x532582
cmp word [esp + 0x5a], 0
je 0x53258c
cmp word [esp + 0x5c], 0
je 0x532596
cmp word [esp + 0x5e], 0
je 0x5325a0
cmp word [esp + 0x60], 0
je 0x5325aa
cmp word [esp + 0x62], 0
je 0x5325b4
cmp word [esp + 0x64], 0
je 0x5325be
cmp word [esp + 0x66], 0
je 0x5325c8
cmp word [esp + 0x68], 0
je 0x5325d2
cmp word [esp + 0x6a], 0
je 0x5325dc
cmp word [esp + 0x6c], 0
je 0x5325e6
cmp word [esp + 0x6e], 0
je 0x5325f0
cmp word [esp + 0x70], 0
je 0x5325f7
cmp word [esp + 0x72], 0
je 0x5325fe
cmp word [esp + 0x74], 0
je 0x532605
cmp word [esp + 0x76], 0
je 0x53260c
cmp word [esp + 0x78], 0
je 0x532613
cmp word [esp + 0x7a], 0
je 0x53261a
cmp word [esp + 0x7c], 0
je 0x532621
cmp word [esp + 0x7e], 0
je 0x532628
cmp word [esp + 0x80], 0
je 0x53262f
cmp word [esp + 0x82], 0
je 0x532636
cmp word [esp + 0x84], 0
je 0x53263d
cmp word [esp + 0x86], 0
je 0x532644
cmp word [esp + 0x88], 0
je 0x53264b
cmp word [esp + 0x8a], 0
je 0x532666
cmp word [esp + 0x8c], 0
je 0x53266d
cmp word [esp + 0x8e], 1
mov edi, 0x20
sbb edi, 0
jmp 0x532672
mov dword [esp + 0x30], 0
mov ebx, 1
xor edi, edi
jmp 0x53273e
mov edi, 1
jmp 0x532672
mov edi, 2
jmp 0x532672
mov edi, 3
jmp 0x532672
mov edi, 4
jmp 0x532672
mov edi, 5
jmp 0x532672
mov edi, 6
jmp 0x532672
mov edi, 7
jmp 0x532672
mov edi, 8
jmp 0x532672
mov edi, 9
jmp 0x532672
mov edi, 0xa
jmp 0x532672
mov edi, 0xb
jmp 0x532672
mov edi, 0xc
jmp 0x532672
mov edi, 0xd
jmp 0x532672
mov edi, 0xe
jmp 0x532672
mov edi, 0xf
jmp 0x532672
mov edi, 0x10
jmp 0x532672
mov edi, 0x11
jmp 0x532672
mov edi, 0x12
jmp 0x532672
mov edi, 0x13
jmp 0x532672
mov edi, 0x14
jmp 0x532672
mov edi, 0x15
jmp 0x532672
mov edi, 0x16
jmp 0x532672
mov edi, 0x17
jmp 0x532672
mov edi, 0x18
jmp 0x532672
mov edi, 0x19
jmp 0x532672
mov edi, 0x1a
jmp 0x532672
mov edi, 0x1b
jmp 0x532672
mov edi, 0x1c
jmp 0x532672
mov edx, 0x105
push 0x5bcd04
call dbg.slice_end_index_len_fail
add esp, 4
ud2
mov edi, 0x1d
jmp 0x532672
mov edi, 0x1e
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
test eax, eax
jne 0x532694
call sub.kernel32.dll_GetProcessHeap
test eax, eax
je 0x532abc
mov dword [0x5da100], eax
push edi
push 0
push eax
call sub.kernel32.dll_HeapAlloc
test eax, eax
je 0x532abc
lea ecx, [edi - 1]
mov ebx, eax
lea eax, [esp + edi*2 + 0x50]
mov dword [esp + 0x30], edi
xor edi, edi
and ecx, 0x7fffffff
cmp ecx, 0x17
jb 0x532730
lea edx, [ecx + ebx + 1]
lea esi, [esp + 0x50]
cmp esi, edx
setb dl
cmp ebx, eax
jae 0x5326d4
test dl, dl
jne 0x532730
inc ecx
movdqa xmm0, xmmword [0x560670]
xor edx, edx
mov edi, ecx
and edi, 0xfffffff0
lea esi, [esp + edi*2 + 0x50]
nop dword [eax + eax]
movdqu xmm1, xmmword [esp + edx*2 + 0x50]
movdqu xmm2, xmmword [esp + edx*2 + 0x60]
pand xmm1, xmm0
pand xmm2, xmm0
packuswb xmm1, xmm1
packuswb xmm2, xmm2
movq qword [ebx + edx], xmm1
movq qword [ebx + edx + 8], xmm2
add edx, 0x10
cmp edi, edx
jne 0x5326f0
cmp ecx, edi
je 0x53273e
nop word cs:[eax + eax]
nop dword [eax]
movzx ecx, byte [esi]
add esi, 2
mov byte [ebx + edi], cl
inc edi
cmp esi, eax
jne 0x532730
movq xmm0, qword [str.._]
mov eax, dword [esp + 0xc]
movq qword [esp + 0xa4], xmm0
mov word [esp + 0xac], ax
mov dword [esp + 0xae], 0x3a
push 0
push 0
push 3
push 0
push 3
push 0
lea eax, [esp + 0xbc]
push eax
call sub.kernel32.dll_CreateFileW
cmp eax, 0xffffffff
je 0x532aa2
mov dword [esp + 0xc], eax
lea eax, [esp + 0x18]
lea esi, [esp + 0x38]
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
push eax
push esi
push 0
lea eax, [esp + 0x1c]
push eax
call sub.kernel32.dll_GetDiskFreeSpaceExW
test eax, eax
je 0x532a53
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov eax, ecx
or eax, edx
je 0x532a53
mov eax, dword [esp + 0x18]
mov dword [esp + 0xcc], ecx
mov dword [esp + 0xd4], 7
mov dword [esp + 0xd8], 0
mov dword [esp + 0xc8], edx
mov byte [esp + 0xdc], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x4c], 0
lea ecx, [esp + 0xd4]
mov dword [esp + 0xc4], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0xc0], eax
lea eax, [esp + 0x4c]
push 0
push eax
push 0xc
push esi
push 0xc
push ecx
push 0x2d1400
push dword [esp + 0x28]
call sub.kernel32.dll_DeviceIoControl
xor edx, edx
cmp byte [esp + 0x40], 0
mov esi, dword [esp + 0x48]
mov ecx, 2
mov dword [esp + 0x28], 1
sete dl
cmp dword [esp + 0x4c], 0xc
cmovne edx, ecx
test eax, eax
mov eax, 1
cmove edx, ecx
test esi, esi
mov dword [esp + 0xbc], edx
je 0x5328d1
js 0x532adb
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
test eax, eax
jne 0x5328c0
call sub.kernel32.dll_GetProcessHeap
test eax, eax
je 0x532ae2
mov dword [0x5da100], eax
push esi
push 0
push eax
call sub.kernel32.dll_HeapAlloc
test eax, eax
je 0x532ae2
push esi
push dword [esp + 0x30]
mov dword [esp + 0x34], eax
push eax
call sym._memcpy
add esp, 0xc
test edi, edi
je 0x532924
js 0x532adb
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
test eax, eax
jne 0x53290f
call sub.kernel32.dll_GetProcessHeap
test eax, eax
je 0x532abc
mov dword [0x5da100], eax
push edi
push 0
push eax
call sub.kernel32.dll_HeapAlloc
test eax, eax
mov dword [esp + 0x28], eax
je 0x532abc
push edi
push ebx
push dword [esp + 0x30]
call sym._memcpy
add esp, 0xc
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
mov dword [esp + 0xb8], eax
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
test eax, eax
jne 0x532963
call sub.kernel32.dll_GetProcessHeap
test eax, eax
je 0x532aca
mov dword [0x5da100], eax
push 8
push 0
push eax
call sub.kernel32.dll_HeapAlloc
test eax, eax
je 0x532aca
mov dword [eax], esi
mov esi, dword [esp + 0xb8]
mov ecx, eax
lea edx, [esp + 0x10]
mov dword [esp + 0xb4], eax
mov dword [ecx + 4], esi
mov esi, dword [esp + 0x34]
lea ecx, [esp + 0x16]
mov word [esp + 0x18], 0
mov dword [esp + 0x1c], edx
lea edx, [esp + 0x18]
mov dword [esp + 0x20], ecx
lea ecx, [esi + 0x40]
call sym.__ZN95__LT_alloc..string..String_u20_as_u20_core..iter..traits..collect..FromIterator_LT_char_GT__GT_9from_iter17h9bcbc6b248dc
mov eax, dword [esp + 0x2c]
cmp dword [esp + 0xd0], 2
movzx edx, word [esp + 0x18]
movzx ecx, byte [esp + 0x1a]
mov dword [esi + 8], eax
mov eax, dword [esp + 0x48]
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], eax
movzx eax, word [esp + 0x18]
mov byte [esi + 0x14], 0
mov word [esi + 0x15], ax
movzx eax, byte [esp + 0x1a]
mov byte [esi + 0x17], al
mov eax, dword [esp + 0xbc]
mov dword [esi], eax
mov eax, dword [esp + 0xc8]
mov dword [esi + 4], 0xffffffff
mov dword [esi + 0x1c], eax
mov eax, dword [esp + 0xcc]
mov dword [esi + 0x18], eax
mov eax, dword [esp + 0xc0]
mov dword [esi + 0x24], eax
mov eax, dword [esp + 0xc4]
mov dword [esi + 0x20], eax
mov eax, dword [esp + 0x28]
mov dword [esi + 0x28], eax
mov dword [esi + 0x2c], edi
mov dword [esi + 0x30], edi
mov edi, dword [esp + 0xb4]
mov dword [esi + 0x34], edi
mov dword [esi + 0x38], 4
mov dword [esi + 0x3c], 4
sete byte [esi + 0x4c]
mov word [esi + 0x4d], dx
mov byte [esi + 0x4f], cl
jmp 0x532a5d
mov eax, dword [esp + 0x34]
mov dword [eax], 3
push dword [esp + 0xc]
call sub.kernel32.dll_CloseHandle
cmp dword [esp + 0x30], 0
je 0x532a7b
push ebx
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
cmp dword [esp + 0x9c], 0
je 0x532351
push dword [esp + 0x98]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
jmp 0x532351
push 0xffffffffffffffff
call sub.kernel32.dll_CloseHandle
mov eax, dword [esp + 0x34]
mov dword [eax], 3
cmp dword [esp + 0x30], 0
jne 0x532a6d
jmp 0x532a7b
mov ecx, 1
mov edx, edi
call dbg.handle_alloc_error
ud2
mov ecx, 2
mov edx, 8
call dbg.handle_alloc_error
ud2
call sym.alloc::raw_vec::capacity_overflow::h894971bc65aab54c
ud2
mov ecx, 1
mov edx, esi
call dbg.handle_alloc_error
ud2