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

Disassembly:
mov eax, 0x30111043
call fcn.300088d4
push ecx
sub esp, 0x244
mov eax, dword [ebp + 0x10]
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
mov esi, ecx
push 1
xor edi, edi
push dword [esi + 8]
lea ecx, [ebp - 0x64]
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x18], eax
mov dword [ebp - 4], edi
call fcn.3000a992
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 0x18]
cmp eax, 0xe
mov byte [ebp - 4], 1
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x14], ecx
je 0x3003aa98
cmp dword [ebp + 0xc], edi
je 0x3003aa6c
mov ebx, dword [esi]
push edi
push dword [ebp + 0xc]
mov ecx, esi
push dword [ebp + 8]
call dword [ebx + 0x58]
cmp eax, edi
je 0x3003aa6c
mov eax, dword [esi + 0x3c]
lea edi, [esi + 0x30]
cmp eax, dword [edi + 4]
jle 0x3003aa6c
mov eax, dword [edi + 8]
cmp eax, dword [edi]
jle 0x3003aa6c
mov eax, dword [esi + 0x78]
test eax, eax
jne 0x3003aaa3
xor ecx, ecx
cmp dword [esi + 0x74], ecx
je 0x3003ab2e
cmp dword [ebp + 0x10], ecx
jne 0x3003a9be
cmp eax, ecx
jne 0x3003aab8
mov eax, dword [ebp - 0x5c]
shr eax, 4
test al, 3
jne 0x30053410
mov eax, dword [esi + 0x60]
mov ebx, dword [esi]
mov dword [ebp - 0x30], eax
mov eax, dword [esi + 0x64]
mov dword [ebp - 0x2c], eax
mov eax, dword [esi + 0x68]
mov dword [ebp - 0x28], eax
mov eax, dword [esi + 0x6c]
mov dword [ebp - 0x24], eax
mov eax, dword [edi]
mov dword [ebp - 0x40], eax
mov eax, dword [edi + 4]
mov dword [ebp - 0x3c], eax
mov eax, dword [edi + 8]
mov dword [ebp - 0x38], eax
mov eax, dword [edi + 0xc]
mov ecx, esi
mov dword [ebp - 0x34], eax
call dword [ebx + 0xac]
mov ecx, dword [ebp + 8]
mov edi, eax
call fcn.3002b2d6
push edi
lea ecx, [ebp - 0x30]
push dword [esi + 0x18]
push ecx
lea ecx, [ebp - 0x40]
push dword [ebp - 0x18]
push dword [ebp + 0xc]
push ecx
push eax
push dword [esi + 0x24]
lea ecx, [ebp - 0xe8]
push dword [esi + 0x20]
call fcn.30039589
lea ecx, [ebp - 0xe8]
mov byte [ebp - 4], 3
call fcn.30039cc9
lea ecx, [ebp - 0xe8]
mov dword [ebp - 0x1c], 1
mov byte [ebp - 4], 1
call fcn.30030548
cmp dword [esi + 0x14], 0xe
je 0x3003ac41
cmp byte [ebp - 0x48], 3
je 0x30053464
mov ecx, dword [ebp - 0x18]
cmp ecx, dword [ebp + 0x10]
jne 0x3003ac95
and byte [ebp - 4], 0
lea ecx, [ebp - 0x64]
call fcn.3000ab57
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x1c]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
leave
ret 0xc
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x14], edi
jmp 0x3003a962
mov ecx, dword [esi + 0x4c]
cmp ecx, dword [esi + 0x44]
jle 0x3003aa6c
mov ecx, dword [esi + 0x48]
cmp ecx, dword [esi + 0x40]
jle 0x3003aa6c
jmp 0x3003a9a6
cmp dword [esi + 0x2c], ecx
je 0x3003a9be
mov eax, dword [esi + 0x48]
lea ebx, [esi + 0x40]
and dword [ebp - 0x30], ecx
and dword [ebp - 0x2c], ecx
sub eax, dword [ebx]
push 0x16c
mov dword [ebp - 0x28], eax
mov eax, dword [ebx + 0xc]
sub eax, dword [ebx + 4]
mov dword [ebp - 0x24], eax
call fcn.3000882f
pop ecx
mov ecx, eax
mov dword [ebp - 0x20], ecx
test ecx, ecx
mov byte [ebp - 4], 2
je 0x30053407
push dword [ebp + 0xc]
push 0x22
push 1
push ebx
push ebx
call fcn.30029883
mov dword [ebp - 0x14], eax
mov ecx, dword [ebp - 0x14]
mov byte [ebp - 4], 1
mov dword [ebp - 0x18], ecx
call fcn.30009579
mov ecx, dword [ebp - 0x14]
push 0xd
lea eax, [ebp - 0x30]
push ebx
push eax
push dword [esi + 0x2c]
call fcn.3003917f
jmp 0x3003a9be
mov ecx, dword [ebp + 8]
call fcn.3002b2d6
push eax
push 0x22
push 0
push edi
push edi
lea ecx, [ebp - 0x254]
call fcn.30029883
lea ecx, [ebp - 0x254]
mov byte [ebp - 4], 4
call fcn.30009579
push 0xd
push edi
push edi
lea ecx, [ebp - 0x254]
push dword [ebp + 0xc]
call fcn.300246a4
lea eax, [ebp - 0x254]
push 0
push eax
mov ecx, esi
call dword [ebx + 0xa4]
test eax, eax
je 0x3003ac2d
mov eax, dword [ebp - 0x5c]
shr eax, 4
test al, 3
jne 0x3005343b
mov eax, dword [edi]
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x40], eax
mov eax, dword [edi + 4]
mov dword [ebp - 0x3c], eax
mov eax, dword [edi + 8]
mov dword [ebp - 0x38], eax
mov eax, dword [edi + 0xc]
mov dword [ebp - 0x34], eax
mov eax, dword [edi]
mov dword [ebp - 0x30], eax
mov eax, dword [edi + 4]
mov dword [ebp - 0x2c], eax
mov eax, dword [edi + 8]
mov dword [ebp - 0x28], eax
mov eax, dword [edi + 0xc]
mov dword [ebp - 0x24], eax
call fcn.3002b2d6
mov ecx, esi
mov edi, eax
call dword [ebx + 0xac]
xor ecx, ecx
push ecx
push ecx
push ecx
lea ecx, [ebp - 0x40]
push ecx
lea ecx, [ebp - 0x30]
push ecx
lea ecx, [ebp - 0x254]
push edi
push ecx
push eax
lea ecx, [ebp - 0xc4]
push dword [ebp - 0x14]
push dword [ebp - 0x20]
push 2
call fcn.30023e7d
mov ecx, dword [ebp + 8]
mov byte [ebp - 4], 5
call fcn.3002b2d6
mov ecx, eax
call fcn.30009579
lea ecx, [ebp - 0xc4]
call fcn.30024360
lea ecx, [ebp - 0xc4]
mov dword [ebp - 0x1c], 1
mov byte [ebp - 4], 4
call fcn.3002393f
lea ecx, [ebp - 0x254]
mov byte [ebp - 4], 1
call fcn.3003f0a3
jmp 0x3003aa58
call fcn.3002b2c1
cmp byte [ebp - 0x48], 3
mov edi, eax
je 0x30053479
cmp dword [esi + 0x14], 0xe
jne 0x3003ac67
mov eax, dword [esi + 0x18]
sub eax, 0
jne 0x30053480
add edi, 5
call fcn.3002b2c1
cmp eax, edi
jb 0x3003ac67
mov ecx, dword [ebp + 8]
call fcn.3002b2d6
lea edx, [esi + 0x30]
push 0xd
push edx
push edx
push dword [ebp + 0xc]
mov ecx, eax
call fcn.300246a4
mov dword [esi + 0x70], 4
jmp 0x3003aa6c
test ecx, ecx
je 0x3003aa78
mov eax, dword [ecx]
push 1
call dword [eax + 8]
jmp 0x3003aa78
and dword [ebp - 0x14], 0
jmp 0x3003ab08
cmp dword [ebp - 0x44], 0
je 0x3003a9cc
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x98]
test eax, eax
je 0x3003a9cc
mov ecx, dword [ebp - 0x44]
push 0
call fcn.300ae0cd
jmp 0x3003a9cc
cmp dword [ebp - 0x44], 0
je 0x3003ab90
mov ecx, esi
call dword [ebx + 0x98]
test eax, eax
je 0x3003ab90
mov ecx, dword [ebp - 0x44]
push 0
call fcn.300ae0cd
jmp 0x3003ab90
mov ecx, esi
call dword [ebx + 0x94]
test eax, eax
je 0x3003aa6c
jmp 0x3003ac41
inc edi
inc edi
jmp 0x3003ac67
dec eax
je 0x30053492
dec eax
jne 0x3003ac64
add edi, 0x3c
jmp 0x3003ac67
add edi, 0x1e
jmp 0x3003ac67