Function at 0x40a1f0
Capabilities:
Inspect section memory permissions

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x78
mov r13d, r9d
mov r12, r8
mov rbp, rdx
mov r15, rcx
test rdx, rdx
mov qword [rsp + 0x40], rdx
je 0x40a285
lea rax, [r12 - 0x1000]
shr rax, 0xc
cmp rax, 0xdfffffe
ja 0x40a285
movabs rax, 0x10000000000
lea rdx, [rax + r12*2]
and rdx, 0xfffffffffffffff0
mov ecx, dword [r15]
mov ebx, r12d
and bl, 7
mov eax, ecx
bts eax, ebx
mov r8d, eax
or r8d, 0xc0000000
mov ebx, 0x40000000
mov edi, dword [rdx]
or edi, ebx
cmp edi, r8d
je 0x40a285
or ebx, dword [rdx + 4]
cmp ebx, r8d
je 0x40a285
mov ebx, 0x40000000
mov edi, dword [rdx + 8]
or edi, ebx
cmp edi, r8d
je 0x40a285
or ebx, dword [rdx + 0xc]
cmp ebx, r8d
jne 0x40ab9b
mov rcx, r15
call method.__tsan.SlotLock___tsan::ThreadState_
mov rcx, qword [0x0060ed28]
add rcx, 8
mov byte [rsp + 0x28], 1
mov byte [rsp + 0x20], 1
mov rdx, r15
mov r8, rbp
mov r9, r12
call method.__tsan::MetaMap.GetSync___tsan::ThreadState__unsigned_long_long__unsigned_long_long__bool__bool_
mov r14, rax
mov esi, dword [rax + 0x18]
mov rax, qword [r15 + 0x10]
lea ecx, [rax + 8]
test ecx, 0xff0
je 0x40ab43
shl r12, 0x14
mov rcx, rsi
shr rcx, 0xf
or rcx, r12
mov rdx, rbp
shl rdx, 5
movabs rbp, 0x1ffffffffffe0
and rbp, rdx
shl rsi, 0x31
lea rdx, [rsi + rbp]
add rdx, 0xc
mov qword [rax], rdx
mov qword [rax + 8], rcx
add rax, 0x10
mov qword [r15 + 0x10], rax
mov rax, qword [r14 + 8]
lea rbp, [r14 + 0x14]
mov rdx, 0xffffffffffffffff
xor ecx, ecx
lea rsi, [rsp + 0x50]
movabs r12, 0xbfffffffffffffff
movabs rbx, 0x4000000000000000
bt rax, 0x3c
jb 0x40a350
lea rdi, [rax + 1]
and rdi, rdx
lock cmpxchg qword [r14 + 8], rdi
je 0x40a3d1
add rcx, 1
jmp 0x40a330
cmp rcx, 0x5dc
jbe 0x40a3a1
lea r8, [rax + 0x100000]
and r8, rdx
lock cmpxchg qword [r14 + 8], r8
je 0x40a38c
jmp 0x40a34a
mov dword [rsp + 0x50], 0
mov r8d, 4
mov rcx, rbp
mov rdx, rsi
mov r9d, 0xffffffff
call sub.kernel32.dll_WaitOnAddress
mov eax, dword [rbp]
test eax, eax
je 0x40a36d
lea ecx, [rax - 1]
lock cmpxchg dword [rbp], ecx
jne 0x40a38f
xor ecx, ecx
jmp 0x40a3b4
test rax, rbx
jne 0x40a3c4
mov r8, rax
or r8, rbx
lock cmpxchg qword [r14 + 8], r8
jne 0x40a34a
mov rax, qword [r14 + 8]
add rcx, 1
mov rdx, r12
jmp 0x40a330
mov rax, qword [r14 + 8]
add rcx, 1
jmp 0x40a330
mov eax, r13d
and eax, 0x107
je 0x40a3ed
mov ecx, dword [r14 + 0x28]
test ecx, 0x107
jne 0x40a3ed
or ecx, eax
mov dword [r14 + 0x28], ecx
cmp dword [r14 + 0x1c], 0xffffffff
je 0x40a416
mov rax, qword [0x0060ed28]
cmp byte [rax + 0xa00196], 0
je 0x40a416
test dword [r14 + 0x28], 0x40000000
jne 0x40a416
or dword [r14 + 0x28], 0x40000000
cmp dword [r15 + 4], 0
je 0x40a4e8
mov eax, dword [r15]
mov dword [r14 + 0x20], eax
cmp byte [0x0060edb2], 0
je 0x40a55f
mov esi, r13d
and esi, 0x10
lea rax, method.__tsan::Callback.Unwind__
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x68], r15
mov rax, qword [rsp + 0x40]
mov qword [rsp + 0x70], rax
lea rdx, [rsp + 0x48]
xor ecx, ecx
call qword [0x0060ed20]
mov rax, qword [rsp + 0x48]
mov rax, qword [rax + 0x418]
mov qword [rsp + 0x58], rax
mov rax, qword [r15 + 0x278]
mov qword [rsp + 0x60], rax
test r13d, 0x20000000
je 0x40a4ad
test esi, esi
jne 0x40a4ad
mov rax, qword [0x0060ed28]
mov rcx, qword [rax + 0xa00188]
lea r8, [r14 + 0x30]
mov rax, qword [rcx]
lea rdx, [rsp + 0x50]
xor r9d, r9d
call qword [rax + 0x28]
shr esi, 4
test r13d, 0x20000000
sete bl
mov rax, qword [0x0060ed28]
mov rcx, qword [rax + 0xa00188]
lea r8, [r14 + 0x30]
mov rax, qword [rcx]
mov byte [rsp + 0x20], sil
lea rdx, [rsp + 0x50]
xor r9d, r9d
call qword [rax + 0x30]
or bl, sil
mov byte [rsp + 0x3f], bl
jmp 0x40a564
mov rax, qword [r14 + 0x50]
test rax, rax
je 0x40a421
lea rcx, [r15 + 0x2c]
lea rdx, [rax + 0x200]
cmp rcx, rdx
jae 0x40a73b
lea rcx, [r15 + 0x22c]
cmp rax, rcx
jae 0x40a73b
xor ecx, ecx
nop dword [rax + rax]
movzx edx, word [r15 + rcx*2 + 0x2c]
movzx ebp, word [rax + rcx*2]
cmp dx, bp
cmova ebp, edx
mov word [r15 + rcx*2 + 0x2c], bp
movzx edx, word [r15 + rcx*2 + 0x2e]
movzx ebp, word [rax + rcx*2 + 2]
cmp dx, bp
cmova ebp, edx
mov word [r15 + rcx*2 + 0x2e], bp
add rcx, 2
cmp rcx, 0x100
jne 0x40a520
jmp 0x40a421
mov byte [rsp + 0x3f], 1
movabs r13, 0xfffffeffffffffff
movabs rbp, 0x60000000000fffff
movabs rsi, 0x2000000000000000
movabs r12, 0xfffff0000000000
mov rax, qword [r14 + 8]
lea rdx, [rax - 1]
test rdx, rbp
sete r8b
test rdx, r12
setne cl
and cl, r8b
lea rdi, [rax + r13]
or rdi, rsi
test cl, cl
cmove rdi, rdx
lock cmpxchg qword [r14 + 8], rdi
je 0x40a5e7
nop dword [rax]
lea rdx, [rax - 1]
test rdx, rbp
sete bl
test rdx, r12
setne cl
and cl, bl
lea rbx, [rax + r13]
or rbx, rsi
test cl, cl
cmove rbx, rdx
lock cmpxchg qword [r14 + 8], rbx
jne 0x40a5c0
test cl, cl
jne 0x40ab63
mov byte [r15 + 0x290], 0
mov rcx, qword [r15 + 0x280]
mov rax, qword [rcx]
movabs r10, 0xefffffffffffffff
add rbp, 0xfffffffffff00001
xor r8d, r8d
movabs r9, 0xbfffff00000fffff
movabs r14, 0x4000000000000000
jmp 0x40a65b
mov rbx, rax
shr rbx, 0x14
and ebx, 0xfffff
test rax, rsi
cmovne rbx, r8
mov rdx, rdi
and rdx, r9
or rdx, r14
test rbx, rbx
cmove rdx, rdi
lock cmpxchg qword [rcx], rdx
je 0x40a6a3
mov rbx, rax
and rbx, r10
test rax, rbp
sete r11b
test rax, r12
setne dl
lea rdi, [rbx + r13]
add rdi, 1
or rdi, rsi
test r11b, dl
cmove rdi, rbx
je 0x40a630
lock cmpxchg qword [rcx], rdi
jne 0x40a65b
lock add dword [rcx + 8], 1
add rcx, 8
call sub.kernel32.dll_WakeByAddressSingle
mov rsi, qword [rsp + 0x40]
mov dil, byte [rsp + 0x3f]
jmp 0x40a6b6
test rbx, rbx
mov rsi, qword [rsp + 0x40]
mov dil, byte [rsp + 0x3f]
jne 0x40ab7a
cmp byte [0x0060edb2], 0
sete al
or dil, al
jne 0x40a729
lea rax, method.__tsan::Callback.Unwind__
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x68], r15
mov qword [rsp + 0x70], rsi
lea rdx, [rsp + 0x48]
xor ecx, ecx
call qword [0x0060ed20]
mov rax, qword [rsp + 0x48]
mov rax, qword [rax + 0x418]
mov qword [rsp + 0x58], rax
mov rax, qword [r15 + 0x278]
mov qword [rsp + 0x60], rax
mov rax, qword [0x0060ed28]
mov rcx, qword [rax + 0xa00188]
mov rax, qword [rcx]
lea rdx, [rsp + 0x50]
call qword [rax + 0x48]
mov rcx, r15
mov r8, rax
call method.__tsan.ReportDeadlock___tsan::ThreadState__unsigned_long_long____sanitizer::DDReport_
nop
add rsp, 0x78
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
movdqu xmm0, xmmword [rax]
movdqu xmm1, xmmword [rax + 0x10]
movdqu xmm2, xmmword [r15 + 0x2c]
movdqu xmm3, xmmword [r15 + 0x3c]
movdqu xmm4, xmmword [r15 + 0x4c]
movdqu xmm5, xmmword [r15 + 0x5c]
psubusw xmm0, xmm2
paddw xmm0, xmm2
psubusw xmm1, xmm3
paddw xmm1, xmm3
movdqu xmmword [r15 + 0x2c], xmm0
movdqu xmmword [r15 + 0x3c], xmm1
movdqu xmm0, xmmword [rax + 0x20]
movdqu xmm1, xmmword [rax + 0x30]
psubusw xmm0, xmm4
paddw xmm0, xmm4
psubusw xmm1, xmm5
paddw xmm1, xmm5
movdqu xmmword [r15 + 0x4c], xmm0
movdqu xmmword [r15 + 0x5c], xmm1
movdqu xmm0, xmmword [r15 + 0x6c]
movdqu xmm1, xmmword [r15 + 0x7c]
movdqu xmm2, xmmword [rax + 0x40]
movdqu xmm3, xmmword [rax + 0x50]
psubusw xmm2, xmm0
paddw xmm2, xmm0
psubusw xmm3, xmm1
paddw xmm3, xmm1
movdqu xmmword [r15 + 0x6c], xmm2
movdqu xmmword [r15 + 0x7c], xmm3
movdqu xmm0, xmmword [r15 + 0x8c]
movdqu xmm1, xmmword [r15 + 0x9c]
movdqu xmm2, xmmword [rax + 0x60]
movdqu xmm3, xmmword [rax + 0x70]
psubusw xmm2, xmm0
paddw xmm2, xmm0
psubusw xmm3, xmm1
paddw xmm3, xmm1
movdqu xmmword [r15 + 0x8c], xmm2
movdqu xmmword [r15 + 0x9c], xmm3
movdqu xmm0, xmmword [r15 + 0xac]
movdqu xmm1, xmmword [r15 + 0xbc]
movdqu xmm2, xmmword [rax + 0x80]
movdqu xmm3, xmmword [rax + 0x90]
psubusw xmm2, xmm0
paddw xmm2, xmm0
psubusw xmm3, xmm1
paddw xmm3, xmm1
movdqu xmmword [r15 + 0xac], xmm2
movdqu xmmword [r15 + 0xbc], xmm3
movdqu xmm0, xmmword [r15 + 0xcc]
movdqu xmm1, xmmword [r15 + 0xdc]
movdqu xmm2, xmmword [rax + 0xa0]
movdqu xmm3, xmmword [rax + 0xb0]
psubusw xmm2, xmm0
paddw xmm2, xmm0
psubusw xmm3, xmm1
paddw xmm3, xmm1
movdqu xmmword [r15 + 0xcc], xmm2
movdqu xmmword [r15 + 0xdc], xmm3
movdqu xmm0, xmmword [r15 + 0xec]
movdqu xmm1, xmmword [r15 + 0xfc]
movdqu xmm2, xmmword [rax + 0xc0]
movdqu xmm3, xmmword [rax + 0xd0]
psubusw xmm2, xmm0
paddw xmm2, xmm0
psubusw xmm3, xmm1
paddw xmm3, xmm1
movdqu xmmword [r15 + 0xec], xmm2
movdqu xmmword [r15 + 0xfc], xmm3
movdqu xmm0, xmmword [r15 + 0x10c]
movdqu xmm1, xmmword [r15 + 0x11c]
movdqu xmm2, xmmword [rax + 0xe0]
movdqu xmm3, xmmword [rax + 0xf0]
psubusw xmm2, xmm0
paddw xmm2, xmm0
psubusw xmm3, xmm1
paddw xmm3, xmm1
movdqu xmmword [r15 + 0x10c], xmm2
movdqu xmmword [r15 + 0x11c], xmm3
movdqu xmm0, xmmword [r15 + 0x12c]
movdqu xmm1, xmmword [r15 + 0x13c]
movdqu xmm2, xmmword [rax + 0x100]
movdqu xmm3, xmmword [rax + 0x110]
psubusw xmm2, xmm0
paddw xmm2, xmm0
psubusw xmm3, xmm1
paddw xmm3, xmm1
movdqu xmmword [r15 + 0x12c], xmm2
movdqu xmmword [r15 + 0x13c], xmm3
movdqu xmm0, xmmword [r15 + 0x14c]
movdqu xmm1, xmmword [r15 + 0x15c]
movdqu xmm2, xmmword [rax + 0x120]
movdqu xmm3, xmmword [rax + 0x130]
psubusw xmm2, xmm0
paddw xmm2, xmm0
psubusw xmm3, xmm1
paddw xmm3, xmm1
movdqu xmmword [r15 + 0x14c], xmm2
movdqu xmmword [r15 + 0x15c], xmm3
movdqu xmm0, xmmword [r15 + 0x16c]
movdqu xmm1, xmmword [r15 + 0x17c]
movdqu xmm2, xmmword [rax + 0x140]
movdqu xmm3, xmmword [rax + 0x150]
psubusw xmm2, xmm0
paddw xmm2, xmm0
psubusw xmm3, xmm1
paddw xmm3, xmm1
movdqu xmmword [r15 + 0x16c], xmm2
movdqu xmmword [r15 + 0x17c], xmm3
movdqu xmm0, xmmword [r15 + 0x18c]
movdqu xmm1, xmmword [r15 + 0x19c]
movdqu xmm2, xmmword [rax + 0x160]
movdqu xmm3, xmmword [rax + 0x170]
psubusw xmm2, xmm0
paddw xmm2, xmm0
psubusw xmm3, xmm1
paddw xmm3, xmm1
movdqu xmmword [r15 + 0x18c], xmm2
movdqu xmmword [r15 + 0x19c], xmm3
movdqu xmm0, xmmword [r15 + 0x1ac]
movdqu xmm1, xmmword [r15 + 0x1bc]
movdqu xmm2, xmmword [rax + 0x180]
movdqu xmm3, xmmword [rax + 0x190]
psubusw xmm2, xmm0
paddw xmm2, xmm0
psubusw xmm3, xmm1
paddw xmm3, xmm1
movdqu xmmword [r15 + 0x1ac], xmm2
movdqu xmmword [r15 + 0x1bc], xmm3
movdqu xmm0, xmmword [r15 + 0x1cc]
movdqu xmm1, xmmword [r15 + 0x1dc]
movdqu xmm2, xmmword [rax + 0x1a0]
movdqu xmm3, xmmword [rax + 0x1b0]
psubusw xmm2, xmm0
paddw xmm2, xmm0
psubusw xmm3, xmm1
paddw xmm3, xmm1
movdqu xmmword [r15 + 0x1cc], xmm2
movdqu xmmword [r15 + 0x1dc], xmm3
movdqu xmm0, xmmword [r15 + 0x1ec]
movdqu xmm1, xmmword [r15 + 0x1fc]
movdqu xmm2, xmmword [rax + 0x1c0]
movdqu xmm3, xmmword [rax + 0x1d0]
psubusw xmm2, xmm0
paddw xmm2, xmm0
psubusw xmm3, xmm1
paddw xmm3, xmm1
movdqu xmmword [r15 + 0x1ec], xmm2
movdqu xmmword [r15 + 0x1fc], xmm3
movdqu xmm0, xmmword [r15 + 0x20c]
movdqu xmm1, xmmword [r15 + 0x21c]
movdqu xmm2, xmmword [rax + 0x1e0]
movdqu xmm3, xmmword [rax + 0x1f0]
psubusw xmm2, xmm0
paddw xmm2, xmm0
psubusw xmm3, xmm1
paddw xmm3, xmm1
movdqu xmmword [r15 + 0x20c], xmm2
movdqu xmmword [r15 + 0x21c], xmm3
jmp 0x40a421
mov rcx, r15
call method.__tsan.TraceSwitchPart___tsan::ThreadState_
mov rax, qword [r15 + 0x10]
lea ecx, [rax + 8]
test ecx, 0xff0
jne 0x40a2c9
jmp 0x40a2c9
mov rcx, r14
add rcx, 0x10
lock add dword [r14 + 0x10], 1
call sub.kernel32.dll_WakeByAddressSingle
jmp 0x40a5ef
lock add dword [rcx + 0xc], ebx
add rcx, 0xc
cmp ebx, 1
jne 0x40ab91
call sub.kernel32.dll_WakeByAddressSingle
jmp 0x40a6b6
call sub.kernel32.dll_WakeByAddressAll
jmp 0x40a6b6
test ecx, ecx
js 0x40a285
mov rbx, qword [r15 + 0x10]
lea edi, [rbx + 8]
test edi, 0xff0
je 0x40ac0c
mov rbp, qword [rsp + 0x40]
mov rdi, rbp
sub rdi, qword [r15 + 0x18]
add rdi, 0x4000
mov qword [r15 + 0x18], rbp
cmp rdi, 0x7fff
ja 0x40ac33
shl edi, 5
mov rsi, r12
shl rsi, 0x14
and edi, 0xfffe0
add rdi, rsi
add rdi, 7
mov qword [rbx], rdi
add rbx, 8
mov qword [r15 + 0x10], rbx
mov r9d, dword [rdx]
mov rdi, rdx
test r9, r9
mov rbp, qword [rsp + 0x40]
jne 0x40ac50
mov dword [rdi], r8d
jmp 0x40a285
mov qword [rsp + 0x20], 3
mov r9d, 1
mov rcx, r15
mov rbp, qword [rsp + 0x40]
mov rdx, rbp
mov r8, r12
call method.__tsan.TraceRestartMemoryAccess___tsan::ThreadState__unsigned_long_long__unsigned_long_long__unsigned_long_long__unsigned_long_long_
jmp 0x40a285
mov rbp, r12
shl rbp, 0x14
or rbp, 0x60
mov qword [rbx], rbp
mov rbp, qword [rsp + 0x40]
mov qword [rbx + 8], rbp
add rbx, 0x10
jmp 0x40abf0
shr ecx, 8
test r9b, al
jne 0x40ac75
xor ebx, ebx
lea rdi, [rdx + 4]
mov r9d, dword [rdi]
test r9, r9
jne 0x40ac97
test bl, bl
mov rbp, qword [rsp + 0x40]
jne 0x40a285
jmp 0x40ac04
mov rbx, r9
shr rbx, 8
cmp cl, bl
jne 0x40acf8
xor ebx, ebx
cmp r9d, 0xc0000000
jb 0x40ac5a
cmp al, r9b
jne 0x40ac5a
mov dword [rdx], r8d
mov bl, 1
jmp 0x40ac5a
test r9b, al
jne 0x40ad25
lea rdi, [rdx + 8]
mov r9d, dword [rdi]
test r9, r9
je 0x40ac66
test r9b, al
jne 0x40ad55
lea rdi, [rdx + 0xc]
mov r9d, dword [rdi]
test r9, r9
je 0x40ac66
test r9b, al
je 0x40ada5
mov rsi, r9
shr rsi, 8
cmp cl, sil
jne 0x40ad85
cmp r9d, 0xc0000000
jb 0x40ada5
cmp al, r9b
jne 0x40ada5
mov dword [rdi], r8d
jmp 0x40ae2a
cmp r9d, 0x3fffffff
ja 0x40ac58
mov ebp, r9d
shr ebp, 0x10
movzx ebx, bl
and ebp, 0x3fff
cmp word [r15 + rbx*2 + 0x2c], bp
jae 0x40ac58
jmp 0x40ae19
mov rsi, r9
shr rsi, 8
cmp cl, sil
jne 0x40adc5
cmp r9d, 0xc0000000
jb 0x40aca0
cmp al, r9b
jne 0x40aca0
mov dword [rdi], r8d
mov bl, 1
jmp 0x40aca0
mov rsi, r9
shr rsi, 8
cmp cl, sil
jne 0x40adf0
cmp r9d, 0xc0000000
jb 0x40acb5
cmp al, r9b
jne 0x40acb5
mov dword [rdi], r8d
mov bl, 1
jmp 0x40acb5
cmp r9d, 0x3fffffff
ja 0x40ada5
mov eax, r9d
shr eax, 0x10
movzx ecx, sil
and eax, 0x3fff
cmp word [r15 + rcx*2 + 0x2c], ax
jb 0x40ae19
test bl, bl
mov rbp, qword [rsp + 0x40]
jne 0x40a285
mov rax, qword [r15 + 0x10]
shr rax, 1
and eax, 0xc
mov dword [rdx + rax], r8d
jmp 0x40a285
cmp r9d, 0x3fffffff
ja 0x40aca0
mov ebp, r9d
shr ebp, 0x10
movzx edi, sil
and ebp, 0x3fff
cmp word [r15 + rdi*2 + 0x2c], bp
jae 0x40aca0
jmp 0x40ae19
cmp r9d, 0x3fffffff
ja 0x40acb5
mov ebp, r9d
shr ebp, 0x10
movzx edi, sil
and ebp, 0x3fff
cmp word [r15 + rdi*2 + 0x2c], bp
jae 0x40acb5
mov qword [rsp + 0x20], 3
mov rcx, r15
call method.__tsan.DoReportRace___tsan::ThreadState____tsan::RawShadow____tsan::Shadow____tsan::Shadow__unsigned_long_long_
mov rbp, qword [rsp + 0x40]
jmp 0x40a285