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

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0xd9
push 0
push 0
dec ecx
jne 0x528b64
push ebx
push esi
mov esi, eax
xor eax, eax
push ebp
push 0x5292d3
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [esi + 0x3b4]
call fcn.004a8894
mov edx, dword [eax]
call dword [edx + 0x48]
mov edx, 0x5292ec
mov eax, dword [esi + 0x3b4]
call fcn.004a88d0
lea edx, [ebp - 0x640]
mov eax, dword [esi + 0x3b4]
call fcn.004a88bc
mov eax, dword [ebp - 0x640]
push eax
mov eax, dword [esi + 0x3b4]
call fcn.004a8894
pop edx
mov ecx, dword [eax]
call dword [ecx + 0x38]
lea edx, [ebp - 0x644]
mov eax, dword [esi + 0x3b4]
call fcn.004a88bc
mov edx, dword [ebp - 0x644]
lea eax, [esi + 0x3f8]
call fcn.00404e98
mov eax, dword [esi + 0x300]
call fcn.004bde9c
call fcn.0048ced0
mov eax, dword [esi + 0x300]
call fcn.004bde9c
call fcn.0048d364
lea edx, [ebp - 0x648]
mov eax, dword [esi + 0x3b4]
call fcn.004a88bc
mov eax, dword [ebp - 0x648]
push eax
mov eax, dword [esi + 0x300]
call fcn.004bde9c
xor edx, edx
pop ecx
call fcn.004bd810
mov eax, dword [esi + 0x2f8]
call fcn.0044d760
mov eax, dword [esi + 0x2f8]
call fcn.004bb078
call fcn.004932f0
mov eax, dword [esi + 0x2f8]
call fcn.004bb078
call fcn.004932d0
push 1
call sub.kernel32.dll_SetLastError
push 1
call sub.kernel32.dll_SetLastError
push 1
call sub.kernel32.dll_SetLastError
xor eax, eax
mov dword [ebp - 4], eax
mov ax, word [ebp - 4]
add ax, 0x41
mov word [ebp - 0x3c], ax
mov word [ebp - 0x3a], 0x3a
mov word [ebp - 0x38], 0
push pe_nt_image_headers32
lea eax, [ebp - 0x63c]
push eax
lea eax, [ebp - 0x3c]
push eax
call sub.kernel32.dll_QueryDosDeviceW
test eax, eax
je 0x52918c
lea eax, [ebp - 0x64c]
lea edx, [ebp - 0x63c]
mov ecx, pe_nt_image_headers32
call fcn.00405024
mov edx, dword [ebp - 0x64c]
mov eax, 0x5292fc
call fcn.004053e0
dec eax
je 0x52918c
mov word [ebp - 0x38], 0x5c
mov word [ebp - 0x36], 0
lea eax, [ebp - 0x3c]
push eax
call sub.kernel32.dll_GetDriveTypeW
cmp eax, 1
je 0x52918c
mov word [ebp - 0x23c], 0
mov word [ebp - 0x43c], 0
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0
push 0x200
lea eax, [ebp - 0x43c]
push eax
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 8]
push eax
push 0x200
lea eax, [ebp - 0x23c]
push eax
lea eax, [ebp - 0x3c]
push eax
call sub.kernel32.dll_GetVolumeInformationW
test eax, eax
je 0x528d7c
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x3c]
push eax
call sub.kernel32.dll_GetDiskFreeSpaceExW
test eax, eax
mov eax, dword [esi + 0x3b4]
call fcn.004a8894
push eax
lea eax, [ebp - 0x650]
lea edx, [ebp - 0x3c]
mov ecx, 6
call fcn.00405024
mov edx, dword [ebp - 0x650]
pop eax
mov ecx, dword [eax]
call dword [ecx + 0x38]
cmp word [ebp - 0x23c], 0
jne 0x528e14
push 0x529320
lea eax, [ebp - 0x654]
mov dx, word [ebp - 0x3c]
call fcn.00404f84
push dword [ebp - 0x654]
push 0x529328
push 0x529330
lea eax, [ebp - 0x3c]
push eax
call sub.kernel32.dll_GetDriveTypeW
call fcn.004f34e0
lea edx, [ebp - 0x65c]
call fcn.004f3534
mov edx, dword [ebp - 0x65c]
lea eax, [ebp - 0x658]
call fcn.00405040
push dword [ebp - 0x658]
lea eax, [ebp - 0x30]
mov edx, 5
call fcn.0040519c
jmp 0x528e61
push 0x529320
lea eax, [ebp - 0x660]
mov dx, word [ebp - 0x3c]
call fcn.00404f84
push dword [ebp - 0x660]
push 0x529328
push 0x529330
lea eax, [ebp - 0x664]
lea edx, [ebp - 0x23c]
mov ecx, pe_nt_image_headers32
call fcn.00405024
push dword [ebp - 0x664]
lea eax, [ebp - 0x30]
mov edx, 5
call fcn.0040519c
mov eax, dword [esi + 0x300]
call fcn.004bde9c
call fcn.004bd884
push eax
mov eax, dword [esi + 0x300]
call fcn.004bde9c
mov ecx, dword [ebp - 0x30]
pop edx
call fcn.004bd800
mov dword [ebp - 0x2c], eax
lea eax, [ebp - 0x3c]
push eax
call sub.kernel32.dll_GetDriveTypeW
call fcn.004f34e0
mov edx, eax
mov eax, dword [ebp - 0x2c]
call fcn.0048be90
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax + 0x14]
mov eax, dword [ebp - 0x2c]
call fcn.0048bee8
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x2c]
call fcn.0048bcf0
mov eax, dword [esi + 0x300]
call fcn.004bde9c
mov ecx, 0x529338
mov edx, dword [ebp - 0x2c]
call fcn.004bd800
mov ebx, eax
mov edx, 6
mov eax, ebx
call fcn.0048be90
mov edx, 6
mov eax, ebx
call fcn.0048bee8
mov eax, dword [esi + 0x2f8]
call fcn.004bb078
call fcn.004baa84
mov ebx, eax
mov edx, dword [ebp - 0x30]
mov eax, ebx
call fcn.004ba91c
lea edx, [ebp - 0x66c]
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 0x14]
call fcn.004f3534
mov edx, dword [ebp - 0x66c]
lea eax, [ebp - 0x668]
call fcn.00405040
mov edx, dword [ebp - 0x668]
mov eax, dword [ebx + 0x30]
mov ecx, dword [eax]
call dword [ecx + 0x38]
cmp dword [ebp - 0x1c], 0
jne 0x528f42
cmp dword [ebp - 0x20], 0
je 0x528fe2
push dword [ebp - 0x1c]
push dword [ebp - 0x20]
lea eax, [ebp - 0x674]
call fcn.004f3134
mov edx, dword [ebp - 0x674]
lea eax, [ebp - 0x670]
call fcn.00405040
mov edx, dword [ebp - 0x670]
mov eax, dword [ebx + 0x30]
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
sub eax, dword [ebp - 0x28]
sbb edx, dword [ebp - 0x24]
push edx
push eax
lea eax, [ebp - 0x67c]
call fcn.004f3134
mov edx, dword [ebp - 0x67c]
lea eax, [ebp - 0x678]
call fcn.00405040
mov edx, dword [ebp - 0x678]
mov eax, dword [ebx + 0x30]
mov ecx, dword [eax]
call dword [ecx + 0x38]
push dword [ebp - 0x14]
push dword [ebp - 0x18]
lea eax, [ebp - 0x684]
call fcn.004f3134
mov edx, dword [ebp - 0x684]
lea eax, [ebp - 0x680]
call fcn.00405040
mov edx, dword [ebp - 0x680]
mov eax, dword [ebx + 0x30]
mov ecx, dword [eax]
call dword [ecx + 0x38]
jmp 0x529000
xor edx, edx
mov eax, dword [ebx + 0x30]
mov ecx, dword [eax]
call dword [ecx + 0x38]
xor edx, edx
mov eax, dword [ebx + 0x30]
mov ecx, dword [eax]
call dword [ecx + 0x38]
xor edx, edx
mov eax, dword [ebx + 0x30]
mov ecx, dword [eax]
call dword [ecx + 0x38]
lea eax, [ebp - 0x688]
lea edx, [ebp - 0x43c]
mov ecx, pe_nt_image_headers32
call fcn.00405024
mov edx, dword [ebp - 0x688]
mov eax, dword [ebx + 0x30]
mov ecx, dword [eax]
call dword [ecx + 0x38]
lea eax, [ebp - 0x68c]
lea edx, [ebp - 0x23c]
mov ecx, pe_nt_image_headers32
call fcn.00405024
mov edx, dword [ebp - 0x68c]
mov eax, dword [ebx + 0x30]
mov ecx, dword [eax]
call dword [ecx + 0x38]
cmp dword [ebp - 0x1c], 0
jne 0x529052
cmp dword [ebp - 0x20], 0
je 0x5290ce
lea eax, [ebp - 0x694]
push eax
push 0
push 0x64
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x14]
call fcn.00405a88
mov dword [ebp - 0x6a4], eax
mov dword [ebp - 0x6a0], edx
fild qword [ebp - 0x6a4]
fild qword [ebp - 0x20]
fdivp st(1)
fstp xword [ebp - 0x6b0]
wait
lea eax, [ebp - 0x6b0]
mov dword [ebp - 0x69c], eax
mov byte [ebp - 0x698], 3
lea edx, [ebp - 0x69c]
xor ecx, ecx
mov eax, 0x529344
call fcn.0040a708
mov edx, dword [ebp - 0x694]
lea eax, [ebp - 0x690]
call fcn.00405040
mov edx, dword [ebp - 0x690]
mov eax, dword [ebx + 0x30]
mov ecx, dword [eax]
call dword [ecx + 0x38]
jmp 0x5290db
mov edx, 0x529350
mov eax, dword [ebx + 0x30]
mov ecx, dword [eax]
call dword [ecx + 0x38]
push dword [ebp - 0x1c]
push dword [ebp - 0x20]
lea eax, [ebp - 0x6b8]
call fcn.004f3400
mov edx, dword [ebp - 0x6b8]
lea eax, [ebp - 0x6b4]
call fcn.00405040
mov edx, dword [ebp - 0x6b4]
mov eax, dword [ebx + 0x30]
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
sub eax, dword [ebp - 0x28]
sbb edx, dword [ebp - 0x24]
push edx
push eax
lea eax, [ebp - 0x6c0]
call fcn.004f3400
mov edx, dword [ebp - 0x6c0]
lea eax, [ebp - 0x6bc]
call fcn.00405040
mov edx, dword [ebp - 0x6bc]
mov eax, dword [ebx + 0x30]
mov ecx, dword [eax]
call dword [ecx + 0x38]
push dword [ebp - 0x14]
push dword [ebp - 0x18]
lea eax, [ebp - 0x6c8]
call fcn.004f3400
mov edx, dword [ebp - 0x6c8]
lea eax, [ebp - 0x6c4]
call fcn.00405040
mov edx, dword [ebp - 0x6c4]
mov eax, dword [ebx + 0x30]
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov eax, dword [ebp - 0x2c]
mov ecx, dword [eax + 0x14]
xor edx, edx
mov eax, ebx
call fcn.00492dcc
mov edx, dword [ebp - 4]
mov eax, ebx
call fcn.00492cc4
inc dword [ebp - 4]
cmp dword [ebp - 4], 0x1a
jne 0x528c78
mov eax, dword [esi + 0x300]
call fcn.004bde9c
call fcn.004bd884
xor edx, edx
call fcn.0048c19c
mov eax, dword [esi + 0x300]
call fcn.004bde9c
call fcn.0048d3b0
mov eax, dword [esi + 0x300]
call fcn.0044d760
mov eax, dword [esi + 0x2f8]
call fcn.004bb078
call fcn.004934cc
mov eax, dword [esi + 0x2f8]
call fcn.0044d760
xor ebx, ebx
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5292dd
lea eax, [ebp - 0x6c8]
call fcn.00404730
lea eax, [ebp - 0x6c4]
call fcn.00404e5c
lea eax, [ebp - 0x6c0]
call fcn.00404730
lea eax, [ebp - 0x6bc]
call fcn.00404e5c
lea eax, [ebp - 0x6b8]
call fcn.00404730
lea eax, [ebp - 0x6b4]
call fcn.00404e5c
lea eax, [ebp - 0x694]
call fcn.00404730
lea eax, [ebp - 0x690]
mov edx, 3
call fcn.00404e74
lea eax, [ebp - 0x684]
call fcn.00404730
lea eax, [ebp - 0x680]
call fcn.00404e5c
lea eax, [ebp - 0x67c]
call fcn.00404730
lea eax, [ebp - 0x678]
call fcn.00404e5c
lea eax, [ebp - 0x674]
call fcn.00404730
lea eax, [ebp - 0x670]
call fcn.00404e5c
lea eax, [ebp - 0x66c]
call fcn.00404730
lea eax, [ebp - 0x668]
mov edx, 3
call fcn.00404e74
lea eax, [ebp - 0x65c]
call fcn.00404730
lea eax, [ebp - 0x658]
mov edx, 7
call fcn.00404e74
lea eax, [ebp - 0x30]
call fcn.00404e5c
ret