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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100dfc7d
mov eax, dword fs:[0]
push eax
sub esp, 0x4c
mov eax, dword [0x101151a4]
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 [0x101150f0]
setne al
mov dword [ebp - 0x30], eax
cmp ecx, 0xffffffff
jne 0x10042326
mov dword [ebp - 0x2c], eax
jmp 0x10042376
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 0x10042376
mov eax, dword [0x101150f0]
cmp eax, 0xffffffff
jne 0x10042347
xor ecx, ecx
jmp 0x10042351
push eax
call edi
mov ecx, eax
mov eax, dword [0x101150f0]
cmp byte [ecx + 0x38], 0
mov dword [ebp - 0x2c], esi
je 0x10042376
mov dword [ebp - 0x48], esi
cmp eax, 0xffffffff
jne 0x10042366
xor eax, eax
jmp 0x10042369
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 0x10042393
cmp dword [ecx + 4], 0x7fffffff
je 0x100424a8
lea eax, [ebp - 0x40]
push eax
call fcn.10010070
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 0x100423bf
jg 0x100423b4
test ecx, ecx
jb 0x100423bf
add ecx, 0xf423f
adc edx, 0
jmp 0x100423c8
sub ecx, 0xf423f
sbb edx, 0
push 0
push 0xf4240
push edx
push ecx
call fcn.100abf20
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 0x100424a5
mov eax, dword [ebp - 0x24]
test eax, eax
jl 0x10042418
jg 0x10042405
cmp edi, 0x294
jb 0x10042418
push 0
push 0x14
push eax
push edi
call fcn.100abf20
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x24]
jmp 0x10042437
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x30], 0x20
test eax, eax
jl 0x1004244b
jg 0x10042437
test edi, edi
je 0x1004244b
push 0xffffffffffffffff
push 0xffffd8f0
push eax
push edi
call fcn.100abfd0
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], edx
mov ecx, dword [0x1011a8e0]
test ecx, ecx
jne 0x1004247c
push str.SetWaitableTimerEx
push str.KERNEL32.DLL
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
mov ecx, 0x10041c20
cmovne ecx, eax
mov dword [0x1011a8e0], 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 0x100424a8
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 0x100424a8
mov ecx, dword [ebp + 0xc]
or edi, 0xffffffff
xor eax, eax
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x38], edi
jne 0x10042540
cmp dword [ecx], edi
jne 0x100424c6
cmp dword [ecx + 4], 0x7fffffff
je 0x10042540
lea eax, [ebp - 0x40]
push eax
call fcn.10010070
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 0x10042507
jg 0x100424e7
test ecx, ecx
jb 0x10042507
add ecx, 0xf423f
push 0
push 0xf4240
adc edx, 0
push edx
push ecx
call fcn.100abf20
mov edi, eax
mov eax, edx
mov dword [ebp - 0x24], eax
jmp 0x10042525
sub ecx, 0xf423f
push 0
push 0xf4240
sbb edx, 0
push edx
push ecx
call fcn.100abf20
mov edi, eax
mov dword [ebp - 0x24], edx
mov eax, edx
test eax, eax
jg 0x10042540
jl 0x1004252f
test edi, edi
jae 0x10042540
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 [0x100e227c]
mov eax, dword [ebp - 0x2c]
test eax, eax
je 0x100425a6
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 0x100425b0
cmp eax, dword [ebp - 0x58]
je 0x100426d0
cmp eax, dword [ebp - 0x48]
je 0x100426e7
cmp eax, dword [ebp - 0x38]
jne 0x100425b0
test esi, esi
je 0x10042589
cmp esi, 0xffffffff
je 0x10042589
push esi
call dword [0x100e2208]
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.100aba16
mov esp, ebp
pop ebp
ret
test edi, edi
jne 0x100425ad
push edi
jmp 0x100425ae
push edi
call ecx
cmp dword [ebp - 0x38], 0xffffffff
jne 0x1004269f
mov eax, dword [ebp + 0xc]
cmp dword [eax], 0xffffffff
jne 0x100425cf
cmp dword [eax + 4], 0x7fffffff
je 0x1004269f
lea eax, [ebp - 0x50]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
test eax, eax
jne 0x100425ea
xorps xmm0, xmm0
movlpd qword [ebp - 0x34], xmm0
jmp 0x10042660
cmp dword [ebp - 0x4c], 0
jg 0x10042602
jl 0x100425dd
cmp dword [ebp - 0x50], 0
ja 0x10042602
xorps xmm0, xmm0
movlpd qword [ebp - 0x34], xmm0
jmp 0x10042660
lea eax, [ebp - 0x40]
xor edi, edi
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
jne 0x10042626
inc edi
cmp edi, 3
ja 0x100425dd
lea eax, [ebp - 0x40]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x10042612
mov edx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x40]
call fcn.100abe80
mulsd xmm0, qword [0x10105ff0]
mov edx, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x50]
movsd qword [ebp - 0x28], xmm0
call fcn.100abe80
movsd xmm1, qword [ebp - 0x28]
divsd xmm1, xmm0
movaps xmm0, xmm1
call fcn.100abdd0
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 0x10042695
jg 0x10042676
test eax, eax
jb 0x10042695
add eax, 0xf423f
adc ecx, 0
push 0
push 0xf4240
push ecx
push eax
call fcn.100abf20
mov edi, eax
mov eax, edx
mov dword [ebp - 0x24], eax
jmp 0x100426a2
sub eax, 0xf423f
sbb ecx, 0
jmp 0x1004267e
mov eax, dword [ebp - 0x24]
cmp edi, 0xffffffff
jne 0x100426b5
mov ecx, dword [0x100e227c]
test eax, eax
je 0x10042546
test eax, eax
jl 0x10042579
jg 0x10042540
test edi, edi
je 0x10042579
jmp 0x10042540
test esi, esi
je 0x100426e0
cmp esi, 0xffffffff
je 0x100426e0
push esi
call dword [0x100e2208]
mov al, 1
jmp 0x1004258b
call fcn.10042290
lea ecx, [eax + 0x34]
call fcn.10041ae0
push eax
call dword [sym.imp.KERNEL32.dll_ResetEvent]
push 0x10110ac8
lea eax, [ebp - 0x41]
push eax
call fcn.100ad3cb
int3