Function at 0x408c10
Capabilities:
Get disk information

Disassembly:
push 0xffffffffffffffff
push 0x40cf42
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x90
push ebx
push ebp
push esi
mov esi, ecx
push edi
lea ecx, [esp + 0x10]
mov dword [esp + 0x14], esi
call sub.MFC42.DLL_CString::CString_2
xor edi, edi
lea ecx, [esp + 0x20]
mov dword [esp + 0xa8], edi
call sub.MFC42.DLL_CString::CString_2
lea ecx, [esp + 0x1c]
mov byte [esp + 0xa8], 1
call sub.MFC42.DLL_CString::CString_2
lea ecx, [esp + 0x18]
mov byte [esp + 0xa8], 2
call sub.MFC42.DLL_CString::CString_2
lea ecx, [esp + 0x48]
mov byte [esp + 0xa8], 3
call fcn.004068c0
mov dword [esp + 0x24], 0x40d450
mov dword [esp + 0x30], edi
mov dword [esp + 0x34], edi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x28], edi
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], 0xa
mov bl, 5
mov byte [esp + 0xa8], bl
call dword [sym.imp.KERNEL32.dll_GetLogicalDrives]
mov ebp, eax
lea eax, [esp + 0x44]
push eax
mov dword [esp + 0x44], ebp
call fcn.00402960
add esp, 4
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0xac], 6
call fcn.00409a42
lea ecx, [esp + 0x44]
mov byte [esp + 0xa8], bl
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::MakeLower
cmp ebp, edi
jbe 0x408e42
xor ebx, ebx
jmp 0x408d04
mov ebp, dword [esp + 0x40]
mov edx, 1
mov ecx, ebx
shl edx, cl
test ebp, edx
je 0x408e34
lea esi, [ebx + 0x61]
lea eax, [esp + 0x20]
push esi
push str._c:_
push eax
call sub.MFC42.DLL_CString::Format
mov ecx, dword [esp + 0x2c]
add esp, 0xc
push ecx
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 3
jne 0x408e34
push esi
lea edx, [esp + 0x20]
push 0x410044
push edx
call sub.MFC42.DLL_CString::Format
mov eax, dword [esp + 0x20]
add esp, 0xc
mov esi, dword [eax + 8]
cmp esi, edi
je 0x408d83
mov ecx, dword [esp + 0x1c]
mov eax, dword [esi + 8]
mov ebp, dword [sym.imp.MSVCRT.dll__mbscmp]
push ecx
push eax
call ebp
add esp, 8
test eax, eax
je 0x408d7d
mov esi, dword [esi]
cmp esi, edi
jne 0x408d5d
jmp 0x408d89
cmp esi, edi
jne 0x408dbe
jmp 0x408d89
mov ebp, dword [sym.imp.MSVCRT.dll__mbscmp]
mov edx, dword [esp + 0x14]
push edi
mov eax, dword [edx + 0xc]
lea esi, [edx + 4]
push eax
mov ecx, esi
call fcn.00409520
mov edi, eax
lea ecx, [esp + 0x1c]
push ecx
lea ecx, [edi + 8]
call fcn.00409a42
mov eax, dword [esi + 8]
test eax, eax
je 0x408db6
mov dword [eax], edi
jmp 0x408db9
mov dword [esi + 4], edi
mov dword [esi + 8], edi
xor edi, edi
mov edx, dword [esp + 0x18]
cmp dword [edx - 8], edi
jle 0x408dd6
mov al, bl
lea ecx, [esp + 0x18]
add al, 0x61
push eax
push edi
call sub.MFC42.DLL_CString::SetAt
mov ecx, dword [esp + 0x14]
mov esi, dword [ecx + 8]
cmp esi, edi
je 0x408dff
mov edx, dword [esp + 0x18]
mov eax, dword [esi + 8]
push edx
push eax
call ebp
add esp, 8
test eax, eax
je 0x408dfb
mov esi, dword [esi]
cmp esi, edi
jne 0x408de1
jmp 0x408dff
cmp esi, edi
jne 0x408e34
mov eax, dword [esp + 0x14]
push edi
mov ecx, dword [eax + 0xc]
lea esi, [eax + 4]
push ecx
mov ecx, esi
call fcn.00409520
mov edi, eax
lea edx, [esp + 0x18]
push edx
lea ecx, [edi + 8]
call fcn.00409a42
mov eax, dword [esi + 8]
test eax, eax
je 0x408e2c
mov dword [eax], edi
jmp 0x408e2f
mov dword [esi + 4], edi
mov dword [esi + 8], edi
xor edi, edi
inc ebx
cmp ebx, 0x1a
jl 0x408d00
mov esi, dword [esp + 0x14]
mov ebp, dword [esi + 0x2c]
neg ebp
sbb ebp, ebp
cmp ebp, edi
je 0x408f85
lea ebx, [esi + 0x20]
cmp ebp, 0xffffffff
mov esi, ebp
jne 0x408e75
mov edx, dword [ebx + 8]
xor eax, eax
cmp edx, edi
jbe 0x408e75
mov ecx, dword [ebx + 4]
mov esi, dword [ecx]
cmp esi, edi
jne 0x408e75
inc eax
add ecx, 4
cmp eax, edx
jb 0x408e67
mov ebp, dword [esi]
cmp ebp, edi
jne 0x408e9a
mov eax, dword [esi + 4]
mov edx, dword [ebx + 8]
inc eax
cmp eax, edx
jae 0x408e9a
mov ecx, dword [ebx + 4]
lea ecx, [ecx + eax*4]
mov ebp, dword [ecx]
cmp ebp, edi
jne 0x408e9a
inc eax
add ecx, 4
cmp eax, edx
jb 0x408e8c
lea edx, [esi + 8]
lea ecx, [esp + 0x10]
push edx
call fcn.00409a42
add esi, 0xc
lea ecx, [esp + 0x48]
push esi
call fcn.00406de0
lea ecx, [esp + 0x48]
call fcn.00406dd0
test al, al
lea ecx, [esp + 0x48]
je 0x408f2f
call fcn.00406ed0
test al, al
je 0x408f05
lea eax, [esp + 0x48]
lea ecx, [esp + 0x10]
push eax
push ecx
mov ecx, ebx
call fcn.00409590
mov ecx, eax
call fcn.00406de0
lea ecx, [esp + 0x48]
call fcn.00406db0
push eax
lea ecx, [esp + 0x4c]
call fcn.00406da0
mov ecx, dword [esp + 0x18]
push eax
call fcn.004078d0
jmp 0x408f7d
lea ecx, [esp + 0x48]
call fcn.00406cc0
push eax
call fcn.00407440
add esp, 4
test al, al
jne 0x408f7d
lea ecx, [esp + 0x48]
call fcn.00406ca0
mov edx, dword [esp + 0x2c]
push 0
mov edi, eax
push edx
jmp 0x408f53
call fcn.00406cc0
push eax
call fcn.00407440
add esp, 4
test al, al
jne 0x408f7d
lea ecx, [esp + 0x48]
call fcn.00406ca0
mov edi, eax
mov eax, dword [esp + 0x2c]
push 0
push eax
lea ecx, [esp + 0x2c]
call fcn.00409520
mov esi, eax
push edi
lea ecx, [esi + 8]
call fcn.00409a42
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x408f73
mov dword [eax], esi
jmp 0x408f77
mov dword [esp + 0x28], esi
mov dword [esp + 0x2c], esi
xor edi, edi
cmp ebp, edi
jne 0x408e54
mov ebx, dword [esp + 0x28]
cmp ebx, edi
je 0x40909d
mov ecx, dword [esp + 0x14]
lea edi, [ecx + 0x20]
mov eax, ebx
mov ebx, dword [ebx]
add eax, 8
lea ecx, [esp + 0x10]
push eax
call fcn.00409a42
lea edx, [esp + 0x40]
lea eax, [esp + 0x10]
push edx
push eax
mov ecx, edi
call fcn.004096c0
test eax, eax
je 0x409093
add eax, 0xc
lea ecx, [esp + 0x48]
push eax
call fcn.00406de0
mov ecx, dword [esp + 0x14]
mov esi, dword [ecx + 8]
test esi, esi
je 0x409093
mov eax, esi
mov esi, dword [esi]
add eax, 8
lea ecx, [esp + 0x1c]
push eax
call fcn.00409a42
lea edx, [esp + 0x1c]
lea ecx, [esp + 0x48]
push edx
call fcn.00407310
test al, al
jne 0x40900a
test esi, esi
jne 0x408fde
jmp 0x409093
lea eax, [esp + 0x10]
push eax
call fcn.004098b0
xor edx, edx
div dword [edi + 8]
mov eax, dword [edi + 4]
test eax, eax
mov ebp, edx
je 0x40904b
mov esi, dword [eax + ebp*4]
test esi, esi
je 0x40904b
mov ecx, dword [esp + 0x10]
mov eax, dword [esi + 8]
push ecx
push eax
call dword [sym.imp.MSVCRT.dll__mbscmp]
add esp, 8
test eax, eax
je 0x409047
mov esi, dword [esi]
test esi, esi
jne 0x409029
jmp 0x40904b
test esi, esi
jne 0x409086
mov eax, dword [edi + 4]
test eax, eax
jne 0x40905f
mov edx, dword [edi + 8]
push 1
push edx
mov ecx, edi
call fcn.00409740
mov ecx, edi
call fcn.004097b0
mov esi, eax
lea eax, [esp + 0x10]
push eax
lea ecx, [esi + 8]
mov dword [esi + 4], ebp
call fcn.00409a42
mov ecx, dword [edi + 4]
mov edx, dword [ecx + ebp*4]
mov dword [esi], edx
mov eax, dword [edi + 4]
mov dword [eax + ebp*4], esi
lea ecx, [esp + 0x48]
push ecx
lea ecx, [esi + 0xc]
call fcn.00406de0
test ebx, ebx
jne 0x408f98
xor edi, edi
mov dword [esp + 0x24], 0x40d450
mov esi, dword [esp + 0x28]
mov byte [esp + 0xa8], 7
cmp esi, edi
je 0x4090c6
lea edx, [esi + 8]
push 1
push edx
call sub.MFC42.DLL_DestructElements
mov esi, dword [esi]
cmp esi, edi
jne 0x4090b5
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x30], edi
mov dword [esp + 0x34], edi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x28], edi
call sub.MFC42.DLL_CPlex::FreeDataChain
lea ecx, [esp + 0x48]
mov dword [esp + 0x38], edi
mov dword [esp + 0x24], 0x40d43c
mov byte [esp + 0xa8], 3
call fcn.00406a10
lea ecx, [esp + 0x18]
mov byte [esp + 0xa8], 2
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x1c]
mov byte [esp + 0xa8], 1
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x20]
mov byte [esp + 0xa8], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x10]
mov dword [esp + 0xa8], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 0xa0]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x9c
ret