Function at 0x431a90
Capabilities:
Get disk size

Disassembly:
push 0xffffffffffffffff
push 0x46046e
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.00430290
lea ecx, [esp + 0x14]
push ecx
lea ecx, [esp + 0x10]
mov byte [esp + 0x48], 1
call fcn.004302f0
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 0x431b26
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 0
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x10]
call fcn.004302b0
mov edi, eax
lea ecx, [esp + 0x1c]
push ecx
lea ecx, [esp + 0x10]
mov byte [esp + 0x48], 2
call fcn.00430380
push 0x46d5c8
push eax
lea edx, [esp + 0x20]
push edx
mov byte [esp + 0x50], 3
call fcn.00408320
push edi
push eax
lea eax, [esp + 0x28]
push eax
mov byte [esp + 0x5c], 4
call fcn.0040f3f0
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.004302f0
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.0045ba50
mov ecx, dword [esp + 0x28]
cmp ecx, edx
jl 0x431c36
jg 0x431c28
mov ebx, dword [esp + 0x24]
cmp ebx, eax
jb 0x431c3a
mov ebx, eax
mov ecx, edx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ecx
jmp 0x431c3a
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 0x431c6e
jg 0x431c57
cmp ebx, edx
jbe 0x431c6e
push edi
push edx
push ecx
push ebx
call fcn.0045b7c0
push edx
push eax
push 0x8d
lea edx, [esp + 0x1c]
push edx
jmp 0x431c87
imul eax, eax, 0x3c
push 0
push eax
push ecx
push ebx
call fcn.0045b7c0
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 0x431ccb
jl 0x431cad
mov ecx, dword [esp + 0x24]
cmp ecx, eax
ja 0x431ccb
call dword [sym.imp.KERNEL32.dll_GetTickCount]
xor edx, edx
mov ecx, 0x3e8
div ecx
cmp edx, 0x1f4
jb 0x431ccb
push 0x465798
jmp 0x431cd6
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