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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4d75d8
mov eax, dword fs:[0]
push eax
sub esp, 0x4c
mov eax, dword [0x508164]
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 [0x508148]
setne al
mov dword [ebp - 0x30], eax
cmp ecx, 0xffffffff
jne 0x48cbc6
mov dword [ebp - 0x2c], eax
jmp 0x48cc16
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 0x48cc16
mov eax, dword [0x508148]
cmp eax, 0xffffffff
jne 0x48cbe7
xor ecx, ecx
jmp 0x48cbf1
push eax
call edi
mov ecx, eax
mov eax, dword [0x508148]
cmp byte [ecx + 0x38], 0
mov dword [ebp - 0x2c], esi
je 0x48cc16
mov dword [ebp - 0x48], esi
cmp eax, 0xffffffff
jne 0x48cc06
xor eax, eax
jmp 0x48cc09
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 0x48cc33
cmp dword [ecx + 4], 0x7fffffff
je 0x48cd5b
lea eax, [ebp - 0x40]
push eax
call fcn.0048d450
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 0x48cc5f
jg 0x48cc54
test ecx, ecx
jb 0x48cc5f
add ecx, 0xf423f
adc edx, 0
jmp 0x48cc68
sub ecx, 0xf423f
sbb edx, 0
push 0
push 0xf4240
push edx
push ecx
call fcn.0048eab0
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 0x48cd58
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x30], 0x20
test eax, eax
jl 0x48ccc9
jg 0x48ccac
cmp edi, 0x294
jb 0x48ccc9
push 0
push 0x14
push eax
push edi
call fcn.0048eab0
mov ecx, eax
mov eax, 0x3e8
cmp ecx, eax
cmova ecx, eax
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0
test eax, eax
jl 0x48ccf5
jg 0x48cce1
test edi, edi
je 0x48ccf5
push 0xffffffffffffffff
push 0xffffd8f0
push eax
push edi
call fcn.0048e8a0
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], edx
mov eax, dword [0x50c478]
test eax, eax
jne 0x48cd2f
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
je 0x48cd20
mov dword [0x50c478], eax
jmp 0x48cd2f
mov dword [0x50c478], 0x48c7c0
mov eax, 0x48c7c0
push dword [ebp - 0x30]
lea ecx, [ebp - 0x28]
push 0
push 0
push 0
push 0
push ecx
push esi
call eax
mov ecx, dword [ebp + 0xc]
test eax, eax
je 0x48cd5b
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 0x48cd5b
mov ecx, dword [ebp + 0xc]
or edi, 0xffffffff
xor eax, eax
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x38], edi
jne 0x48cdf3
cmp dword [ecx], edi
jne 0x48cd79
cmp dword [ecx + 4], 0x7fffffff
je 0x48cdf3
lea eax, [ebp - 0x40]
push eax
call fcn.0048d450
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 0x48cdba
jg 0x48cd9a
test ecx, ecx
jb 0x48cdba
add ecx, 0xf423f
push 0
push 0xf4240
adc edx, 0
push edx
push ecx
call fcn.0048eab0
mov edi, eax
mov eax, edx
mov dword [ebp - 0x24], eax
jmp 0x48cdd8
sub ecx, 0xf423f
push 0
push 0xf4240
sbb edx, 0
push edx
push ecx
call fcn.0048eab0
mov edi, eax
mov dword [ebp - 0x24], edx
mov eax, edx
test eax, eax
jg 0x48cdf3
jl 0x48cde2
test edi, edi
jae 0x48cdf3
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]
nop dword [eax]
mov eax, dword [ebp - 0x2c]
test eax, eax
je 0x48ce60
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 0x48ce6a
cmp eax, dword [ebp - 0x58]
je 0x48cf8e
cmp eax, dword [ebp - 0x48]
je 0x48cfa5
cmp eax, dword [ebp - 0x38]
jne 0x48ce6a
test esi, esi
je 0x48ce43
cmp esi, 0xffffffff
je 0x48ce43
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.0048d8b2
mov esp, ebp
pop ebp
ret
test edi, edi
jne 0x48ce67
push edi
jmp 0x48ce68
push edi
call ecx
cmp dword [ebp - 0x38], 0xffffffff
jne 0x48cf5d
mov eax, dword [ebp + 0xc]
cmp dword [eax], 0xffffffff
jne 0x48ce89
cmp dword [eax + 4], 0x7fffffff
je 0x48cf5d
lea eax, [ebp - 0x50]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
test eax, eax
jne 0x48cea1
xorps xmm0, xmm0
movlpd qword [ebp - 0x34], xmm0
jmp 0x48cf1e
cmp dword [ebp - 0x4c], 0
jg 0x48ceb9
jl 0x48ce97
cmp dword [ebp - 0x50], 0
ja 0x48ceb9
xorps xmm0, xmm0
movlpd qword [ebp - 0x34], xmm0
jmp 0x48cf1e
lea eax, [ebp - 0x40]
xor edi, edi
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
jne 0x48cee4
nop dword [eax]
inc edi
cmp edi, 3
ja 0x48ce97
lea eax, [ebp - 0x40]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x48ced0
mov edx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x40]
call fcn.0048e800
mulsd xmm0, qword [0x4dc318]
mov edx, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x50]
movsd qword [ebp - 0x28], xmm0
call fcn.0048e800
movsd xmm1, qword [ebp - 0x28]
divsd xmm1, xmm0
movaps xmm0, xmm1
call fcn.0048e6af
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 0x48cf53
jg 0x48cf34
test eax, eax
jb 0x48cf53
add eax, 0xf423f
adc ecx, 0
push 0
push 0xf4240
push ecx
push eax
call fcn.0048eab0
mov edi, eax
mov eax, edx
mov dword [ebp - 0x24], eax
jmp 0x48cf60
sub eax, 0xf423f
sbb ecx, 0
jmp 0x48cf3c
mov eax, dword [ebp - 0x24]
cmp edi, 0xffffffff
jne 0x48cf73
mov ecx, dword [sym.imp.KERNEL32.dll_Sleep]
test eax, eax
je 0x48ce00
test eax, eax
jl 0x48ce33
jg 0x48cdf3
test edi, edi
je 0x48ce33
jmp 0x48cdf3
test esi, esi
je 0x48cf9e
cmp esi, 0xffffffff
je 0x48cf9e
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov al, 1
jmp 0x48ce45
call fcn.0048cac0
lea ecx, [eax + 0x34]
call fcn.00403e20
push eax
call dword [sym.imp.KERNEL32.dll_ResetEvent]
push 0x503bc0
lea eax, [ebp - 0x41]
push eax
call fcn.004a538b
int3