Function at 0x56c090
Capabilities:
Get disk information
Get disk size
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x58d711
mov eax, dword fs:[0]
push eax
sub esp, 0x49c
mov eax, dword [0x5ebfc4]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov esi, dword [sym.imp.USER32.dll_SendMessageW]
push 0
push 0
push 0x146
push dword [ebx + 0x3080]
call esi
test eax, eax
je 0x56c106
jmp 0x56c0e0
push 0
push 0
push 0x144
push dword [ebx + 0x3080]
call esi
push 0
push 0
push 0x146
push dword [ebx + 0x3080]
call esi
test eax, eax
jne 0x56c0e0
call fcn.00407271
mov ecx, eax
test ecx, ecx
je 0x56c7e3
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, 0x5940e4
jne 0x56c7ed
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
lea esi, [eax + 0x10]
mov dword [ebp - 0x424], esi
mov dword [ebp - 4], 0
call fcn.00407271
mov ecx, eax
test ecx, ecx
je 0x56c7f4
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, 0x5940e4
jne 0x56c7fe
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
lea edi, [eax + 0x10]
mov dword [ebp - 0x434], edi
push 0x200
lea eax, [ebp - 0x210]
mov byte [ebp - 4], 1
push 0
push eax
call fcn.0053eae0
add esp, 0xc
mov dword [ebp - 0x428], 0
lea eax, [ebp - 0x210]
mov dword [ebp - 0x418], eax
push eax
push 0xff
call dword [sym.imp.KERNEL32.dll_GetLogicalDriveStringsW]
cmp word [ebp - 0x210], 0
mov dword [ebx + 0x508], 0
je 0x56c570
lea eax, [ebp - 0x210]
xor ecx, ecx
push eax
mov dword [ebp - 0x448], ecx
mov dword [ebp - 0x444], ecx
mov dword [ebp - 0x420], ecx
mov dword [ebp - 0x41c], ecx
mov dword [ebp - 0x43c], ecx
mov dword [ebp - 0x438], ecx
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
mov edx, eax
mov eax, dword [ebp - 0x418]
mov edi, eax
lea ecx, [edi + 2]
mov dword [ebp - 0x414], ecx
mov cx, word [edi]
add edi, 2
test cx, cx
jne 0x56c205
sub edi, dword [ebp - 0x414]
sar edi, 1
cmp edx, 3
je 0x56c230
cmp edx, 4
je 0x56c230
cmp edx, 2
je 0x56c230
cmp edx, 6
jne 0x56c554
xor ecx, ecx
mov word [eax + 2], cx
movzx eax, word [eax]
push eax
lea eax, [ebp - 0x424]
push str._C:
push eax
call fcn.00404950
mov esi, dword [ebp - 0x424]
lea eax, [ebp - 0x43c]
add esp, 0xc
push eax
lea eax, [ebp - 0x420]
push eax
lea eax, [ebp - 0x448]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExW]
test eax, eax
je 0x56c54e
push dword [esi - 0xc]
lea ecx, [ebp - 0x434]
push esi
call fcn.004052d0
mov edx, dword [ebp - 0x41c]
mov esi, dword [ebp - 0x420]
cmp edx, 2
ja 0x56c373
jb 0x56c2a6
test esi, esi
jae 0x56c373
sub esi, dword [ebp - 0x43c]
mov dword [ebp - 0x450], esi
sbb edx, dword [ebp - 0x438]
mov eax, edx
mov dword [ebp - 0x458], 0
mov ecx, eax
mov dword [ebp - 0x468], 0
and eax, 0x7fffffff
mov dword [ebp - 0x414], str._s:__.0f_____.0f__.0fMiB__r_n
mov dword [ebp - 0x44c], eax
and ecx, 0x80000000
fild qword [ebp - 0x450]
mov dword [ebp - 0x454], ecx
fild qword [ebp - 0x458]
shrd esi, edx, 0xa
fchs
faddp st(1)
shr edx, 0xa
fstp qword [ebp - 0x430]
fld qword [ebp - 0x430]
mov eax, dword [ebp - 0x420]
mov ecx, dword [ebp - 0x41c]
mov dword [ebp - 0x460], eax
mov eax, ecx
and ecx, 0x7fffffff
and eax, 0x80000000
mov dword [ebp - 0x45c], ecx
fild qword [ebp - 0x460]
mov dword [ebp - 0x464], eax
fild qword [ebp - 0x468]
fchs
faddp st(1)
fstp qword [ebp - 0x430]
fdiv qword [ebp - 0x430]
mov eax, dword [ebp - 0x420]
mov ecx, dword [ebp - 0x41c]
shrd eax, ecx, 0xa
shr ecx, 0xa
jmp 0x56c43b
sub esi, dword [ebp - 0x43c]
mov dword [ebp - 0x470], esi
sbb edx, dword [ebp - 0x438]
mov eax, edx
mov dword [ebp - 0x478], 0
mov ecx, eax
mov dword [ebp - 0x488], 0
and eax, 0x7fffffff
mov dword [ebp - 0x414], str._s:__.0f_____.0f__.0fGiB__r_n
mov dword [ebp - 0x46c], eax
and ecx, 0x80000000
fild qword [ebp - 0x470]
mov dword [ebp - 0x474], ecx
fild qword [ebp - 0x478]
shrd esi, edx, 0x14
fchs
faddp st(1)
shr edx, 0x14
fstp qword [ebp - 0x430]
fld qword [ebp - 0x430]
mov eax, dword [ebp - 0x420]
mov ecx, dword [ebp - 0x41c]
mov dword [ebp - 0x480], eax
mov eax, ecx
and ecx, 0x7fffffff
and eax, 0x80000000
mov dword [ebp - 0x47c], ecx
fild qword [ebp - 0x480]
mov dword [ebp - 0x484], eax
fild qword [ebp - 0x488]
fchs
faddp st(1)
fstp qword [ebp - 0x430]
fdiv qword [ebp - 0x430]
mov eax, dword [ebp - 0x420]
mov ecx, dword [ebp - 0x41c]
shrd eax, ecx, 0x14
shr ecx, 0x14
mov dword [ebp - 0x490], eax
sub esp, 0x18
mov eax, ecx
mov dword [ebp - 0x498], 0
and eax, 0x80000000
mov dword [ebp - 0x4a0], esi
and ecx, 0x7fffffff
mov dword [ebp - 0x494], eax
mov dword [ebp - 0x48c], ecx
mov eax, edx
fild qword [ebp - 0x490]
and edx, 0x7fffffff
and eax, 0x80000000
mov dword [ebp - 0x49c], edx
mov dword [ebp - 0x4a4], eax
lea eax, [ebp - 0x424]
fild qword [ebp - 0x498]
mov dword [ebp - 0x4a8], 0
fchs
faddp st(1)
fstp qword [ebp - 0x430]
fld qword [ebp - 0x430]
fld qword [0x5cd2f0]
fmul st(1), st(0)
fxch st(1)
fstp qword [esp + 0x10]
fild qword [ebp - 0x4a0]
fild qword [ebp - 0x4a8]
fchs
faddp st(1)
fstp qword [ebp - 0x430]
fmul qword [ebp - 0x430]
fstp qword [esp + 8]
fmul qword [0x5cd3a8]
fstp qword [esp]
push dword [ebp - 0x418]
push dword [ebp - 0x414]
push eax
call fcn.00404950
mov esi, dword [ebp - 0x424]
lea ecx, [ebp - 0x434]
add esp, 0x24
push dword [esi - 0xc]
push esi
call fcn.004052d0
mov ecx, dword [ebp - 0x418]
movzx eax, word [ecx]
sub eax, 0x41
cmp dword [ebx + 0x4f4], eax
mov eax, dword [ebp - 0x428]
jne 0x56c533
mov dword [ebx + 0x508], eax
push esi
push 0
push 0x143
push dword [ebx + 0x3080]
inc eax
mov dword [ebp - 0x428], eax
call dword [sym.imp.USER32.dll_SendMessageW]
mov eax, dword [ebp - 0x418]
lea eax, [eax + edi*2]
add eax, 2
mov dword [ebp - 0x418], eax
cmp word [eax], 0
jne 0x56c1c5
mov edi, dword [ebp - 0x434]
push 0
push ecx
mov dword [ebp - 0x418], esp
mov dword [ebp - 0x414], esp
call fcn.00407271
mov ecx, eax
test ecx, ecx
je 0x56c805
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, 0x5940e4
jne 0x56c80f
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
mov ecx, dword [ebp - 0x414]
add eax, 0x10
mov dword [ecx], eax
push str.SELECT_FOLDER
mov byte [ebp - 4], 2
call fcn.004022b0
test al, al
jne 0x56c5d4
mov ecx, dword [ebp - 0x414]
push 0xd
push str.SELECT_FOLDER
call fcn.00402430
push ecx
mov byte [ebp - 4], 3
mov dword [ebp - 0x414], esp
call fcn.00407271
mov ecx, eax
test ecx, ecx
je 0x56c816
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, 0x5940e4
jne 0x56c820
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
mov ecx, dword [ebp - 0x414]
add eax, 0x10
mov dword [ecx], eax
push 0x5c4b48
mov byte [ebp - 4], 4
call fcn.004022b0
test al, al
jne 0x56c634
mov ecx, dword [ebp - 0x414]
push 4
push 0x5c4b48
call fcn.00402430
lea eax, [ebp - 0x440]
mov byte [ebp - 4], 3
push eax
mov ecx, ebx
mov byte [ebp - 4], 1
call fcn.00563640
push dword [eax]
push 0
push 0x143
push dword [ebx + 0x3080]
call dword [sym.imp.USER32.dll_SendMessageW]
mov ecx, dword [ebp - 0x440]
or eax, 0xffffffff
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x56c6ba
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov edx, dword [eax + 4]
mov dword [ebp - 0x414], edx
mov edx, dword [ecx]
cmp eax, 0x5940e4
jne 0x56c834
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov esi, dword [eax + 4]
mov dword [ebp - 0x414], esi
mov esi, dword [ebp - 0x424]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x56c827
push 0
push dword [edx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
cmp dword [ebx + 0x4f4], 0x63
mov eax, dword [ebp - 0x428]
jne 0x56c6d3
mov dword [ebx + 0x508], eax
mov ecx, eax
jmp 0x56c6d9
mov ecx, dword [ebx + 0x508]
push 0
push ecx
push 0x14e
push dword [ebx + 0x3080]
mov dword [ebx + 0x4f8], eax
call dword [sym.imp.USER32.dll_SendMessageW]
push dword [ebx + 0xd4]
lea eax, [ebp - 0x410]
push 0x100
push eax
push str.Test_Drive
push str.TEST_DRIVE
push str.Title
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [ebp - 0x410]
push eax
lea ecx, [ebx + 0x3060]
call fcn.00561bc0
push 0
mov ecx, ebx
call fcn.0040e4e5
or ebx, 0xffffffff
mov byte [ebp - 4], 0
add edi, 0xfffffff0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x56c780
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, 0x5940e4
jne 0x56c841
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x56c841
mov edi, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [ecx + 4]
call edi
jmp 0x56c786
mov edi, dword [sym.imp.KERNEL32.dll_HeapFree]
mov dword [ebp - 4], 0xffffffff
add esi, 0xfffffff0
lock xadd dword [esi + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x56c7c7
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, 0x5940e4
jne 0x56c848
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x56c848
push 0
push dword [ecx + 4]
call edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0053c0f2
mov esp, ebp
pop ebp
ret
push 0x80004005
call fcn.00402ab0
call edx
jmp 0x56c12c
push 0x80004005
call fcn.00402ab0
call edx
jmp 0x56c162
push 0x80004005
call fcn.00402ab0
call edx
jmp 0x56c5a5
push 0x80004005
call fcn.00402ab0
call edx
jmp 0x56c605
mov ecx, edx
call dword [ebp - 0x414]
jmp 0x56c6ba
mov ecx, edx
call dword [ebp - 0x414]
jmp 0x56c6ba
call edx
jmp 0x56c780
call edx
jmp 0x56c7c7