Function at 0x431340
Capabilities:
Get disk size

Disassembly:
push 0xffffffffffffffff
push 0x45ed5e
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x30
push ebx
push esi
mov esi, ecx
push edi
lea ecx, [esp + 0x10]
call dword [sym.imp.MFC71.DLL_ATL::CStringT::CStringT_2]
lea eax, [esi + 0x3cc]
push eax
lea ecx, [esp + 0x10]
mov dword [esp + 0x48], 0
call fcn.0042fb40
lea ecx, [esp + 0x14]
push ecx
lea ecx, [esp + 0x10]
mov byte [esp + 0x48], 1
call fcn.0042fba0
lea edx, [esp + 0x2c]
push edx
lea ecx, [esp + 0x38]
push ecx
lea edx, [esp + 0x2c]
push edx
mov ecx, eax
call dword [sym.imp.MFC71.DLL_ATL::CSimpleStringT::operator_char_const_]
push eax
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExA]
mov ebx, eax
neg ebx
sbb bl, bl
lea ecx, [esp + 0x14]
inc bl
call dword [sym.imp.MFC71.DLL_ATL::CStringT::CStringT]
test bl, bl
je 0x4313d6
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 0
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x10]
call fcn.0042fb60
mov edi, eax
lea ecx, [esp + 0x1c]
push ecx
lea ecx, [esp + 0x10]
mov byte [esp + 0x48], 2
call fcn.0042fc30
push 0x46c540
push eax
lea edx, [esp + 0x20]
push edx
mov byte [esp + 0x50], 3
call fcn.004082b0
push edi
push eax
lea eax, [esp + 0x28]
push eax
mov byte [esp + 0x5c], 4
call fcn.0040f2c0
add esp, 0x18
mov ecx, eax
mov byte [esp + 0x44], 5
call dword [sym.imp.MFC71.DLL_ATL::CSimpleStringT::operator_char_const_]
push eax
push 0x462
mov ecx, esi
call sub.MFC71.DLL_CWnd::GetDlgItem
mov ecx, eax
call sub.MFC71.DLL_CWnd::SetWindowTextA
lea ecx, [esp + 0x14]
call dword [sym.imp.MFC71.DLL_ATL::CStringT::CStringT]
lea ecx, [esp + 0x18]
call dword [sym.imp.MFC71.DLL_ATL::CStringT::CStringT]
lea ecx, [esp + 0x1c]
call dword [sym.imp.MFC71.DLL_ATL::CStringT::CStringT]
lea ecx, [esp + 0x20]
mov byte [esp + 0x44], 1
call dword [sym.imp.MFC71.DLL_ATL::CStringT::CStringT]
lea ecx, [esp + 0x20]
push ecx
lea ecx, [esp + 0x10]
call fcn.0042fba0
mov ecx, eax
mov byte [esp + 0x44], 6
call dword [sym.imp.MFC71.DLL_ATL::CSimpleStringT::operator_char_const_]
push eax
push 0x464
mov ecx, esi
call sub.MFC71.DLL_CWnd::GetDlgItem
mov ecx, eax
call sub.MFC71.DLL_CWnd::SetWindowTextA
lea ecx, [esp + 0x20]
mov byte [esp + 0x44], 1
call dword [sym.imp.MFC71.DLL_ATL::CStringT::CStringT]
movzx edi, word [esi + 0x3c5]
push 0
mov eax, edi
cdq
push DirectSoundCreate
push edx
push eax
call fcn.0045a3e0
mov ecx, dword [esp + 0x28]
cmp ecx, edx
jl 0x4314e6
jg 0x4314d8
mov ebx, dword [esp + 0x24]
cmp ebx, eax
jb 0x4314ea
mov ebx, eax
mov ecx, edx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ecx
jmp 0x4314ea
mov ebx, dword [esp + 0x24]
mov eax, dword [esi + 0x3c1]
imul eax, edi
mov edx, eax
xor edi, edi
imul edx, edx, 0xe10
cmp ecx, edi
jl 0x43151e
jg 0x431507
cmp ebx, edx
jbe 0x43151e
push edi
push edx
push ecx
push ebx
call fcn.0045a150
push edx
push eax
push 0x8d
lea edx, [esp + 0x1c]
push edx
jmp 0x431537
imul eax, eax, 0x3c
push 0
push eax
push ecx
push ebx
call fcn.0045a150
push edx
push eax
push 0x8a
lea eax, [esp + 0x1c]
push eax
call dword [sym.imp.MFC71.DLL_ATL::CStringT::Format_1]
mov eax, dword [esi + 0x3c1]
mov edx, dword [esp + 0x38]
imul eax, eax, 0x3c
xor ecx, ecx
add esp, 0x10
cmp edx, ecx
jg 0x43157b
jl 0x43155d
mov ecx, dword [esp + 0x24]
cmp ecx, eax
ja 0x43157b
call dword [sym.imp.KERNEL32.dll_GetTickCount]
xor edx, edx
mov ecx, 0x3e8
div ecx
cmp edx, 0x1f4
jb 0x43157b
push 0x464770
jmp 0x431586
lea ecx, [esp + 0x10]
call dword [sym.imp.MFC71.DLL_ATL::CSimpleStringT::operator_char_const_]
push eax
mov ecx, esi
push 0x49b
call sub.MFC71.DLL_CWnd::GetDlgItem
mov ecx, eax
call sub.MFC71.DLL_CWnd::SetWindowTextA
lea ecx, [esp + 0xc]
call dword [sym.imp.MFC71.DLL_ATL::CStringT::CStringT]
lea ecx, [esp + 0x10]
call dword [sym.imp.MFC71.DLL_ATL::CStringT::CStringT]
mov ecx, dword [esp + 0x3c]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
add esp, 0x3c
ret