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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffbc
push ebx
push esi
push edi
mov dword [ebp - 8], ecx
mov dword [ebp - 4], edx
mov esi, eax
mov eax, dword [esi + 0x200]
mov eax, dword [eax + 0xc]
cmp eax, dword [ebp - 8]
jg 0x50f82f
dec eax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 4]
cmp eax, dword [ebp - 8]
jg 0x50fbc6
call sub.kernel32.dll_GetTickCount
mov dword [ebp - 0x38], eax
mov byte [esi + 0x38d], 1
mov eax, dword [esi + 0x310]
mov dword [ebp - 0x20], eax
mov eax, dword [esi + 0x390]
test eax, eax
jne 0x50f877
mov eax, dword [esi + 0x1f0]
call fcn.0041e6a8
mov dword [ebp - 0x18], eax
mov eax, esi
call fcn.00436a04
mov dword [ebp - 0x1c], eax
jmp 0x50f888
call fcn.0041e6a8
mov dword [ebp - 0x18], eax
mov eax, dword [esi + 0x394]
mov dword [ebp - 0x1c], eax
xor eax, eax
mov dword [ebp - 0x28], eax
mov byte [ebp - 0x31], 0
mov byte [ebp - 0x3d], 0
mov eax, dword [esi + 0x3d0]
mov dword [ebp - 0x3c], eax
xor eax, eax
mov dword [ebp - 0x2c], eax
mov edi, dword [ebp - 4]
mov eax, dword [ebp - 8]
sub eax, edi
jl 0x50fa00
inc eax
mov dword [ebp - 0x44], eax
mov edx, edi
mov eax, esi
call fcn.0050fbd0
mov edx, edi
mov eax, dword [esi + 0x200]
call fcn.00505d04
mov dword [ebp - 0x24], eax
cmp edi, dword [ebp - 4]
jle 0x50f8de
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x2c]
mov dword [eax + 0x10], edx
jmp 0x50f8e7
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x2c], eax
cmp byte [ebp + 8], 0
jne 0x50f8fa
mov eax, dword [ebp - 0x24]
cmp byte [eax + 0x54], 0
jne 0x50f9ed
cmp word [esi + 0x2e2], 0
je 0x50f97c
call sub.kernel32.dll_GetTickCount
sub eax, dword [ebp - 0x38]
cmp eax, dword [0x5a32cc]
jle 0x50f97c
imul eax, edi, 0x64
mov edx, dword [esi + 0x200]
mov ecx, dword [edx + 0xc]
cdq
idiv ecx
mov ecx, eax
mov dword [esi + 0x24c], ecx
cmp ecx, 0x64
jne 0x50f93a
mov dword [esi + 0x24c], 0x63
cmp byte [ebp - 0x31], 0
je 0x50f950
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [ebp - 0x18]
push eax
call sub.gdi32.dll_SelectObject
mov dword [ebp - 0x14], eax
mov edx, esi
mov eax, dword [esi + 0x2e4]
call dword [esi + 0x2e0]
cmp byte [ebp - 0x31], 0
je 0x50f974
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [ebp - 0x18]
push eax
call sub.gdi32.dll_SelectObject
mov dword [ebp - 0x14], eax
call sub.kernel32.dll_GetTickCount
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 0x40]
mov dword [ebp - 0x30], eax
xor eax, eax
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x1c]
push eax
mov eax, dword [ebp - 0x24]
push eax
push edi
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0x10]
push eax
push 1
lea eax, [ebp - 0x14]
push eax
mov cl, byte [ebp - 0x31]
xor cl, 1
mov edx, dword [ebp - 0x18]
mov eax, esi
mov ebx, dword [eax]
call dword [ebx + 0xb8]
lea eax, [edi + 1]
mov dword [esi + 0x3d0], eax
mov byte [ebp - 0x31], 1
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 0x40]
sub eax, dword [ebp - 0x30]
add dword [ebp - 0x28], eax
mov eax, dword [esi + 0x210]
call fcn.00504728
cmp edi, eax
jne 0x50f9ed
mov eax, dword [esi + 0x210]
mov dword [eax + 0x28], 0x7fffffff
mov byte [ebp - 0x3d], 1
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 0x40]
add dword [ebp - 0x2c], eax
inc edi
dec dword [ebp - 0x44]
jne 0x50f8b5
cmp byte [ebp - 0x31], 0
je 0x50fb79
mov edx, dword [ebp - 4]
mov eax, dword [esi + 0x200]
call fcn.00505f14
mov edx, dword [eax + 0x14]
mov ecx, dword [ebp - 8]
mov eax, dword [esi + 0x30c]
call fcn.0050448c
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [ebp - 0x18]
push eax
call sub.gdi32.dll_SelectObject
push eax
call sub.gdi32.dll_DeleteObject
cmp dword [ebp - 0x28], 0
je 0x50fb1e
mov eax, dword [esi + 0x214]
call fcn.00504728
cmp eax, dword [ebp - 4]
jl 0x50faad
mov eax, dword [esi + 0x214]
call fcn.00504914
mov ecx, eax
mov ebx, dword [esi + 0x430]
imul ecx, ebx
mov edi, dword [esi + 0x2a8]
mov eax, edi
cdq
idiv ebx
add ecx, edx
mov eax, ecx
cmp edi, eax
je 0x50faad
mov dword [esi + 0x2a8], eax
cmp byte [esi + 0x22e], 0
je 0x50faad
push 0xffffffffffffffff
mov eax, dword [esi + 0x2a8]
cdq
idiv dword [esi + 0x378]
push eax
push 1
mov eax, esi
call fcn.0043d1f8
push eax
call sub.user32.dll_SetScrollPos
mov edi, dword [ebp - 8]
inc edi
mov eax, dword [esi + 0x200]
mov eax, dword [eax + 0xc]
dec eax
sub eax, edi
jl 0x50fadc
inc eax
mov dword [ebp - 0x44], eax
mov edx, edi
mov eax, dword [esi + 0x200]
call fcn.00505f14
mov edx, dword [ebp - 0x28]
add dword [eax + 0x10], edx
inc edi
dec dword [ebp - 0x44]
jne 0x50fac3
cmp byte [esi + 0x22c], 0
jne 0x50faf9
mov eax, dword [esi + 0x314]
cmp eax, dword [ebp - 8]
jle 0x50faf9
mov eax, dword [ebp - 0x28]
add dword [esi + 0x314], eax
cmp dword [esi + 0x390], 0
jne 0x50fb1e
mov eax, esi
call fcn.00515fb0
cmp byte [esi + 0x418], 0
je 0x50fb1e
mov byte [esi + 0x38d], 0
jmp 0x50fbc6
cmp dword [esi + 0x390], 0
jne 0x50fb79
cmp byte [ebp - 0x3d], 0
je 0x50fb36
xor edx, edx
mov eax, esi
call fcn.0050f4c0
mov eax, dword [esi + 0x310]
cmp eax, dword [ebp - 0x20]
je 0x50fb79
cmp byte [esi + 0x22c], 0
jne 0x50fb79
mov eax, esi
call fcn.00515e7c
cmp byte [esi + 0x22d], 0
je 0x50fb79
push 0xffffffffffffffff
mov eax, dword [esi + 0x220]
cdq
idiv dword [esi + 0x37c]
push eax
push 0
mov eax, esi
call fcn.0043d1f8
push eax
call sub.user32.dll_SetScrollPos
mov byte [esi + 0x38d], 0
mov eax, dword [ebp - 4]
cmp eax, dword [ebp - 0x3c]
je 0x50fb93
mov eax, dword [ebp - 0x3c]
mov dword [esi + 0x3d0], eax
jmp 0x50fbc6
cmp word [esi + 0x2e2], 0
je 0x50fbc6
mov eax, dword [esi + 0x200]
mov eax, dword [eax + 0xc]
cmp eax, dword [esi + 0x3d0]
jg 0x50fbc6
mov dword [esi + 0x24c], 0x64
mov edx, esi
mov eax, dword [esi + 0x2e4]
call dword [esi + 0x2e0]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4