Function at 0x583c4c
Capabilities:
Check for time delay via gettickcount

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x16
push 0
push 0
dec ecx
jne 0x583c54
push ebx
push esi
push edi
mov ebx, eax
xor eax, eax
push ebp
push 0x5842c3
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 5], 0
call fcn.00403510
xor eax, eax
mov dword [ebx + 0x4c], eax
xor eax, eax
mov dword [ebx + 0x50], eax
xor eax, eax
mov dword [ebx + 0x54], eax
xor eax, eax
mov dword [ebx + 0x58], eax
xor eax, eax
mov dword [ebx + 0x5c], eax
call sub.kernel32.dll_GetTickCount_1
mov dword [ebp - 0xc], eax
mov eax, 0x5842e4
call fcn.00479c20
test al, al
je 0x583dab
mov eax, 0x584300
call fcn.004ece38
xor eax, eax
mov dword [ebx + 0x14], eax
lea eax, [ebp - 4]
call fcn.004069a0
mov edx, eax
mov cl, 1
mov eax, 0x584334
call fcn.00557fb8
test al, al
je 0x583cf2
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.00470aa4
mov esi, eax
mov dword [ebx + 0x14], esi
sub esi, 6
jb 0x583cf2
dec esi
sub esi, 2
jb 0x583cf2
xor eax, eax
mov dword [ebx + 0x14], eax
xor eax, eax
mov dword [ebx + 0x18], eax
lea eax, [ebp - 4]
call fcn.004069a0
mov edx, eax
mov cl, 1
mov eax, 0x584348
call fcn.00557fb8
test al, al
je 0x583d2a
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.00470aa4
mov esi, eax
mov dword [ebx + 0x18], esi
sub esi, 4
jb 0x583d2a
xor eax, eax
mov dword [ebx + 0x18], eax
lea eax, [ebx + 0x38]
mov edx, 0x58435c
call fcn.004069b0
lea eax, [ebp - 4]
call fcn.004069a0
mov edx, eax
mov cl, 1
mov eax, 0x584370
call fcn.00557fb8
test al, al
je 0x583d7d
mov edi, 0xa
mov esi, dword [0x62f6fc]
mov edx, dword [esi]
mov eax, dword [ebp - 4]
call fcn.0046ff38
test al, al
je 0x583d77
lea eax, [ebx + 0x38]
mov edx, dword [ebp - 4]
call fcn.004069b0
jmp 0x583d7d
add esi, 4
dec edi
jne 0x583d5c
xor eax, eax
mov dword [ebx + 0x4c], eax
lea eax, [ebp - 4]
call fcn.004069a0
mov edx, eax
mov cl, 1
mov eax, 0x584384
call fcn.00557fb8
test al, al
je 0x583db3
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.00470aa4
mov dword [ebx + 0x4c], eax
jmp 0x583db3
call fcn.00562f20
mov dword [ebx + 0x14], eax
mov eax, dword [ebx + 0x14]
sub eax, 6
jb 0x583dd0
dec eax
sub eax, 2
jb 0x583dd0
mov eax, 0x584398
call fcn.004ece38
jmp 0x584293
mov eax, 0x5842e4
call fcn.00479c20
test al, al
jne 0x583df8
mov eax, ebx
call fcn.0057c980
test al, al
jne 0x583df8
mov eax, 0x5843cc
call fcn.004ece38
jmp 0x584293
mov eax, ebx
call fcn.0057e31c
test al, al
jne 0x583e12
mov eax, 0x5843f4
call fcn.004ece38
jmp 0x584293
mov eax, ebx
call fcn.00583b1c
mov eax, ebx
call fcn.00580e4c
mov dword [ebx + 0x3c], eax
mov eax, 0x5842e4
call fcn.00479c20
test al, al
jne 0x583e46
lea edx, [ebp - 0x1c]
mov eax, ebx
call fcn.0057f328
mov edx, dword [ebp - 0x1c]
lea eax, [ebx + 0x38]
call fcn.004069b0
mov eax, ebx
call fcn.0057fd44
mov dword [ebx + 0x24], eax
mov edx, dword [ebx + 0x3c]
mov eax, ebx
call fcn.005839b4
mov dword [ebx + 0x30], eax
lea edx, [ebp - 0x20]
mov eax, ebx
call fcn.0057f93c
mov edx, dword [ebp - 0x20]
lea eax, [ebx + 0x34]
call fcn.004069b0
mov eax, ebx
call fcn.0057fd78
mov esi, eax
mov dword [ebx + 0x28], esi
lea edx, [ebp - 0x28]
mov eax, esi
call fcn.004707a4
mov ecx, dword [ebp - 0x28]
lea eax, [ebp - 0x24]
mov edx, 0x584420
call fcn.00406e84
mov eax, dword [ebp - 0x24]
call fcn.004ece38
mov eax, ebx
call fcn.005803bc
mov dword [ebx + 0x60], eax
mov eax, ebx
call fcn.00580960
mov dword [ebx + 0x64], eax
push 0x584464
lea edx, [ebp - 0x2c]
mov eax, ebx
call fcn.00580bd0
push dword [ebp - 0x2c]
push 0x584464
lea eax, [ebx + 0x68]
mov edx, 3
call fcn.00406f68
lea eax, [ebp - 0x30]
push eax
mov eax, dword [ebx + 0x3c]
mov dword [ebp - 0x58], eax
mov byte [ebp - 0x54], 0
mov eax, dword [ebx + 0x40]
mov dword [ebp - 0x50], eax
mov byte [ebp - 0x4c], 0x11
mov eax, dword [ebx + 0x38]
mov dword [ebp - 0x48], eax
mov byte [ebp - 0x44], 0x11
mov eax, dword [ebx + 0x30]
mov dword [ebp - 0x40], eax
mov byte [ebp - 0x3c], 0
mov eax, dword [ebx + 0x28]
mov dword [ebp - 0x38], eax
mov byte [ebp - 0x34], 0
lea edx, [ebp - 0x58]
mov ecx, 4
mov eax, 0x584474
call fcn.004723c4
mov eax, dword [ebp - 0x30]
call fcn.004ece38
mov eax, dword [ebx + 0x10]
call fcn.00470f58
test al, al
jne 0x583f51
mov edx, dword [ebx + 0x10]
lea eax, [ebp - 0x5c]
mov ecx, 0x5844f4
call fcn.00406e84
mov eax, dword [ebp - 0x5c]
call fcn.004ece38
jmp 0x584293
cmp dword [ebx + 4], 0
jne 0x583f6c
mov eax, dword [ebx + 0x10]
call fcn.0053acf8
mov esi, eax
mov dword [ebx + 4], esi
test esi, esi
je 0x584293
xor edx, edx
push ebp
push 0x58428c
push dword fs:[edx]
mov dword fs:[edx], esp
mov edx, dword [ebx + 4]
mov eax, ebx
call fcn.0057bd10
test al, al
jne 0x583f92
call fcn.004052e4
jmp 0x584293
mov byte [ebp - 0xd], 0
cmp dword [ebx + 0x14], 7
jne 0x583fad
cmp dword [ebx + 0x50], 1
jne 0x583fad
mov eax, ebx
call fcn.00585484
inc eax
mov dword [ebx + 0x58], eax
call fcn.00403538
fstp qword [ebp - 0x18]
wait
cmp dword [ebx + 0x5c], 3
jne 0x583fdb
fld qword [ebp - 0x18]
fcomp dword [0x584514]
wait
fnstsw ax
sahf
jae 0x583fd4
mov dword [ebx + 0x5c], 1
jmp 0x583fdb
mov dword [ebx + 0x5c], 2
mov eax, dword [ebx + 0x58]
shl eax, 4
or eax, dword [ebx + 0x5c]
mov dword [ebx + 0x4c], eax
mov eax, dword [ebx + 8]
test eax, eax
je 0x5840cd
mov edx, dword [ebx + 0x18]
sub edx, 1
je 0x584003
sub edx, 2
jne 0x5840cd
cmp dword [eax + 0x60], 0
jbe 0x584075
mov eax, 0x584524
call fcn.004ece38
call sub.kernel32.dll_GetTickCount_1
mov esi, eax
jmp 0x584026
push 0x1f4
call sub.kernel32.dll_Sleep_1
call sub.kernel32.dll_GetTickCount_1
sub eax, dword [ebp - 0xc]
mov edx, dword [ebx + 8]
imul edx, dword [edx + 0x60], 0x3e8
cmp eax, edx
jb 0x58401c
call sub.kernel32.dll_GetTickCount_1
sub eax, esi
mov esi, eax
cmp esi, 0x1388
seta byte [ebp - 0xd]
mov eax, esi
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x64]
call fcn.004709e8
mov ecx, dword [ebp - 0x64]
lea eax, [ebp - 0x60]
mov edx, 0x584560
call fcn.00406e84
mov eax, dword [ebp - 0x60]
call fcn.004ece38
mov eax, dword [ebx + 8]
cmp dword [eax + 0x5c], 0
jbe 0x5840cd
mov eax, 0x584598
call fcn.004ece38
mov eax, dword [ebx + 8]
mov eax, dword [eax + 0x5c]
mov dl, 1
call fcn.00557f3c
mov esi, eax
cmp byte [ebp - 0xd], 0
jne 0x5840a7
cmp esi, 0x1388
seta byte [ebp - 0xd]
mov eax, esi
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x6c]
call fcn.004709e8
mov ecx, dword [ebp - 0x6c]
lea eax, [ebp - 0x68]
mov edx, 0x5845d8
call fcn.00406e84
mov eax, dword [ebp - 0x68]
call fcn.004ece38
mov eax, dword [ebx + 0x18]
test eax, eax
je 0x5840dd
cmp eax, 2
jne case.0x5840e9.0
mov eax, dword [ebx + 0x14]
cmp eax, 8
ja case.0x5840e9.0
jmp dword [eax*4 + 0x5840f0]
mov edx, 5
mov eax, ebx
call fcn.00579314
test al, al
je case.0x5840e9.0
mov byte [ebp - 0xd], 1
jmp case.0x5840e9.0
mov edx, 5
mov eax, ebx
call fcn.0057965c
test al, al
je case.0x5840e9.0
mov byte [ebp - 0xd], 1
jmp case.0x5840e9.0
mov edx, 5
mov eax, ebx
call fcn.00579480
test al, al
je case.0x5840e9.0
mov byte [ebp - 0xd], 1
jmp case.0x5840e9.0
mov edx, 5
mov eax, ebx
call fcn.0057965c
test al, al
je case.0x5840e9.0
mov byte [ebp - 0xd], 1
jmp case.0x5840e9.0
mov edx, 5
mov eax, ebx
call fcn.0057965c
test al, al
je case.0x5840e9.0
mov byte [ebp - 0xd], 1
cmp byte [ebp - 0xd], 0
je 0x5841b6
mov eax, 0x584614
call fcn.004ece38
mov eax, ebx
call fcn.0057fd78
mov dword [ebx + 0x28], eax
mov edx, dword [ebx + 4]
mov eax, ebx
call fcn.0057bd10
test al, al
jne 0x5841b6
mov byte [ebp - 5], 0
call fcn.004052e4
jmp 0x584293
mov eax, dword [ebx + 0x18]
test eax, eax
je 0x5841c2
cmp eax, 2
jne 0x5841e5
mov eax, ebx
call fcn.00580edc
test eax, eax
jne 0x5841e5
mov eax, 0x584694
call fcn.004ece38
mov byte [ebp - 5], 0
call fcn.004052e4
jmp 0x584293
lea eax, [ebp - 0x70]
push eax
mov eax, dword [ebx + 0x18]
mov dword [ebp - 0xb0], eax
mov byte [ebp - 0xac], 0
mov eax, dword [ebx + 0x1c]
mov dword [ebp - 0xa8], eax
mov byte [ebp - 0xa4], 0
mov eax, dword [ebx + 0x20]
mov dword [ebp - 0xa0], eax
mov byte [ebp - 0x9c], 0
mov eax, dword [ebx + 0x3c]
mov dword [ebp - 0x98], eax
mov byte [ebp - 0x94], 0
mov eax, dword [ebx + 0x40]
mov dword [ebp - 0x90], eax
mov byte [ebp - 0x8c], 0x11
mov eax, dword [ebx + 0x38]
mov dword [ebp - 0x88], eax
mov byte [ebp - 0x84], 0x11
mov eax, dword [ebx + 0x30]
mov dword [ebp - 0x80], eax
mov byte [ebp - 0x7c], 0
mov eax, dword [ebx + 0x28]
mov dword [ebp - 0x78], eax
mov byte [ebp - 0x74], 0
lea edx, [ebp - 0xb0]
mov ecx, 7
mov eax, 0x5846c0
call fcn.004723c4
mov eax, dword [ebp - 0x70]
call fcn.004ece38
mov byte [ebp - 5], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x584293
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5842ca
lea eax, [ebp - 0x70]
mov edx, 6
call fcn.004069a8
lea eax, [ebp - 0x30]
mov edx, 6
call fcn.004069a8
lea eax, [ebp - 4]
call fcn.004069a0
ret