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

Disassembly:
sub esp, 0x14
push ebx
push ebp
push esi
push edi
call fcn.00477520
xor ecx, ecx
cmp eax, 0xffffffff
setne cl
mov eax, ecx
xor edi, edi
cmp eax, edi
mov dword [0x4ae7fc], eax
mov dword [0x4ae808], 1
jne 0x420b34
mov ecx, dword [0x4ae21c]
cmp ecx, edi
je 0x420a2b
mov edx, dword [0x490910]
and edx, 0xff
mov dword [esp + 0x10], edx
jmp 0x420a4b
mov dword [esp + 0x10], edi
xor eax, eax
mov ebx, dword [esp + 0x10]
xor edx, edx
mov dl, byte [eax + 0x490902]
add ebx, edx
inc eax
cmp eax, 3
mov dword [esp + 0x10], ebx
jl 0x420a31
mov edx, ebx
mov esi, ecx
mov dword [esp + 0x14], edi
neg esi
sbb esi, esi
and esi, 2
add esi, 7
mov dword [esp + 0x20], esi
lea eax, [esi - 1]
cmp eax, edi
jle 0x420b34
mov ebp, str.___22__22___
mov dword [esp + 0x18], ebp
jmp 0x420a8b
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x20]
mov ebp, dword [esp + 0x18]
mov ecx, dword [0x4ae21c]
test ecx, ecx
je 0x420a99
xor ecx, ecx
mov cl, byte [edi + str.P_5.__]
jmp 0x420aaa
xor ecx, ecx
xor eax, eax
xor ebx, ebx
mov bl, byte [eax + ebp]
add ecx, ebx
inc eax
cmp eax, 3
jl 0x420a9d
lea ebx, [edi + 0x496cd4]
lea ebp, [esi + 0x496cd3]
lea edi, [edi + 0x496d44]
lea esi, [esi + 0x496d43]
mov dword [esp + 0x1c], 0x10
jmp 0x420ad0
mov edx, dword [esp + 0x10]
mov eax, dword [0x4ae21c]
test eax, eax
je 0x420aeb
xor eax, eax
mov al, byte [esi]
imul eax, edx
lea eax, [eax + ecx - 1]
cdq
idiv ecx
mov byte [edi], al
jmp 0x420afc
xor eax, eax
mov al, byte [ebp]
imul eax, edx
lea eax, [eax + ecx - 1]
cdq
idiv ecx
mov byte [ebx], al
mov eax, dword [esp + 0x1c]
add esi, 9
add edi, 9
add ebp, 7
add ebx, 7
dec eax
mov dword [esp + 0x1c], eax
jne 0x420acc
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
inc eax
add esi, 3
dec ecx
cmp eax, ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], esi
jl 0x420a75
mov dx, word [0x4ace40]
push edx
call fcn.00441220
push 0xf0
push 0x140
call fcn.0048a9c0
add esp, 0xc
mov byte [0x4ae81c], 1
mov byte [0x4ae81d], 0
call fcn.00437180
mov eax, dword [0x4ae7fc]
test eax, eax
jne 0x420b79
push 2
call fcn.0045b690
add esp, 4
push 1
mov byte [0x4ae80e], 0
call fcn.004798b0
add esp, 4
call fcn.004540a0
call fcn.0044c260
mov eax, dword [0x4ae808]
test eax, eax
jne 0x420ba9
mov eax, dword [0x4ae21c]
neg eax
sbb eax, eax
add eax, 0x65
dec eax
mov dword [0x4ae808], eax
mov eax, 0
sete al
test ax, ax
mov word [0x4ae816], ax
je 0x420bc7
call fcn.0042d4b0
call fcn.00452110
call fcn.00453c80
call fcn.0042d9e0
cmp word [0x4ae816], 0
je 0x420be5
call fcn.0042d520
call fcn.00459990
push 0
call fcn.004798b0
add esp, 4
call fcn.0044caf0
call fcn.0044b420
call fcn.0043a9b0
call fcn.004551e0
xor ebp, ebp
mov bl, 0x40
cmp word [0x4ae814], bp
je 0x420c4c
test byte [0x4d6b00], bl
je 0x420c4c
mov al, byte [0x4ae80e]
test al, al
jne 0x420c4c
cmp dword [0x4ce798], ebp
je 0x420c4c
call sub.KERNEL32.dll_GetTickCount
mov esi, dword [0x4ae818]
mov ecx, eax
sub ecx, esi
cmp ecx, 0x14
jb 0x420c4c
mov dword [0x4ae818], eax
call fcn.00488d80
call fcn.0042cd50
call fcn.0042d9d0
mov al, byte [0x4ae80e]
test al, al
jne 0x420cd1
push 1
call fcn.004798b0
add esp, 4
call fcn.004540a0
call fcn.0044c260
mov eax, dword [0x4ae808]
cmp eax, ebp
jne 0x420c88
mov eax, dword [0x4ae21c]
neg eax
sbb eax, eax
add eax, 0x65
dec eax
mov dword [0x4ae808], eax
mov eax, 0
sete al
cmp ax, bp
mov word [0x4ae816], ax
je 0x420ca6
call fcn.0042d4b0
call fcn.00452110
call fcn.00453c80
call fcn.0042d9e0
cmp word [0x4ae816], bp
je 0x420cc3
call fcn.0042d520
call fcn.00459990
push ebp
call fcn.004798b0
add esp, 4
call fcn.0044caf0
call fcn.0044b420
call fcn.0043a9b0
call fcn.004551e0
cmp word [0x4ae814], bp
je 0x420d25
test byte [0x4d6b00], bl
je 0x420d25
mov al, byte [0x4ae80e]
test al, al
jne 0x420d25
cmp dword [0x4ce798], ebp
je 0x420d25
call sub.KERNEL32.dll_GetTickCount
mov esi, dword [0x4ae818]
mov edx, eax
sub edx, esi
cmp edx, 0x14
jb 0x420d25
mov dword [0x4ae818], eax
call fcn.00488d80
call fcn.0042cd50
push 8
call fcn.00486370
mov al, byte [0x4ae0a9]
add esp, 4
test al, al
je 0x420d44
call fcn.00489730
jmp 0x420d49
call fcn.004896d0
mov al, byte [0x4b497e]
test al, al
jne 0x420d6a
mov al, byte [0x4ae0a9]
test al, al
jne 0x420d6a
mov eax, dword [0x4d6b00]
test ah, 1
je 0x420d6a
call fcn.0044f0a0
call sub.KERNEL32.dll_GetTickCount
push 0x4ae844
push 0x100
push ebp
mov dword [0x4ae818], eax
mov word [0x4ae814], 1
call fcn.00488f00
call fcn.00487ac0
push 0xf0
push 0x140
call fcn.0048a9c0
push 0xa
call fcn.00489040
add esp, 0x18
call fcn.00436bd0
cmp dword [0x4ae7fc], ebp
je 0x420ddc
xor eax, eax
mov al, byte [0x4d3c76]
push eax
call fcn.004204f0
push 1
call fcn.00477dd0
add esp, 8
call fcn.0043e120
cmp dword [0x4ae7fc], ebp
jne 0x420dfa
call fcn.00436df0
test eax, eax
jne 0x420e25
call fcn.004875c0
call fcn.004051d0
call fcn.00436df0
test eax, eax
je 0x420de5
jmp 0x420e25
mov dword [0x4d3bec], ebp
call fcn.00477e60
mov al, byte [0x4ae81c]
test al, al
je 0x420e25
call fcn.00477f10
test eax, eax
jne 0x420e25
call fcn.004051d0
mov al, byte [0x4ae81c]
test al, al
jne 0x420e0e
mov byte [0x4ae80d], 1
mov byte [0x4ae810], 0
mov byte [0x4ae80c], 0
mov byte [0x4ae80f], 1
call sub.KERNEL32.dll_GetTickCount
mov dword [0x4ae804], eax
mov al, byte [0x4ae81c]
or edi, 0xffffffff
mov byte [0x4ae7f5], 0
test al, al
mov dword [0x4ace78], ebp
je 0x420f2d
call sub.KERNEL32.dll_GetTickCount
mov esi, eax
call fcn.004204d0
cmp edi, eax
je 0x420e81
call fcn.004204d0
mov edi, eax
jmp 0x420eb7
call fcn.00445700
test eax, eax
je 0x420e91
call fcn.00409d50
jmp 0x420eb7
mov al, byte [0x4ae810]
test al, al
jne 0x420ebe
mov eax, dword [0x4ae804]
mov ecx, eax
sub ecx, esi
cmp ecx, 0x1f4
jg 0x420eb7
mov edx, esi
sub edx, eax
cmp edx, 0x1f4
jle 0x420ebe
mov byte [0x4ae7f5], 1
push 3
call fcn.0041c750
mov al, byte [0x4ae7f5]
add esp, 4
test al, al
je 0x420ede
mov byte [0x4ae7f5], 0
mov dword [0x4ae804], esi
cmp dword [0x4ae7fc], ebp
je 0x420ef0
call fcn.004788d0
call fcn.004739c0
cmp esi, dword [0x4ae804]
jb 0x420efd
call fcn.00420f90
call fcn.0044caf0
call fcn.0044b420
call fcn.0043a9b0
call fcn.004551e0
call fcn.00421350
call fcn.0042cd50
call fcn.004051d0
mov al, byte [0x4ae81c]
test al, al
jne 0x420e68
cmp dword [0x4ae7fc], ebp
je 0x420f3e
push ebp
call fcn.00477dd0
add esp, 4
call fcn.00436de0
call fcn.00441250
test byte [0x4ae80e], 1
je 0x420f56
call fcn.00489420
push 1
mov byte [0x4ae80e], 0
call fcn.00489180
add esp, 4
call fcn.00437030
mov word [0x4ae814], bp
call fcn.00489730
mov ax, word [0x4ae812]
pop edi
pop esi
pop ebp
mov byte [0x4ae81d], 0
pop ebx
add esp, 0x14
ret