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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x718afd
mov eax, dword fs:[0]
push eax
sub esp, 0x4c
mov eax, dword [0x7f9c40]
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
mov dword [ebp - 0x48], 0xffffffff
mov dword [ebp - 0x40], 0xffffffff
movups xmmword [ebp - 0x20], xmm0
cmp ecx, 0xffffffff
je 0x50f31a
mov dword [ebp - 0x20], ecx
xor eax, eax
cmp ecx, 0xffffffff
setne al
dec eax
mov dword [ebp - 0x58], eax
xor eax, eax
cmp ecx, 0xffffffff
mov ecx, dword [0x7f55c8]
setne al
mov dword [ebp - 0x30], eax
cmp ecx, 0xffffffff
jne 0x50f341
mov dword [ebp - 0x2c], eax
jmp 0x50f391
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 0x50f391
mov eax, dword [0x7f55c8]
cmp eax, 0xffffffff
jne 0x50f362
xor ecx, ecx
jmp 0x50f36c
push eax
call edi
mov ecx, eax
mov eax, dword [0x7f55c8]
cmp byte [ecx + 0x38], 0
mov dword [ebp - 0x2c], esi
je 0x50f391
mov dword [ebp - 0x48], esi
cmp eax, 0xffffffff
jne 0x50f381
xor eax, eax
jmp 0x50f384
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 edi, dword [ebp + 0xc]
mov dword [ebp - 4], esi
cmp dword [edi], 0xffffffff
jne 0x50f3ae
cmp dword [edi + 4], 0x7fffffff
je 0x50f4c9
lea eax, [ebp - 0x3c]
push eax
call fcn.0049d140
mov ecx, dword [edi]
add esp, 4
mov edx, dword [edi + 4]
sub ecx, dword [eax]
sbb edx, dword [eax + 4]
js 0x50f3d7
jg 0x50f3cc
test ecx, ecx
jb 0x50f3d7
add ecx, 0xf423f
adc edx, 0
jmp 0x50f3e0
sub ecx, 0xf423f
sbb edx, 0
push 0
push 0xf4240
push edx
push ecx
call fcn.006defa0
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 0x50f4c9
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x30], 0x20
test eax, eax
jl 0x50f448
jg 0x50f424
cmp edi, 0x294
jb 0x50f448
push 0
push 0x14
push eax
push edi
call fcn.006defa0
mov ecx, eax
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x30], ecx
cmp ecx, 0x3e8
jbe 0x50f448
mov dword [ebp - 0x30], 0x3e8
jmp 0x50f460
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0
test eax, eax
jl 0x50f474
jg 0x50f460
test edi, edi
je 0x50f474
push 0xffffffffffffffff
push 0xffffd8f0
push eax
push edi
call fcn.006df130
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], edx
mov ecx, dword [0x7ff3cc]
test ecx, ecx
jne 0x50f4a5
push str.SetWaitableTimerEx
push 0x72c2a0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
mov ecx, 0x50efa0
cmovne ecx, eax
mov dword [0x7ff3cc], ecx
push dword [ebp - 0x30]
lea eax, [ebp - 0x28]
push 0
push 0
push 0
push 0
push eax
push esi
call ecx
test eax, eax
je 0x50f4c9
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x40], eax
mov dword [ebp + eax*4 - 0x20], esi
inc eax
mov dword [ebp - 0x2c], eax
or edi, 0xffffffff
xor edx, edx
mov dword [ebp - 0x24], edx
cmp dword [ebp - 0x40], edi
jne 0x50f52f
mov edx, dword [ebp + 0xc]
cmp dword [edx], edi
jne 0x50f4e6
cmp dword [edx + 4], 0x7fffffff
je 0x50f52f
lea eax, [ebp - 0x3c]
push eax
call fcn.0049d140
mov edi, dword [ebp + 0xc]
add esp, 4
mov edx, dword [edi]
sub edx, dword [eax]
mov ecx, dword [edi + 4]
sbb ecx, dword [eax + 4]
mov dword [ebp - 0x38], ecx
lea ecx, [ebp - 0x3c]
mov dword [ebp - 0x3c], edx
call fcn.0050f210
mov edi, eax
mov eax, edx
mov dword [ebp - 0x24], eax
test eax, eax
jg 0x50f52f
jl 0x50f51e
test edi, edi
jae 0x50f52f
xorps xmm0, xmm0
movlpd qword [ebp - 0x3c], xmm0
mov edx, dword [ebp - 0x38]
mov edi, dword [ebp - 0x3c]
mov dword [ebp - 0x24], edx
mov ecx, dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [ebp - 0x2c]
test eax, eax
je 0x50f595
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 0x50f59f
cmp eax, dword [ebp - 0x58]
je 0x50f6bb
cmp eax, dword [ebp - 0x48]
je 0x50f6d2
cmp eax, dword [ebp - 0x40]
jne 0x50f59f
test esi, esi
je 0x50f578
cmp esi, 0xffffffff
je 0x50f578
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.006def69
mov esp, ebp
pop ebp
ret
test edi, edi
jne 0x50f59c
push edi
jmp 0x50f59d
push edi
call ecx
cmp dword [ebp - 0x40], 0xffffffff
jne 0x50f68a
mov edx, dword [ebp + 0xc]
cmp dword [edx], 0xffffffff
jne 0x50f5be
cmp dword [edx + 4], 0x7fffffff
je 0x50f68a
lea eax, [ebp - 0x50]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
test eax, eax
jne 0x50f5d9
xorps xmm0, xmm0
movlpd qword [ebp - 0x34], xmm0
jmp 0x50f64f
cmp dword [ebp - 0x4c], 0
jg 0x50f5f1
jl 0x50f5cc
cmp dword [ebp - 0x50], 0
ja 0x50f5f1
xorps xmm0, xmm0
movlpd qword [ebp - 0x34], xmm0
jmp 0x50f64f
lea eax, [ebp - 0x3c]
xor edi, edi
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
jne 0x50f615
inc edi
cmp edi, 3
ja 0x50f5cc
lea eax, [ebp - 0x3c]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x50f601
mov edx, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x3c]
call fcn.006df410
mulsd xmm0, qword [0x7211b0]
mov edx, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x50]
movsd qword [ebp - 0x28], xmm0
call fcn.006df410
movsd xmm1, qword [ebp - 0x28]
divsd xmm1, xmm0
movaps xmm0, xmm1
call fcn.006df310
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], edx
mov edi, dword [ebp + 0xc]
mov eax, dword [edi]
sub eax, dword [ebp - 0x34]
mov ecx, dword [edi + 4]
sbb ecx, dword [ebp - 0x30]
js 0x50f66f
jg 0x50f665
test eax, eax
jb 0x50f66f
add eax, 0xf423f
adc ecx, 0
jmp 0x50f677
sub eax, 0xf423f
sbb ecx, 0
push 0
push 0xf4240
push ecx
push eax
call fcn.006defa0
mov dword [ebp - 0x24], edx
mov edi, eax
mov eax, dword [ebp - 0x24]
cmp edi, 0xffffffff
jne 0x50f6a0
mov ecx, dword [sym.imp.KERNEL32.dll_Sleep]
test eax, eax
je 0x50f535
test eax, eax
jl 0x50f568
jg 0x50f52f
test edi, edi
je 0x50f568
jmp 0x50f52f
test esi, esi
je 0x50f6cb
cmp esi, 0xffffffff
je 0x50f6cb
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov al, 1
jmp 0x50f57a
call fcn.0050f250
lea ecx, [eax + 0x34]
call sym.ClientofCSP.exe_public:_wchar_t_const____thiscall_DuiLib::CDuiString::operator_wchar_t_const__void_const
push eax
call dword [sym.imp.KERNEL32.dll_ResetEvent]
push 0x7d6ee4
lea eax, [ebp - 0x41]
push eax
call fcn.006e09bb
int3