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

Disassembly:
mov eax, 0x10beeeb
call fcn.0106f6c0
mov eax, 0x24c4
call fcn.0106f850
push ebx
push esi
mov esi, dword [ebp + 8]
movzx eax, byte [esi + 0x30]
push edi
push 0x29
pop edi
and eax, 0xffffff7f
dec eax
push 1
pop ebx
je 0x1045238
dec eax
je 0x1045209
dec eax
je 0x10451ce
dec eax
je 0x1045194
dec eax
dec eax
je 0x104518d
sub eax, 0x51
je 0x1045238
push 5
jmp 0x104528a
push 0xa
jmp 0x104528a
movzx eax, byte [esi + 0x31]
sub eax, 0
je 0x10451c7
dec eax
je 0x10451c0
sub eax, 6
je 0x10451b9
dec eax
je 0x10451b2
dec eax
jne 0x10451c7
push 0x19
jmp 0x104528a
push 0x18
jmp 0x104528a
push 0x1a
jmp 0x104528a
push 0x1c
jmp 0x104528a
push 0x1b
jmp 0x104528a
movzx eax, byte [esi + 0x31]
dec eax
je 0x1045202
dec eax
je 0x10451fb
dec eax
je 0x10451f4
dec eax
dec eax
je 0x10451ed
dec eax
jne 0x104528b
push 0x17
jmp 0x104528a
push 0x16
jmp 0x104528a
push 0x15
jmp 0x104528a
push 0x14
jmp 0x104528a
push 0x13
jmp 0x104528a
test byte [esi + 0x60], 2
je 0x1045288
movzx eax, byte [esi + 0x31]
sub eax, 0
je 0x1045234
dec eax
je 0x1045230
dec eax
je 0x104522c
dec eax
je 0x1045228
dec eax
jne 0x104528b
push 0xf
jmp 0x104528a
push 0xe
jmp 0x104528a
push 0x10
jmp 0x104528a
push 0xd
jmp 0x104528a
push 0xc
jmp 0x104528a
mov al, byte [esi + 0x31]
cmp al, bl
je 0x1045288
cmp al, 2
je 0x1045288
mov eax, dword [0x1004c20]
mov dword [ebp - 0x14], eax
mov eax, dword [0x1004c24]
mov dword [ebp - 0x10], eax
mov eax, dword [esi + 0x34]
mov ax, word [eax]
mov word [ebp - 0x14], ax
lea eax, [ebp - 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
dec eax
dec eax
je 0x1045284
dec eax
je 0x1045280
dec eax
je 0x1045186
dec eax
jne 0x1045186
push 4
jmp 0x104528a
push 3
jmp 0x104528a
push 2
jmp 0x104528a
push 0x11
pop edi
lea eax, [edi - 2]
cmp eax, 0x1a
ja case.0x104529e.6
movzx eax, byte [eax + 0x10458f2]
jmp dword [eax*4 + 0x10458ae]
lea ecx, [ebp + 8]
call sub.MFC42u.DLL_CString::CString_3
and dword [ebp - 4], 0
cmp dword [ebp + 0x10], 3
je 0x1045389
movzx eax, byte [esi + 0x30]
imul eax, eax, 0x14c
lea ecx, [ebp - 0x21c]
push ecx
push esi
call dword [eax + 0x10d7454]
lea eax, [ebp - 0x21c]
push eax
lea ecx, [ebp + 8]
call fcn.0106e90a
push 0x5c
lea ecx, [ebp + 8]
call fcn.0106ee2c
push 0x200
push 0x2b4
lea eax, [ebp - 0x24d0]
push eax
push 0
push dword [ebp + 8]
call dword [sym.imp.SHELL32.dll_SHGetFileInfoW]
test eax, eax
je 0x104532a
push 0x104
lea eax, [ebp - 0x24c4]
push eax
lea eax, [ebp - 0x21c]
push eax
call dword [sym.imp.msvcrt.dll_wcsncpy]
add esp, 0xc
jmp 0x1045349
movzx eax, byte [esi + 0x30]
imul eax, eax, 0x14c
push 0
push pe_nt_image_headers32
lea ecx, [ebp - 0x21c]
push ecx
push esi
call dword [eax + 0x10d7450]
push 0x70
call sub.MFC42u.DLL_operatornew
pop ecx
mov dword [ebp + 0x10], eax
test eax, eax
mov byte [ebp - 4], bl
je 0x1045383
movzx eax, byte [esi + 0x30]
imul eax, eax, 0x14c
push esi
call dword [eax + 0x10d7570]
mov ecx, dword [ebp + 0x10]
push eax
push esi
push dword [ebp + 0xc]
lea eax, [ebp - 0x21c]
push eax
push edi
call fcn.010438ab
jmp 0x1045385
xor eax, eax
mov esi, eax
jmp 0x104538b
xor esi, esi
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp + 8]
call sub.MFC42u.DLL_CString::CString
mov eax, esi
jmp 0x104589d
movzx eax, byte [esi + 0x30]
imul eax, eax, 0x14c
push ebx
push 0x1000
lea ecx, [ebp - 0x221c]
push ecx
push esi
call dword [eax + 0x10d7450]
push 0x70
call sub.MFC42u.DLL_operatornew
pop ecx
mov dword [ebp + 0x10], eax
test eax, eax
mov dword [ebp - 4], 2
je case.0x104529e.6
movzx eax, byte [esi + 0x30]
imul eax, eax, 0x14c
push esi
call dword [eax + 0x10d7570]
mov ecx, dword [ebp + 0x10]
push eax
push esi
push dword [ebp + 0xc]
lea eax, [ebp - 0x221c]
push eax
push edi
call fcn.010438ab
jmp 0x104589d
movzx eax, byte [esi + 0x30]
imul eax, eax, 0x14c
push ebx
push 0x1000
lea ecx, [ebp - 0x221c]
push ecx
push esi
call dword [eax + 0x10d7450]
push 0x50
call sub.MFC42u.DLL_operatornew
pop ecx
mov dword [ebp + 0x10], eax
test eax, eax
mov dword [ebp - 4], 3
je case.0x104529e.6
movzx eax, byte [esi + 0x30]
imul eax, eax, 0x14c
push esi
call dword [eax + 0x10d7570]
mov ecx, dword [ebp + 0x10]
push eax
push esi
push dword [ebp + 0xc]
lea eax, [ebp - 0x221c]
push eax
push edi
call fcn.010435ac
jmp 0x104589d
movzx eax, byte [esi + 0x30]
imul eax, eax, 0x14c
push ebx
push 0x1000
lea ecx, [ebp - 0x221c]
push ecx
push esi
call dword [eax + 0x10d7450]
push 0x50
call sub.MFC42u.DLL_operatornew
pop ecx
mov dword [ebp + 0x10], eax
test eax, eax
mov dword [ebp - 4], 4
je case.0x104529e.6
movzx eax, byte [esi + 0x30]
imul eax, eax, 0x14c
push esi
call dword [eax + 0x10d7570]
mov ecx, dword [ebp + 0x10]
push eax
push esi
push dword [ebp + 0xc]
lea eax, [ebp - 0x221c]
push eax
push edi
call fcn.010435ef
jmp 0x104589d
cmp dword [ebp + 0x10], ebx
jne case.0x104529e.6
movzx eax, byte [esi + 0x30]
imul eax, eax, 0x14c
push ebx
push 0x1000
lea ecx, [ebp - 0x221c]
push ecx
push esi
call dword [eax + 0x10d7450]
push 0x50
call sub.MFC42u.DLL_operatornew
pop ecx
mov ecx, eax
mov dword [ebp + 0x10], ecx
test ecx, ecx
mov dword [ebp - 4], 5
je case.0x104529e.6
push esi
push dword [ebp + 0xc]
lea eax, [ebp - 0x221c]
push eax
call fcn.0104354c
jmp 0x104589d
movzx eax, byte [esi + 0x30]
imul eax, eax, 0x14c
push ebx
push 0x1000
lea ecx, [ebp - 0x221c]
push ecx
push esi
call dword [eax + 0x10d7450]
push 0x50
call sub.MFC42u.DLL_operatornew
pop ecx
mov ecx, eax
mov dword [ebp + 0x10], ecx
test ecx, ecx
mov dword [ebp - 4], 6
je case.0x104529e.6
push esi
push dword [ebp + 0xc]
lea eax, [ebp - 0x221c]
push eax
call fcn.010437d6
jmp 0x104589d
movzx eax, byte [esi + 0x30]
imul eax, eax, 0x14c
push ebx
push 0x1000
lea ecx, [ebp - 0x221c]
push ecx
push esi
call dword [eax + 0x10d7450]
push 0x50
call sub.MFC42u.DLL_operatornew
pop ecx
mov ecx, eax
mov dword [ebp + 0x10], ecx
test ecx, ecx
mov dword [ebp - 4], 7
je case.0x104529e.6
push esi
push dword [ebp + 0xc]
lea eax, [ebp - 0x221c]
push eax
call fcn.010437fa
jmp 0x104589d
movzx eax, byte [esi + 0x30]
imul eax, eax, 0x14c
push ebx
push 0x1000
lea ecx, [ebp - 0x221c]
push ecx
push esi
call dword [eax + 0x10d7450]
push 0x50
call sub.MFC42u.DLL_operatornew
pop ecx
mov ecx, eax
mov dword [ebp + 0x10], ecx
test ecx, ecx
mov dword [ebp - 4], 8
je case.0x104529e.6
push esi
push dword [ebp + 0xc]
lea eax, [ebp - 0x221c]
push eax
call fcn.0104381e
jmp 0x104589d
movzx eax, byte [esi + 0x30]
imul eax, eax, 0x14c
push ebx
push 0x1000
lea ecx, [ebp - 0x221c]
push ecx
push esi
call dword [eax + 0x10d7450]
push 0x50
call sub.MFC42u.DLL_operatornew
pop ecx
mov ecx, eax
mov dword [ebp + 0x10], ecx
test ecx, ecx
mov dword [ebp - 4], 9
je case.0x104529e.6
push esi
push dword [ebp + 0xc]
lea eax, [ebp - 0x221c]
push eax
call fcn.01043842
jmp 0x104589d
movzx eax, byte [esi + 0x30]
imul eax, eax, 0x14c
push ebx
push 0x1000
lea ecx, [ebp - 0x221c]
push ecx
push esi
call dword [eax + 0x10d7450]
push 0x50
call sub.MFC42u.DLL_operatornew
pop ecx
mov ecx, eax
mov dword [ebp + 0x10], ecx
test ecx, ecx
mov dword [ebp - 4], 0xa
je case.0x104529e.6
push esi
push dword [ebp + 0xc]
lea eax, [ebp - 0x221c]
push eax
call fcn.01043866
jmp 0x104589d
movzx eax, byte [esi + 0x30]
imul eax, eax, 0x14c
push ebx
push 0x1000
lea ecx, [ebp - 0x221c]
push ecx
push esi
call dword [eax + 0x10d7450]
push 0x58
call sub.MFC42u.DLL_operatornew
pop ecx
mov ecx, eax
mov dword [ebp + 0x10], ecx
test ecx, ecx
mov dword [ebp - 4], 0xb
je case.0x104529e.6
push esi
push dword [ebp + 0xc]
lea eax, [ebp - 0x221c]
push eax
call fcn.01043d09
jmp 0x104589d
movzx eax, byte [esi + 0x30]
imul eax, eax, 0x14c
push ebx
push 0x1000
lea ecx, [ebp - 0x221c]
push ecx
push esi
call dword [eax + 0x10d7450]
mov edi, dword [ebp + 0xc]
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0xc]
cmp eax, 0x18
push 0x58
jne 0x1045755
call sub.MFC42u.DLL_operatornew
pop ecx
mov ecx, eax
mov dword [ebp + 0xc], ecx
test ecx, ecx
mov dword [ebp - 4], 0xc
je case.0x104529e.6
push esi
push edi
lea eax, [ebp - 0x221c]
push eax
call fcn.01043d2d
jmp 0x104589d
call sub.MFC42u.DLL_operatornew
pop ecx
mov ecx, eax
mov dword [ebp + 0xc], ecx
test ecx, ecx
mov dword [ebp - 4], 0xd
je case.0x104529e.6
push esi
push edi
lea eax, [ebp - 0x221c]
push eax
call fcn.01043d2d
jmp 0x104589d
movzx eax, byte [esi + 0x30]
imul eax, eax, 0x14c
push ebx
push 0x1000
lea ecx, [ebp - 0x221c]
push ecx
push esi
call dword [eax + 0x10d7450]
mov edi, dword [ebp + 0xc]
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0xc]
cmp eax, 0x19
push 0x58
jne 0x10457de
call sub.MFC42u.DLL_operatornew
pop ecx
mov ecx, eax
mov dword [ebp + 0xc], ecx
test ecx, ecx
mov dword [ebp - 4], 0xe
je case.0x104529e.6
push esi
push edi
lea eax, [ebp - 0x221c]
push eax
call fcn.01043d51
jmp 0x104589d
call sub.MFC42u.DLL_operatornew
pop ecx
mov ecx, eax
mov dword [ebp + 0xc], ecx
test ecx, ecx
mov dword [ebp - 4], 0xf
je case.0x104529e.6
push esi
push edi
lea eax, [ebp - 0x221c]
push eax
call fcn.01043d51
jmp 0x104589d
movzx eax, byte [esi + 0x30]
imul eax, eax, 0x14c
push ebx
push 0x1000
lea ecx, [ebp - 0x221c]
push ecx
push esi
call dword [eax + 0x10d7450]
push 0x58
call sub.MFC42u.DLL_operatornew
pop ecx
mov ecx, eax
mov dword [ebp + 0x10], ecx
test ecx, ecx
mov dword [ebp - 4], 0x10
je case.0x104529e.6
push esi
push dword [ebp + 0xc]
lea eax, [ebp - 0x221c]
push eax
call fcn.01043d75
jmp 0x104589d
movzx eax, byte [esi + 0x30]
imul eax, eax, 0x14c
push ebx
push 0x1000
lea ecx, [ebp - 0x221c]
push ecx
push esi
call dword [eax + 0x10d7450]
push 0x58
call sub.MFC42u.DLL_operatornew
pop ecx
mov ecx, eax
mov dword [ebp + 0x10], ecx
test ecx, ecx
mov dword [ebp - 4], 0x11
je case.0x104529e.6
push esi
push dword [ebp + 0xc]
lea eax, [ebp - 0x221c]
push eax
call fcn.01043d99
jmp 0x104589d
xor eax, eax
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret 0xc