Function at 0x410a23
Capabilities:
Get disk information
Get disk size

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14c
mov eax, dword [0x49f2a0]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
xor edi, edi
inc edi
push edi
push 0x1a86b0
call fcn.00450903
pop ecx
mov ebx, eax
and dword [ebx], 0
pop ecx
call dword [sym.imp.___total_physical_size__lu_MB_GetLogicalDrives]
mov dword [ebp - 0x130], eax
test eax, eax
jne 0x410a7c
push str.GetLogicalDrive_failed_n
call dword [sym.imp.___total_physical_size__lu_MB_GetLastError]
push eax
push 0x664
push str.DRIVELIST
call fcn.0044dc85
add esp, 0x10
xor ecx, ecx
mov dword [ebp - 0x12c], ecx
mov eax, edi
shl eax, cl
test dword [ebp - 0x130], eax
je 0x410b97
add ecx, 0x41
push ecx
lea eax, [ebp - 0x134]
push 0x46a8cc
push eax
call fcn.00450c76
add esp, 0xc
push 0x104
lea eax, [ebp - 0x108]
push eax
lea eax, [ebp - 0x134]
push eax
call dword [sym.imp.___total_physical_size__lu_MB_QueryDosDeviceA]
test eax, eax
je 0x410b2e
push 0xe
lea eax, [ebp - 0x108]
push str.DeviceFloppy
push eax
call fcn.00450f08
add esp, 0xc
test eax, eax
jne 0x410af6
mov eax, dword [ebx]
imul eax, eax, 0x6a0
mov dword [eax + ebx + 0x560], 0x80
push 0xe
lea eax, [ebp - 0x108]
push str.DeviceLanman
push eax
call fcn.00450f08
add esp, 0xc
test eax, eax
je 0x410b97
push 4
lea eax, [ebp - 0x108]
push 0x46a920
push eax
call fcn.00450f08
add esp, 0xc
test eax, eax
je 0x410b97
mov eax, dword [ebx]
imul eax, eax, 0x6a0
lea ecx, [ebp - 0x134]
lea edx, [eax + ebx + 0x10]
mov al, byte [ecx]
inc ecx
mov byte [edx], al
inc edx
test al, al
jne 0x410b40
mov eax, dword [ebx]
imul eax, eax, 0x6a0
add eax, ebx
lea ecx, [eax + 0x10]
push ecx
add eax, 0x14
push str.._s
push eax
call fcn.00450c76
mov eax, dword [ebx]
add esp, 0xc
imul eax, eax, 0x6a0
lea ecx, [eax + ebx + 0x10]
lea esi, [eax + ebx + 0x340]
mov al, byte [ecx]
inc ecx
mov byte [esi], al
inc esi
test al, al
jne 0x410b7c
mov eax, dword [ebx]
imul eax, eax, 0x6a0
mov dword [eax + ebx + 0x558], edi
inc dword [ebx]
mov ecx, dword [ebp - 0x12c]
inc ecx
mov dword [ebp - 0x12c], ecx
cmp ecx, 0x1a
jl 0x410a84
and dword [ebp - 0x12c], 0
cmp dword [ebx], 0
jbe 0x410d52
lea esi, [ebx + 0x54c]
and dword [ebp - 0x128], 0
push 7
xor eax, eax
cmp dword [esi + 0x14], 0x80
pop ecx
lea edi, [ebp - 0x124]
rep stosd dword es:[edi], eax
je 0x410d38
lea eax, [ebp - 0x128]
push eax
movsx eax, byte [esi - 0x53c]
sub eax, 0x41
push eax
call fcn.004439f9
test eax, eax
je 0x410c54
push 0x20
call fcn.00452122
mov dword [esi + 0x1c], eax
mov dword [eax], 1
mov eax, dword [esi + 0x1c]
pop ecx
mov ecx, dword [ebp - 0x128]
mov dword [eax + 0x10], ecx
mov ecx, dword [ebp - 0x124]
mov dword [eax + 0x14], ecx
mov eax, dword [esi + 0x1c]
mov ecx, dword [ebp - 0x120]
mov dword [eax + 0x18], ecx
mov ecx, dword [ebp - 0x11c]
mov dword [eax + 0x1c], ecx
mov al, byte [ebp - 0x110]
mov byte [esi], al
lea eax, [esi - 0x20c]
push eax
call fcn.0040e9f2
mov ecx, dword [esi + 0x1c]
mov dword [ecx + 8], eax
lea edi, [esi - 0x538]
push edi
call fcn.0040e853
push eax
call dword [sym.imp.___total_physical_size__lu_MB_GetDriveTypeA]
push 0x20
mov dword [esi + 0x14], eax
lea eax, [esi + 0x124]
push eax
lea eax, [ebp - 0x130]
push eax
push eax
push 0
push 0x104
lea eax, [esi + 0x20]
push eax
push edi
call fcn.0040e853
push eax
call dword [sym.imp.___total_physical_size__lu_MB_GetVolumeInformationA]
lea eax, [ebp - 0x140]
push eax
lea eax, [ebp - 0x13c]
push eax
lea eax, [ebp - 0x138]
push eax
lea eax, [ebp - 0x144]
push eax
push edi
call fcn.0040e853
push eax
call dword [sym.imp.___total_physical_size__lu_MB_GetDiskFreeSpaceA]
test eax, eax
je 0x410d11
mov eax, dword [ebp - 0x144]
mul dword [ebp - 0x138]
push edx
mov edi, eax
push edi
push 0
push dword [ebp - 0x140]
mov dword [ebp - 0x148], edx
call fcn.00453310
push dword [ebp - 0x148]
mov dword [esi + 0x144], eax
push edi
push 0
push dword [ebp - 0x13c]
mov dword [esi + 0x148], edx
call fcn.00453310
mov dword [esi + 0x14c], eax
mov dword [esi + 0x150], edx
jmp 0x410d38
mov eax, dword [esi + 0x1c]
test eax, eax
je 0x410d38
mov ecx, dword [eax + 0x18]
mov dword [esi + 0x144], ecx
mov eax, dword [eax + 0x1c]
and dword [esi + 0x14c], 0
and dword [esi + 0x150], 0
mov dword [esi + 0x148], eax
inc dword [ebp - 0x12c]
mov eax, dword [ebp - 0x12c]
add esi, 0x6a0
cmp eax, dword [ebx]
jb 0x410bc3
push dword [ebp + 8]
push ebx
call fcn.00410926
push ebx
call fcn.0041098c
push 0x40e6e9
push 0x6a0
push dword [ebx]
lea eax, [ebx + 0x10]
push eax
call fcn.004533e0
mov ecx, dword [ebp - 4]
add esp, 0x10
pop edi
pop esi
mov eax, ebx
xor ecx, ebp
pop ebx
call fcn.00450b32
leave
ret 4