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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x525835
mov eax, dword fs:[0]
push eax
sub esp, 0x6c
mov eax, dword [0x56617c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x34], edi
call fcn.004260b0
cmp al, 1
jne 0x49ede9
push ecx
mov ecx, edi
call fcn.00438640
test al, al
jne 0x49f007
mov ecx, edi
mov dword [edi + 0x1e8], 1
call fcn.004988c0
xorps xmm0, xmm0
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x24], xmm0
call fcn.004cc620
mov esi, eax
mov dword [ebp - 0x20], esi
call fcn.004296f0
mov ecx, dword [esi + 8]
mov dword [ebp - 0x18], eax
mov eax, dword [esi + 0x60]
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x24], 0x540300
mov dword [ebp - 4], 0
mov dword [edi + 4], 1
mov dword [edi + 0x1b8], 0
mov dword [edi + 0x1cc], 0
mov dword [edi + 0x14c], 0
mov dword [edi + 0xa4], 0xffffffff
mov dword [edi + 0x10c], 0
call fcn.00426300
mov dword [edi + 0x1e0], eax
call fcn.00425b20
mov byte [0x57e730], al
call fcn.00425d80
mov byte [edi + 0x130], al
mov eax, dword [edi + 0x90]
mov dword [edi + 0xb4], 0
mov dword [0x57e728], 0
mov eax, dword [eax + 0x3c]
mov ecx, dword [eax + 0xf28]
mov eax, dword [eax + 0xedc]
mov dword [edi + 0x1a0], ecx
mov ecx, dword [edi + 0x174]
mov dword [edi + 0x19c], eax
lea eax, [edi + 0x290]
push eax
mov edx, dword [ecx]
call dword [edx + 0x2c]
cmp dword [edi + 0x184], 0
je 0x49ef01
mov ecx, dword [edi + 0x16c]
mov eax, dword [ecx]
mov eax, dword [eax + 0x44]
call eax
mov ecx, dword [edi + 0x16c]
push 1
push 0
mov edx, dword [eax + 0xc]
add ecx, 0x130
sub edx, dword [eax + 4]
push edx
push 0x500
mov esi, dword [ecx]
push 0
push 0
call dword [esi + 0xe0]
xor esi, esi
push 0
push 0
push esi
mov ecx, edi
call fcn.00499af0
push eax
push esi
mov ecx, edi
call fcn.00499f60
inc esi
cmp esi, 0xb
jl 0x49ef03
lea ecx, [edi + 0x104]
call fcn.004af880
push 0
mov ecx, edi
call fcn.00499620
mov edx, dword [edi]
mov ecx, edi
mov dword [ebp - 0x2c], eax
call dword [edx + 0x110]
mov ecx, dword [edi + 0x84]
mov dword [ecx + 0xc], 0
call fcn.004995d0
dec eax
push eax
call fcn.00438780
push eax
lea ecx, [ebp - 0x78]
call fcn.0041a9d0
lea eax, [ebp - 0x78]
mov byte [ebp - 4], 1
push eax
lea ecx, [edi + 0x1ec]
call fcn.0041a900
lea ecx, [ebp - 0x78]
mov byte [ebp - 4], 0
call fcn.0041c2a0
call fcn.004995d0
mov edi, eax
call fcn.004cc620
mov esi, eax
call fcn.004296f0
mov ecx, dword [esi + 0x60]
mov esi, dword [ebp - 0x34]
mov ecx, dword [ecx + 0x2c]
mov ecx, dword [ecx]
mov ecx, dword [ecx + edi*4 - 4]
add ecx, 0xc
mov eax, dword [ecx + 4]
sub eax, dword [ecx]
cmp dword [esi + 0x230], 0xffffffff
mov dword [esi + 0x234], eax
jne 0x49efc3
mov dword [esi + 0x230], 0
cmp byte [0x57e730], 0
je 0x49f013
push ecx
mov ecx, esi
call fcn.00438640
test al, al
je 0x49f013
mov eax, dword [esi + 0x84]
push ecx
push 0
mov ecx, esi
mov dword [eax + 0xc], 1
mov dword [esi + 0x198], 1
call fcn.004a15d0
push 0
mov ecx, esi
call fcn.0049e010
jmp 0x49f2ec
mov dword [edi + 4], 0
jmp 0x49f3d0
mov eax, dword [esi + 0x84]
mov dword [ebp - 0x30], eax
call fcn.004cc620
mov ecx, dword [eax + 8]
test ecx, ecx
je 0x49f050
mov edi, dword [ecx + 0x3c]
mov eax, 0x6bca1af3
mov ecx, dword [ecx + 0x40]
sub ecx, edi
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x49f050
mov eax, dword [edi + 0x1058]
shr eax, 0xe
and al, 1
jne 0x49f09d
mov eax, dword [ebp - 0x30]
cmp dword [eax + 8], 0
je 0x49f09d
mov eax, dword [esi]
mov ecx, esi
push 0x4000
mov eax, dword [eax + 0xb0]
call eax
test al, al
jne 0x49f09d
mov eax, dword [esi + 0x84]
push ecx
push 0
mov ecx, esi
mov dword [eax + 8], 1
mov dword [esi + 0x198], 1
call fcn.004a15d0
push 0
mov ecx, esi
call fcn.0049e010
jmp 0x49f2ec
mov eax, dword [esi + 0x68]
xor edi, edi
sub eax, dword [esi + 0x64]
sar eax, 2
test eax, eax
je 0x49f0ce
nop dword [eax]
mov eax, dword [esi + 0x64]
mov ecx, esi
mov edx, dword [esi]
push dword [eax + edi*4]
call dword [edx + 0xc8]
mov eax, dword [esi + 0x68]
inc edi
sub eax, dword [esi + 0x64]
sar eax, 2
cmp edi, eax
jb 0x49f0b0
mov eax, dword [esi + 0x74]
xor edi, edi
sub eax, dword [esi + 0x70]
sar eax, 2
test eax, eax
je 0x49f0fe
nop dword [eax]
mov eax, dword [esi + 0x70]
mov ecx, esi
mov edx, dword [esi]
push dword [eax + edi*4]
call dword [edx + 0xc8]
mov eax, dword [esi + 0x74]
inc edi
sub eax, dword [esi + 0x70]
sar eax, 2
cmp edi, eax
jb 0x49f0e0
mov eax, dword [0x57e728]
mov ecx, 1
cmp dword [ebp - 0x2c], 0
mov edi, dword [esi + 0x234]
cmovne eax, ecx
sub edi, dword [esi + 0x230]
mov dword [0x57e728], eax
call fcn.00425f00
xorps xmm1, xmm1
cvtss2sd xmm1, xmm0
movsd xmm0, qword [0x54c9d8]
subsd xmm0, xmm1
mulsd xmm0, qword [0x54ca10]
call fcn.004fefb0
cmp dword [0x592ad4], 1
mov dword [ebp - 0x2c], eax
jne 0x49f159
call dword [sym.imp.KERNEL32.dll_GetTickCount]
jmp 0x49f15f
call dword [sym.imp.WINMM.dll_timeGetTime]
mov ecx, eax
mov dword [esi + 0x198], 1
lea eax, [edi - 1]
cdq
sub eax, edx
sar eax, 1
imul eax, dword [ebp - 0x2c]
add eax, 0x1f4
add eax, ecx
mov dword [esi + 0xb4], eax
call fcn.00426d90
movss xmm1, dword [0x54c9c0]
subss xmm1, xmm0
mulss xmm1, dword [0x54ca4c]
cvttss2si eax, xmm1
mov dword [esi + 0x194], eax
cmp dword [0x592ad4], 1
jne 0x49f1b8
call dword [sym.imp.KERNEL32.dll_GetTickCount]
jmp 0x49f1be
call dword [sym.imp.WINMM.dll_timeGetTime]
mov ecx, dword [esi + 0x1a8]
mov dword [esi + 0x1b4], eax
mov eax, dword [esi + 0x1a4]
mov dword [esi + 0x1b0], ecx
mov ecx, esi
push 0
mov dword [esi + 0x1ac], eax
call fcn.0049e010
call fcn.00426d90
ucomiss xmm0, dword [0x54c9c0]
lahf
test ah, 0x44
jnp 0x49f200
call fcn.00426cc0
test al, al
jne 0x49f219
push ecx
push 1
mov ecx, esi
call fcn.004a15d0
call fcn.0042a8c0
push ecx
push 1
mov ecx, eax
call fcn.0042d240
mov eax, dword [esi + 0x88]
mov eax, dword [eax + 0x48]
mov dword [ebp - 0x30], eax
cmp dword [eax + 0x2c], 0
je 0x49f2c2
mov ecx, dword [eax + 0x1c]
xor edi, edi
mov eax, dword [eax + 0x20]
sub eax, ecx
sar eax, 2
test eax, eax
je 0x49f299
mov esi, dword [ebp - 0x30]
mov eax, dword [ecx + edi*4]
cmp dword [eax + 4], 0
je case.default.0x49f259
cmp byte [eax + 0x10], 0
jne case.default.0x49f259
mov ecx, dword [eax]
cmp ecx, 4
ja case.default.0x49f259
jmp dword [ecx*4 + 0x49f3ec]
push eax
call fcn.004801e0
jmp case.default.0x49f259
push eax
call fcn.00480dd0
jmp case.default.0x49f259
push eax
call fcn.004818a0
jmp case.default.0x49f259
push eax
call fcn.00482a30
jmp case.default.0x49f259
push eax
call fcn.00483690
mov eax, dword [esi + 0x20]
inc edi
mov ecx, dword [esi + 0x1c]
sub eax, ecx
sar eax, 2
cmp edi, eax
jb 0x49f243
mov esi, dword [ebp - 0x34]
cmp dword [0x592ad4], 1
jne 0x49f2aa
call dword [sym.imp.KERNEL32.dll_GetTickCount]
jmp 0x49f2b0
call dword [sym.imp.WINMM.dll_timeGetTime]
mov edx, dword [ebp - 0x30]
push edx
mov dword [edx + 0x28], eax
mov ecx, dword [0x593458]
mov eax, dword [ecx]
call dword [eax + 8]
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x118]
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x124]
call eax
test eax, eax
je 0x49f2ec
cmp dword [esi + 0x1b8], 0
jne 0x49f2ec
mov ecx, esi
call fcn.004a3020
call fcn.004995d0
dec eax
push eax
call fcn.00438710
mov edx, dword [esi]
lea ecx, [esi + 0x1c0]
push ecx
push eax
mov ecx, esi
call dword [edx + 0xa4]
call fcn.00425ca0
movss xmm1, dword [0x54c9c0]
subss xmm1, xmm0
mulss xmm1, dword [0x54ca78]
movaps xmm0, xmm1
call fcn.004fef60
cmp dword [0x592ad4], 1
mov edi, eax
jne 0x49f33e
call dword [sym.imp.KERNEL32.dll_GetTickCount]
jmp 0x49f344
call dword [sym.imp.WINMM.dll_timeGetTime]
add eax, edi
cmp byte [0x57e730], 0
mov dword [esi + 0xb0], eax
je 0x49f361
push ecx
mov ecx, esi
call fcn.00438640
test al, al
jne 0x49f3bc
mov eax, dword [esi + 0x84]
mov dword [ebp - 0x2c], eax
call fcn.004cc620
mov ecx, dword [eax + 8]
test ecx, ecx
je 0x49f39e
mov edi, dword [ecx + 0x3c]
mov eax, 0x6bca1af3
mov ecx, dword [ecx + 0x40]
sub ecx, edi
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x49f39e
mov eax, dword [edi + 0x1058]
shr eax, 0xe
and al, 1
jne 0x49f3c6
mov eax, dword [ebp - 0x2c]
cmp dword [eax + 8], 0
je 0x49f3c6
mov eax, dword [esi]
mov ecx, esi
push 0x4000
mov eax, dword [eax + 0xb0]
call eax
test al, al
jne 0x49f3c6
mov dword [esi + 0x9c], 1
mov dword [esi + 0x18c], 0
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004fe27d
mov esp, ebp
pop ebp
ret