Function at 0x56cae8
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 0x56cb01
xor eax, eax
jmp 0x56ce44
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 0x56cb98
call sub.KERNEL32.DLL_GetLastError
cmp eax, 5
jne 0x56cb65
push 0x5a86
call fcn.00402a64
pop ecx
push eax
mov edx, dword [ebp + 8]
add edx, 0x2b8
push edx
call fcn.00670e94
add esp, 8
jmp 0x56cb89
call sub.KERNEL32.DLL_GetLastError
push eax
push 0x5aa4
call fcn.00402a64
pop ecx
push eax
mov ecx, dword [ebp + 8]
add ecx, 0x2b8
push ecx
call fcn.00670e94
add esp, 0xc
push dword [ebp - 0x14]
call sub.KERNEL32.DLL_SetErrorMode
xor eax, eax
jmp 0x56ce44
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 0x56ccf4
call sub.KERNEL32.DLL_GetLastError
cmp eax, 1
jne 0x56ccc2
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 0x56cc53
call sub.KERNEL32.DLL_GetLastError
cmp eax, 1
jne 0x56cc22
push str.You_need_Windows_XP_to_access_this_device.
mov ecx, dword [ebp + 8]
add ecx, 0x2b8
push ecx
call fcn.00670e94
add esp, 8
push 1
mov eax, dword [ebp + 8]
add eax, 0x2b8
push eax
call fcn.00572d90
add esp, 8
jmp 0x56cc53
call fcn.004628c0
push eax
push 0x811991
mov edx, dword [ebp + 8]
add edx, 0x2b8
push edx
call fcn.00670e94
add esp, 0xc
push 1
mov ecx, dword [ebp + 8]
add ecx, 0x2b8
push ecx
call fcn.00572d90
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.00674507
mov dword [ebp - 8], eax
mov edx, dword [ebp - 8]
mov ecx, dword [ebp - 0x2c]
cmp edx, ecx
je 0x56cc8b
mov eax, dword [ebp - 8]
mov dword [ebp - 0x2c], eax
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x420]
test ecx, ecx
jne 0x56ccb3
mov eax, dword [ebp - 0x18]
xor edx, edx
push edx
push eax
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x38]
call fcn.00674507
mov edx, dword [ebp + 8]
mov dword [edx + 0x420], eax
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x298], 1
jmp 0x56cd01
call fcn.004628c0
push eax
push str.Error__s_getting_the_device_geometry.
mov eax, dword [ebp + 8]
add eax, 0x2b8
push eax
call fcn.00670e94
add esp, 0xc
push 1
mov edx, dword [ebp + 8]
add edx, 0x2b8
push edx
call fcn.00572d90
add esp, 8
jmp 0x56cd01
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x298], 1
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x298]
test edx, edx
je 0x56cd82
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 0x56cd82
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.00674507
mov dword [ebp - 8], eax
mov edx, dword [ebp - 8]
mov ecx, dword [ebp - 0x2c]
cmp edx, ecx
je 0x56cd5a
mov eax, dword [ebp - 8]
mov dword [ebp - 0x2c], eax
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x420]
test ecx, ecx
jne 0x56cd82
mov eax, dword [ebp - 0x18]
xor edx, edx
push edx
push eax
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0xc]
call fcn.00674507
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 0x56cdfb
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 0x56cddf
mov edx, dword [ebp - 0x24]
cmp edx, 0xb
jne 0x56cdee
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x290], 0x80
jmp 0x56ce0c
mov eax, dword [ebp + 8]
xor edx, edx
mov dword [eax + 0x290], edx
jmp 0x56ce0c
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x294]
test eax, eax
jne 0x56ce0c
xor eax, eax
jmp 0x56ce44
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x420]
test ecx, ecx
jne 0x56ce3f
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