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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff50
push ebx
push esi
push edi
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
mov byte [eax + 0x229], 1
inc dword [eax + 0x3dc]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x1fc]
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 4]
call fcn.0050722c
mov eax, 0xffdd
call fcn.0040b094
mov dword [ebp - 0x1c], eax
mov eax, 0xffdd
call fcn.0040b094
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x18], eax
xor edx, edx
push ebp
push 0x507bed
push dword fs:[edx]
mov dword fs:[edx], esp
xor edx, edx
push ebp
push 0x507974
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [ebp - 8]
call fcn.00415728
mov ebx, eax
mov eax, dword [ebp - 8]
call fcn.0041570c
sub ebx, eax
mov dword [ebp - 0x10], ebx
xor eax, eax
mov dword [ebp - 0x78], eax
xor eax, eax
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x84], 0xffffffff
mov dword [ebp - 0x80], 0xffffffff
mov eax, 0x38
call fcn.00402844
mov ebx, eax
mov dword [ebp - 0x74], ebx
mov eax, ebx
mov byte [eax + 4], 0
mov dword [eax], 1
mov dword [ebp - 0x4c], 1
xor eax, eax
mov dword [ebp - 0x48], eax
xor eax, eax
mov dword [ebp - 0x44], eax
xor eax, eax
mov dword [ebp - 0x40], eax
xor eax, eax
mov dword [ebp - 0x3c], eax
mov byte [ebp - 0x38], 0
mov byte [ebp - 0x36], 0
mov byte [ebp - 0x37], 0
xor eax, eax
mov dword [ebp - 0xb0], eax
mov al, byte [0x507c00]
mov byte [ebp - 0x94], al
xor eax, eax
mov dword [ebp - 0x90], eax
mov al, byte [0x507c00]
mov byte [ebp - 0x29], al
xor eax, eax
mov dword [ebp - 0xc], eax
xor eax, eax
mov dword [ebp - 0x28], eax
xor eax, eax
mov dword [ebp - 0x24], eax
xor ebx, ebx
call sub.kernel32.dll_GetTickCount
add eax, dword [0x5a32cc]
mov dword [ebp - 0x30], eax
cmp dword [ebp - 0x10], 0xffdc
jle 0x507576
mov edx, dword [ebp - 0x18]
mov ecx, 0xffdc
mov eax, dword [ebp - 8]
mov esi, dword [eax]
call dword [esi + 4]
mov eax, dword [ebp - 4]
cmp byte [eax + 0x298], 0
je 0x50759d
push ebp
mov edx, 0xffdc
mov eax, dword [ebp - 0x18]
call fcn.005073f4
pop ecx
jmp 0x50759d
mov edx, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 8]
mov esi, dword [eax]
call dword [esi + 4]
mov eax, dword [ebp - 4]
cmp byte [eax + 0x298], 0
je 0x50759d
push ebp
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x18]
call fcn.005073f4
pop ecx
cmp dword [ebp - 0x10], 0
jle 0x5075aa
mov eax, dword [ebp - 0x18]
mov al, byte [eax]
jmp 0x5075ac
xor eax, eax
mov byte [ebp - 0x11], 0
test al, al
je 0x507887
inc ebx
cmp al, 0x1a
jae 0x5077a6
mov edx, eax
dec edx
sub dl, 4
jb 0x5075dc
sub dl, 5
je 0x5075fa
sub dl, 3
je 0x5075fa
sub dl, 8
jne 0x5077a6
mov edx, dword [ebp - 4]
cmp byte [edx + 0x2ac], 0
je 0x5077a6
lea edx, [ebp - 0x29]
xchg edx, eax
call fcn.0050437c
jmp 0x5077a6
cmp ebx, 1
jne 0x507627
cmp al, 0xa
jne 0x507609
cmp byte [ebp - 0x11], 0xd
je 0x507613
cmp al, 0xd
jne 0x507627
cmp byte [ebp - 0x11], 0xa
jne 0x507627
xor ebx, ebx
inc dword [ebp - 0x24]
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x28]
mov byte [eax + edx], 0
jmp 0x5077a6
dec ebx
cmp ebx, 0x7fffff9b
jle 0x507635
mov ebx, 0x7fffff9b
mov esi, ebx
test esi, esi
jns 0x50763e
add esi, 0x3f
sar esi, 6
add esi, ebx
test esi, esi
jle 0x507657
lea eax, [esi + 1]
call fcn.0040b094
mov dword [ebp - 0x8c], eax
jmp 0x50765f
xor eax, eax
mov dword [ebp - 0x8c], eax
cmp dword [ebp - 0x24], 0xffdc
jl 0x50766f
sub dword [ebp - 0x24], 0xffdc
cmp ebx, dword [ebp - 0x28]
jg 0x50768b
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x24]
add eax, edx
mov edx, dword [ebp - 0x8c]
mov ecx, ebx
call fcn.00402b04
jmp 0x5076ca
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x24]
add eax, edx
mov ecx, 0xffdc
sub ecx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x8c]
call fcn.00402b04
mov eax, 0xffdc
sub eax, dword [ebp - 0x24]
mov ecx, ebx
sub ecx, eax
mov eax, 0xffdc
sub eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x8c]
add edx, eax
mov eax, dword [ebp - 0x1c]
call fcn.00402b04
mov eax, dword [ebp - 4]
test byte [eax + 0x286], 0x10
je 0x5076ef
jmp 0x5076d9
dec ebx
test ebx, ebx
jle 0x5076ef
mov eax, dword [ebp - 0x8c]
mov al, byte [eax + ebx - 1]
sub al, 9
je 0x5076d8
sub al, 0x17
je 0x5076d8
test esi, esi
jle 0x5076fd
mov eax, dword [ebp - 0x8c]
mov byte [eax + ebx], 0
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x1f8]
add edx, ebx
add edx, 2
mov dword [eax + 0x1f8], edx
mov dword [ebp - 0x88], ebx
mov dword [ebp - 0xac], ebx
lea esi, [ebp - 0xb0]
lea edi, [ebp - 0x70]
mov ecx, 9
rep movsd dword es:[edi], dword [esi]
lea edx, [ebp - 0x8c]
mov eax, dword [eax + 0x200]
call fcn.00505e30
mov ebx, eax
xor eax, eax
mov dword [ebp - 0xb0], eax
mov al, byte [ebp - 0x29]
mov byte [ebp - 0x94], al
inc ebx
mov dword [ebp - 0x7c], ebx
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x1f8]
mov dword [ebp - 0x78], eax
xor ebx, ebx
mov eax, dword [ebp - 0x28]
inc eax
mov dword [ebp - 0x24], eax
call sub.kernel32.dll_GetTickCount
cmp eax, dword [ebp - 0x30]
jle 0x5077a1
call sub.kernel32.dll_GetTickCount
add eax, dword [0x5a32cc]
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 4]
cmp word [eax + 0x2e2], 0
je 0x5077a1
mov esi, dword [ebp - 4]
mov edx, dword [ebp - 4]
mov eax, dword [esi + 0x2e4]
call dword [esi + 0x2e0]
mov eax, dword [ebp - 0x74]
inc dword [eax]
inc dword [ebp - 0xc]
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x28]
mov al, byte [eax + edx]
mov byte [ebp - 0x11], al
inc dword [ebp - 0x28]
cmp ebx, 0x7fffff9b
jge 0x507865
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 0x10]
jge 0x507865
cmp dword [ebp - 0x28], 0xffdc
jge 0x5077e7
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x28]
mov al, byte [eax + edx]
jmp 0x50787f
xor eax, eax
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x18], eax
mov esi, dword [ebp - 0x10]
sub esi, dword [ebp - 0xc]
cmp esi, 0xffdc
jle 0x507839
mov edx, dword [ebp - 0x18]
mov ecx, 0xffdc
mov eax, dword [ebp - 8]
mov esi, dword [eax]
call dword [esi + 4]
mov eax, dword [ebp - 4]
cmp byte [eax + 0x298], 0
je 0x50785e
push ebp
mov edx, 0xffdc
mov eax, dword [ebp - 0x18]
call fcn.005073f4
pop ecx
jmp 0x50785e
mov ecx, esi
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp - 8]
mov edi, dword [eax]
call dword [edi + 4]
mov eax, dword [ebp - 4]
cmp byte [eax + 0x298], 0
je 0x50785e
push ebp
mov edx, esi
mov eax, dword [ebp - 0x18]
call fcn.005073f4
pop ecx
mov eax, dword [ebp - 0x18]
mov al, byte [eax]
jmp 0x50787f
cmp ebx, 0x7fffff9b
jl 0x50787d
mov al, 0xd
dec dword [ebp - 0xc]
cmp dword [ebp - 0x28], 0
jle 0x50787f
dec dword [ebp - 0x28]
jmp 0x50787f
xor eax, eax
test al, al
jne 0x5075b8
mov dword [ebp - 0xac], ebx
mov eax, ebx
mov dword [ebp - 0x88], eax
mov esi, eax
test esi, esi
jns 0x50789e
add esi, 0x3f
sar esi, 6
add esi, eax
test esi, esi
jle 0x5078b7
lea eax, [esi + 1]
call fcn.0040b094
mov dword [ebp - 0x8c], eax
jmp 0x5078bf
xor eax, eax
mov dword [ebp - 0x8c], eax
test ebx, ebx
jle 0x507928
cmp ebx, dword [ebp - 0x28]
jg 0x5078df
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x24]
add eax, edx
mov edx, dword [ebp - 0x8c]
mov ecx, ebx
call fcn.00402b04
jmp 0x50791e
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x24]
add eax, edx
mov ecx, 0xffdc
sub ecx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x8c]
call fcn.00402b04
mov eax, 0xffdc
sub eax, dword [ebp - 0x24]
mov ecx, ebx
sub ecx, eax
mov eax, 0xffdc
sub eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x8c]
add edx, eax
mov eax, dword [ebp - 0x1c]
call fcn.00402b04
mov eax, dword [ebp - 0x8c]
mov byte [eax + ebx], 0
lea esi, [ebp - 0xb0]
lea edi, [ebp - 0x70]
mov ecx, 9
rep movsd dword es:[edi], dword [esi]
lea edx, [ebp - 0x8c]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x200]
call fcn.00505e30
mov eax, dword [ebp - 4]
add dword [eax + 0x1f8], ebx
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 0x10]
jge 0x50796a
xor ecx, ecx
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
mov ebx, dword [eax]
call dword [ebx + 0xc]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x5079ab
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x507bf7
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x200]
mov edx, dword [edx + 0xc]
mov dword [eax + 0x1fc], edx
xor edx, edx
mov dword [eax + 0x20c], edx
xor edx, edx
mov dword [eax + 0x3a4], edx
mov dword [eax + 0x3a8], 0x80000000
mov eax, dword [ebp - 0x1c]
call fcn.0040b0e0
mov eax, dword [ebp - 0x20]
call fcn.0040b0e0
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x200]
mov edx, dword [edx + 0xc]
mov dword [eax + 0x3c0], edx
mov edx, dword [eax + 0x1fc]
mov dword [eax + 0x3bc], edx
mov dword [eax + 0x3c4], 0xffffffff
mov dword [eax + 0x3cc], 0xffffffff
mov eax, dword [eax + 0x30c]
mov esi, dword [eax + 8]
dec esi
test esi, esi
jl 0x507a5d
inc esi
xor ebx, ebx
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30c]
mov edx, ebx
call fcn.004133c4
mov edi, eax
mov eax, edi
call fcn.00504f98
xor edx, edx
mov eax, edi
call fcn.00504abc
inc ebx
dec esi
jne 0x507a37
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x318]
mov dword [eax + 0x210], edx
cmp word [eax + 0x2f2], 0
je 0x507a90
mov edx, dword [eax + 0x1f8]
push edx
mov ebx, eax
xor ecx, ecx
mov edx, dword [ebp - 4]
mov eax, dword [ebx + 0x2f4]
call dword [ebx + 0x2f0]
mov eax, dword [ebp - 4]
dec dword [eax + 0x3dc]
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x2a8], edx
xor edx, edx
mov dword [eax + 0x220], edx
cmp word [eax + 0x2e2], 0
je 0x507ac7
mov ebx, eax
mov edx, dword [ebp - 4]
mov eax, dword [ebx + 0x2e4]
call dword [ebx + 0x2e0]
mov ebx, dword [ebp - 4]
cmp dword [ebx + 0x3dc], 0
jne 0x507b02
mov eax, dword [ebx + 0x200]
mov eax, dword [eax + 0xc]
mov dword [ebx + 0x3c0], eax
mov dword [ebx + 0x3c4], 0xffffffff
mov eax, dword [ebx + 0x1fc]
mov dword [ebx + 0x3bc], eax
xor eax, eax
mov dword [ebx + 0x3c8], eax
jmp 0x507b53
xor eax, eax
mov dword [ebx + 0x3c0], eax
mov eax, dword [ebx + 0x200]
mov eax, dword [eax + 0xc]
dec eax
mov dword [ebx + 0x3c4], eax
xor eax, eax
mov dword [ebx + 0x3bc], eax
mov eax, dword [ebx + 0x200]
mov edx, dword [ebp - 0x34]
sub edx, dword [eax + 0xc]
mov dword [ebx + 0x3c8], edx
mov eax, ebx
call fcn.0043d4f4
test al, al
je 0x507b53
push 0xffffffffffffffff
push 0
push 1
mov eax, dword [ebp - 4]
call fcn.0043d1f8
push eax
call sub.user32.dll_SetScrollPos
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x74]
mov eax, dword [ebp - 4]
call fcn.0043d4f4
test al, al
je 0x507be1
mov eax, dword [ebp - 4]
cmp dword [eax + 0x3dc], 0
jne 0x507be1
mov eax, dword [ebp - 4]
call fcn.00515fb0
mov eax, dword [ebp - 4]
cmp byte [eax + 0x418], 0
jne 0x507b8f
mov eax, dword [ebp - 4]
call fcn.0050f6f8
mov eax, dword [ebp - 4]
cmp byte [eax + 0x22e], 0
je 0x507baf
push 0xffffffffffffffff
push 0
push 1
mov eax, dword [ebp - 4]
call fcn.0043d1f8
push eax
call sub.user32.dll_SetScrollPos
mov eax, dword [ebp - 4]
call fcn.00515e7c
mov eax, dword [ebp - 4]
cmp byte [eax + 0x22d], 0
je 0x507bd7
push 0xffffffffffffffff
push 0
push 0
mov eax, dword [ebp - 4]
call fcn.0043d1f8
push eax
call sub.user32.dll_SetScrollPos
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.0050f4c0
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0xbc]
ret