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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xe0
mov eax, dword [0x301e7784]
push ebx
push esi
push edi
mov edi, dword [0x301e7780]
mov ebx, fcn.3019615d
push ebx
push dword [0x301e4698]
xor esi, esi
mov dword [ebp - 0x10], esi
mov dword [ebp - 8], edi
mov dword [ebp - 4], eax
call fcn.30021c52
call fcn.3016952f
cmp eax, 0xffffffff
je 0x301964ba
push 1
push dword [0x301df330]
call sub.MSVCRT.dll_longjmp
mov eax, dword [0x301e4920]
cmp dword [eax + 0x43c], 0
je 0x3019683a
test byte [eax + 0x1a24], 0x40
je 0x3019652c
push 5
lea eax, [ebp - 0x20]
push eax
mov eax, dword [0x301e4698]
push dword [eax + 0x24]
call fcn.3003b8de
push dword [ebp - 4]
lea eax, [ebp - 0x20]
push edi
push eax
call fcn.30159d6d
test eax, eax
je 0x30196527
mov esi, dword [0x301e364c]
xor eax, eax
inc eax
push 0
push eax
mov dword [0x301e364c], eax
mov eax, dword [0x301e4920]
add eax, 0x1914
push eax
call fcn.3003d1e9
mov dword [0x301e364c], esi
pop edi
pop esi
pop ebx
leave
ret 4
mov eax, dword [0x301e4920]
add eax, 0x138
push eax
call fcn.30029f00
test eax, eax
je 0x30196582
push 0x24
lea eax, [ebp - 0x20]
push eax
mov eax, dword [0x301e4698]
push dword [eax + 0x24]
call fcn.3003b8de
push dword [ebp - 4]
lea eax, [ebp - 0x20]
push edi
push eax
call fcn.30159d6d
test eax, eax
je 0x3019656a
push 0xfffffffffffffffe
push 0xfffffffffffffffe
push 0x24
jmp 0x3019688f
push dword [ebp - 4]
mov eax, dword [0x301e4920]
push edi
add eax, 0x3d0
push eax
call fcn.30159d6d
test eax, eax
jne 0x3019655f
mov eax, dword [0x301e4920]
mov eax, dword [eax + 0x448]
test eax, eax
jle 0x301965ba
mov edi, eax
imul edi, edi, 0x8c8
mov dword [ebp - 0xc], eax
mov eax, dword [0x301e4920]
push ebx
lea eax, [edi + eax - 0x47c]
push eax
call fcn.3002ba72
sub edi, 0x8c8
dec dword [ebp - 0xc]
jne 0x3019659c
mov eax, dword [0x301e4920]
mov al, byte [eax + 0x268]
mov ebx, 0xff
and eax, ebx
jle 0x301965fc
lea edi, [eax*4 + 0x408]
mov dword [ebp - 0xc], eax
mov eax, dword [0x301e4920]
mov esi, dword [edi + eax]
push 0xffffffffffffffff
push esi
call fcn.30170512
push esi
push dword [ebp - 4]
push dword [ebp - 8]
call fcn.3019642a
sub edi, 4
dec dword [ebp - 0xc]
jne 0x301965d8
mov eax, dword [0x301e4920]
mov al, byte [eax + 0x268]
and eax, ebx
jle 0x301966e9
lea edi, [eax*4 + 0x408]
mov dword [ebp - 0xc], eax
mov eax, dword [0x301e4920]
mov esi, dword [edi + eax]
push esi
call fcn.3001293e
mov ebx, eax
push 0
lea eax, [ebp - 0x20]
push eax
push dword [esi + 0x24]
call fcn.3003b8de
test ebx, ebx
je 0x30196664
mov ecx, dword [esi + 0x634]
mov eax, dword [esi + 0x630]
mov dword [ebp - 0x10], ecx
mov ecx, dword [eax + 0x10]
neg ecx
cmp dword [eax + 0x24], ecx
je 0x301966d8
push dword [ebp - 0x10]
push eax
push esi
call fcn.301987be
jmp 0x301966d8
push dword [ebp - 4]
lea eax, [ebp - 0x20]
push dword [ebp - 8]
push eax
call fcn.30159d6d
test eax, eax
je 0x301966d8
mov ax, word [esi + 4]
mov ebx, 0x3fff
and eax, ebx
cmp eax, 2
jl 0x3019669b
cmp eax, 3
jle 0x301966bb
cmp eax, 5
je 0x301966bb
cmp eax, 6
je 0x301966ab
cmp eax, 8
je 0x301966ab
push 1
push 1
push esi
push dword [ebp - 4]
push dword [ebp - 8]
call fcn.301955fd
push 1
push 0
push esi
push dword [ebp - 4]
push dword [ebp - 8]
call fcn.301955fd
mov ax, word [esi + 4]
and ax, bx
cmp ax, 8
jne 0x301966d8
push 0
push 0
push esi
push dword [ebp - 4]
push dword [ebp - 8]
call fcn.301955fd
sub edi, 4
dec dword [ebp - 0xc]
jne 0x30196619
mov ebx, 0xff
mov eax, dword [0x301e4920]
mov al, byte [eax + 0x268]
and eax, ebx
jle 0x30196738
lea edi, [eax*4 + 0x408]
mov ebx, eax
mov eax, dword [0x301e4920]
mov esi, dword [edi + eax]
push esi
call fcn.3001293e
push 0
lea eax, [ebp - 0x20]
push eax
push dword [esi + 0x24]
call fcn.3003b8de
push esi
push dword [ebp - 4]
lea eax, [ebp - 0x20]
push dword [ebp - 8]
push eax
call fcn.30195b1f
sub edi, 4
dec ebx
jne 0x30196701
mov ebx, 0xff
mov eax, dword [0x301e4920]
mov al, byte [eax + 0x268]
and eax, ebx
jle 0x3019680b
lea edi, [eax*4 + 0x408]
mov dword [ebp - 0xc], eax
mov eax, dword [0x301e4920]
mov esi, dword [edi + eax]
push esi
call fcn.3001293e
mov ebx, eax
push 0
lea eax, [ebp - 0x20]
push eax
push dword [esi + 0x24]
call fcn.3003b8de
test ebx, ebx
je 0x30196792
mov al, byte [esi]
shr eax, 7
and eax, 1
push eax
lea eax, [ebp - 0xe0]
push eax
push dword [ebp - 0x10]
push esi
call fcn.3003bc16
jmp 0x301967ff
mov ax, word [esi + 4]
and eax, 0x3fff
dec eax
dec eax
je 0x301967af
dec eax
je 0x301967ff
dec eax
dec eax
je 0x301967af
dec eax
je 0x301967df
dec eax
dec eax
jne 0x301967cf
jmp 0x301967ef
push 1
push 1
push esi
push dword [ebp - 4]
push dword [ebp - 8]
call fcn.301955fd
push 1
push 0
push esi
push dword [ebp - 4]
push dword [ebp - 8]
call fcn.301955fd
push 0
push 1
push esi
push dword [ebp - 4]
push dword [ebp - 8]
call fcn.301955fd
push 0
push 0
push esi
push dword [ebp - 4]
push dword [ebp - 8]
call fcn.301955fd
push esi
push dword [ebp - 4]
lea eax, [ebp - 0x20]
push dword [ebp - 8]
push eax
call fcn.30195978
sub edi, 4
dec dword [ebp - 0xc]
jne 0x30196755
push 1
lea eax, [ebp - 0x20]
push eax
push dword [esi + 0x24]
call fcn.3003b8de
push dword [ebp - 4]
mov edi, dword [ebp - 8]
push edi
lea eax, [ebp - 0x20]
push eax
call fcn.30159d6d
test eax, eax
je 0x30196835
push 0xfffffffffffffffe
push 0xfffffffffffffffe
push 1
jmp 0x3019688f
mov eax, dword [0x301e4920]
mov ecx, dword [0x301e4450]
test ecx, ecx
je 0x30196861
cmp dword [0x301e4914], ecx
jne 0x30196861
cmp dword [eax + 0x15fc], 0
je 0x30196861
lea eax, [ebp - 0x20]
push eax
push ecx
call fcn.3000f748
jmp 0x30196874
push 0
lea eax, [ebp - 0x20]
push eax
mov eax, dword [0x301e4698]
push dword [eax + 0x24]
call fcn.3003b8de
push dword [ebp - 4]
lea eax, [ebp - 0x20]
push edi
push eax
call fcn.30159d6d
test eax, eax
je 0x30196520
push 0xfffffffffffffffe
push 0xfffffffffffffffe
push 0
push dword [0x301e4698]
call fcn.30195c60