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

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [0x4febb0]
sub esp, 0x20
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
cmp dword [edi + 0x10], 0
jne 0x4152e9
mov esi, dword [0x4febac]
mov dword [0x505dbc], 0
cmp esi, eax
je 0x4152df
push 0
push eax
push esi
call dword [sym.imp.MSVCR100.dll_memmove]
mov eax, esi
add esp, 0xc
mov dword [0x4febb0], eax
mov dword [0x4febcc], 0
mov ebx, 1
add dword [0x505dbc], ebx
cmp dword [edi + 8], 0
jle 0x415553
mov edx, 0xffffffec
lea ecx, [edi + 0x14]
sub edx, edi
mov dword [ebp - 4], ecx
mov dword [ebp - 8], edx
mov edi, edi
mov esi, dword [0x4febac]
cmp ecx, eax
jae 0x415383
cmp esi, ecx
ja 0x415383
mov edx, dword [0x4febb4]
mov edi, ecx
sub edi, esi
cmp eax, edx
jne 0x41536a
mov ecx, eax
sub ecx, esi
cmp ecx, 0xfffffffe
ja 0x41555c
add ecx, ebx
sub edx, esi
cmp ecx, edx
jbe 0x41536a
mov eax, edx
shr edx, 1
or esi, 0xffffffff
sub esi, edx
cmp esi, eax
jae 0x415352
xor eax, eax
jmp 0x415354
add eax, edx
cmp eax, ecx
jae 0x41535a
mov eax, ecx
push eax
mov esi, 0x4febac
call fcn.00413360
mov eax, dword [0x4febb0]
test eax, eax
je 0x41537e
mov ecx, dword [0x4febac]
mov dl, byte [ecx + edi]
mov byte [eax], dl
mov eax, dword [0x4febb0]
mov edi, dword [ebp + 8]
jmp 0x4153db
mov edx, dword [0x4febb4]
cmp eax, edx
jne 0x4153cb
mov ecx, eax
sub ecx, esi
cmp ecx, 0xfffffffe
ja 0x41555c
add ecx, ebx
sub edx, esi
cmp ecx, edx
jbe 0x4153cb
mov eax, edx
shr edx, 1
or esi, 0xffffffff
sub esi, edx
cmp esi, eax
jae 0x4153b3
xor eax, eax
jmp 0x4153b5
add eax, edx
cmp eax, ecx
jae 0x4153bb
mov eax, ecx
push eax
mov esi, 0x4febac
call fcn.00413360
mov eax, dword [0x4febb0]
test eax, eax
je 0x4153db
mov ecx, dword [ebp - 4]
mov dl, byte [ecx]
mov byte [eax], dl
mov eax, dword [0x4febb0]
add dword [0x4febcc], ebx
add eax, ebx
mov ecx, eax
sub ecx, dword [0x4febac]
mov dword [0x4febb0], eax
mov edx, dword [edi + 0xc]
cmp ecx, edx
jne 0x415527
mov eax, dword [0x4febbc]
mov ecx, dword [0x4febc0]
mov esi, eax
cmp eax, ecx
je 0x41541f
push 0
push ecx
push eax
call dword [sym.imp.MSVCR100.dll_memmove]
add esp, 0xc
mov dword [0x4febc0], esi
mov eax, 0x4febac
mov ecx, 0x4febbc
call fcn.00413220
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
mov byte [0x4febe0], bl
call esi
sub eax, dword [0x4febf8]
cmp eax, 0x3e8
jae 0x415454
add dword [0x4febf0], ebx
jmp 0x415538
call esi
mov dword [0x4febf8], eax
mov eax, dword [0x4febf0]
mov dword [0x4febf4], eax
mov dword [0x4febf0], 0
cmp eax, 0x14
jge 0x4154ce
cmp dword [0x4febfc], 0x1e
jle 0x415538
sub dword [0x4febfc], 0xa
mov esi, dword [0x4febe4]
mov word [ebp - 0x14], 0xcc1
call dword [sym.imp.MSVCR100.dll_rand]
and eax, 0x800000ff
jns 0x4154a8
dec eax
or eax, 0xffffff00
inc eax
mov byte [ebp - 0x12], al
mov eax, dword [0x4febfc]
mov edi, 0xc
lea edx, [ebp - 0x14]
mov ecx, esi
mov byte [ebp - 0x11], 0xa4
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0xc], eax
call fcn.004171c0
mov edi, dword [ebp + 8]
jmp 0x415538
jle 0x415538
cmp dword [0x4febfc], 0x64
jge 0x415538
add dword [0x4febfc], 0xa
mov esi, dword [0x4febe4]
mov word [ebp - 0x20], 0xcc1
call dword [sym.imp.MSVCR100.dll_rand]
and eax, 0x800000ff
jns 0x415500
dec eax
or eax, 0xffffff00
inc eax
mov ecx, dword [0x4febfc]
mov dword [ebp - 0x18], ecx
mov edi, 0xc
lea edx, [ebp - 0x20]
mov ecx, esi
mov byte [ebp - 0x1e], al
mov byte [ebp - 0x1d], 0xa4
mov dword [ebp - 0x1c], ebx
call fcn.004171c0
mov edi, dword [ebp + 8]
jmp 0x415538
jb 0x41553d
push str.ERROR__Buffer_length_bigger_then_expected_size_
push 2
call fcn.00417be0
add esp, 8
mov eax, dword [0x4febb0]
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 8]
add ecx, ebx
add edx, ecx
mov dword [ebp - 4], ecx
cmp edx, dword [edi + 8]
jl 0x415310
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push str.vector_T__too_long
call dword [sym.imp.MSVCP100.dll_void___cdecl_std::_Xlength_error_char_const__]
int3