Function at 0x5225e0
Capabilities:
Execute anti-debugging instructions

Disassembly:
mov qword [rsp + 0x10], rdx
mov rax, rsp
sub rsp, 0xb8
mov qword [rsp + 0x38], 0xfffffffffffffffe
mov qword [rax + 0x20], rbx
mov qword [rax - 8], rbp
mov qword [rax - 0x10], rsi
mov qword [rax - 0x18], rdi
mov qword [rax - 0x20], r12
mov qword [rax - 0x28], r13
mov qword [rax - 0x30], r14
mov qword [rax - 0x38], r15
movdqa xmmword [rax - 0x48], xmm6
mov r12, r8
mov rsi, rdx
mov rbx, rcx
xor r14d, r14d
mov dword [rax + 8], r14d
mov rdi, qword [rcx + 0x40]
mov qword [rax - 0x68], rdi
mov dword [rax - 0x60], 0x75
lea r13, [0x005df7e8]
mov qword [rax - 0x58], r13
test rdi, rdi
je 0x52268e
cmp dword [rdi + 0x88], r14d
je 0x522674
mov qword [rsp + 0x20], r13
lea r9d, [r14 + 0x75]
lea r8, str.two_calls_to_Start_without_a_call_to_Stop
lea rdx, str.m_uStartCnt__0
mov rcx, rdi
call fcn.004a4dc0
rdtsc
shl rdx, 0x20
or rax, rdx
mov qword [rdi + 0x80], rax
mov dword [rdi + 0x88], 1
lea r15, [0x006480e0]
mov qword [rsp + 0x40], r15
mov byte [rsp + 0x48], 1
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
nop
movsd xmm0, qword [rbx + 0x20]
ucomisd xmm0, qword [0x005c4438]
jp 0x522728
jne 0x522728
mov qword [rsi], r14
mov dword [rsp + 0xc0], 1
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
nop
test rdi, rdi
je 0x522720
cmp dword [rdi + 0x88], 1
je 0x522701
mov qword [rsp + 0x20], r13
mov r9d, 0x75
lea r8, str.Stop_called_without_corresponding_call_to_Start__m_uStartCnt__0__or_ReentrantStop_should_have_been_called__m_uStartCnt___1_
lea rdx, str.m_uStartCnt__1
mov rcx, rdi
call fcn.004a4dc0
rdtsc
shl rdx, 0x20
or rax, rdx
sub rax, qword [rdi + 0x80]
add qword [rdi + 0x18], rax
add dword [rdi + 8], 1
mov dword [rdi + 0x88], r14d
mov rax, rsi
jmp 0x522a9a
lea rcx, [rsp + 0x30]
call fcn.004a03e0
mov rbp, qword [rax]
cmp rbp, qword [rbx + 0x30]
jae 0x5227a9
mov qword [rsi], r14
mov dword [rsp + 0xc0], 1
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
nop
test rdi, rdi
je 0x5227a1
cmp dword [rdi + 0x88], 1
je 0x522782
mov qword [rsp + 0x20], r13
mov r9d, 0x75
lea r8, str.Stop_called_without_corresponding_call_to_Start__m_uStartCnt__0__or_ReentrantStop_should_have_been_called__m_uStartCnt___1_
lea rdx, str.m_uStartCnt__1
mov rcx, rdi
call fcn.004a4dc0
rdtsc
shl rdx, 0x20
or rax, rdx
sub rax, qword [rdi + 0x80]
add qword [rdi + 0x18], rax
add dword [rdi + 8], 1
mov dword [rdi + 0x88], r14d
mov rax, rsi
jmp 0x522a9a
mov r8, rbp
mov rdx, r12
lea rcx, [rbx + 0x48]
call fcn.00522340
cvtsi2sd xmm6, qword [rbx + 0x48]
mov rax, qword [rbx + 0x50]
test rax, rax
je 0x5227d8
cvtsi2sd xmm0, rax
divsd xmm0, qword [0x005c0568]
divsd xmm6, xmm0
mov rcx, rbp
sub rcx, qword [rbx + 0x30]
mov rax, qword [rbx + 0x38]
cmp rcx, rax
ja 0x52285d
mov qword [rsi], r14
mov dword [rsp + 0xc0], 1
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
nop
test rdi, rdi
je 0x522855
cmp dword [rdi + 0x88], 1
je 0x522836
lea rax, [0x005df7e8]
mov qword [rsp + 0x20], rax
mov r9d, 0x75
lea r8, str.Stop_called_without_corresponding_call_to_Start__m_uStartCnt__0__or_ReentrantStop_should_have_been_called__m_uStartCnt___1_
lea rdx, str.m_uStartCnt__1
mov rcx, rdi
call fcn.004a4dc0
rdtsc
shl rdx, 0x20
or rax, rdx
sub rax, qword [rdi + 0x80]
add qword [rdi + 0x18], rax
add dword [rdi + 8], 1
mov dword [rdi + 0x88], r14d
mov rax, rsi
jmp 0x522a9a
sub rcx, rax
add qword [rbx + 8], r12
movabs rax, 0xd6bf94d5e57a42bd
mul rcx
shr rdx, 0x17
mov dword [rbx + 0x10], edx
movsd qword [rbx + 0x18], xmm6
lea rcx, [rsp + 0x30]
call fcn.004a03e0
mov r12, qword [rax]
cmp r12, rbp
ja 0x522904
mov qword [rsi], r14
mov dword [rsp + 0xc0], 1
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
nop
test rdi, rdi
je 0x5228fc
cmp dword [rdi + 0x88], 1
je 0x5228dd
lea rax, [0x005df7e8]
mov qword [rsp + 0x20], rax
mov r9d, 0x75
lea r8, str.Stop_called_without_corresponding_call_to_Start__m_uStartCnt__0__or_ReentrantStop_should_have_been_called__m_uStartCnt___1_
lea rdx, str.m_uStartCnt__1
mov rcx, rdi
call fcn.004a4dc0
rdtsc
shl rdx, 0x20
or rax, rdx
sub rax, qword [rdi + 0x80]
add qword [rdi + 0x18], rax
add dword [rdi + 8], 1
mov dword [rdi + 0x88], r14d
mov rax, rsi
jmp 0x522a9a
sub r12, rbp
mov rdx, r12
lea rcx, [rbx + 0x48]
call fcn.00521ba0
add qword [rbx + 0x38], r12
mov eax, dword [0x006480c8]
test al, 1
jne 0x522940
or eax, 1
mov dword [0x006480c8], eax
lea rcx, [rsp + 0x30]
call fcn.004a03e0
mov rcx, qword [rax]
mov qword [0x006480c0], rcx
jmp 0x522947
mov rcx, qword [0x006480c0]
mov eax, 0x1f4
movsd xmm2, qword [rbx + 0x20]
movsd xmm3, qword [0x005df7e0]
comisd xmm2, xmm6
jbe 0x52297a
movsd xmm1, xmm2
subsd xmm1, xmm6
movsd xmm0, xmm2
mulsd xmm0, xmm3
comisd xmm1, xmm0
jbe 0x52297a
mov eax, 0xc8
comisd xmm6, xmm2
jbe 0x52299b
movsd xmm1, xmm6
subsd xmm1, xmm2
movsd xmm0, xmm2
mulsd xmm0, xmm3
comisd xmm1, xmm0
jbe 0x52299b
mov eax, 0xc8
cmp rbp, rcx
jbe 0x5229fa
imul rax, rax, 0x2710
sub rbp, rcx
cmp rbp, rax
jbe 0x5229fa
movsd xmm1, xmm2
mulsd xmm1, qword [0x005df7d8]
movsd xmm0, xmm1
addsd xmm0, xmm2
comisd xmm6, xmm0
jbe 0x5229cf
add dword [rbx + 0x28], 1
jmp 0x5229e6
subsd xmm2, xmm1
comisd xmm2, xmm6
jbe 0x5229e6
mov eax, dword [rbx + 0x28]
test eax, eax
je 0x5229e6
add eax, 0xffffffff
mov dword [rbx + 0x28], eax
lea rcx, [rsp + 0x30]
call fcn.004a03e0
mov rcx, qword [rax]
mov qword [0x006480c0], rcx
mov edx, dword [rbx + 0x28]
test edx, edx
je 0x522a2a
lea rcx, [rsp + 0x30]
call fcn.004bfcd0
mov rbx, qword [rsp + 0x30]
test rbx, rbx
je 0x522a2a
add dword [rbx], 0xffffffff
jne 0x522a2a
mov rcx, rbx
call fcn.0045f110
mov rcx, rbx
call fcn.00568830
mov qword [rsi], r14
mov dword [rsp + 0xc0], 1
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
nop
test rdi, rdi
je 0x522a97
cmp dword [rdi + 0x88], 1
je 0x522a78
lea rax, [0x005df7e8]
mov qword [rsp + 0x20], rax
mov r9d, 0x75
lea r8, str.Stop_called_without_corresponding_call_to_Start__m_uStartCnt__0__or_ReentrantStop_should_have_been_called__m_uStartCnt___1_
lea rdx, str.m_uStartCnt__1
mov rcx, rdi
call fcn.004a4dc0
rdtsc
shl rdx, 0x20
or rax, rdx
sub rax, qword [rdi + 0x80]
add qword [rdi + 0x18], rax
add dword [rdi + 8], 1
mov dword [rdi + 0x88], r14d
mov rax, rsi
mov rbx, qword [rsp + 0xd8]
mov rbp, qword [rsp + 0xb0]
mov rsi, qword [rsp + 0xa8]
mov rdi, qword [rsp + 0xa0]
mov r12, qword [rsp + 0x98]
mov r13, qword [rsp + 0x90]
mov r14, qword [rsp + 0x88]
mov r15, qword [rsp + 0x80]
movdqa xmm6, xmmword [rsp + 0x70]
add rsp, 0xb8
ret