Function at 0x41cbf0
Capabilities:
Get disk size

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xffffff94
mov esi, edx
mov ebx, eax
mov byte [esp], 1
movsx edi, bl
mov eax, edi
add eax, 0x40
mov byte [esp + 1], al
mov byte [esp + 2], 0x3a
mov byte [esp + 3], 0x5c
mov byte [esp + 4], 0
mov eax, dword [0x48d340]
lea edx, [eax + edi - 1]
lea ecx, [esi + 0x57]
mov eax, ebx
call fcn.0041ab60
test al, al
jne 0x41cc3a
mov byte [esp], 0
jmp 0x41ce4e
movsx eax, bl
mov edx, dword [0x48d340]
cmp byte [edx + eax - 1], 3
jne 0x41cc58
mov eax, dword [0x48d2b0]
cmp byte [eax], 0
je 0x41cce1
movsx eax, bl
mov edx, dword [0x48d340]
cmp byte [edx + eax - 1], 4
jne 0x41cc72
mov eax, dword [0x48d514]
cmp byte [eax], 0
jne 0x41cce1
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x11]
push eax
call sub.kernel32.dll_GetDiskFreeSpaceA
cmp eax, 1
sbb eax, eax
inc eax
mov byte [esp], al
cmp byte [esp], 0
je 0x41ccc3
mov ax, word [esp + 8]
mov word [esi + 2], ax
mov ax, word [esp + 0xc]
mov word [esi], ax
mov eax, dword [esp + 0x10]
mov dword [esi + 8], eax
mov eax, dword [esp + 0x14]
mov dword [esi + 4], eax
jmp 0x41cd95
call sub.kernel32.dll_GetLastError_1
call fcn.0040f5f0
mov eax, dword [0x48da44]
mov edx, 1
call fcn.00411d74
jmp 0x41cd95
push 0
push 0x80
push 3
push 0
push 3
push 0x80000000
push 0x48c2d0
call sub.kernel32.dll_CreateFileA_1
mov edi, eax
cmp edi, 0xffffffff
je 0x41cd95
mov bp, 0x2c
lea eax, [esp + 0x1d]
mov edx, 0x2c
call fcn.00405a9c
mov dword [esp + 0x58], 0x7303
movzx eax, bp
mov dword [esp + 0x54], eax
lea eax, [esp + 1]
mov dword [esp + 0x50], eax
lea eax, [esp + 0x1d]
mov dword [esp + 0x5c], eax
push 0
lea eax, [esp + 0x1c]
push eax
push 0x1c
lea eax, [esp + 0x58]
push eax
push 0x1c
lea eax, [esp + 0x60]
push eax
push 6
push edi
call sub.kernel32.dll_DeviceIoControl
test eax, eax
je 0x41cd61
test byte [esp + 0x64], 1
je 0x41cd65
xor eax, eax
jmp 0x41cd67
mov al, 1
mov byte [esp], al
push edi
call sub.kernel32.dll_CloseHandle_1
cmp byte [esp], 0
je 0x41cd95
mov ax, word [esp + 0x25]
mov word [esi], ax
mov ax, word [esp + 0x21]
mov word [esi + 2], ax
mov eax, dword [esp + 0x29]
mov dword [esi + 8], eax
mov eax, dword [esp + 0x2d]
mov dword [esi + 4], eax
mov eax, dword [0x48d2b0]
cmp byte [eax], 0
jne 0x41cdcb
movsx eax, bl
mov edx, dword [0x48d340]
cmp byte [edx + eax - 1], 4
jne 0x41cdcb
call fcn.00419cac
test al, al
je 0x41cdc7
lea edx, [esp + 0x1c]
mov eax, ebx
call fcn.0041a178
test al, al
jne 0x41cdcb
mov byte [esp], 0
cmp dword [esi + 4], 0
jne 0x41cdd7
mov byte [esp], 0
jmp 0x41ce4e
mov eax, dword [0x48d7b0]
cmp dword [eax], 0
jbe 0x41cdf4
mov eax, dword [0x48d7b0]
mov eax, dword [eax]
mov dword [esi + 4], eax
mov eax, dword [0x48d7b0]
xor edx, edx
mov dword [eax], edx
movzx eax, word [esi]
movzx edx, word [esi + 2]
imul edx
mov dword [esi + 0x18], eax
movsx edi, bl
mov eax, dword [0x48d9a0]
mov dx, word [esi]
mov word [eax + edi*2 + 0x4c], dx
mov eax, dword [esi + 4]
call fcn.0040fd30
movzx eax, word [esi + 2]
mov dword [esp + 0x68], eax
fild dword [esp + 0x68]
fmulp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.0040fd58
mov edx, dword [0x48d270]
mov dword [edx + edi*4 + 0x98], eax
push 0
lea ecx, [esi + 0xc]
lea edx, [esi + 0x54]
mov eax, ebx
call fcn.0041b02c
mov al, byte [esp]
add esp, 0x6c
pop ebp
pop edi
pop esi
pop ebx
ret