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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4c7c08
mov eax, dword fs:[0]
push eax
sub esp, 0x78
mov eax, dword [0x524ee0]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov ebx, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
mov dword [ebp - 0x70], ebx
call fcn.00418a30
test al, al
jne 0x415528
mov eax, 0x11
mov esi, 0xab
lea ebx, [ebx]
test esi, esi
je 0x415521
cdq
idiv esi
mov ecx, esi
mov eax, ecx
mov esi, edx
test ecx, ecx
jne 0x415510
add eax, esi
mov dword [0x526340], eax
push 0
lea ecx, [ebp - 0x80]
call fcn.00444480
push str.success
lea ecx, [ebp - 0x24]
mov dword [ebp - 4], 0
call fcn.00444440
lea eax, [ebp - 0x24]
push eax
push 0x4dfc64
lea ecx, [ebp - 0x80]
mov byte [ebp - 4], 1
call fcn.00444920
mov ecx, eax
call fcn.00444730
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 0
call fcn.00444690
call fcn.004188e0
test al, al
jne 0x415599
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_OpenThread]
mov ecx, dword [0x526340]
mov edx, 7
test eax, eax
cmove ecx, edx
mov dword [0x526340], ecx
mov byte [ebp - 4], 2
call fcn.00418830
test al, al
jne 0x4155b1
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x526340], eax
push str.path
mov ecx, edi
call fcn.00444a00
sub esp, 0x18
mov ecx, eax
push esp
call fcn.004451d0
lea eax, [ebp - 0x68]
push eax
call fcn.004512c0
add esp, 0x1c
mov byte [ebp - 4], 3
xor bl, bl
call fcn.00418a30
mov ecx, dword [0x5265cc]
test al, al
mov edx, 0xdc1ebd53
lea eax, [ebp - 0x68]
cmove ecx, edx
push eax
mov dword [0x5265cc], ecx
call fcn.00434680
add esp, 4
movzx ecx, bl
mov edx, 1
test al, al
cmovne ecx, edx
mov byte [ebp - 0x6c], cl
push dword [ebp - 0x6c]
lea ecx, [ebp - 0x24]
call fcn.00444580
push str.exist
lea ecx, [ebp - 0x80]
mov byte [ebp - 4], 4
call fcn.00444920
lea ecx, [ebp - 0x24]
push ecx
mov ecx, eax
call fcn.00444730
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 3
call fcn.00444690
mov esi, dword [0x526340]
mov eax, esi
imul eax, esi
imul eax, esi
cdq
mov ecx, 0x18
idiv ecx
cmp edx, 0xa
jne 0x41567d
xor edi, edi
test esi, esi
je 0x415677
mov eax, esi
mov ecx, esi
cdq
sub eax, edx
and ecx, 1
mov esi, eax
add edi, ecx
sar esi, 1
jne 0x415665
mov dword [0x526340], edi
mov edx, dword [ebp - 0x68]
add edx, 0xfffffff0
or edi, 0xffffffff
mov byte [ebp - 4], 2
lea ecx, [edx + 0xc]
mov eax, edi
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x415711
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x415711
mov esi, dword [0x526340]
mov dword [ebp - 4], 0
lea ecx, [esi + 1]
lea eax, [esi + 2]
imul eax, ecx
imul eax, esi
cdq
mov ecx, 0xf
idiv ecx
cmp edx, 0xe
jne 0x415790
movsd xmm3, qword [0x4e1680]
movsd xmm6, qword [0x4e1688]
movsd xmm5, qword [0x4e1678]
movd xmm4, esi
xorps xmm2, xmm2
cvtdq2pd xmm4, xmm4
lea ebx, [ebx]
addsd xmm2, xmm3
movapd xmm0, xmm2
mulsd xmm0, xmm2
comisd xmm0, xmm4
jbe 0x41577a
subsd xmm2, xmm3
divsd xmm3, xmm6
movapd xmm1, xmm2
mulsd xmm1, xmm2
movapd xmm0, xmm4
subsd xmm0, xmm1
comisd xmm0, xmm5
ja 0x415760
lea ecx, [ebp - 0x4c]
call fcn.004465d0
mov eax, dword [0x524ab0]
mov ecx, 0x524ab0
mov byte [ebp - 4], 9
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x68], eax
mov byte [ebp - 4], 0xa
call fcn.00418a30
test al, al
jne 0x4157da
push 0
push 0
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateFileW]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
lea eax, [ebp - 0x80]
push eax
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x4c]
call fcn.00449500
mov edx, eax
cmp dword [edx + 0x14], 0x10
mov byte [ebp - 4], 0xb
jb 0x4157f8
mov edx, dword [edx]
sub esp, 0x18
mov esi, esp
mov dword [esi + 0x14], 0xf
mov dword [esi + 0x10], 0
mov byte [esi], 0
cmp byte [edx], 0
jne 0x415817
xor ecx, ecx
jmp 0x415829
mov ecx, edx
lea ebx, [ecx + 1]
lea esp, [esp]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x415820
sub ecx, ebx
push ecx
push edx
mov ecx, esi
call fcn.00401460
lea eax, [ebp - 0x6c]
push eax
call fcn.004512c0
add esp, 0x1c
push eax
lea ecx, [ebp - 0x68]
mov byte [ebp - 4], 0xc
call fcn.00402ab0
mov edx, dword [ebp - 0x6c]
add edx, 0xfffffff0
mov byte [ebp - 4], 0xb
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x41586b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebp - 0x18], 0x10
mov byte [ebp - 4], 0xa
jb 0x415880
push dword [ebp - 0x2c]
call fcn.004a831e
add esp, 4
mov ebx, dword [ebp - 0x70]
mov esi, dword [ebp - 0x68]
mov eax, 8
mov word [ebx], ax
push dword [esi - 0xc]
push esi
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
test eax, eax
jne 0x4158a1
call fcn.00409970
mov dword [ebx + 8], eax
call fcn.00418a50
test al, al
jne 0x4158b8
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x526340], eax
add esi, 0xfffffff0
mov byte [ebp - 4], 9
lea eax, [esi + 0xc]
lock xadd dword [eax], edi
dec edi
test edi, edi
jg 0x4158d3
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebp - 0x34], 0x10
mov byte [ebp - 4], 0
mov dword [ebp - 0x4c], 0x4dfc5c
jb 0x4158ef
push dword [ebp - 0x48]
call fcn.004a831e
add esp, 4
lea ecx, [ebp - 0x4c]
mov dword [ebp - 0x34], 0xf
mov dword [ebp - 0x38], 0
mov byte [ebp - 0x48], 0
call fcn.004466d0
lea ecx, [ebp - 0x80]
mov dword [ebp - 4], 0xffffffff
call fcn.00444690
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.004a8b24
mov esp, ebp
pop ebp
ret