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

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
mov esi, dword [ecx*4 + 0x20a514c]
push edi
cmp dword [esi + 0x170], 0
je 0x4c1c90
cmp byte [esi + 0x7a], 0
je 0x4c1c90
cmp byte [esi + 0x217], 0
jg 0x4c1c90
cmp byte [esi + 0x214], 0
jne 0x4c1c90
cmp dword [esi + 0x200], 2
jne 0x4c1c90
push esi
call fcn.00478780
test al, al
jne 0x4c1c90
push esi
call fcn.00478810
test al, al
jne 0x4c1c90
mov eax, dword [esi + 0x174]
mov cl, byte [esi + 0x234]
movsx edx, word [esi + 0x30c]
test byte [esi + eax + 0x1d4], 1
jne 0x4c1acc
xor edi, edi
mov eax, 0x12c
test cl, cl
cmove eax, edi
add eax, edx
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [0x56a790]
call fcn.00546020
mov edi, eax
jmp 0x4c1ada
xor eax, eax
mov edi, 0x12c
test cl, cl
cmove edi, eax
add edi, edx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [esi + 0x1e4]
cmp eax, edi
jbe 0x4c1d14
mov ecx, dword [esi + 0x174]
cmp ecx, 0xf
jge 0x4c1d14
movzx eax, byte [esi + 0x149]
movsx edi, word [esi + ecx*2 + 0x1b6]
imul edx, eax, 0x15d38
movzx eax, word [esi + ecx*2 + 0x198]
movsx ebx, ax
mov dword [ebp - 4], eax
test ebx, ebx
js 0x4c1bdf
cmp ebx, dword [edx + 0xd2f384]
jge 0x4c1bdf
test edi, edi
js 0x4c1bdf
mov eax, dword [edx + 0xd2f388]
cmp edi, eax
jge 0x4c1bdf
imul eax, edi
add eax, dword [edx + 0xd2f380]
test byte [eax + ebx], 4
jne 0x4c1bdf
mov eax, dword [edx + 0xd2f388]
imul eax, edi
add eax, dword [edx + 0xd2f380]
test byte [eax + ebx], 8
jne 0x4c1bdf
mov eax, dword [ebp - 4]
mov word [esi + 0x144], ax
mov ax, word [esi + ecx*2 + 0x1b6]
mov word [esi + 0x146], ax
mov al, byte [ecx + esi + 0x1d4]
mov byte [esi + 0x148], al
mov eax, dword [sym.imp.KERNEL32.dll_GetTickCount]
call eax
inc dword [esi + 0x174]
mov dword [esi + 0x1e4], eax
mov eax, dword [esi + 0x174]
cmp eax, dword [esi + 0x170]
jl 0x4c1d14
mov dword [esi + 0x174], 0
mov dword [esi + 0x170], 0
mov byte [esi + 0x178], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [esi + 0x174], 0
mov dword [esi + 0x170], 0
call eax
mov dword [esi + 0x1e4], eax
xorps xmm0, xmm0
mov byte [esi + 0x178], 0
movups xmmword [esi + 0x198], xmm0
movq qword [esi + 0x1a8], xmm0
mov dword [esi + 0x1b0], 0
mov word [esi + 0x1b4], 0
movups xmmword [esi + 0x1b6], xmm0
movq qword [esi + 0x1c6], xmm0
mov dword [esi + 0x1ce], 0
mov word [esi + 0x1d2], 0
movups xmmword [esi + 0x17a], xmm0
movq qword [esi + 0x18a], xmm0
mov dword [esi + 0x192], 0
mov word [esi + 0x196], 0
movsx eax, word [esi + 0x146]
movsx edx, word [esi + 0x144]
mov ecx, dword [esi]
push eax
call fcn.00525a30
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [esi + 0x174], 0
xorps xmm0, xmm0
mov dword [esi + 0x170], 0
mov byte [esi + 0x178], 0
movups xmmword [esi + 0x198], xmm0
movq qword [esi + 0x1a8], xmm0
mov dword [esi + 0x1b0], 0
mov word [esi + 0x1b4], 0
movups xmmword [esi + 0x1b6], xmm0
movq qword [esi + 0x1c6], xmm0
mov dword [esi + 0x1ce], 0
mov word [esi + 0x1d2], 0
movq qword [esi + 0x1d4], xmm0
mov dword [esi + 0x1dc], 0
mov word [esi + 0x1e0], 0
mov byte [esi + 0x1e2], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret