Function at 0x563d1e
Capabilities:
Get disk information
Get file system object information

Disassembly:
sub esp, 0x748
push ebx
push ebp
push esi
xor eax, eax
inc eax
push edi
push eax
mov eax, dword [sym.imp.KERNEL32.dll_SetErrorMode]
mov dword [esp + 0x4c], eax
call eax
mov ebx, dword [esp + 0x75c]
xor eax, eax
mov ebp, dword [sym.imp.USER32.dll_SendMessageW]
push eax
push eax
mov edi, dword [ebx + 0x14]
push 0x406
push dword [ebx]
mov dword [esp + 0x4c], edi
mov dword [esp + 0x48], ebp
call ebp
cmp dword [esp + 0x760], 0
mov ecx, 0x69cd88
mov dword [esp + 0x10], eax
cmovne ecx, dword [esp + 0x760]
push ecx
push edi
call fcn.0067fc08
movzx esi, word [edi]
pop ecx
pop ecx
mov ecx, esi
cmp esi, 0x61
push 0x5c
pop esi
lea eax, [ecx - 0x20]
movzx edx, ax
mov eax, ecx
cmovb edx, eax
movzx eax, dx
mov word [edi], ax
test ax, ax
je 0x563dba
push edi
call fcn.005236eb
pop ecx
cmp word [edi + eax*2 - 2], si
je 0x563dba
push 0x69a0b0
push edi
call fcn.0067fc2a
pop ecx
pop ecx
mov esi, dword [esp + 0x10]
xor eax, eax
push eax
push eax
push 0x146
push esi
call ebp
test eax, eax
je 0x563ded
xor edi, edi
push edi
push edi
push 0x144
push dword [ebx]
call ebp
push edi
push edi
push 0x146
push esi
call ebp
test eax, eax
jne 0x563dd0
mov edi, dword [esp + 0x3c]
test byte [ebx + 0x10], 0x80
je 0x563f25
movzx ebx, word [edi]
mov esi, 0x6b4d44
push 0x41
pop ebp
sub ebx, ebp
js 0x563e20
cmp ebx, 0x19
jg 0x563e20
push esi
push edi
call fcn.0067fc08
movsx ax, bl
pop ecx
pop ecx
add ax, bp
movzx eax, ax
jmp 0x563e25
or ebx, 0xffffffff
xor eax, eax
mov word [edi], ax
or ebp, 0xffffffff
lea eax, [esp + 0x260]
mov dword [esp + 0x14], 0x37
xor edi, edi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], edi
mov dword [esp + 0x30], edi
call dword [sym.imp.KERNEL32.dll_GetLogicalDrives]
mov dword [esp + 0x10], eax
lea eax, [esp + 0x4c]
push esi
push eax
call fcn.0067fc08
pop ecx
mov esi, edi
mov edi, dword [esp + 0x760]
pop ecx
xor eax, eax
mov ecx, esi
inc eax
shl eax, cl
test dword [esp + 0x10], eax
je 0x563f14
lea eax, [esi + 0x41]
mov word [esp + 0x4c], ax
lea eax, [esp + 0x468]
push str.Drive
push eax
call fcn.0067fc08
pop ecx
pop ecx
push 0x4001
push 0x2b4
lea eax, [esp + 0x25c]
push eax
xor eax, eax
push eax
lea eax, [esp + 0x5c]
push eax
call dword [sym.imp.SHELL32.dll_SHGetFileInfoW]
mov eax, dword [esp + 0x258]
push 0x200
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x258]
push 0x2b4
push eax
xor eax, eax
push eax
lea eax, [esp + 0x5c]
push eax
call dword [sym.imp.SHELL32.dll_SHGetFileInfoW]
lea eax, [esp + 0x260]
mov dword [esp + 0x34], esi
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x14]
push eax
xor eax, eax
push eax
push 0x40b
push dword [edi]
call dword [esp + 0x48]
mov eax, dword [esp + 0x18]
cmp esi, ebx
cmove ebp, eax
inc eax
mov dword [esp + 0x18], eax
inc esi
cmp esi, 0x1f
jle 0x563e68
mov ebx, edi
jmp 0x5643dc
xor esi, esi
test dword [ebx + 0x10], 0x200
mov dword [esp + 0x40], esi
jne 0x563fa1
lea eax, [esp + 0x4c]
push edi
push eax
call fcn.0067fc08
mov ax, word [esp + 0x54]
lea esi, [esp + 0x54]
pop ecx
pop ecx
test ax, ax
je 0x563f6c
movzx ecx, ax
movzx eax, cx
push eax
call fcn.006890c7
mov word [esi], ax
lea esi, [esi + 2]
movzx eax, word [esi]
pop ecx
mov ecx, eax
test ax, ax
jne 0x563f52
cmp dword [0x7e6e98], 0
je 0x563f9f
mov esi, 0x7e6a78
push esi
call fcn.005236eb
push eax
lea eax, [esp + 0x54]
push esi
push eax
call fcn.005239c3
mov esi, dword [esp + 0x50]
add esp, 0x10
test eax, eax
push 1
pop eax
cmove esi, eax
mov dword [esp + 0x40], esi
xor esi, esi
mov eax, dword [0x7e6e8c]
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
lea eax, [esp + 0x14]
push eax
push esi
push 0x40b
push dword [ebx]
mov dword [esp + 0x24], 0x37
mov dword [esp + 0x2c], 0x7e6c80
mov dword [esp + 0x28], esi
mov dword [esp + 0x40], esi
mov dword [esp + 0x44], 0xff
call ebp
inc dword [esp + 0x18]
lea eax, [esp + 0x260]
inc dword [esp + 0x30]
mov ebp, esi
mov dword [esp + 0x1c], eax
call dword [sym.imp.KERNEL32.dll_GetLogicalDrives]
mov edx, eax
mov dword [esp + 0x10], esi
mov dword [esp + 0x44], edx
mov ecx, esi
xor eax, eax
inc eax
shl eax, cl
test edx, eax
je 0x564228
lea eax, [esp + 0x4c]
push 0x6b4d44
push eax
call fcn.0067fc08
mov esi, dword [esp + 0x18]
push str.Drive
lea eax, [esi + 0x41]
mov word [esp + 0x58], ax
lea eax, [esp + 0x474]
push eax
call fcn.0067fc08
add esp, 0x10
lea eax, [esp + 0x254]
push 0x4001
push 0x2b4
push eax
xor eax, eax
push eax
lea eax, [esp + 0x5c]
push eax
call dword [sym.imp.SHELL32.dll_SHGetFileInfoW]
mov eax, dword [esp + 0x258]
push 0x200
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x258]
push 0x2b4
push eax
xor eax, eax
push eax
lea eax, [esp + 0x5c]
push eax
call dword [sym.imp.SHELL32.dll_SHGetFileInfoW]
lea eax, [esp + 0x260]
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x38]
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x14]
push eax
xor eax, eax
push eax
push 0x40b
push dword [ebx]
call esi
push 6
lea eax, [esp + 0x50]
push edi
push eax
call fcn.0052c010
add esp, 0xc
test eax, eax
jne 0x564215
cmp dword [esp + 0x40], eax
jne 0x564215
movzx eax, word [edi + 6]
mov ecx, eax
push 3
pop ebp
test ax, ax
je 0x564206
mov dword [esp + 0x3c], 0x100fd
push 0x5c
movzx eax, cx
pop ecx
jmp 0x564102
test ax, ax
je 0x564107
inc ebp
movzx eax, word [edi + ebp*2]
cmp ax, cx
jne 0x5640f8
lea eax, [ebp*2]
xor ecx, ecx
cmp word [eax + edi], cx
je 0x5641f6
lea eax, [esp + 0x468]
push str.Unknown
push eax
call fcn.0067fc08
lea eax, [ebp*2]
push eax
lea eax, [esp + 0x58]
push edi
push eax
call fcn.0052d690
add esp, 0x14
lea eax, [ebp*2]
xor ecx, ecx
mov word [esp + eax + 0x4c], cx
lea eax, [esp + 0x508]
push eax
lea eax, [esp + 0x50]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
cmp eax, 0xffffffff
je 0x5641f6
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
inc dword [esp + 0x18]
lea eax, [esp + 0x254]
inc dword [esp + 0x30]
push 0x4001
push 0x2b4
push eax
xor eax, eax
push eax
lea eax, [esp + 0x5c]
push eax
call dword [sym.imp.SHELL32.dll_SHGetFileInfoW]
mov eax, dword [esp + 0x258]
push 0x200
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x258]
push 0x2b4
push eax
xor eax, eax
push eax
lea eax, [esp + 0x5c]
push eax
call dword [sym.imp.SHELL32.dll_SHGetFileInfoW]
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x34], eax
lea eax, [esp + 0x260]
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x14]
push eax
xor eax, eax
push eax
push 0x40b
push dword [ebx]
call esi
add dword [esp + 0x3c], 0x10000
inc ebp
movzx eax, word [edi + ebp*2]
mov ecx, eax
test ax, ax
jne 0x5640f0
xor eax, eax
inc eax
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x18]
mov ebp, eax
jmp 0x564219
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
inc eax
mov edx, dword [esp + 0x44]
mov dword [esp + 0x18], eax
jmp 0x56422c
mov esi, dword [esp + 0x38]
inc ecx
mov dword [esp + 0x10], ecx
cmp ecx, 0x1f
jle 0x564004
cmp dword [0x7e6e98], 0
je 0x56427e
test dword [ebx + 0x10], 0x200
jne 0x56427e
mov eax, dword [0x7e6e88]
xor ecx, ecx
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
lea eax, [esp + 0x14]
push eax
push ecx
push 0x40b
push dword [ebx]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x2c], 0x7e6668
mov dword [esp + 0x44], 0xfe
call esi
cmp dword [esp + 0x40], 0
je 0x5643dc
xor ebp, ebp
mov ebx, ebp
mov esi, ebp
mov ebp, 0x7e6870
push ebp
call fcn.005236eb
pop ecx
push 0x5c
pop ecx
cmp word [edi + esi*2], cx
lea eax, [ebx + 1]
push ebp
cmovne eax, ebx
inc esi
mov ebx, eax
call fcn.005236eb
pop ecx
cmp esi, eax
jbe 0x56429b
inc esi
movzx eax, word [edi + esi*2]
mov ecx, eax
test ax, ax
je 0x5643d1
shl ebx, 0x10
add ebx, 0xfd
push 0x5c
movzx eax, cx
pop ecx
jmp 0x5642e1
test ax, ax
je 0x5642e6
inc esi
movzx eax, word [edi + esi*2]
cmp ax, cx
jne 0x5642d7
lea ebp, [esi + esi]
xor eax, eax
cmp word [edi + ebp], ax
je 0x5643c1
lea eax, [esp + 0x468]
push str.Unknown
push eax
call fcn.0067fc08
push ebp
lea eax, [esp + 0x58]
push edi
push eax
call fcn.0052d690
xor eax, eax
add esp, 0x14
mov word [esp + ebp + 0x4c], ax
lea eax, [esp + 0x508]
push eax
lea eax, [esp + 0x50]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
cmp eax, 0xffffffff
je 0x5643c1
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
inc dword [esp + 0x18]
lea eax, [esp + 0x254]
inc dword [esp + 0x30]
mov ebp, 0x2b4
push 0x4001
push ebp
push eax
xor eax, eax
push eax
lea eax, [esp + 0x5c]
push eax
call dword [sym.imp.SHELL32.dll_SHGetFileInfoW]
mov eax, dword [esp + 0x258]
push 0x200
push ebp
mov dword [esp + 0x2c], eax
xor ebp, ebp
mov dword [esp + 0x30], eax
lea eax, [esp + 0x25c]
push eax
push ebp
lea eax, [esp + 0x5c]
push eax
call dword [sym.imp.SHELL32.dll_SHGetFileInfoW]
lea eax, [esp + 0x260]
mov dword [esp + 0x34], ebx
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x14]
push eax
mov eax, dword [esp + 0x760]
push ebp
push 0x40b
push dword [eax]
call dword [esp + 0x48]
add ebx, 0x10000
inc esi
movzx eax, word [edi + esi*2]
mov ecx, eax
test ax, ax
jne 0x5642cf
mov ebp, dword [esp + 0x18]
mov ebx, dword [esp + 0x75c]
xor esi, esi
push esi
call dword [esp + 0x4c]
push esi
push ebp
push 0x14e
push dword [ebx]
call dword [esp + 0x48]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x748
ret 8