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

Disassembly:
sub esp, 0x1c
mov eax, dword [esp + 0x30]
push ebx
push ebp
push esi
push edi
push eax
call fcn.004153d0
add esp, 4
call dword [sym.imp.kernel32.dll_GetTickCount]
mov esi, eax
xor eax, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], eax
call dword [sym.imp.kernel32.dll_GetTickCount]
add eax, 0x14
cmp esi, eax
mov dword [esp + 0x28], eax
ja 0x41526c
mov eax, dword [esp + 0x3c]
mov ecx, dword [eax + 0x18]
imul ecx, dword [0x466be4]
mov esi, dword [eax + 0xa8]
mov eax, dword [esp + 0x30]
mov edi, dword [eax + 0xa8]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov edx, dword [esp + 0x38]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x34]
mov esi, dword [ecx + 0xa8]
mov ecx, dword [eax + 0xa8]
mov eax, dword [edx + 0xa8]
mov ebx, dword [0x466c48]
mov dword [esp + 0x1c], eax
mov eax, dword [0x466be4]
xor ebp, ebp
test eax, eax
mov dword [esp + 0x24], ebp
jbe 0x415228
cmp dword [esp + 0x10], 0x40
jb 0x415104
mov edx, dword [esp + 0x14]
add edx, ebp
xor eax, eax
mov eax, dword [esp + 0x18]
and edx, 0x7f
sub edx, eax
xor eax, eax
mov al, byte [edx + 0x4f85a0]
jmp 0x41511c
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
add eax, ebp
and eax, 0x7f
xor edx, edx
mov dl, byte [eax + edi + 0x4f6620]
mov eax, edx
add eax, 0xffffff80
cdq
and edx, 3
add eax, edx
mov edi, eax
mov eax, dword [esp + 0x10]
sar edi, 2
sub edi, eax
add edi, 0xff
cmp edi, 0xff
jle 0x415145
mov edi, 0xff
jmp 0x41514b
test edi, edi
jge 0x41514b
xor edi, edi
lea eax, [ebx + ebx*2]
shl edi, 8
test eax, eax
mov dword [esp + 0x20], 0
jbe 0x415216
mov edx, dword [esp + 0x1c]
xor eax, eax
mov al, byte [edx]
cmp al, 0xff
je 0x4151ec
and eax, 0xff
xor ebx, ebx
mov bl, byte [ecx]
xor edx, edx
mov dl, byte [eax + edi + 0x52af80]
xor eax, eax
mov al, byte [esi]
shl edx, 9
add edx, 0x100
mov ebp, eax
and ebp, 0xff
sub ebp, ebx
sub al, byte [edx + ebp + 0x53afa0]
mov byte [ecx], al
xor eax, eax
mov al, byte [esi + 1]
xor ebx, ebx
mov bl, byte [ecx + 1]
inc esi
inc ecx
mov ebp, eax
and ebp, 0xff
sub ebp, ebx
sub al, byte [edx + ebp + 0x53afa0]
mov byte [ecx], al
inc esi
xor eax, eax
mov al, byte [esi]
xor ebx, ebx
mov bl, byte [ecx + 1]
inc ecx
mov ebp, eax
and ebp, 0xff
sub ebp, ebx
mov bl, byte [edx + ebp + 0x53afa0]
mov ebp, dword [esp + 0x24]
sub al, bl
mov byte [ecx], al
mov ebx, dword [0x466c48]
inc esi
inc ecx
jmp 0x4151f2
add esi, 3
add ecx, 3
mov edx, dword [esp + 0x1c]
mov eax, 3
add edx, eax
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x20]
add edx, eax
lea eax, [ebx + ebx*2]
cmp edx, eax
mov dword [esp + 0x20], edx
jb 0x415161
mov eax, dword [0x466be4]
inc ebp
cmp ebp, eax
mov dword [esp + 0x24], ebp
jb 0x4150e2
mov ecx, dword [esp + 0x48]
mov edx, dword [0x466be4]
mov eax, dword [esp + 0x44]
push 0xcc0020
push 0
push 0
push ecx
mov ecx, dword [0x466c14]
push edx
push ebx
push 0
push 0
push eax
push ecx
call fcn.00401350
add esp, 0x28
call dword [sym.imp.kernel32.dll_GetTickCount]
cmp eax, dword [esp + 0x28]
jbe 0x415256
call dword [sym.imp.kernel32.dll_GetTickCount]
mov esi, eax
jmp 0x41526f
add esi, 0x14
mov edx, dword [esp + 0x40]
push edx
call fcn.004153b0
add esp, 4
test eax, eax
jne 0x4152af
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
add eax, 4
add edi, 8
add edx, 0x100
cmp eax, 0x80
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], edx
jb 0x41506a
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret