Function at 0x4c2034
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x223
push 0
push 0
dec ecx
jne 0x4c203c
push ecx
push ebx
push esi
push edi
mov ebx, eax
xor eax, eax
push ebp
push 0x4c2725
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebx + 0x304]
mov edx, dword [eax]
call dword [edx + 0xcc]
mov dword [ebp - 0x10], eax
mov eax, dword [ebx + 0x304]
mov eax, dword [eax + 0x23c]
mov edx, dword [eax]
call dword [edx + 0x44]
mov dword [ebx + 0x438], 0xfffffffe
xor esi, esi
mov eax, dword [ebx + 0x304]
mov eax, dword [eax + 0x23c]
mov edx, dword [eax]
call dword [edx + 0x14]
cmp eax, 0x14
jge 0x4c2275
mov eax, esi
call fcn.004c1f18
test al, al
je 0x4c20b0
mov dword [ebx + 0x438], esi
push 0
push 0x20000000
push 3
push 0
push 3
push 0x80000000
lea edx, [ebp - 0xfe4]
mov eax, esi
call fcn.00408da0
mov ecx, dword [ebp - 0xfe4]
lea eax, [ebp - 0xfe0]
mov edx, 0x4c273c
call fcn.0040483c
mov eax, dword [ebp - 0xfe0]
call fcn.004049f0
push eax
call sub.kernel32.dll_CreateFileA
mov edi, eax
mov dword [ebx + 0x448], edi
cmp edi, 0xffffffff
je 0x4c2275
mov edx, edi
mov eax, ebx
call fcn.004c41ac
mov dword [ebp - 0xfe8], eax
fild dword [ebp - 0xfe8]
fstp qword [ebp - 0x20]
wait
fild dword [0x56951c]
fmul qword [ebp - 0x20]
fdiv dword [0x4c2750]
fstp qword [ebp - 0x20]
wait
fld qword [ebp - 0x20]
fcomp dword [0x4c2754]
fnstsw ax
sahf
jne 0x4c2153
lea eax, [ebp - 0x28]
mov edx, 0x4c2760
call fcn.004045c8
jmp 0x4c21e5
fld qword [ebp - 0x20]
fcomp dword [0x4c2768]
fnstsw ax
sahf
jae 0x4c2170
lea eax, [ebp - 0x28]
mov edx, 0x4c2774
call fcn.004045c8
jmp 0x4c21e5
fld qword [ebp - 0x20]
fcomp dword [0x4c2780]
fnstsw ax
sahf
jbe 0x4c21bd
fld qword [ebp - 0x20]
fdiv dword [0x4c2784]
add esp, 0xfffffff4
fstp xword [esp]
wait
lea ecx, [ebp - 0x10e8]
mov edx, 1
xor eax, eax
call fcn.00403130
lea edx, [ebp - 0x10e8]
lea eax, [ebp - 0x28]
call fcn.00404794
lea eax, [ebp - 0x28]
mov edx, 0x4c2790
call fcn.004047f8
jmp 0x4c21e5
fld qword [ebp - 0x20]
call fcn.00402b54
push edx
push eax
lea eax, [ebp - 0x10ec]
call fcn.00408e8c
mov edx, dword [ebp - 0x10ec]
lea eax, [ebp - 0x28]
mov ecx, 0x4c279c
call fcn.0040483c
lea edx, [ebp - 0x10f0]
mov eax, esi
call fcn.00408da0
mov ecx, dword [ebp - 0x10f0]
lea eax, [ebp - 0x2c]
mov edx, 0x4c27a8
call fcn.0040483c
lea edx, [ebp - 0x34]
mov eax, esi
call fcn.0048d5f0
cmp dword [ebp - 0x34], 0
je 0x4c2232
push dword [ebp - 0x2c]
push 0x4c27c0
push dword [ebp - 0x34]
push 0x4c27cc
lea eax, [ebp - 0x2c]
mov edx, 4
call fcn.004048b0
push dword [ebp - 0x2c]
push 0x4c27d8
push dword [ebp - 0x28]
push 0x4c27e4
lea eax, [ebp - 0x10f4]
mov edx, 4
call fcn.004048b0
mov edx, dword [ebp - 0x10f4]
mov eax, dword [ebx + 0x304]
mov eax, dword [eax + 0x23c]
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov eax, dword [ebx + 0x448]
push eax
call sub.kernel32.dll_CloseHandle
inc esi
cmp esi, 0x20
jne 0x4c2085
mov byte [ebp - 0x21], 0x43
mov eax, dword [ebx + 0x304]
mov eax, dword [eax + 0x23c]
mov edx, dword [eax]
call dword [edx + 0x14]
cmp eax, 0x14
jge 0x4c25e2
call fcn.004aa4dc
test al, al
jne 0x4c240e
lea eax, [ebp - 0x10f8]
mov dl, byte [ebp - 0x21]
call fcn.00404718
lea eax, [ebp - 0x10f8]
mov edx, 0x4c27f0
call fcn.004047f8
mov eax, dword [ebp - 0x10f8]
call fcn.004049f0
push eax
call sub.kernel32.dll_GetDriveTypeA
cmp eax, 3
jne 0x4c240e
mov dl, byte [ebp - 0x21]
mov eax, ebx
call fcn.004c42d0
mov dword [ebp - 0xfe8], eax
fild dword [ebp - 0xfe8]
fstp qword [ebp - 0x20]
wait
fild dword [0x56951c]
fmul qword [ebp - 0x20]
fdiv dword [0x4c2750]
fstp qword [ebp - 0x20]
wait
fld qword [ebp - 0x20]
fcomp dword [0x4c2754]
fnstsw ax
sahf
jne 0x4c232f
lea eax, [ebp - 0x28]
mov edx, 0x4c2760
call fcn.004045c8
jmp 0x4c23c1
fld qword [ebp - 0x20]
fcomp dword [0x4c2768]
fnstsw ax
sahf
jae 0x4c234c
lea eax, [ebp - 0x28]
mov edx, 0x4c2774
call fcn.004045c8
jmp 0x4c23c1
fld qword [ebp - 0x20]
fcomp dword [0x4c2780]
fnstsw ax
sahf
jbe 0x4c2399
fld qword [ebp - 0x20]
fdiv dword [0x4c2784]
add esp, 0xfffffff4
fstp xword [esp]
wait
lea ecx, [ebp - 0x10e8]
mov edx, 1
xor eax, eax
call fcn.00403130
lea edx, [ebp - 0x10e8]
lea eax, [ebp - 0x28]
call fcn.00404794
lea eax, [ebp - 0x28]
mov edx, 0x4c2790
call fcn.004047f8
jmp 0x4c23c1
fld qword [ebp - 0x20]
call fcn.00402b54
push edx
push eax
lea eax, [ebp - 0x10fc]
call fcn.00408e8c
mov edx, dword [ebp - 0x10fc]
lea eax, [ebp - 0x28]
mov ecx, 0x4c279c
call fcn.0040483c
push 0x4c27fc
lea eax, [ebp - 0x1104]
mov dl, byte [ebp - 0x21]
call fcn.00404718
push dword [ebp - 0x1104]
push 0x4c2810
push dword [ebp - 0x28]
push 0x4c27e4
lea eax, [ebp - 0x1100]
mov edx, 5
call fcn.004048b0
mov edx, dword [ebp - 0x1100]
mov eax, dword [ebx + 0x304]
mov eax, dword [eax + 0x23c]
mov ecx, dword [eax]
call dword [ecx + 0x38]
call fcn.004aa4dc
test al, al
je 0x4c25e2
lea eax, [ebp - 0x1108]
mov dl, byte [ebp - 0x21]
call fcn.00404718
lea eax, [ebp - 0x1108]
mov edx, 0x4c27f0
call fcn.004047f8
mov eax, dword [ebp - 0x1108]
call fcn.004049f0
push eax
call sub.kernel32.dll_GetDriveTypeA
cmp eax, 5
jne 0x4c25e2
mov dl, byte [ebp - 0x21]
mov eax, ebx
call fcn.004c42d0
mov dword [ebp - 0xfe8], eax
fild dword [ebp - 0xfe8]
fstp qword [ebp - 0x20]
wait
fild dword [0x56951c]
fmul qword [ebp - 0x20]
fdiv dword [0x4c2750]
fstp qword [ebp - 0x20]
wait
fld qword [ebp - 0x20]
fcomp dword [0x4c2754]
fnstsw ax
sahf
jne 0x4c249d
lea eax, [ebp - 0x28]
mov edx, 0x4c2760
call fcn.004045c8
jmp 0x4c24e2
fld qword [ebp - 0x20]
fcomp dword [0x4c2768]
fnstsw ax
sahf
jae 0x4c24ba
lea eax, [ebp - 0x28]
mov edx, 0x4c2774
call fcn.004045c8
jmp 0x4c24e2
fld qword [ebp - 0x20]
call fcn.00402b54
push edx
push eax
lea eax, [ebp - 0x110c]
call fcn.00408e8c
mov edx, dword [ebp - 0x110c]
lea eax, [ebp - 0x28]
mov ecx, 0x4c279c
call fcn.0040483c
lea eax, [ebp - 0x30]
call fcn.00404530
fld qword [ebp - 0x20]
fcomp dword [0x4c2754]
fnstsw ax
sahf
je 0x4c255d
push 0x7d0
lea eax, [ebp - 0xfdc]
push eax
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 4]
push eax
push 0x7d0
lea eax, [ebp - 0x80c]
push eax
lea eax, [ebp - 0x1110]
mov dl, byte [ebp - 0x21]
call fcn.00404718
lea eax, [ebp - 0x1110]
mov edx, 0x4c27f0
call fcn.004047f8
mov eax, dword [ebp - 0x1110]
call fcn.004049f0
push eax
call sub.kernel32.dll_GetVolumeInformationA
test eax, eax
je 0x4c255d
lea edx, [ebp - 0x30]
lea eax, [ebp - 0x80c]
call fcn.00409808
push 0x4c2820
lea eax, [ebp - 0x1114]
mov dl, byte [ebp - 0x21]
call fcn.00404718
push dword [ebp - 0x1114]
push 0x4c2838
lea eax, [ebp - 0x2c]
mov edx, 3
call fcn.004048b0
cmp dword [ebp - 0x30], 0
je 0x4c25ab
push dword [ebp - 0x2c]
push 0x4c27c0
push dword [ebp - 0x30]
push 0x4c27cc
lea eax, [ebp - 0x2c]
mov edx, 4
call fcn.004048b0
push dword [ebp - 0x2c]
push 0x4c27d8
push dword [ebp - 0x28]
push 0x4c27e4
lea eax, [ebp - 0x1118]
mov edx, 4
call fcn.004048b0
mov edx, dword [ebp - 0x1118]
mov eax, dword [ebx + 0x304]
mov eax, dword [eax + 0x23c]
mov ecx, dword [eax]
call dword [ecx + 0x38]
inc byte [ebp - 0x21]
cmp byte [ebp - 0x21], 0x5b
jne 0x4c2283
mov esi, dword [ebx + 0x304]
cmp dword [ebp - 0x10], 0xffffffff
je 0x4c261a
mov eax, dword [esi + 0x23c]
mov edx, dword [eax]
call dword [edx + 0x14]
cmp eax, dword [ebp - 0x10]
jle 0x4c261a
mov edx, dword [ebp - 0x10]
mov eax, esi
mov ecx, dword [eax]
call dword [ecx + 0xd0]
jmp 0x4c2635
mov eax, dword [esi + 0x23c]
mov edx, dword [eax]
call dword [edx + 0x14]
test eax, eax
je 0x4c2635
xor edx, edx
mov eax, esi
mov ecx, dword [eax]
call dword [ecx + 0xd0]
mov eax, dword [esi + 0x23c]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
setg dl
mov eax, esi
mov ecx, dword [eax]
call dword [ecx + 0x64]
xor eax, eax
mov dword [ebp - 0x14], eax
mov eax, dword [ebx + 0x304]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + 0x23c]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
test eax, eax
jl 0x4c26aa
inc eax
mov dword [ebp - 0x3c], eax
xor esi, esi
lea ecx, [ebp - 0x111c]
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + 0x23c]
mov edx, esi
mov edi, dword [eax]
call dword [edi + 0xc]
mov edx, dword [ebp - 0x111c]
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + 0x208]
call fcn.00425b9c
cmp eax, dword [ebp - 0x14]
jle 0x4c26a4
mov dword [ebp - 0x14], eax
inc esi
dec dword [ebp - 0x3c]
jne 0x4c2672
push 2
call sub.user32.dll_GetSystemMetrics
lea edx, [eax + eax*2]
add edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x38]
call fcn.004551e8
call fcn.004aa58c
cmp eax, 6
jl 0x4c26ea
fld dword [0x4c283c]
fmul qword [ebx + 0x428]
call fcn.00402b54
mov edx, eax
mov eax, dword [ebp - 0x38]
add edx, dword [eax + 0x48]
mov eax, dword [ebp - 0x38]
call fcn.004551e8
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4c272c
lea eax, [ebp - 0x111c]
mov edx, 0xd
call fcn.00404554
lea eax, [ebp - 0xfe4]
mov edx, 2
call fcn.00404554
lea eax, [ebp - 0x34]
mov edx, 4
call fcn.00404554
ret