Function at 0x10015810
Capabilities:
Check for time delay via queryperformancecounter
Execute anti-debugging instructions

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x3c
push ebx
push esi
push edi
xor edi, edi
mov dword [esp + 0x20], edi
mov dword [esp + 0x10], edi
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], edi
call dword [sym.imp.KERNEL32.dll_GetCurrentThread]
mov dword [esp + 0x14], eax
lea eax, [esp + 0x40]
push eax
xor esi, esi
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
test eax, eax
jne 0x10015862
mov eax, dword [ebp + 8]
mov edx, eax
mov dword [edx], esi
mov ecx, esi
mov dword [edx + 4], ecx
mov dword [edx + 8], ecx
mov dword [edx + 0xc], esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ebx, dword [esp + 0x20]
jmp 0x10015870
mov esi, dword [esp + 0x10]
lea eax, [esp + 0x38]
mov dword [esp + 0x20], ebx
inc esi
mov ebx, edi
mov edi, dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
push eax
mov dword [esp + 0x14], esi
call edi
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
push eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x38], edx
call dword [sym.imp.KERNEL32.dll_GetThreadPriority]
mov esi, eax
cmp esi, 0x7fffffff
je 0x100158be
mov ecx, dword [esp + 0x14]
push 0xf
push ecx
call dword [sym.imp.KERNEL32.dll_SetThreadPriority]
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x38]
mov edx, eax
sub edx, ecx
cmp edx, 0x32
jae 0x100158ee
nop
lea eax, [esp + 0x30]
push eax
call edi
rdtsc
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x38]
mov ecx, eax
sub ecx, edx
cmp ecx, 0x32
jb 0x100158d0
mov edx, dword [esp + 0x34]
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], edx
lea ebx, [ebx]
lea eax, [esp + 0x30]
push eax
call edi
rdtsc
mov dword [esp + 0x24], eax
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x38]
mov edx, ecx
sub edx, eax
cmp edx, 0x3e8
jb 0x10015900
cmp esi, 0x7fffffff
je 0x10015939
mov eax, dword [esp + 0x14]
push esi
push eax
call dword [sym.imp.KERNEL32.dll_SetThreadPriority]
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0x24]
sub edi, eax
sub ecx, esi
mov esi, dword [esp + 0x40]
imul ecx, ecx, 0x186a0
mov eax, 0xcccccccd
mul esi
mov eax, edx
shr eax, 3
mov dword [esp + 0x2c], eax
xor edx, edx
mov eax, ecx
mov ecx, dword [esp + 0x2c]
div ecx
add dword [esp + 0x18], edi
xor edx, edx
mov ecx, eax
add dword [esp + 0x1c], ecx
mov eax, ecx
div esi
shr esi, 1
cmp edx, esi
jbe 0x10015984
inc ecx
mov eax, edi
xor edx, edx
div ecx
shr ecx, 1
cmp edx, ecx
mov edi, eax
jbe 0x10015993
inc edi
mov ecx, dword [esp + 0x20]
lea eax, [ecx + ebx]
mov ecx, dword [esp + 0x10]
add eax, edi
cmp ecx, 3
jl 0x10015870
cmp ecx, 0x14
jge 0x100159dc
lea edx, [edi + edi*2]
sub edx, eax
cmp edx, 3
ja 0x10015870
lea ecx, [ebx + ebx*2]
sub ecx, eax
cmp ecx, 3
ja 0x10015870
mov ecx, dword [esp + 0x20]
lea edx, [ecx + ecx*2]
sub edx, eax
cmp edx, 3
ja 0x10015870
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x1c]
xor edx, edx
lea eax, [esi + esi*4]
shl eax, 1
div edi
xor edx, edx
mov ecx, eax
mov eax, esi
imul eax, eax, 0x64
div edi
lea edx, [ecx + ecx*4]
shl edx, 1
sub eax, edx
cmp eax, 6
jb 0x10015a05
inc ecx
xor edx, edx
mov eax, esi
div edi
lea ebx, [eax + eax*4]
shl ebx, 1
sub ecx, ebx
cmp ecx, 6
mov edx, eax
jb 0x10015a1c
lea edx, [eax + 1]
mov ecx, dword [ebp + 8]
mov ebx, ecx
mov dword [ebx], esi
mov dword [ebx + 4], edi
mov dword [ebx + 8], eax
pop edi
pop esi
mov dword [ebx + 0xc], edx
mov eax, ecx
pop ebx
mov esp, ebp
pop ebp
ret