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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4ec4fd
mov eax, dword fs:[0]
push eax
sub esp, 0x4c
mov eax, dword [0x537700]
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 - 0x38], 0xffffffff
movups xmmword [ebp - 0x20], xmm0
cmp ecx, 0xffffffff
je 0x4b580a
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 [0x53753c]
setne al
mov dword [ebp - 0x30], eax
cmp ecx, 0xffffffff
jne 0x4b5831
mov dword [ebp - 0x2c], eax
jmp 0x4b5881
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 0x4b5881
mov eax, dword [0x53753c]
cmp eax, 0xffffffff
jne 0x4b5852
xor ecx, ecx
jmp 0x4b585c
push eax
call edi
mov ecx, eax
mov eax, dword [0x53753c]
cmp byte [ecx + 0x38], 0
mov dword [ebp - 0x2c], esi
je 0x4b5881
mov dword [ebp - 0x48], esi
cmp eax, 0xffffffff
jne 0x4b5871
xor eax, eax
jmp 0x4b5874
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 0x4b589e
cmp dword [ecx + 4], 0x7fffffff
je 0x4b59c4
lea eax, [ebp - 0x40]
push eax
call fcn.00444ba0
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 0x4b58ca
jg 0x4b58bf
test ecx, ecx
jb 0x4b58ca
add ecx, 0xf423f
adc edx, 0
jmp 0x4b58d3
sub ecx, 0xf423f
sbb edx, 0
push 0
push 0xf4240
push edx
push ecx
call fcn.004b8a00
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 0x4b59c1
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x30], 0x20
test eax, eax
jl 0x4b593b
jg 0x4b5917
cmp edi, 0x294
jb 0x4b593b
push 0
push 0x14
push eax
push edi
call fcn.004b8a00
mov ecx, eax
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x30], ecx
cmp ecx, 0x3e8
jbe 0x4b593b
mov dword [ebp - 0x30], 0x3e8
jmp 0x4b5953
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0
test eax, eax
jl 0x4b5967
jg 0x4b5953
test edi, edi
je 0x4b5967
push 0xffffffffffffffff
push 0xffffd8f0
push eax
push edi
call fcn.004b8ab0
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], edx
mov ecx, dword [0x53bd8c]
test ecx, ecx
jne 0x4b5998
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, 0x4b5490
cmovne ecx, eax
mov dword [0x53bd8c], 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 0x4b59c4
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 0x4b59c4
mov ecx, dword [ebp + 0xc]
or edi, 0xffffffff
xor eax, eax
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x38], edi
jne 0x4b5a5c
cmp dword [ecx], edi
jne 0x4b59e2
cmp dword [ecx + 4], 0x7fffffff
je 0x4b5a5c
lea eax, [ebp - 0x40]
push eax
call fcn.00444ba0
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 0x4b5a23
jg 0x4b5a03
test ecx, ecx
jb 0x4b5a23
add ecx, 0xf423f
push 0
push 0xf4240
adc edx, 0
push edx
push ecx
call fcn.004b8a00
mov edi, eax
mov eax, edx
mov dword [ebp - 0x24], eax
jmp 0x4b5a41
sub ecx, 0xf423f
push 0
push 0xf4240
sbb edx, 0
push edx
push ecx
call fcn.004b8a00
mov edi, eax
mov dword [ebp - 0x24], edx
mov eax, edx
test eax, eax
jg 0x4b5a5c
jl 0x4b5a4b
test edi, edi
jae 0x4b5a5c
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 0x4b5ac2
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 0x4b5acc
cmp eax, dword [ebp - 0x58]
je 0x4b5bee
cmp eax, dword [ebp - 0x48]
je 0x4b5c05
cmp eax, dword [ebp - 0x38]
jne 0x4b5acc
test esi, esi
je 0x4b5aa5
cmp esi, 0xffffffff
je 0x4b5aa5
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.004b847a
mov esp, ebp
pop ebp
ret
test edi, edi
jne 0x4b5ac9
push edi
jmp 0x4b5aca
push edi
call ecx
cmp dword [ebp - 0x38], 0xffffffff
jne 0x4b5bbd
mov eax, dword [ebp + 0xc]
cmp dword [eax], 0xffffffff
jne 0x4b5aeb
cmp dword [eax + 4], 0x7fffffff
je 0x4b5bbd
lea eax, [ebp - 0x50]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
test eax, eax
jne 0x4b5b03
xorps xmm0, xmm0
movlpd qword [ebp - 0x34], xmm0
jmp 0x4b5b7e
cmp dword [ebp - 0x4c], 0
jg 0x4b5b1b
jl 0x4b5af9
cmp dword [ebp - 0x50], 0
ja 0x4b5b1b
xorps xmm0, xmm0
movlpd qword [ebp - 0x34], xmm0
jmp 0x4b5b7e
lea eax, [ebp - 0x40]
xor edi, edi
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
jne 0x4b5b44
nop dword [eax + eax]
inc edi
cmp edi, 3
ja 0x4b5af9
lea eax, [ebp - 0x40]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x4b5b30
mov edx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x40]
call fcn.004b8cc0
mulsd xmm0, qword [0x4f39c0]
mov edx, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x50]
movsd qword [ebp - 0x28], xmm0
call fcn.004b8cc0
movsd xmm1, qword [ebp - 0x28]
divsd xmm1, xmm0
movaps xmm0, xmm1
call fcn.004b8bc0
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 0x4b5bb3
jg 0x4b5b94
test eax, eax
jb 0x4b5bb3
add eax, 0xf423f
adc ecx, 0
push 0
push 0xf4240
push ecx
push eax
call fcn.004b8a00
mov edi, eax
mov eax, edx
mov dword [ebp - 0x24], eax
jmp 0x4b5bc0
sub eax, 0xf423f
sbb ecx, 0
jmp 0x4b5b9c
mov eax, dword [ebp - 0x24]
cmp edi, 0xffffffff
jne 0x4b5bd3
mov ecx, dword [sym.imp.KERNEL32.dll_Sleep]
test eax, eax
je 0x4b5a62
test eax, eax
jl 0x4b5a95
jg 0x4b5a5c
test edi, edi
je 0x4b5a95
jmp 0x4b5a5c
test esi, esi
je 0x4b5bfe
cmp esi, 0xffffffff
je 0x4b5bfe
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov al, 1
jmp 0x4b5aa7
call fcn.004b5700
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 0x519e2c
lea eax, [ebp - 0x41]
push eax
call fcn.004b9c4c
int3