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

Disassembly:
push ecx
mov al, byte [0xbc7b00]
push ebx
push esi
push edi
test al, 1
jne 0x4504e3
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount]
or al, 1
mov byte [0xbc7b00], al
call edi
mov dword [0xbc7b08], eax
jmp 0x4504e9
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp dword [0xe36314], 0xa
je 0x450503
mov ax, word [0xbc7b22]
mov word [esp + 0xc], ax
mov esi, dword [esp + 0xc]
jmp 0x450510
mov esi, dword [0xbc7b40]
mov dword [esp + 0xc], esi
mov ax, si
test ax, ax
je 0x45068c
cmp ax, 3
jge 0x4505df
call edi
lea ecx, [esi + esi*4]
mov esi, dword [0xbc7b08]
mov edx, 0x33
lea ecx, [ecx + ecx*4]
sub edx, ecx
movsx ecx, dx
add ecx, esi
cmp ecx, eax
jae 0x45068c
call fcn.0044fab0
mov esi, eax
test esi, esi
je 0x45068c
mov ebx, 4
mov word [esi + 0x3c], bx
call fcn.00505223
cdq
mov ecx, 0x4d8
mov dword [esi + 4], 0
idiv ecx
sub edx, 0x64
mov dword [esi], edx
call fcn.00505223
and eax, reloc.WSOCK32.dll_closesocket
jns 0x450587
dec eax
or eax, 0xfffffffc
inc eax
mov word [esi + 0x40], ax
mov dword [esi + 0x30], ebx
call fcn.00505223
and eax, reloc.DSOUND.dll_DirectSoundCreate
jns 0x45059f
dec eax
or eax, 0xfffffffe
inc eax
jne 0x4505b1
mov dword [esi + 8], 0xffffffff
mov dword [esi + 0xc], 2
jmp 0x4505c4
cmp eax, 1
jne 0x4505c4
mov dword [esi + 8], 0xffffffff
mov dword [esi + 0xc], 3
call edi
inc word [0xbc7b24]
mov dword [0xbc7b08], eax
mov edx, dword [esi + 0xc]
neg edx
mov dword [esi + 4], edx
jmp 0x450691
lea eax, [esi + esi - 4]
movsx eax, ax
test eax, eax
jle 0x45068c
mov ebx, eax
or edi, 0xffffffff
call fcn.0044fab0
mov esi, eax
test esi, esi
je 0x450685
mov word [esi + 0x3c], 4
call fcn.00505223
cdq
mov ecx, 0x4d8
mov dword [esi + 4], 0
idiv ecx
sub edx, 0x64
mov dword [esi], edx
call fcn.00505223
and eax, reloc.WSOCK32.dll_closesocket
jns 0x450632
dec eax
or eax, 0xfffffffc
inc eax
mov word [esi + 0x40], ax
mov dword [esi + 0x30], 4
call fcn.00505223
and eax, reloc.DSOUND.dll_DirectSoundCreate
jns 0x45064e
dec eax
or eax, 0xfffffffe
inc eax
jne 0x45065c
mov dword [esi + 8], edi
mov dword [esi + 0xc], 2
jmp 0x45066b
cmp eax, 1
jne 0x45066b
mov dword [esi + 8], edi
mov dword [esi + 0xc], 3
call dword [sym.imp.KERNEL32.dll_GetTickCount]
inc word [0xbc7b24]
mov dword [0xbc7b08], eax
mov edx, dword [esi + 0xc]
neg edx
mov dword [esi + 4], edx
dec ebx
jne 0x4505f3
mov ebx, 4
mov esi, dword [0xbc7b04]
test esi, esi
je 0x450768
cmp word [esi + 0x3c], bx
jne 0x450754
call fcn.00505223
cdq
mov ecx, 3
mov edi, dword [esi]
idiv ecx
mov eax, dword [esi + 8]
lea ecx, [edx + eax - 1]
add edi, ecx
mov dword [esi], edi
lea edi, [esi + 4]
call fcn.00505223
cdq
mov ecx, 3
idiv ecx
mov eax, dword [esi + 0xc]
lea ecx, [edx + eax - 1]
mov edx, dword [edi]
mov eax, dword [esi + 0x30]
add edx, ecx
test eax, eax
mov dword [edi], edx
jg 0x450727
call fcn.00505223
cdq
mov ecx, 3
idiv ecx
mov word [esi + 0x3e], dx
call fcn.00505223
and eax, 0x80000007
jns 0x450709
dec eax
or eax, 0xfffffff8
inc eax
inc eax
mov dword [esi + 0x28], eax
call fcn.00505223
and eax, 0x80000007
jns 0x45071e
dec eax
or eax, 0xfffffff8
inc eax
inc eax
mov dword [esi + 0x30], ebx
mov dword [esi + 0x2c], eax
jmp 0x45072a
dec dword [esi + 0x30]
push edi
push esi
call fcn.0044fb50
mov eax, dword [edi]
add esp, 8
cmp eax, 0x1e0
jl 0x450754
mov edi, dword [esi + 0x38]
push esi
call fcn.0044fb00
add esp, 4
dec word [0xbc7b24]
mov esi, edi
jmp 0x450760
mov esi, dword [esi + 0x38]
mov word [0xbc7b10], 1
test esi, esi
jne 0x45069f
pop edi
pop esi
pop ebx
pop ecx
ret