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

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x58
push ebx
push esi
mov esi, dword [ebp + 8]
mov eax, dword [esi + 0xc]
mov ebx, dword [esi + 0x10]
xor ecx, ecx
mov dword [ebp - 0x18], eax
mov eax, dword [0x1029018]
cmp eax, ecx
push edi
lea edi, [esi + 0x2c]
mov dword [ebp - 8], ecx
mov byte [ebp - 0xc], 1
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0x20], edi
je 0x101be95
test byte [eax + 0x1c], 0x80
je 0x101be95
cmp byte [eax + 0x19], 3
jb 0x101be95
push edi
push 0x100274c
push 0x12
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.01004409
mov byte [ebp + 0xb], 0
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebp - 0x1c], eax
push edi
lea eax, [ebp - 0x28]
push eax
call fcn.01023557
mov edi, eax
test edi, edi
jne 0x101c024
lea eax, [ebp - 1]
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 8]
push eax
push esi
call fcn.0101ba9a
mov edi, eax
test edi, edi
je 0x101befb
cmp byte [ebp - 1], 0
je 0x101c024
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.0101b1de
mov edi, eax
test edi, edi
jne 0x101bfe9
cmp byte [0x1028f8e], 0
je 0x101bf69
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x50]
push eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.01022f02
mov edi, eax
test edi, edi
jne 0x101bfe9
cmp word [ebp - 0x48], ax
jne 0x101bf6d
lea eax, [ebp - 0x38]
push eax
call fcn.01006983
mov edi, eax
test edi, edi
jne 0x101bfe9
mov ax, word [ebp - 0x38]
cmp word [ebp - 0x30], ax
mov byte [ebp + 0xb], 1
jne 0x101bf6d
movzx eax, ax
shr eax, 1
push eax
push dword [ebp - 0x34]
push dword [ebp - 0x2c]
call dword [sym.imp.msvcrt.dll__wcsnicmp]
add esp, 0xc
test eax, eax
jne 0x101bf6d
lea eax, [ebp - 0x30]
mov dword [ebp - 0x14], eax
test edi, edi
jne 0x101bfe9
mov ax, word [ebp - 0x40]
sub word [ebp - 0x28], ax
je 0x101bf8e
movzx eax, word [ebp - 0x28]
mov ecx, dword [ebp - 0x24]
shr eax, 1
cmp word [ecx + eax*2 - 2], 0x5c
jne 0x101bf8e
add word [ebp - 0x28], 0xfffe
mov esi, dword [ebp + 0x10]
push esi
push dword [ebp - 0x18]
lea eax, [ebp - 0x28]
push ebx
push dword [ebp - 8]
push dword [ebp + 0xc]
push 0
push dword [ebp - 0x14]
push eax
call fcn.0101b30d
mov edi, eax
test edi, edi
jne 0x101bfdd
mov eax, dword [ebp - 8]
test byte [eax + 0x1c], 1
je 0x101bfbf
mov eax, dword [esi]
or dword [eax + 4], 1
mov eax, dword [ebp - 8]
cmp byte [eax + 0x32], 0
je 0x101bfce
mov eax, dword [esi]
or dword [eax + 4], 2
mov eax, dword [ebp - 8]
cmp byte [eax + 0x34], 0
je 0x101bfdd
mov esi, dword [esi]
or byte [esi + 5], 1
mov ecx, dword [ebp - 8]
call fcn.01005a65
and dword [ebp - 8], 0
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, eax
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.0101afd7
test eax, eax
jne 0x101c024
sub esi, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax + 0x154]
push edi
push esi
push dword [ebp - 0xc]
call fcn.0101ac25
mov ecx, dword [ebp - 0x10]
call fcn.01005a65
mov ecx, dword [ebp - 8]
test ecx, ecx
je 0x101c034
call fcn.01005a65
and dword [ebp - 8], 0
cmp byte [ebp + 0xb], 0
je 0x101c043
lea eax, [ebp - 0x38]
push eax
call fcn.0100614d
mov eax, dword [0x1029018]
test eax, eax
je 0x101c08a
mov ecx, edi
neg ecx
sbb ecx, ecx
and ecx, 0xc
xor edx, edx
dec ecx
inc edx
and ecx, 0x1f
shl edx, cl
or edx, 0x80
test dword [eax + 0x1c], edx
je 0x101c08a
cmp byte [eax + 0x19], 1
jb 0x101c08a
movzx ecx, byte [ebp - 0xc]
push edi
push ecx
push dword [ebp - 0x20]
push 0x100274c
push 0x13
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.0100a586
mov eax, edi
pop edi
pop esi
pop ebx
leave
ret 0xc