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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x60310b
mov eax, dword fs:[0]
push eax
sub esp, 0x78
mov eax, dword [0x69f000]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov ecx, dword [edi + 0x8c]
xorps xmm0, xmm0
mov eax, dword [edi + 0x88]
movlpd qword [ebp - 0x30], xmm0
movlpd qword [ebp - 0x40], xmm0
movlpd qword [ebp - 0x38], xmm0
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x6c], ecx
test ecx, ecx
ja 0x40b0a0
jb 0x40b08a
test eax, eax
jne 0x40b0a0
cmp dword [edi + 0x84], 0
ja 0x40b0a0
cmp dword [edi + 0x80], 0
jbe 0x40b415
mov eax, dword [edi + 4]
lea esi, [edi + 4]
add eax, 0x140
cmp dword [eax + 0x10], 0
je 0x40b41c
push eax
lea ecx, [ebp - 0x28]
call fcn.0040bb80
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x38]
cmp dword [ebp - 0x14], 8
lea eax, [ebp - 0x28]
push ecx
cmovae eax, dword [ebp - 0x28]
lea ecx, [ebp - 0x40]
push ecx
lea ecx, [ebp - 0x30]
push ecx
push eax
call dword [sym.imp.KERNEL32.DLL_GetDiskFreeSpaceExW]
test eax, eax
je 0x40b3c2
mov eax, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x30]
mov dword [ebp - 0x60], eax
mov eax, dword [esi]
mov dword [ebp - 0x44], eax
call fcn.00408570
cmp byte [eax + 0x43b], 0
jne 0x40b2ed
mov ecx, dword [ebp - 0x60]
test ecx, ecx
ja 0x40b162
jb 0x40b11c
cmp edi, 0x20000000
jae 0x40b162
push 0x17
xorps xmm0, xmm0
mov dword [ebp - 0x4c], 0
push str.chosen_drive_free_space
lea ecx, [ebp - 0x5c]
mov dword [ebp - 0x48], 0
movups xmmword [ebp - 0x5c], xmm0
call fcn.0040c3f0
mov byte [ebp - 4], 1
lea eax, [ebp - 0x5c]
mov ecx, dword [ebp - 0x44]
push eax
add ecx, 0xdc
call fcn.0040b940
push 6
push str._500MB
jmp 0x40b2da
mov edx, edi
mov eax, ecx
add edx, 0xdfffffff
adc eax, 0xffffffff
test eax, eax
ja 0x40b1c3
jb 0x40b17d
cmp edx, 0x1ffffffe
ja 0x40b1c3
push 0x17
xorps xmm0, xmm0
mov dword [ebp - 0x4c], 0
push str.chosen_drive_free_space
lea ecx, [ebp - 0x5c]
mov dword [ebp - 0x48], 0
movups xmmword [ebp - 0x5c], xmm0
call fcn.0040c3f0
mov byte [ebp - 4], 2
lea eax, [ebp - 0x5c]
mov ecx, dword [ebp - 0x44]
push eax
add ecx, 0xdc
call fcn.0040b940
push 0xa
push str._500MB1GB
jmp 0x40b2da
mov edx, edi
mov eax, ecx
add edx, 0xbfffffff
adc eax, 0xffffffff
test eax, eax
ja 0x40b224
jb 0x40b1de
cmp edx, 0x1ffffffe
ja 0x40b224
push 0x17
xorps xmm0, xmm0
mov dword [ebp - 0x4c], 0
push str.chosen_drive_free_space
lea ecx, [ebp - 0x5c]
mov dword [ebp - 0x48], 0
movups xmmword [ebp - 0x5c], xmm0
call fcn.0040c3f0
mov byte [ebp - 4], 3
lea eax, [ebp - 0x5c]
mov ecx, dword [ebp - 0x44]
push eax
add ecx, 0xdc
call fcn.0040b940
push 0xb
push str._1GB_1.5GB
jmp 0x40b2da
mov edx, edi
mov eax, ecx
add edx, 0x9fffffff
adc eax, 0xffffffff
test eax, eax
ja 0x40b282
jb 0x40b23f
cmp edx, 0x1ffffffe
ja 0x40b282
push 0x17
xorps xmm0, xmm0
mov dword [ebp - 0x4c], 0
push str.chosen_drive_free_space
lea ecx, [ebp - 0x5c]
mov dword [ebp - 0x48], 0
movups xmmword [ebp - 0x5c], xmm0
call fcn.0040c3f0
mov byte [ebp - 4], 4
lea eax, [ebp - 0x5c]
mov ecx, dword [ebp - 0x44]
push eax
add ecx, 0xdc
call fcn.0040b940
push 0xb
push str._1.5GB_2GB
jmp 0x40b2da
add edi, 0x7fffffff
adc ecx, 0xffffffff
test ecx, ecx
ja 0x40b2ed
jb 0x40b299
cmp edi, 0x1ffffffe
ja 0x40b2ed
push 0x17
xorps xmm0, xmm0
mov dword [ebp - 0x4c], 0
push str.chosen_drive_free_space
lea ecx, [ebp - 0x5c]
mov dword [ebp - 0x48], 0
movups xmmword [ebp - 0x5c], xmm0
call fcn.0040c3f0
mov byte [ebp - 4], 5
lea eax, [ebp - 0x5c]
mov ecx, dword [ebp - 0x44]
push eax
add ecx, 0xdc
call fcn.0040b940
push 0xb
push str._2GB_2.5GB
mov ecx, eax
call fcn.0040be20
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x5c]
call fcn.0040bd90
mov eax, dword [ebp - 0x6c]
cmp dword [ebp - 0x2c], eax
ja 0x40b3d6
jb 0x40b307
mov eax, dword [ebp - 0x68]
cmp dword [ebp - 0x30], eax
jae 0x40b3d6
push 5
xorps xmm0, xmm0
mov dword [ebp - 0x4c], 0
push str.act_o
lea ecx, [ebp - 0x5c]
mov dword [ebp - 0x48], 0
movups xmmword [ebp - 0x5c], xmm0
call fcn.0040c3f0
mov byte [ebp - 4], 6
lea eax, [ebp - 0x5c]
mov ecx, dword [esi]
push eax
add ecx, 0xdc
call fcn.0040b940
push 1
push 0x6611b0
mov ecx, eax
call fcn.0040be20
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x5c]
call fcn.0040bd90
push 0xa
xorps xmm0, xmm0
mov dword [ebp - 0x74], 0
push str.mem_status
lea ecx, [ebp - 0x84]
mov dword [ebp - 0x70], 0
movups xmmword [ebp - 0x84], xmm0
call fcn.0040c3f0
mov byte [ebp - 4], 7
lea eax, [ebp - 0x84]
mov ecx, dword [esi]
push eax
add ecx, 0xdc
call fcn.0040b940
push 0x15
push str.no_enough_install_mem
mov ecx, eax
call fcn.0040be20
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x84]
call fcn.0040bd90
mov eax, dword [esi]
mov byte [eax + 0x1a3], 0
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x28]
call fcn.0040bd90
jmp 0x40b67b
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x28]
call fcn.0040bd90
call fcn.00408570
mov ecx, dword [esi]
add ecx, 0x140
lea edx, [eax + 0xf4]
cmp dword [ecx + 0x14], 8
jb 0x40b400
mov ecx, dword [ecx]
push dword [ebp - 0x2c]
mov eax, dword [edx]
push dword [ebp - 0x30]
push ecx
push str.Free_Space_in_directory_:_s:__llu
push edx
call dword [eax + 0x14]
add esp, 0x14
mov al, 1
jmp 0x40b67d
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x30]
push eax
push 0
call dword [sym.imp.KERNEL32.DLL_GetDiskFreeSpaceExW]
test eax, eax
je 0x40b67b
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x60], eax
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x64], eax
mov eax, dword [esi]
mov dword [ebp - 0x44], eax
call fcn.00408570
cmp byte [eax + 0x43b], 0
jne 0x40b590
mov edx, dword [ebp - 0x64]
test edx, edx
ja 0x40b4b8
jb 0x40b46f
mov ecx, dword [ebp - 0x60]
cmp ecx, 0x20000000
jae 0x40b4bb
push 0x14
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push str.def_drive_free_space
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.0040c3f0
mov dword [ebp - 4], 8
lea eax, [ebp - 0x28]
mov ecx, dword [ebp - 0x44]
push eax
add ecx, 0xdc
call fcn.0040b940
push 6
push str._500MB
jmp 0x40b57a
mov ecx, dword [ebp - 0x60]
mov eax, ecx
add eax, 0xdfffffff
mov dword [ebp - 0x64], eax
mov eax, edx
adc eax, 0xffffffff
test eax, eax
ja 0x40b51f
jb 0x40b4d9
cmp dword [ebp - 0x64], 0xbffffffe
ja 0x40b51f
push 0x14
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push str.def_drive_free_space
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.0040c3f0
mov dword [ebp - 4], 9
lea eax, [ebp - 0x28]
mov ecx, dword [ebp - 0x44]
push eax
add ecx, 0xdc
call fcn.0040b940
push 0xd
push str._500MB_3.5GB
jmp 0x40b57a
add ecx, 0x1fffffff
adc edx, 0xffffffff
test edx, edx
ja 0x40b590
jb 0x40b536
cmp ecx, 0x5ffffffe
ja 0x40b590
push 0x14
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push str.def_drive_free_space
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.0040c3f0
mov dword [ebp - 4], 0xa
lea eax, [ebp - 0x28]
mov ecx, dword [ebp - 0x44]
push eax
add ecx, 0xdc
call fcn.0040b940
push 0xb
push str._3.5GB_5GB
mov ecx, eax
call fcn.0040be20
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x28]
call fcn.0040bd90
mov ecx, dword [edi + 0x84]
mov eax, dword [edi + 0x80]
mov edi, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x30]
cmp edi, ecx
ja 0x40b698
jb 0x40b5b4
cmp edx, eax
jae 0x40b698
push 5
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push str.act_o
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.0040c3f0
mov dword [ebp - 4], 0xb
lea eax, [ebp - 0x28]
mov ecx, dword [esi]
push eax
add ecx, 0xdc
call fcn.0040b940
push 1
push 0x6611b0
mov ecx, eax
call fcn.0040be20
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x28]
call fcn.0040bd90
push 0xa
xorps xmm0, xmm0
mov dword [ebp - 0x74], 0
push str.mem_status
lea ecx, [ebp - 0x84]
mov dword [ebp - 0x70], 0
movups xmmword [ebp - 0x84], xmm0
call fcn.0040c3f0
mov dword [ebp - 4], 0xc
lea eax, [ebp - 0x84]
mov ecx, dword [esi]
push eax
add ecx, 0xdc
call fcn.0040b940
push 0x16
push str.no_enough_download_mem
mov ecx, eax
call fcn.0040be20
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x84]
call fcn.0040bd90
mov eax, dword [esi]
mov byte [eax + 0x1a2], 0
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.005d077b
mov esp, ebp
pop ebp
ret
add eax, dword [ebp - 0x68]
adc ecx, dword [ebp - 0x6c]
cmp edi, ecx
ja 0x40b3e5
jb 0x40b6b0
cmp edx, eax
jae 0x40b3e5
push 5
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push str.act_o
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.0040c3f0
mov dword [ebp - 4], 0xd
lea eax, [ebp - 0x28]
mov ecx, dword [esi]
push eax
add ecx, 0xdc
call fcn.0040b940
push 1
push 0x6611b0
mov ecx, eax
call fcn.0040be20
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x28]
call fcn.0040bd90
call fcn.00408570
call dword [sym.imp.KERNEL32.DLL_GetLogicalDrives]
mov ecx, eax
mov edi, esi
test ecx, ecx
je 0x40b77c
lea eax, [ecx - 1]
test ecx, eax
jne 0x40b77c
push 0xa
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push str.mem_status
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.0040c3f0
mov dword [ebp - 4], 0xe
lea eax, [ebp - 0x28]
mov ecx, dword [edi]
push eax
add ecx, 0xdc
call fcn.0040b940
push 0x22
push str.no_enough_install_mem_single_drive
mov ecx, eax
call fcn.0040be20
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x28]
jmp 0x40b66d
push 0xa
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push str.mem_status
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.0040c3f0
mov dword [ebp - 4], 0xf
lea eax, [ebp - 0x28]
mov ecx, dword [edi]
push eax
add ecx, 0xdc
call fcn.0040b940
push 0x15
push str.no_enough_install_mem
mov ecx, eax
call fcn.0040be20
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x28]
call fcn.0040bd90
mov eax, dword [esi]
mov byte [eax + 0x1a3], 0
jmp 0x40b67b