Function at 0x100954f0
Capabilities:
Check for time delay via queryperformancecounter
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x101e198d
mov eax, dword fs:[0]
push eax
sub esp, 0x4c
mov eax, dword [0x10284f40]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ecx, dword [ebp + 8]
xorps xmm0, xmm0
cmp ecx, 0xffffffff
movd eax, xmm0
movups xmmword [ebp - 0x20], xmm0
mov dword [ebp - 0x48], 0xffffffff
cmovne eax, ecx
mov dword [ebp - 0x38], 0xffffffff
mov dword [ebp - 0x20], eax
xor eax, eax
cmp ecx, 0xffffffff
setne al
dec eax
mov dword [ebp - 0x58], eax
xor eax, eax
cmp ecx, 0xffffffff
mov ecx, dword [0x10282010]
setne al
mov dword [ebp - 0x30], eax
cmp ecx, 0xffffffff
jne 0x10095566
mov dword [ebp - 0x2c], eax
jmp 0x100955b6
mov edi, dword [sym.imp.KERNEL32.dll_TlsGetValue]
push ecx
call edi
mov esi, dword [ebp - 0x30]
mov dword [ebp - 0x2c], esi
test eax, eax
je 0x100955b6
mov eax, dword [0x10282010]
cmp eax, 0xffffffff
jne 0x10095587
xor ecx, ecx
jmp 0x10095591
push eax
call edi
mov ecx, eax
mov eax, dword [0x10282010]
cmp byte [ecx + 0x38], 0
mov dword [ebp - 0x2c], esi
je 0x100955b6
mov dword [ebp - 0x48], esi
cmp eax, 0xffffffff
jne 0x100955a6
xor eax, eax
jmp 0x100955a9
push eax
call edi
mov eax, dword [eax + 0x34]
lea edx, [esi + 1]
mov dword [ebp + esi*4 - 0x20], eax
mov dword [ebp - 0x2c], edx
xor esi, esi
mov dword [ebp - 0x54], esi
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 4], esi
cmp dword [ecx], 0xffffffff
jne 0x100955d3
cmp dword [ecx + 4], 0x7fffffff
je 0x100956e8
lea eax, [ebp - 0x40]
push eax
call fcn.10095a60
mov edx, dword [ebp + 0xc]
add esp, 4
mov ecx, dword [edx]
sub ecx, dword [eax]
mov edx, dword [edx + 4]
sbb edx, dword [eax + 4]
js 0x100955ff
jg 0x100955f4
test ecx, ecx
jb 0x100955ff
add ecx, 0xf423f
adc edx, 0
jmp 0x10095608
sub ecx, 0xf423f
sbb edx, 0
push 0
push 0xf4240
push edx
push ecx
call fcn.100e4b80
push 0
push 0
push 0
mov dword [ebp - 0x24], edx
mov edi, eax
call dword [sym.imp.KERNEL32.dll_CreateWaitableTimerA]
mov esi, eax
mov dword [ebp - 0x54], esi
test esi, esi
je 0x100956e5
mov eax, dword [ebp - 0x24]
test eax, eax
jl 0x10095658
jg 0x10095645
cmp edi, 0x294
jb 0x10095658
push 0
push 0x14
push eax
push edi
call fcn.100e4b80
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x24]
jmp 0x10095677
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x30], 0x20
test eax, eax
jl 0x1009568b
jg 0x10095677
test edi, edi
je 0x1009568b
push 0xffffffffffffffff
push 0xffffd8f0
push eax
push edi
call fcn.100e4c30
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], edx
mov ecx, dword [0x1029188c]
test ecx, ecx
jne 0x100956bc
push str.SetWaitableTimerEx
push 0x101e3794
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
mov ecx, 0x10094ee0
cmovne ecx, eax
mov dword [0x1029188c], ecx
push dword [ebp - 0x30]
lea eax, [ebp - 0x28]
push 0
push 0
push 0
push 0
push eax
push esi
call ecx
mov ecx, dword [ebp + 0xc]
test eax, eax
je 0x100956e8
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x38], eax
mov dword [ebp + eax*4 - 0x20], esi
inc eax
mov dword [ebp - 0x2c], eax
jmp 0x100956e8
mov ecx, dword [ebp + 0xc]
or edi, 0xffffffff
xor eax, eax
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x38], edi
jne 0x10095780
cmp dword [ecx], edi
jne 0x10095706
cmp dword [ecx + 4], 0x7fffffff
je 0x10095780
lea eax, [ebp - 0x40]
push eax
call fcn.10095a60
mov edx, dword [ebp + 0xc]
add esp, 4
mov ecx, dword [edx]
sub ecx, dword [eax]
mov edx, dword [edx + 4]
sbb edx, dword [eax + 4]
js 0x10095747
jg 0x10095727
test ecx, ecx
jb 0x10095747
add ecx, 0xf423f
push 0
push 0xf4240
adc edx, 0
push edx
push ecx
call fcn.100e4b80
mov edi, eax
mov eax, edx
mov dword [ebp - 0x24], eax
jmp 0x10095765
sub ecx, 0xf423f
push 0
push 0xf4240
sbb edx, 0
push edx
push ecx
call fcn.100e4b80
mov edi, eax
mov dword [ebp - 0x24], edx
mov eax, edx
test eax, eax
jg 0x10095780
jl 0x1009576f
test edi, edi
jae 0x10095780
xorps xmm0, xmm0
movlpd qword [ebp - 0x40], xmm0
mov eax, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x40]
mov dword [ebp - 0x24], eax
mov ecx, dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [ebp - 0x2c]
test eax, eax
je 0x100957e6
push 0
push edi
push 0
lea ecx, [ebp - 0x20]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_WaitForMultipleObjectsEx]
cmp eax, dword [ebp - 0x2c]
jae 0x100957f0
cmp eax, dword [ebp - 0x58]
je 0x10095910
cmp eax, dword [ebp - 0x48]
je 0x10095927
cmp eax, dword [ebp - 0x38]
jne 0x100957f0
test esi, esi
je 0x100957c9
cmp esi, 0xffffffff
je 0x100957c9
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.100e40d6
mov esp, ebp
pop ebp
ret
test edi, edi
jne 0x100957ed
push edi
jmp 0x100957ee
push edi
call ecx
cmp dword [ebp - 0x38], 0xffffffff
jne 0x100958df
mov eax, dword [ebp + 0xc]
cmp dword [eax], 0xffffffff
jne 0x1009580f
cmp dword [eax + 4], 0x7fffffff
je 0x100958df
lea eax, [ebp - 0x50]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
test eax, eax
jne 0x1009582a
xorps xmm0, xmm0
movlpd qword [ebp - 0x34], xmm0
jmp 0x100958a0
cmp dword [ebp - 0x4c], 0
jg 0x10095842
jl 0x1009581d
cmp dword [ebp - 0x50], 0
ja 0x10095842
xorps xmm0, xmm0
movlpd qword [ebp - 0x34], xmm0
jmp 0x100958a0
lea eax, [ebp - 0x40]
xor edi, edi
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
jne 0x10095866
inc edi
cmp edi, 3
ja 0x1009581d
lea eax, [ebp - 0x40]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x10095852
mov edx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x40]
call fcn.100e4df0
mulsd xmm0, qword [0x1026e2c0]
mov edx, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x50]
movsd qword [ebp - 0x28], xmm0
call fcn.100e4df0
movsd xmm1, qword [ebp - 0x28]
divsd xmm1, xmm0
movaps xmm0, xmm1
call fcn.100e4d40
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], edx
mov ecx, dword [ebp + 0xc]
mov eax, dword [ecx]
sub eax, dword [ebp - 0x34]
mov ecx, dword [ecx + 4]
sbb ecx, dword [ebp - 0x30]
js 0x100958d5
jg 0x100958b6
test eax, eax
jb 0x100958d5
add eax, 0xf423f
adc ecx, 0
push 0
push 0xf4240
push ecx
push eax
call fcn.100e4b80
mov edi, eax
mov eax, edx
mov dword [ebp - 0x24], eax
jmp 0x100958e2
sub eax, 0xf423f
sbb ecx, 0
jmp 0x100958be
mov eax, dword [ebp - 0x24]
cmp edi, 0xffffffff
jne 0x100958f5
mov ecx, dword [sym.imp.KERNEL32.dll_Sleep]
test eax, eax
je 0x10095786
test eax, eax
jl 0x100957b9
jg 0x10095780
test edi, edi
je 0x100957b9
jmp 0x10095780
test esi, esi
je 0x10095920
cmp esi, 0xffffffff
je 0x10095920
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov al, 1
jmp 0x100957cb
call fcn.100954d0
lea ecx, [eax + 0x34]
call fcn.100523e0
push eax
call dword [sym.imp.KERNEL32.dll_ResetEvent]
push 0x1027def8
lea eax, [ebp - 0x41]
push eax
call fcn.100e6522
int3