Function at 0x402de0
Capabilities:
Get disk size
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x1d8
mov eax, dword [0x432018]
xor eax, esp
mov dword [esp + 0x1d4], eax
push esi
push edi
mov dword [esp + 0x64], ecx
push ecx
lea ecx, [esp + 0xd4]
call fcn.004047a0
mov eax, dword [esp + 0xe0]
lea ecx, [esp + 0xf4]
push 0
push 0x12
add ecx, dword [eax + 4]
mov eax, dword [ecx]
and eax, 0xfffffe7f
or eax, 0x40
mov dword [ecx], eax
lea eax, [esp + 0x28]
push eax
call fcn.0040b63c
mov ecx, dword [esp + 0xec]
lea edx, [esp + 0xec]
add esp, 0xc
mov ecx, dword [ecx + 4]
push dword [eax + 0xc]
add ecx, edx
push dword [eax + 8]
mov eax, dword [eax]
push ecx
call eax
add esp, 0xc
lea ecx, [esp + 0xe0]
mov edx, str.drive_MB_
call fcn.00406d50
push 0
mov esi, eax
lea eax, [esp + 0x54]
push 0x12
push eax
call fcn.0040b63c
mov ecx, dword [esi]
add esp, 0xc
push dword [eax + 0xc]
mov ecx, dword [ecx + 4]
push dword [eax + 8]
mov eax, dword [eax]
add ecx, esi
push ecx
call eax
add esp, 0xc
mov edx, str.available_free
mov ecx, esi
call fcn.00406d50
push 0
mov esi, eax
lea eax, [esp + 0xc4]
push 0x12
push eax
call fcn.0040b63c
mov ecx, dword [esi]
add esp, 0xc
push dword [eax + 0xc]
mov ecx, dword [ecx + 4]
push dword [eax + 8]
mov eax, dword [eax]
add ecx, esi
push ecx
call eax
add esp, 0xc
mov edx, str.total
mov ecx, esi
call fcn.00406d50
push 0
mov esi, eax
lea eax, [esp + 0xb4]
push 0x12
push eax
call fcn.0040b63c
mov ecx, dword [esi]
add esp, 0xc
push dword [eax + 0xc]
mov ecx, dword [ecx + 4]
push dword [eax + 8]
mov eax, dword [eax]
add ecx, esi
push ecx
call eax
add esp, 0xc
mov edx, str.total_free
mov ecx, esi
call fcn.00406d50
mov edi, eax
mov ecx, dword [edi]
mov ecx, dword [ecx + 4]
mov ecx, dword [ecx + edi + 0x30]
mov esi, dword [ecx + 4]
mov ecx, esi
mov dword [esp + 0x4c], esi
mov edx, dword [esi]
call dword [edx + 4]
lea eax, [esp + 0x48]
push eax
call fcn.004076b0
add esp, 4
mov ecx, dword [eax]
push 0xa
mov edx, dword [ecx + 0x30]
mov ecx, eax
call edx
movzx eax, ax
mov dword [esp + 0xc], eax
test esi, esi
je 0x402f64
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 8]
call eax
test eax, eax
je 0x402f60
mov edx, dword [eax]
mov ecx, eax
push 1
call dword [edx]
mov eax, dword [esp + 0xc]
push eax
mov ecx, edi
call fcn.00407c20
mov ecx, edi
call fcn.00406900
lea ecx, [esp + 0x20]
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 0
call fcn.00402ac0
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
cmp esi, eax
je 0x4035f8
cmp dword [esi + 0x14], 8
mov eax, esi
jb 0x402fae
mov eax, dword [esi]
lea ecx, [esp + 0x48]
push ecx
lea ecx, [esp + 0x74]
push ecx
lea ecx, [esp + 0x70]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExW]
test eax, eax
je 0x4034dd
push 0
lea eax, [esp + 0x184]
push 0x12
push eax
call fcn.0040b63c
mov ecx, dword [esp + 0xec]
lea edx, [esp + 0xec]
add esp, 0xc
mov ecx, dword [ecx + 4]
push dword [eax + 0xc]
add ecx, edx
push dword [eax + 8]
mov eax, dword [eax]
push ecx
call eax
add esp, 0xc
mov edx, esi
cmp dword [esi + 0x14], 8
jb 0x40300b
mov edx, dword [esi]
lea ecx, [esp + 0xe0]
call fcn.00406d50
push 0
mov edi, eax
lea eax, [esp + 0x194]
push 0x12
push eax
call fcn.0040b63c
mov ecx, dword [edi]
add esp, 0xc
push dword [eax + 0xc]
mov ecx, dword [ecx + 4]
push dword [eax + 8]
mov eax, dword [eax]
add ecx, edi
push ecx
call eax
mov ecx, dword [esp + 0x74]
add esp, 0xc
mov eax, dword [esp + 0x6c]
shrd ecx, eax, 0x14
mov dword [esp + 0xc], 0
mov dword [esp + 0x18], ecx
lea ecx, [esp + 0x30]
shr eax, 0x14
push edi
mov dword [esp + 0x18], eax
call fcn.00405900
cmp byte [esp + 0x34], 0
je 0x40310f
mov eax, dword [edi]
mov eax, dword [eax + 4]
mov eax, dword [eax + edi + 0x30]
mov ecx, dword [eax + 4]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x7c], ecx
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [esp + 0x78]
push eax
call fcn.00407130
mov ecx, dword [esp + 0x20]
add esp, 4
mov dword [esp + 0x10], eax
test ecx, ecx
je 0x4030bb
mov edx, dword [ecx]
mov edx, dword [edx + 8]
call edx
test eax, eax
je 0x4030bb
mov edx, dword [eax]
mov ecx, eax
push 1
call dword [edx]
mov eax, dword [edi]
push dword [esp + 0x14]
mov edx, dword [esp + 0x14]
push dword [esp + 0x1c]
mov ecx, dword [eax + 4]
movzx eax, word [ecx + edi + 0x40]
add ecx, edi
mov edx, dword [edx]
push eax
push ecx
push dword [ecx + 0x38]
mov ecx, dword [esp + 0x24]
lea eax, [esp + 0x9c]
mov byte [esp + 0x94], 0
push dword [esp + 0x94]
push eax
call dword [edx + 0x18]
mov eax, dword [esp + 0xc]
mov ecx, 4
cmp byte [esp + 0x88], al
cmovne eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [edi]
xor edx, edx
mov ecx, dword [eax + 4]
mov eax, 4
add ecx, edi
cmp dword [ecx + 0x38], edx
cmovne eax, edx
or eax, dword [ecx + 0xc]
or eax, dword [esp + 0xc]
and eax, 0x17
mov dword [ecx + 0xc], eax
mov ecx, dword [ecx + 0x10]
and ecx, eax
jne 0x4036e0
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx]
mov eax, dword [eax + 4]
cmp dword [eax + ecx + 0xc], edx
jne 0x403178
test byte [eax + ecx + 0x14], 2
je 0x403178
mov ecx, dword [eax + ecx + 0x38]
mov eax, dword [ecx]
mov eax, dword [eax + 0x34]
call eax
cmp eax, 0xffffffff
jne 0x403174
mov edx, dword [esp + 0x30]
push ecx
push 4
mov eax, dword [edx]
mov ecx, dword [eax + 4]
add ecx, edx
call fcn.00405a00
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx]
mov eax, dword [eax + 4]
mov ecx, dword [eax + ecx + 0x38]
test ecx, ecx
je 0x40318a
mov eax, dword [ecx]
call dword [eax + 8]
push 0
lea eax, [esp + 0x1a4]
push 0x12
push eax
call fcn.0040b63c
mov ecx, dword [edi]
add esp, 0xc
push dword [eax + 0xc]
mov ecx, dword [ecx + 4]
push dword [eax + 8]
mov eax, dword [eax]
add ecx, edi
push ecx
call eax
mov ecx, dword [esp + 0x7c]
add esp, 0xc
mov eax, dword [esp + 0x74]
shrd ecx, eax, 0x14
mov dword [esp + 0xc], 0
mov dword [esp + 0x1c], ecx
lea ecx, [esp + 0x38]
shr eax, 0x14
push edi
mov dword [esp + 0x18], eax
call fcn.00405900
cmp byte [esp + 0x3c], 0
je 0x403286
mov eax, dword [edi]
mov eax, dword [eax + 4]
mov eax, dword [eax + edi + 0x30]
mov ecx, dword [eax + 4]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x94], ecx
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [esp + 0x90]
push eax
call fcn.00407130
mov ecx, dword [esp + 0x1c]
add esp, 4
mov dword [esp + 0x10], eax
test ecx, ecx
je 0x403232
mov edx, dword [ecx]
mov edx, dword [edx + 8]
call edx
test eax, eax
je 0x403232
mov edx, dword [eax]
mov ecx, eax
push 1
call dword [edx]
mov eax, dword [edi]
push dword [esp + 0x14]
mov edx, dword [esp + 0x14]
push dword [esp + 0x20]
mov ecx, dword [eax + 4]
movzx eax, word [ecx + edi + 0x40]
add ecx, edi
mov edx, dword [edx]
push eax
push ecx
push dword [ecx + 0x38]
mov ecx, dword [esp + 0x24]
lea eax, [esp + 0xb4]
mov byte [esp + 0xac], 0
push dword [esp + 0xac]
push eax
call dword [edx + 0x18]
mov eax, dword [esp + 0xc]
mov ecx, 4
cmp byte [esp + 0xa0], al
cmovne eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [edi]
xor edx, edx
mov ecx, dword [eax + 4]
mov eax, 4
add ecx, edi
cmp dword [ecx + 0x38], edx
cmovne eax, edx
or eax, dword [esp + 0xc]
or eax, dword [ecx + 0xc]
and eax, 0x17
mov dword [ecx + 0xc], eax
mov ecx, dword [ecx + 0x10]
and ecx, eax
jne 0x4036a3
mov ecx, dword [esp + 0x38]
mov eax, dword [ecx]
mov eax, dword [eax + 4]
cmp dword [eax + ecx + 0xc], edx
jne 0x4032ef
test byte [eax + ecx + 0x14], 2
je 0x4032ef
mov ecx, dword [eax + ecx + 0x38]
mov eax, dword [ecx]
mov eax, dword [eax + 0x34]
call eax
cmp eax, 0xffffffff
jne 0x4032eb
mov edx, dword [esp + 0x38]
push ecx
push 4
mov eax, dword [edx]
mov ecx, dword [eax + 4]
add ecx, edx
call fcn.00405a00
mov ecx, dword [esp + 0x38]
mov eax, dword [ecx]
mov eax, dword [eax + 4]
mov ecx, dword [eax + ecx + 0x38]
test ecx, ecx
je 0x403301
mov eax, dword [ecx]
call dword [eax + 8]
push 0
lea eax, [esp + 0x1b4]
push 0x12
push eax
call fcn.0040b63c
mov ecx, dword [edi]
add esp, 0xc
push dword [eax + 0xc]
mov ecx, dword [ecx + 4]
push dword [eax + 8]
mov eax, dword [eax]
add ecx, edi
push ecx
call eax
mov ecx, dword [esp + 0x54]
add esp, 0xc
mov eax, dword [esp + 0x4c]
shrd ecx, eax, 0x14
mov dword [esp + 0xc], 0
mov dword [esp + 0x1c], ecx
lea ecx, [esp + 0x40]
shr eax, 0x14
push edi
mov dword [esp + 0x18], eax
call fcn.00405900
cmp byte [esp + 0x44], 0
je 0x4033fd
mov eax, dword [edi]
mov eax, dword [eax + 4]
mov eax, dword [eax + edi + 0x30]
mov ecx, dword [eax + 4]
mov dword [esp + 0x18], ecx
mov dword [esp + 0xac], ecx
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [esp + 0xa8]
push eax
call fcn.00407130
mov ecx, dword [esp + 0x1c]
add esp, 4
mov dword [esp + 0x10], eax
test ecx, ecx
je 0x4033a9
mov edx, dword [ecx]
mov edx, dword [edx + 8]
call edx
test eax, eax
je 0x4033a9
mov edx, dword [eax]
mov ecx, eax
push 1
call dword [edx]
mov eax, dword [edi]
push dword [esp + 0x14]
mov edx, dword [esp + 0x14]
push dword [esp + 0x20]
mov ecx, dword [eax + 4]
movzx eax, word [ecx + edi + 0x40]
add ecx, edi
mov edx, dword [edx]
push eax
push ecx
push dword [ecx + 0x38]
mov ecx, dword [esp + 0x24]
lea eax, [esp + 0xd4]
mov byte [esp + 0xc4], 0
push dword [esp + 0xc4]
push eax
call dword [edx + 0x18]
mov eax, dword [esp + 0xc]
mov ecx, 4
cmp byte [esp + 0xc0], al
cmovne eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [edi]
xor edx, edx
mov ecx, dword [eax + 4]
mov eax, 4
add ecx, edi
cmp dword [ecx + 0x38], edx
cmovne eax, edx
or eax, dword [ecx + 0xc]
or eax, dword [esp + 0xc]
and eax, 0x17
mov dword [ecx + 0xc], eax
mov ecx, dword [ecx + 0x10]
and ecx, eax
jne 0x403666
mov ecx, dword [esp + 0x40]
mov eax, dword [ecx]
mov eax, dword [eax + 4]
cmp dword [eax + ecx + 0xc], edx
jne 0x403466
test byte [eax + ecx + 0x14], 2
je 0x403466
mov ecx, dword [eax + ecx + 0x38]
mov eax, dword [ecx]
mov eax, dword [eax + 0x34]
call eax
cmp eax, 0xffffffff
jne 0x403462
mov edx, dword [esp + 0x40]
push ecx
push 4
mov eax, dword [edx]
mov ecx, dword [eax + 4]
add ecx, edx
call fcn.00405a00
mov ecx, dword [esp + 0x40]
mov eax, dword [ecx]
mov eax, dword [eax + 4]
mov ecx, dword [eax + ecx + 0x38]
test ecx, ecx
je 0x403478
mov eax, dword [ecx]
call dword [eax + 8]
mov eax, dword [edi]
mov eax, dword [eax + 4]
mov eax, dword [eax + edi + 0x30]
mov ecx, dword [eax + 4]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x54], ecx
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [esp + 0x50]
push eax
call fcn.004076b0
add esp, 4
mov ecx, dword [eax]
push 0xa
mov edx, dword [ecx + 0x30]
mov ecx, eax
call edx
movzx ecx, ax
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x4034cb
mov eax, dword [ecx]
mov eax, dword [eax + 8]
call eax
test eax, eax
je 0x4034cb
mov edx, dword [eax]
mov ecx, eax
push 1
call dword [edx]
push dword [esp + 0x14]
mov ecx, edi
call fcn.00407c20
mov ecx, edi
call fcn.00406900
add esi, 0x18
cmp esi, dword [esp + 0x24]
jne 0x402fa4
mov edx, dword [esp + 0x124]
xor eax, eax
xorps xmm0, xmm0
mov dword [esp + 0x1c0], 0
movaps xmmword [esp + 0x1b0], xmm0
mov word [esp + 0x1b0], ax
mov eax, edx
and al, 0x22
mov dword [esp + 0x1c4], 7
movq qword [esp + 0x50], xmm0
cmp al, 2
je 0x403555
mov eax, dword [esp + 0x108]
mov ecx, dword [eax]
test ecx, ecx
je 0x403555
cmp ecx, dword [esp + 0x120]
mov eax, dword [esp + 0xf8]
cmovb ecx, dword [esp + 0x120]
mov edx, dword [eax]
sub ecx, edx
sar ecx, 1
jmp 0x40358b
test dl, 4
jne 0x403583
mov eax, dword [esp + 0x104]
mov esi, dword [eax]
test esi, esi
je 0x403583
mov eax, dword [esp + 0xf4]
mov edx, dword [eax]
mov eax, dword [esp + 0x114]
mov ecx, dword [eax]
add ecx, ecx
sub ecx, edx
add ecx, esi
sar ecx, 1
jmp 0x40358b
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x50]
test edx, edx
je 0x40359d
push ecx
push edx
lea ecx, [esp + 0x1b8]
call fcn.004069a0
mov ecx, dword [esp + 0x64]
lea eax, [esp + 0x1b0]
push eax
call fcn.00404a30
mov ecx, dword [esp + 0x1c4]
cmp ecx, 8
jb 0x4035f0
mov edx, dword [esp + 0x1b0]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x4035e6
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40371d
push ecx
push edx
call fcn.0040bf76
add esp, 8
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
test esi, esi
je 0x403646
push ecx
mov edx, eax
mov ecx, esi
call fcn.004074e0
mov eax, dword [esp + 0x2c]
add esp, 4
sub eax, esi
sar eax, 3
imul eax, eax, 0xaaaaaaab
lea ecx, [eax + eax*2]
mov eax, esi
shl ecx, 3
cmp ecx, 0x1000
jb 0x40363c
mov esi, dword [eax - 4]
add ecx, 0x23
sub eax, esi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40371d
push ecx
push esi
call fcn.0040bf76
add esp, 8
lea ecx, [esp + 0xd0]
call fcn.00403730
mov ecx, dword [esp + 0x1dc]
pop edi
pop esi
xor ecx, esp
call fcn.0040ba30
mov esp, ebp
pop ebp
ret
test cl, 4
je 0x403672
mov esi, str.ios_base::badbit_set
jmp 0x403682
test cl, 2
mov esi, str.ios_base::failbit_set
mov eax, str.ios_base::eofbit_set
cmove esi, eax
lea eax, [esp + 0x50]
push 1
push eax
call fcn.00401210
add esp, 8
lea ecx, [esp + 0x20]
push eax
push esi
call fcn.00401a80
mov ecx, eax
call fcn.004010b0
test cl, 4
je 0x4036af
mov esi, str.ios_base::badbit_set
jmp 0x4036bf
test cl, 2
mov esi, str.ios_base::failbit_set
mov eax, str.ios_base::eofbit_set
cmove esi, eax
lea eax, [esp + 0x50]
push 1
push eax
call fcn.00401210
add esp, 8
lea ecx, [esp + 0x20]
push eax
push esi
call fcn.00401a80
mov ecx, eax
call fcn.004010b0
test cl, 4
je 0x4036ec
mov esi, str.ios_base::badbit_set
jmp 0x4036fc
test cl, 2
mov esi, str.ios_base::failbit_set
mov eax, str.ios_base::eofbit_set
cmove esi, eax
lea eax, [esp + 0x50]
push 1
push eax
call fcn.00401210
add esp, 8
lea ecx, [esp + 0x20]
push eax
push esi
call fcn.00401a80
mov ecx, eax
call fcn.004010b0
call fcn.004140fb
int3