Function at 0x56cf04
Capabilities:
Get disk size

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffefc
push esi
push edi
mov eax, dword [ebp + 8]
test eax, eax
jne 0x56cf1d
xor eax, eax
jmp 0x56d260
mov edx, dword [ebp + 8]
mov byte [edx + 0x2b8], 0
push 1
call sub.KERNEL32.DLL_SetErrorMode
mov dword [ebp - 0x14], eax
push 0
push 0
push 3
push 0
push 3
push SysReAllocStringLen
mov ecx, dword [ebp + 8]
add ecx, 0xc
push ecx
call sub.KERNEL32.DLL_CreateFileA
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
cmp eax, 0xffffffff
jne 0x56cfb4
call sub.KERNEL32.DLL_GetLastError
cmp eax, 5
jne 0x56cf81
push 0x5a86
call fcn.00402b9c
pop ecx
push eax
mov edx, dword [ebp + 8]
add edx, 0x2b8
push edx
call fcn.006712b0
add esp, 8
jmp 0x56cfa5
call sub.KERNEL32.DLL_GetLastError
push eax
push 0x5aa4
call fcn.00402b9c
pop ecx
push eax
mov ecx, dword [ebp + 8]
add ecx, 0x2b8
push ecx
call fcn.006712b0
add esp, 0xc
push dword [ebp - 0x14]
call sub.KERNEL32.DLL_SetErrorMode
xor eax, eax
jmp 0x56d260
push 0
lea edx, [ebp - 8]
push edx
push 0x18
lea ecx, [ebp - 0x2c]
push ecx
push 0
push 0
push 0x70000
push dword [ebp - 4]
call sub.KERNEL32.DLL_DeviceIoControl
test eax, eax
jne 0x56d110
call sub.KERNEL32.DLL_GetLastError
cmp eax, 1
jne 0x56d0de
push 0
lea eax, [ebp - 8]
push eax
push 0x28
lea edx, [ebp - 0x54]
push edx
push 0
push 0
push 0x700a0
push dword [ebp - 4]
call sub.KERNEL32.DLL_DeviceIoControl
test eax, eax
jne 0x56d06f
call sub.KERNEL32.DLL_GetLastError
cmp eax, 1
jne 0x56d03e
push str.You_need_Windows_XP_to_access_this_device.
mov ecx, dword [ebp + 8]
add ecx, 0x2b8
push ecx
call fcn.006712b0
add esp, 8
push 1
mov eax, dword [ebp + 8]
add eax, 0x2b8
push eax
call fcn.005731ac
add esp, 8
jmp 0x56d06f
call fcn.00462ba8
push eax
push 0x81f365
mov edx, dword [ebp + 8]
add edx, 0x2b8
push edx
call fcn.006712b0
add esp, 0xc
push 1
mov ecx, dword [ebp + 8]
add ecx, 0x2b8
push ecx
call fcn.005731ac
add esp, 8
lea esi, [ebp - 0x54]
lea edi, [ebp - 0x2c]
mov ecx, 6
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp - 0x18]
imul dword [ebp - 0x1c]
imul dword [ebp - 0x20]
xor edx, edx
push edx
push eax
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x38]
call fcn.00674923
mov dword [ebp - 8], eax
mov edx, dword [ebp - 8]
mov ecx, dword [ebp - 0x2c]
cmp edx, ecx
je 0x56d0a7
mov eax, dword [ebp - 8]
mov dword [ebp - 0x2c], eax
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x420]
test ecx, ecx
jne 0x56d0cf
mov eax, dword [ebp - 0x18]
xor edx, edx
push edx
push eax
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x38]
call fcn.00674923
mov edx, dword [ebp + 8]
mov dword [edx + 0x420], eax
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x298], 1
jmp 0x56d11d
call fcn.00462ba8
push eax
push str.Error__s_getting_the_device_geometry.
mov eax, dword [ebp + 8]
add eax, 0x2b8
push eax
call fcn.006712b0
add esp, 0xc
push 1
mov edx, dword [ebp + 8]
add edx, 0x2b8
push edx
call fcn.005731ac
add esp, 8
jmp 0x56d11d
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x298], 1
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x298]
test edx, edx
je 0x56d19e
push 0
lea ecx, [ebp - 8]
push ecx
push 8
lea eax, [ebp - 0x10]
push eax
push 0
push 0
push 0x7405c
push dword [ebp - 4]
call sub.KERNEL32.DLL_DeviceIoControl
test eax, eax
je 0x56d19e
mov eax, dword [ebp - 0x18]
imul dword [ebp - 0x1c]
imul dword [ebp - 0x20]
xor edx, edx
push edx
push eax
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0xc]
call fcn.00674923
mov dword [ebp - 8], eax
mov edx, dword [ebp - 8]
mov ecx, dword [ebp - 0x2c]
cmp edx, ecx
je 0x56d176
mov eax, dword [ebp - 8]
mov dword [ebp - 0x2c], eax
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x420]
test ecx, ecx
jne 0x56d19e
mov eax, dword [ebp - 0x18]
xor edx, edx
push edx
push eax
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0xc]
call fcn.00674923
mov edx, dword [ebp + 8]
mov dword [edx + 0x420], eax
push dword [ebp - 4]
call sub.KERNEL32.DLL_CloseHandle
push dword [ebp - 0x14]
call sub.KERNEL32.DLL_SetErrorMode
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x298]
test eax, eax
je 0x56d217
mov edx, dword [ebp - 0x2c]
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x2a8], edx
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp + 8]
mov dword [edx + 0x2ac], eax
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp + 8]
mov dword [eax + 0x2b0], ecx
mov edx, dword [ebp - 0x18]
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x2b4], edx
mov eax, dword [ebp - 0x24]
cmp eax, 0xc
je 0x56d1fb
mov edx, dword [ebp - 0x24]
cmp edx, 0xb
jne 0x56d20a
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x290], 0x80
jmp 0x56d228
mov eax, dword [ebp + 8]
xor edx, edx
mov dword [eax + 0x290], edx
jmp 0x56d228
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x294]
test eax, eax
jne 0x56d228
xor eax, eax
jmp 0x56d260
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x420]
test ecx, ecx
jne 0x56d25b
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x2a8]
mov ecx, dword [ebp + 8]
imul edx, dword [ecx + 0x2ac]
mov eax, dword [ebp + 8]
imul edx, dword [eax + 0x2b0]
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x420], edx
mov eax, 1
pop edi
pop esi
mov esp, ebp
pop ebp
ret