Function at 0x5aa150
Capabilities:
Check for time delay via gettickcount
Get disk information

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffd4
push ebx
push esi
push edi
xor ecx, ecx
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 8]
call fcn.004040cc
xor eax, eax
push ebp
push 0x5aa6a5
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 0x21], 0
mov byte [ebp - 0x22], 0
xor eax, eax
mov dword [ebp - 0x28], eax
mov dl, 1
mov eax, dword [0x40f96c]
call fcn.00402f88
mov dword [ebp - 0xc], eax
xor edx, edx
push ebp
push 0x5aa680
push dword fs:[edx]
mov dword fs:[edx], esp
xor eax, eax
push ebp
push 0x5aa32b
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x250]
call fcn.00413948
cmp edx, 0
jne 0x5aa1cc
cmp eax, 0
jbe 0x5aa221
jmp 0x5aa1ce
jle 0x5aa221
push 0
push 0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x250]
call fcn.00413934
mov eax, dword [ebp - 4]
mov ebx, dword [eax + 0x250]
mov eax, ebx
call fcn.00413948
push edx
push eax
mov edx, ebx
mov eax, dword [ebp - 0xc]
call fcn.00413c90
push 0
push 0
mov eax, dword [ebp - 0xc]
call fcn.00413934
mov eax, dword [ebp - 0xc]
call fcn.00413948
mov ecx, dword [ebp - 4]
mov dword [ecx + 0x170], eax
mov dword [ecx + 0x174], edx
jmp 0x5aa238
mov eax, dword [ebp - 4]
mov dword [eax + 0x170], 0
mov dword [eax + 0x174], 0
mov eax, dword [ebp - 4]
cmp dword [eax + 0x250], 0
je 0x5aa251
mov eax, dword [ebp - 4]
add eax, 0x250
call fcn.005a66e0
mov eax, dword [ebp - 8]
call fcn.00403f18
test eax, eax
jle 0x5aa29a
lea eax, [ebp - 0x2c]
mov edx, dword [ebp - 8]
mov dl, byte [edx]
call fcn.00403e40
lea eax, [ebp - 0x2c]
mov edx, 0x5aa6bc
call fcn.00403f20
mov eax, dword [ebp - 0x2c]
call fcn.004040dc
push eax
call sub.kernel32.dll_GetDriveTypeA
cmp eax, 2
jne 0x5aa29a
mov dword [ebp - 0x18], 0x40000
mov dword [ebp - 0x14], 0
jmp 0x5aa2a8
mov dword [ebp - 0x18], 0x20000
mov dword [ebp - 0x14], 0
mov eax, dword [ebp - 4]
cmp dword [eax + 0x164], 0
jne 0x5aa2bf
cmp dword [eax + 0x160], 0
jbe 0x5aa2f5
jmp 0x5aa2c1
jle 0x5aa2f5
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x164]
mov eax, dword [eax + 0x160]
cmp edx, dword [ebp - 0x14]
jne 0x5aa2dc
cmp eax, dword [ebp - 0x18]
jae 0x5aa2f5
jmp 0x5aa2de
jge 0x5aa2f5
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x160]
mov dword [ebp - 0x18], edx
mov edx, dword [eax + 0x164]
mov dword [ebp - 0x14], edx
jmp 0x5aa301
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x14], eax
push 0x22
push dword [ebp - 0x14]
push dword [ebp - 0x18]
mov ecx, dword [ebp - 8]
mov dl, 1
mov eax, dword [0x4ce3c4]
call fcn.004ced40
mov edx, dword [ebp - 4]
mov dword [edx + 0x250], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x5aa383
mov eax, dword [ebp - 4]
mov ebx, dword [eax + 0x250]
mov eax, ebx
call fcn.00413948
push edx
push eax
mov eax, ebx
call fcn.00413934
mov eax, dword [ebp - 0xc]
call fcn.00413948
cmp edx, 0
jne 0x5aa3b0
cmp eax, 0
jbe 0x5aa3e3
jmp 0x5aa3b2
jle 0x5aa3e3
push 0
push 0
mov eax, dword [ebp - 0xc]
call fcn.00413934
mov eax, dword [ebp - 0xc]
call fcn.00413948
push edx
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x250]
mov edx, dword [ebp - 0xc]
call fcn.00413c90
mov eax, dword [ebp - 0xc]
call fcn.004140c8
jmp 0x5aa3fa
mov eax, dword [ebp - 4]
mov dword [eax + 0x170], 0
mov dword [eax + 0x174], 0
mov dword [ebp - 0x20], 0xffffffff
mov dword [ebp - 0x1c], 0xffffffff
xor esi, esi
call sub.kernel32.dll_GetTickCount
mov edx, dword [ebp - 4]
mov dword [edx + 0x210], eax
mov eax, dword [ebp - 4]
mov byte [eax + 0x229], 1
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.005aa9ac
mov eax, dword [ebp - 4]
mov byte [eax + 0x158], 1
mov eax, dword [ebp - 4]
push eax
push 0
push 0x468
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x248]
push eax
call sub.user32.dll_PostMessageA
jmp 0x5aa5e0
mov eax, dword [ebp - 4]
cmp byte [eax + 0x202], 0
je 0x5aa46f
mov dx, 2
mov eax, dword [ebp - 4]
call fcn.005acc80
jmp 0x5aa480
mov ebx, 0xc9
call fcn.005a66f4
test al, al
je 0x5aa480
dec ebx
jne 0x5aa474
call sub.kernel32.dll_GetTickCount
sub eax, esi
cmp eax, 0x3e8
jbe 0x5aa505
call sub.kernel32.dll_GetTickCount
mov esi, eax
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x174]
mov eax, dword [eax + 0x170]
cmp edx, dword [ebp - 0x1c]
jne 0x5aa4ac
cmp eax, dword [ebp - 0x20]
je 0x5aa505
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x170]
mov dword [ebp - 0x20], edx
mov edx, dword [eax + 0x174]
mov dword [ebp - 0x1c], edx
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x154]
test eax, eax
je 0x5aa4d5
call fcn.005ae184
call sub.kernel32.dll_GetTickCount
mov edx, dword [ebp - 4]
sub eax, dword [edx + 0x210]
cmp eax, 0xea60
jbe 0x5aa505
call sub.kernel32.dll_GetTickCount
mov edx, dword [ebp - 4]
mov dword [edx + 0x210], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x250]
mov byte [eax + 0x36], 1
mov eax, dword [ebp - 4]
cmp byte [eax + 0x268], 0
je 0x5aa556
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x174]
mov eax, dword [eax + 0x170]
mov ecx, dword [ebp - 4]
cmp edx, dword [ecx + 0x164]
jne 0x5aa556
cmp eax, dword [ecx + 0x160]
jne 0x5aa556
cmp dword [ebp - 0x28], 0
jne 0x5aa543
call sub.kernel32.dll_GetTickCount
mov dword [ebp - 0x28], eax
jmp 0x5aa556
call sub.kernel32.dll_GetTickCount
sub eax, dword [ebp - 0x28]
cmp eax, 0x2710
ja 0x5aa608
mov eax, dword [ebp - 4]
mov eax, dword [eax + 4]
cmp word [eax + 0x6e], 0
je 0x5aa580
mov ebx, eax
lea edx, [ebp - 0x21]
mov eax, dword [ebx + 0x70]
call dword [ebx + 0x6c]
cmp byte [ebp - 0x21], 0
je 0x5aa580
mov eax, dword [ebp - 4]
mov dl, byte [ebp - 0x21]
mov byte [eax + 0x215], dl
mov eax, dword [ebp - 4]
cmp byte [eax + 0x202], 0
je 0x5aa5e0
call sub.kernel32.dll_GetTickCount
mov edx, dword [ebp - 4]
sub eax, dword [edx + 0x20c]
mov ecx, 0x3e8
xor edx, edx
div ecx
mov ecx, eax
test ecx, ecx
jne 0x5aa5ae
mov ecx, 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x1f0]
xor edx, edx
div ecx
mov edx, dword [ebp - 4]
cmp eax, dword [edx + 0x204]
jae 0x5aa5e0
mov eax, dword [ebp - 4]
push eax
push 0
push 0x468
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x248]
push eax
call sub.user32.dll_PostMessageA
mov eax, dword [ebp - 4]
cmp byte [eax + 0x268], 0
je 0x5aa608
mov eax, dword [ebp - 4]
cmp byte [eax + 0x215], 0
jne 0x5aa608
mov eax, dword [ebp - 4]
cmp byte [eax + 0x229], 0
jne 0x5aa455
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5aa687
mov eax, dword [ebp - 4]
call fcn.005aaa04
cmp dword [ebp - 0xc], 0
je 0x5aa62b
lea eax, [ebp - 0xc]
call fcn.005a66e0
mov eax, dword [ebp - 4]
cmp dword [eax + 0x250], 0
je 0x5aa644
mov eax, dword [ebp - 4]
add eax, 0x250
call fcn.005a66e0
mov eax, dword [ebp - 4]
mov byte [eax + 0x229], 0
mov eax, dword [ebp - 4]
mov al, byte [eax + 0x215]
or al, byte [ebp - 0x22]
je 0x5aa67f
mov eax, dword [ebp - 4]
mov byte [eax + 0x215], 0
mov ecx, dword [0x5bc024]
mov ecx, dword [ecx]
mov dl, 1
mov eax, dword [0x5a61d0]
call fcn.0040bbf8
call fcn.00403710
ret