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

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xfffffff8
mov edi, eax
xor ebx, ebx
mov byte [esp], 0
mov byte [esp + 1], 0
cmp dword [edi + 0x1b4], 9
jne 0x523e75
mov byte [esp], 1
mov eax, dword [edi + 0x1b4]
cmp eax, 6
je 0x523e8c
cmp eax, 7
je 0x523e8c
cmp eax, 0x12d
jne 0x523e91
mov byte [esp + 1], 1
mov eax, dword [0x53e6d8]
cmp edi, dword [eax]
jne 0x523fba
cmp byte [esp], 0
jne 0x523fba
cmp byte [esp + 1], 0
jne 0x523fba
mov eax, dword [0x53efec]
mov byte [eax], 0
mov eax, dword [0x53e6d4]
mov byte [eax], 0
mov eax, dword [0x53ecc0]
xor edx, edx
mov dword [eax], edx
mov si, word [edi + 0x68]
mov cx, word [edi + 0x66]
cmp si, cx
jae 0x523ef5
movzx eax, cx
movzx edx, si
mov ecx, edx
xor edx, edx
div ecx
mov edx, dword [0x53ecc0]
mov dword [edx], eax
mov eax, dword [0x53efec]
mov byte [eax], 1
mov si, word [edi + 0x6c]
mov cx, word [edi + 0x6a]
cmp si, cx
jae 0x523f1e
movzx eax, cx
movzx edx, si
mov ecx, edx
xor edx, edx
div ecx
mov edx, dword [0x53ecc0]
add dword [edx], eax
mov eax, dword [0x53efec]
mov byte [eax], 1
mov ax, word [edi + 0x6e]
cmp ax, word [edi + 0x70]
jbe 0x523f30
mov eax, dword [0x53e6d4]
mov byte [eax], 1
mov eax, dword [0x53efec]
cmp byte [eax], 0
je 0x523f5f
mov eax, dword [0x53ef18]
cmp byte [eax + 9], 0
jne 0x523f5f
mov eax, dword [0x53ecc0]
mov eax, dword [eax]
cmp eax, dword [edi + 0x2d8]
jle 0x523f5f
inc dword [edi + 0x2d8]
jmp 0x5243cb
xor eax, eax
mov dword [edi + 0x2d8], eax
mov eax, dword [edi + 0x1b4]
cmp eax, 0xb
je 0x523f8b
cmp eax, 9
je 0x523f8b
cmp eax, 0xd
je 0x523f8b
cmp eax, 5
je 0x523f8b
cmp eax, 6
je 0x523f8b
cmp eax, 7
jne 0x523fba
mov eax, dword [edi + 0x288]
sub eax, dword [edi + 0x280]
dec eax
je 0x523fa1
sub eax, 3
je 0x523fae
jmp 0x523fba
mov eax, dword [edi + 0x1e8]
call fcn.0051aa7c
jmp 0x523fba
mov eax, dword [edi + 0x1e8]
inc eax
call fcn.0051aa7c
xor ebx, ebx
mov byte [edi + 0x2c4], 0
mov eax, dword [0x53e6d8]
cmp edi, dword [eax]
je 0x523fdf
mov eax, dword [edi + 0x330]
cmp dword [eax + 8], 2
jl 0x523fdf
mov byte [edi + 0x2c4], 1
mov ebp, dword [edi + 0x288]
mov eax, dword [edi + 0x1b4]
cmp eax, 0xb
je 0x52400f
cmp eax, 0xd
je 0x52400f
cmp eax, 5
je 0x52400f
cmp eax, 6
je 0x52400f
cmp eax, 7
je 0x52400f
cmp eax, 0x12d
jne 0x52428d
mov edx, dword [edi + 0x280]
mov eax, dword [edi + 0x288]
cmp edx, eax
jg 0x524027
cmp eax, dword [edi + 0x284]
jle 0x52402e
dec edx
mov dword [edi + 0x288], edx
mov eax, dword [edi + 0x288]
cmp eax, dword [edi + 0x284]
jge 0x5240cb
inc dword [edi + 0x288]
cmp dword [edi + 0x1b4], 0x12d
je 0x524064
cmp dword [edi + 0x1b4], 6
jne 0x52407b
cmp byte [edi + 0x26b], 4
jb 0x52407b
mov edx, dword [edi + 0x288]
sub edx, dword [edi + 0x280]
mov eax, edi
mov si, 0xfff8
call fcn.00404114
cmp byte [edi + 0x2c4], 0
je 0x52409f
cmp byte [esp + 1], 0
jne 0x52409f
mov eax, dword [edi + 0x288]
cmp eax, dword [edi + 0x284]
jge 0x52409f
inc dword [edi + 0x288]
mov ebx, dword [edi + 0x288]
mov eax, dword [edi + 0x280]
sub ebx, eax
inc ebx
mov esi, dword [edi + 0x284]
sub esi, eax
inc esi
push ebx
push esi
xor edx, edx
mov dl, byte [edi + 0x10]
mov ecx, dword [edi + 0x2c0]
mov eax, edi
call fcn.00520098
mov eax, dword [edi + 0x288]
cmp eax, dword [edi + 0x284]
jl 0x5241cc
cmp dword [edi + 0x1b4], 0x12d
jne 0x524140
mov byte [edi + 0x149], 0
mov eax, dword [0x53e6d8]
cmp edi, dword [eax]
jne 0x524140
mov eax, dword [0x53ea98]
mov eax, dword [eax]
call fcn.004ae240
test al, al
je 0x524140
mov eax, dword [0x53ea84]
cmp byte [eax], 0
je 0x524140
cmp dword [edi + 0x1b4], 0x12d
jne 0x524140
push 0
push 0
push 0
push 0
push 0
push 0xc8
mov eax, dword [0x53ea98]
mov eax, dword [eax]
mov cx, 0x145d
mov edx, edi
call fcn.0049f7bc
cmp dword [edi + 0x1b4], 6
jne 0x524159
cmp byte [edi + 0x27c], 0
je 0x524159
mov byte [edi + 0x149], 0
mov eax, dword [0x53e6d8]
cmp edi, dword [eax]
jne 0x5241a0
mov eax, dword [0x53ea98]
mov eax, dword [eax]
call fcn.004ae240
test al, al
je 0x5241cc
cmp byte [edi + 0x27c], 0
jne 0x524185
xor eax, eax
mov dword [edi + 0x1b4], eax
jmp 0x52418c
mov byte [edi + 0x27c], 0
mov byte [edi + 0x1d0], 1
call sub.kernel32.dll_GetTickCount_1
mov dword [edi + 0x2dc], eax
jmp 0x5241cc
cmp byte [edi + 0x27c], 0
jne 0x5241b3
xor eax, eax
mov dword [edi + 0x1b4], eax
jmp 0x5241ba
mov byte [edi + 0x27c], 0
mov byte [edi + 0x1d0], 1
call sub.kernel32.dll_GetTickCount_1
mov dword [edi + 0x2dc], eax
mov eax, dword [edi + 0x1b4]
cmp eax, 6
je 0x5241de
cmp eax, 0x12d
jne 0x52423e
mov eax, dword [0x53e6d8]
cmp edi, dword [eax]
jne 0x52423e
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x53ee84]
mov dword [edx], eax
mov eax, dword [0x53ea3c]
cmp byte [eax + 0xf], 0
je 0x524233
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
movzx eax, byte [eax + 0x73]
imul eax, eax, 0x12c
mov dword [esp + 4], eax
fild dword [esp + 4]
fdiv dword [0x5243d4]
call fcn.00402fd4
mov edx, 0x12c
sub edx, eax
mov eax, dword [0x53e4d4]
mov dword [eax], edx
jmp 0x52423e
mov eax, dword [0x53e4d4]
mov dword [eax], 0x12c
cmp dword [edi + 0x1b4], 7
jne 0x52428b
mov eax, dword [edi + 0x284]
sub eax, 3
cmp eax, dword [edi + 0x288]
jg 0x52428b
mov eax, dword [edi + 0x2f0]
mov dword [edi + 8], eax
mov eax, dword [edi + 0x2f4]
mov dword [edi + 0xc], eax
mov eax, dword [edi + 8]
mov dword [edi + 0xfc], eax
mov eax, dword [edi + 0xc]
mov dword [edi + 0x100], eax
xor eax, eax
mov dword [edi + 0x1b4], eax
mov byte [edi + 0x1d0], 1
mov bl, 1
cmp dword [edi + 0x1b4], 9
jne 0x5243ad
mov edx, dword [edi + 0x284]
mov eax, dword [edi + 0x288]
cmp edx, eax
jl 0x5242b2
cmp eax, dword [edi + 0x280]
jge 0x5242b9
inc edx
mov dword [edi + 0x288], edx
mov eax, dword [edi + 0x288]
cmp eax, dword [edi + 0x280]
jle 0x52431f
dec dword [edi + 0x288]
mov al, byte [edi + 0x2c4]
or al, byte [esp]
je 0x5242ec
mov eax, dword [edi + 0x288]
cmp eax, dword [edi + 0x280]
jle 0x5242ec
dec dword [edi + 0x288]
mov eax, dword [edi + 0x284]
mov ebx, eax
sub ebx, dword [edi + 0x288]
inc ebx
mov esi, eax
sub esi, dword [edi + 0x280]
inc esi
push ebx
push esi
xor eax, eax
mov al, byte [edi + 0x10]
call fcn.005389a0
mov edx, eax
mov ecx, dword [edi + 0x2c0]
mov eax, edi
call fcn.00520098
mov eax, dword [edi + 0x288]
cmp eax, dword [edi + 0x280]
jg 0x5243ab
mov eax, dword [0x53e6d8]
cmp edi, dword [eax]
jne 0x524391
xor eax, eax
mov dword [edi + 0x1b4], eax
mov byte [edi + 0x1d0], 1
call sub.kernel32.dll_GetTickCount_1
mov dword [edi + 0x2dc], eax
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x53ee84]
mov dword [edx], eax
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
movzx eax, byte [eax + 0x73]
imul eax, eax, 0x3e8
mov dword [esp + 4], eax
fild dword [esp + 4]
fdiv dword [0x5243d4]
call fcn.00402fd4
mov edx, 0x3e8
sub edx, eax
mov eax, dword [0x53e4d4]
mov dword [eax], edx
jmp 0x5243ab
xor eax, eax
mov dword [edi + 0x1b4], eax
mov byte [edi + 0x1d0], 1
call sub.kernel32.dll_GetTickCount_1
mov dword [edi + 0x2dc], eax
mov bl, 1
cmp ebp, dword [edi + 0x288]
je 0x5243cb
call sub.kernel32.dll_GetTickCount_1
mov dword [edi + 0x214], eax
mov eax, edi
mov si, 0xfff3
call fcn.00404114
mov eax, ebx
pop ecx
pop edx
pop ebp
pop edi
pop esi
pop ebx
ret