Function at 0x5fdd28
Capabilities:
Get disk size

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffb6c
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x394], ebx
mov dword [ebp - 0x38c], ebx
mov dword [ebp - 0x390], ebx
mov dword [ebp - 0x384], ebx
mov dword [ebp - 0x388], ebx
mov dword [ebp - 0x380], ebx
mov dword [ebp - 0x37c], ebx
mov dword [ebp - 0x2cc], ebx
mov dword [ebp - 0x2a4], ecx
mov dword [ebp - 0x2a0], edx
mov dword [ebp - 0x29c], eax
xor eax, eax
push ebp
push 0x5fe756
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x2a0]
mov dword [eax], 0
mov dword [eax + 4], 0
mov eax, dword [ebp - 0x2a4]
xor edx, edx
mov dword [eax], edx
xor eax, eax
mov dword [ebp - 0x2c8], eax
mov dword [ebp - 0x2b0], 0
mov dword [ebp - 0x2ac], 0
cmp dword [ebp - 0x29c], 0
jl 0x5fe72d
cmp dword [ebp - 0x29c], 0xef
jge 0x5fe72d
mov eax, dword [0x89285c]
mov eax, dword [eax]
cmp eax, dword [ebp - 0x29c]
jle 0x5fde61
mov eax, dword [ebp - 0x29c]
lea eax, [eax + eax*4]
mov edx, dword [0x893588]
cmp byte [edx + eax*2], 0
je 0x5fde61
mov eax, dword [ebp - 0x29c]
mov eax, dword [eax*4 + 0x13b4254]
cdq
mov dword [ebp - 0x2b0], eax
mov dword [ebp - 0x2ac], edx
cmp dword [ebp - 0x2ac], 0
jne 0x5fde32
cmp dword [ebp - 0x2b0], 0
jb 0x5fe72d
jmp 0x5fde38
jl 0x5fe72d
push 0
push 0x100000
mov eax, dword [ebp - 0x2b0]
mov edx, dword [ebp - 0x2ac]
call fcn.004062e8
mov dword [ebp - 0x2b0], eax
mov dword [ebp - 0x2ac], edx
jmp 0x5fe72d
xor eax, eax
push ebp
push 0x5fe059
push dword fs:[eax]
mov dword fs:[eax], esp
cmp dword [ebp - 0x29c], 0
jl 0x5fdec8
mov eax, dword [0x89285c]
mov eax, dword [eax]
cmp eax, dword [ebp - 0x29c]
jle 0x5fdec8
imul eax, dword [ebp - 0x29c], 0x83
mov edx, dword [0x892da8]
add edx, eax
mov eax, 0x5fe774
call fcn.00402c6c
test eax, eax
jle 0x5fdec8
mov dword [ebp - 0x2b0], 0
mov dword [ebp - 0x2ac], 0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x5fe72d
lea edx, [ebp - 0x37c]
mov eax, dword [ebp - 0x29c]
call fcn.005ab790
mov eax, dword [ebp - 0x37c]
lea edx, [ebp - 0x2cc]
call fcn.0040a048
mov edx, dword [ebp - 0x2cc]
mov eax, 0x5fe784
call fcn.00405890
test eax, eax
jle 0x5fe04f
lea eax, [ebp - 0x380]
mov ecx, dword [ebp - 0x2cc]
mov edx, 0x5fe7a0
call fcn.00405598
mov eax, dword [ebp - 0x380]
call fcn.004c938c
imul eax, dword [ebp - 0x29c], 0xafc
mov edx, dword [0x892558]
cmp dword [edx + eax*8 + 0x444], 0
jne 0x5fdf4d
cmp dword [edx + eax*8 + 0x440], 0
jbe 0x5fe00a
jmp 0x5fdf53
jle 0x5fe00a
imul eax, dword [ebp - 0x29c], 0xafc
mov edx, dword [0x892558]
cmp dword [edx + eax*8 + 0x44c], 0
jne 0x5fdf7d
cmp dword [edx + eax*8 + 0x448], 0
jbe 0x5fe00a
jmp 0x5fdf83
jle 0x5fe00a
imul eax, dword [ebp - 0x29c], 0xafc
mov edx, dword [0x892558]
mov ecx, dword [ebp - 0x2a0]
mov ebx, dword [edx + eax*8 + 0x440]
mov dword [ecx], ebx
mov ebx, dword [edx + eax*8 + 0x444]
mov dword [ecx + 4], ebx
imul eax, dword [ebp - 0x29c], 0xafc
mov edx, dword [0x892558]
mov eax, dword [edx + eax*8 + 0x448]
mov edx, dword [ebp - 0x2a4]
mov dword [edx], eax
mov eax, dword [ebp - 0x2a0]
mov edx, dword [eax]
mov dword [ebp - 0x2b0], edx
mov edx, dword [eax + 4]
mov dword [ebp - 0x2ac], edx
mov eax, dword [ebp - 0x2a4]
mov eax, dword [eax]
cdq
push edx
push eax
mov eax, dword [ebp - 0x2b0]
mov edx, dword [ebp - 0x2ac]
call fcn.004062e8
mov dword [ebp - 0x2b0], eax
mov dword [ebp - 0x2ac], edx
push dword [ebp - 0x2ac]
push dword [ebp - 0x2b0]
lea eax, [ebp - 0x388]
call fcn.0040a878
mov ecx, dword [ebp - 0x388]
lea eax, [ebp - 0x384]
mov edx, 0x5fe7b4
call fcn.00405598
mov eax, dword [ebp - 0x384]
call fcn.004c938c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x5fe72d
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x5fe063
mov eax, dword [0x893580]
cmp dword [eax], 2
je 0x5fe0c6
mov al, byte [ebp - 0x29c]
lea edx, [ebp - 0x378]
call fcn.005996b0
test al, al
je 0x5fe09f
fld qword [ebp - 0x350]
fmul dword [0x5fe7bc]
call fcn.00402d78
mov dword [ebp - 0x2b0], eax
mov dword [ebp - 0x2ac], edx
fld qword [ebp - 0x350]
call fcn.00402d78
mov ecx, dword [ebp - 0x2a0]
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov eax, dword [ebp - 0x2a4]
mov dword [eax], 0x200
jmp 0x5fe72d
mov eax, dword [0x89254c]
mov edx, dword [ebp - 0x29c]
cmp byte [eax + edx], 0
jne 0x5fe24f
mov eax, dword [0x8929d8]
mov edx, dword [ebp - 0x29c]
mov eax, dword [eax + edx*4]
call fcn.0040554c
cmp eax, 0x80
jle 0x5fe24f
mov eax, dword [ebp - 0x29c]
mov edx, eax
shl eax, 4
add eax, edx
mov edx, dword [0x892b2c]
cmp byte [edx + eax], 0
je 0x5fe24f
cmp byte [ebp + 8], 0
je 0x5fe24f
imul eax, dword [ebp - 0x29c], 0xd
mov edx, dword [0x892fd0]
fld qword [edx + eax*8 + 0x28]
call fcn.00402d78
mov dword [ebp - 0x2b0], eax
mov dword [ebp - 0x2ac], edx
push 0
push 0x200
mov eax, dword [ebp - 0x2b0]
mov edx, dword [ebp - 0x2ac]
call fcn.004062e8
mov dword [ebp - 0x2b0], eax
mov dword [ebp - 0x2ac], edx
imul eax, dword [ebp - 0x29c], 0xd
mov edx, dword [0x892fd0]
fld qword [edx + eax*8 + 0x28]
call fcn.00402d78
mov ecx, dword [ebp - 0x2a0]
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov eax, dword [ebp - 0x2a4]
mov dword [eax], 0x200
imul eax, dword [ebp - 0x29c], 0xd
mov edx, dword [0x892fd0]
cmp word [edx + eax*8 + 0x10], 0x400
jb 0x5fe232
imul eax, dword [ebp - 0x29c], 0xd
mov edx, dword [0x892fd0]
cmp word [edx + eax*8 + 0x10], 0x4000
ja 0x5fe232
imul eax, dword [ebp - 0x29c], 0xd
mov edx, dword [0x892fd0]
fld qword [edx + eax*8 + 0x28]
call fcn.00402d78
mov dword [ebp - 0x2b0], eax
mov dword [ebp - 0x2ac], edx
imul eax, dword [ebp - 0x29c], 0xd
mov edx, dword [0x892fd0]
movzx eax, word [edx + eax*8 + 0x10]
xor edx, edx
push edx
push eax
mov eax, dword [ebp - 0x2b0]
mov edx, dword [ebp - 0x2ac]
call fcn.004062e8
mov dword [ebp - 0x2b0], eax
mov dword [ebp - 0x2ac], edx
imul eax, dword [ebp - 0x29c], 0xd
mov edx, dword [0x892fd0]
movzx eax, word [edx + eax*8 + 0x10]
mov edx, dword [ebp - 0x2a4]
mov dword [edx], eax
cmp dword [ebp - 0x2ac], 0
jne 0x5fe249
cmp dword [ebp - 0x2b0], 0
jbe 0x5fe24f
jmp 0x5fe72d
jg 0x5fe72d
cmp byte [ebp + 8], 0
je 0x5fe266
mov eax, dword [ebp - 0x29c]
call fcn.005dbe4c
mov dword [ebp - 0x29c], eax
mov dword [ebp - 0x2c4], 0x80000000
cmp dword [ebp + 0x10], 2
jne 0x5fe280
add dword [ebp - 0x2c4], 0x40000000
lea eax, [ebp - 0x310]
xor ecx, ecx
mov edx, 0x18
call fcn.00403464
push 0
push 0
push 3
push 0
push 3
mov eax, dword [ebp - 0x2c4]
push eax
lea edx, [ebp - 0x390]
mov eax, dword [ebp - 0x29c]
call fcn.0040a78c
mov ecx, dword [ebp - 0x390]
lea eax, [ebp - 0x38c]
mov edx, 0x5fe7c8
call fcn.00405598
mov eax, dword [ebp - 0x38c]
call fcn.0040574c
push eax
call sub.kernel32.dll_CreateFileA_1
mov dword [ebp - 0x2d4], eax
cmp dword [ebp - 0x2d4], 0xffffffff
jne 0x5fe355
call sub.kernel32.dll_GetLastError_1
cmp eax, 0x20
jne 0x5fe30e
inc dword [ebp - 0x2c8]
push 0xa
call sub.kernel32.dll_Sleep_1
cmp dword [ebp - 0x2c8], 0x14
jl 0x5fe280
mov eax, dword [0x892324]
mov edx, dword [ebp - 0x29c]
cmp dword [eax + edx*8 + 4], 0
jne 0x5fe32c
cmp dword [eax + edx*8], 0
jbe 0x5fe72d
jmp 0x5fe332
jle 0x5fe72d
mov eax, dword [0x892324]
mov edx, dword [ebp - 0x29c]
mov ecx, dword [eax + edx*8]
mov dword [ebp - 0x2b0], ecx
mov ecx, dword [eax + edx*8 + 4]
mov dword [ebp - 0x2ac], ecx
jmp 0x5fe72d
cmp dword [ebp + 0x10], 1
jne 0x5fe400
lea eax, [ebp - 0x394]
call fcn.004c2834
mov eax, dword [ebp - 0x394]
mov edx, 0x5fe7e4
call fcn.00405698
jb 0x5fe3f9
push 0
lea eax, [ebp - 0x2b8]
push eax
push 8
lea eax, [ebp - 0x2e0]
push eax
push 0
push 0
push 0x7405c
mov eax, dword [ebp - 0x2d4]
push eax
call sub.kernel32.dll_DeviceIoControl
cmp eax, 1
sbb eax, eax
inc eax
mov byte [ebp - 0x2cd], al
cmp byte [ebp - 0x2cd], 0
je 0x5fe3f9
mov eax, dword [ebp - 0x2d4]
push eax
call sub.kernel32.dll_CloseHandle_1
mov eax, dword [ebp - 0x2e0]
mov dword [ebp - 0x2b0], eax
mov eax, dword [ebp - 0x2dc]
mov dword [ebp - 0x2ac], eax
cmp dword [ebp - 0x2ac], 0
jne 0x5fe3f3
cmp dword [ebp - 0x2b0], 0
jbe 0x5fe3f9
jmp 0x5fe72d
jg 0x5fe72d
mov dword [ebp + 0x10], 2
cmp dword [ebp + 0x10], 2
jne 0x5fe588
lea eax, [ebp - 0x298]
xor ecx, ecx
mov edx, 0x298
call fcn.00403464
mov word [ebp - 0x298], 0x2c
mov byte [ebp - 0x294], 1
mov byte [ebp - 0x292], 0xa
mov byte [ebp - 0x291], 0x18
mov byte [ebp - 0x290], 1
mov dword [ebp - 0x28c], 0xc0
mov dword [ebp - 0x288], 2
lea eax, [ebp - 0x24c]
lea edx, [ebp - 0x298]
sub eax, edx
mov dword [ebp - 0x284], eax
lea eax, [ebp - 0x26c]
lea edx, [ebp - 0x298]
sub eax, edx
mov dword [ebp - 0x280], eax
mov byte [ebp - 0x27c], 0x25
mov eax, dword [ebp - 0x284]
add eax, dword [ebp - 0x28c]
mov dword [ebp - 0x2b4], eax
push 0
lea eax, [ebp - 0x2b8]
push eax
mov eax, dword [ebp - 0x2b4]
push eax
lea eax, [ebp - 0x298]
push eax
push 0x2c
lea eax, [ebp - 0x298]
push eax
push 0x4d004
mov eax, dword [ebp - 0x2d4]
push eax
call sub.kernel32.dll_DeviceIoControl
test eax, eax
je 0x5fe588
lea eax, [ebp - 0x24c]
xor ecx, ecx
mov edx, 0x1ff
call fcn.004c0ef4
xor edx, edx
mov dword [ebp - 0x2b0], eax
mov dword [ebp - 0x2ac], edx
cmp dword [ebp - 0x2ac], 0
jne 0x5fe517
cmp dword [ebp - 0x2b0], 0xffffffff
jne 0x5fe517
mov dword [ebp - 0x2b0], 0
mov dword [ebp - 0x2ac], 0
jmp 0x5fe588
mov eax, dword [ebp - 0x2b0]
mov edx, dword [ebp - 0x2ac]
add eax, 1
adc edx, 0
mov dword [ebp - 0x2b0], eax
mov dword [ebp - 0x2ac], edx
lea eax, [ebp - 0x24c]
mov ecx, 4
mov edx, 0x1ff
call fcn.004c0ef4
mov dword [ebp - 0x2b8], eax
mov eax, dword [ebp - 0x2b8]
xor edx, edx
push edx
push eax
mov eax, dword [ebp - 0x2b0]
mov edx, dword [ebp - 0x2ac]
call fcn.004062e8
mov dword [ebp - 0x2b0], eax
mov dword [ebp - 0x2ac], edx
mov eax, dword [ebp - 0x2d4]
push eax
call sub.kernel32.dll_CloseHandle_1
jmp 0x5fe72d
push 0
lea eax, [ebp - 0x2b8]
push eax
push 0x18
lea eax, [ebp - 0x310]
push eax
push 0
push 0
push 0x70000
mov eax, dword [ebp - 0x2d4]
push eax
call sub.kernel32.dll_DeviceIoControl
cmp eax, 1
sbb eax, eax
inc eax
mov byte [ebp - 0x2cd], al
mov eax, dword [ebp - 0x2d4]
push eax
call sub.kernel32.dll_CloseHandle_1
cmp byte [ebp - 0x2cd], 0
je 0x5fe72d
push dword [ebp - 0x30c]
push dword [ebp - 0x310]
lea eax, [ebp - 0x494]
call fcn.00406504
lea edx, [ebp - 0x494]
lea eax, [ebp - 0x2cc]
call fcn.004054f0
mov eax, dword [ebp - 0x310]
mov dword [ebp - 0x2c0], eax
mov eax, dword [ebp - 0x30c]
mov dword [ebp - 0x2bc], eax
mov eax, dword [ebp - 0x300]
xor edx, edx
push edx
push eax
mov eax, dword [ebp - 0x304]
xor edx, edx
push edx
push eax
mov eax, dword [ebp - 0x2c0]
mov edx, dword [ebp - 0x2bc]
call fcn.004062e8
call fcn.004062e8
mov dword [ebp - 0x2c0], eax
mov dword [ebp - 0x2bc], edx
mov eax, dword [ebp - 0x2a0]
mov edx, dword [ebp - 0x2c0]
mov dword [eax], edx
mov edx, dword [ebp - 0x2bc]
mov dword [eax + 4], edx
mov eax, dword [ebp - 0x2a4]
mov edx, dword [ebp - 0x2fc]
mov dword [eax], edx
mov eax, dword [ebp - 0x2fc]
xor edx, edx
push edx
push eax
mov eax, dword [ebp - 0x2c0]
mov edx, dword [ebp - 0x2bc]
call fcn.004062e8
mov dword [ebp - 0x2c0], eax
mov dword [ebp - 0x2bc], edx
mov eax, dword [ebp - 0x2c0]
mov dword [ebp - 0x2b0], eax
mov eax, dword [ebp - 0x2bc]
mov dword [ebp - 0x2ac], eax
call fcn.005fce84
test al, al
je 0x5fe72d
lea ecx, [ebp - 0x2f8]
lea edx, [ebp - 0x2f0]
mov eax, dword [ebp - 0x29c]
call fcn.005fd03c
mov dword [ebp - 0x2e8], eax
mov dword [ebp - 0x2e4], edx
cmp dword [ebp - 0x2e4], 0
jne 0x5fe6ee
cmp dword [ebp - 0x2e8], 0
jbe 0x5fe72d
jmp 0x5fe6f0
jle 0x5fe72d
mov eax, dword [ebp - 0x2e8]
mov dword [ebp - 0x2b0], eax
mov eax, dword [ebp - 0x2e4]
mov dword [ebp - 0x2ac], eax
mov eax, dword [ebp - 0x2a0]
mov edx, dword [ebp - 0x2f0]
mov dword [eax], edx
mov edx, dword [ebp - 0x2ec]
mov dword [eax + 4], edx
mov eax, dword [ebp - 0x2a4]
mov edx, dword [ebp - 0x2f8]
mov dword [eax], edx
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5fe75d
lea eax, [ebp - 0x394]
mov edx, 7
call fcn.004052b0
lea eax, [ebp - 0x2cc]
call fcn.0040528c
ret