Function at 0x14010dcb0
Capabilities:
Get thread local storage value

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x258
movaps xmmword [rsp + 0x240], xmm6
mov r14, r8
mov rbx, rdx
mov r15, rcx
mov rax, qword [0x14029a038]
xor rax, rsp
mov qword [rsp + 0x238], rax
mov rax, qword [r8]
movzx eax, byte [rax + 0x16]
and eax, 0x7f
mov bpl, 1
cmp eax, 1
jne 0x14010e895
mov rax, qword [r15 + 0x30]
mov ecx, 2
lock xadd dword [rax], ecx
test cl, 1
jne 0x14010f1ba
xorps xmm0, xmm0
movaps xmmword [rsp + 0x50], xmm0
movaps xmmword [rsp + 0x60], xmm0
movaps xmmword [rsp + 0x1a0], xmm0
movaps xmmword [rsp + 0x1b0], xmm0
movaps xmmword [rsp + 0x1c0], xmm0
movaps xmmword [rsp + 0x1d0], xmm0
movaps xmmword [rsp + 0x1e0], xmm0
xor eax, eax
mov qword [rsp + 0x1ed], rax
mov byte [rsp + 0x19d], 0xaa
mov byte [rsp + 0x190], 0
mov qword [rsp + 0x191], rax
mov dword [rsp + 0x199], 0x102
mov rsi, qword [r14]
mov qword [rsp + 0x220], rsi
add rsi, 0x20
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x14010ea80
test bpl, bpl
je 0x14010f17c
mov r12, qword [r14]
mov rax, qword [r12]
mov rax, qword [rax + 0x30]
lea rcx, [0x140177260]
cmp rax, rcx
jne 0x14010e2d3
movaps xmm0, xmmword [0x140270690]
movaps xmmword [rsp + 0x110], xmm0
movaps xmmword [rsp + 0x120], xmm0
movaps xmmword [rsp + 0x130], xmm0
movaps xmmword [rsp + 0x140], xmm0
movaps xmmword [rsp + 0x150], xmm0
movaps xmmword [rsp + 0x160], xmm0
movaps xmmword [rsp + 0x170], xmm0
movaps xmmword [rsp + 0x180], xmm0
lea r13, [r12 + 0x50]
mov rdi, qword [r12 + 0x60]
lea rsi, [r12 + 0x70]
cmp rdi, qword [r12 + 0x68]
je 0x14010f218
mov rax, qword [r12 + 0x58]
mov rcx, qword [r12 + 0x78]
cmp rcx, qword [r12 + 0x80]
jne 0x14010f1c9
cmp rax, rdi
jb 0x14010f230
mov rax, qword [r12 + 0x50]
shl rdi, 7
add rax, rdi
add rax, 0x28
mov rcx, qword [rax - 0x28]
lea rdx, [rsp + 0x138]
mov qword [rdx - 0x28], rcx
mov qword [rax - 0x28], 0
movups xmm0, xmmword [rax - 0x20]
movups xmm1, xmmword [rax - 0x10]
movups xmmword [rdx - 0x10], xmm1
movups xmmword [rdx - 0x20], xmm0
mov ecx, 0xa
mov rdi, rdx
mov rsi, rax
rep movsq qword [rdi], qword [rsi]
mov cl, byte [rax + 0x54]
mov byte [rdx + 0x54], cl
mov eax, dword [rax + 0x50]
mov dword [rdx + 0x50], eax
mov rcx, qword [r12 + 0x58]
mov rax, qword [r12 + 0x60]
lea rdx, [rax + 1]
cmp rcx, rdx
jb 0x14010f233
cmp rcx, rax
jb 0x14010f236
movabs rcx, 0x7fffffffffffffff
cmp rax, rcx
je 0x14010f239
mov rcx, qword [r13]
shl rax, 7
mov rcx, qword [rcx + rax]
test rcx, rcx
jne 0x14010e9a1
mov rax, qword [r12 + 0x58]
mov rcx, qword [r12 + 0x60]
inc rcx
xor edx, edx
cmp rcx, rax
cmovne rdx, rcx
mov qword [r12 + 0x60], rdx
cmp rax, 5
jae 0x14010e921
mov rax, qword [r12 + 0x60]
mov rcx, qword [r12 + 0x78]
mov rdx, qword [r12 + 0x80]
cmp rax, qword [r12 + 0x68]
jne 0x14010e8db
cmp rcx, rdx
jne 0x14010f250
lea rax, [rsp + 0x138]
mov r13, qword [rax - 0x28]
mov qword [rax - 0x28], 0
movups xmm0, xmmword [rax - 0x20]
movaps xmmword [rsp + 0x50], xmm0
movups xmm0, xmmword [rax - 0x10]
movaps xmmword [rsp + 0x60], xmm0
lea rdx, [rsp + 0x1a0]
mov ecx, 0xa
mov rdi, rdx
mov rsi, rax
rep movsq qword [rdi], qword [rsi]
mov ecx, dword [rax + 0x50]
mov dword [rdx + 0x50], ecx
mov cl, byte [rax + 0x54]
mov byte [rdx + 0x54], cl
mov rcx, qword [rsp + 0x220]
mov dl, byte [rcx + 0x14]
mov byte [rax - 0x20], dl
mov rdx, qword [rcx + 0xc]
mov qword [rax - 0x28], rdx
mov r8b, byte [rcx + 0x19]
mov byte [rax - 0x1b], r8b
mov r8d, dword [rcx + 0x15]
mov dword [rax - 0x1f], r8d
mov qword [rsp + 0x190], rdx
mov rax, qword [rax - 0x22]
mov qword [rsp + 0x196], rax
test rcx, rcx
je 0x14010dfb0
add rcx, 0x20
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov r12, qword [r14]
lea rax, [rsp + 0xb8]
mov qword [rax - 0x28], r13
movaps xmm0, xmmword [rsp + 0x50]
movaps xmm1, xmmword [rsp + 0x60]
movups xmmword [rax - 0x20], xmm0
movups xmmword [rax - 0x10], xmm1
lea rdx, [rsp + 0x1a0]
mov ecx, 0xa
mov rdi, rax
mov rsi, rdx
rep movsq qword [rdi], qword [rsi]
mov cl, byte [rdx + 0x54]
mov byte [rax + 0x54], cl
mov ecx, dword [rdx + 0x50]
mov dword [rax + 0x50], ecx
mov rax, qword [r15]
mov rax, qword [rax + 8]
lea rcx, [0x1400d6650]
cmp rax, rcx
jne 0x14010f199
movaps xmm6, xmmword [0x140270690]
lea rsi, [rsp + 0x80]
movaps xmmword [rsi], xmm6
mov rax, qword [r12]
mov rax, qword [rax]
mov rcx, r12
mov rdx, rsi
call qword [case.0x1401e7f70.0]
mov eax, dword [rsi]
mov dword [rsp + 0x78], eax
mov eax, 1
lock xadd dword [0x1402a61f4], eax
mov dword [rsp + 0x7c], eax
mov eax, dword [0x1402a61f0]
mov ecx, dword [0x14029dfe4]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x14010ec5c
mov ecx, dword [0x14029bf80]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x14010ef52
mov rcx, qword [0x1402a61e0]
shl rcx, 4
lea rdx, [rsp + 0x78]
mov qword [rax + rcx], rdx
mov ecx, dword [0x1402a61e8]
mov rdx, qword [0x1402a61e0]
shl rdx, 4
mov dword [rax + rdx + 8], ecx
mov eax, dword [0x1402a6208]
mov ecx, dword [0x14029dfe4]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x14010ecf8
lea rdi, [rsp + 0x7c]
mov ecx, dword [0x14029bf80]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x14010ef5c
mov rcx, qword [0x1402a61f8]
shl rcx, 4
mov qword [rax + rcx], rdi
mov ecx, dword [0x1402a6200]
mov rdx, qword [0x1402a61f8]
shl rdx, 4
mov dword [rax + rdx + 8], ecx
mov al, byte [rsp + 0x199]
mov byte [rsp + 0x70], al
mov rdi, qword [0x1402a5240]
cmp rdi, 1
jbe 0x14010ed94
mov ecx, dword [0x14029bf80]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x14010ef66
mov rcx, qword [rdi]
shl rcx, 4
lea rdx, [rsp + 0x70]
mov qword [rax + rcx], rdx
mov ecx, dword [rdi + 8]
mov rdx, qword [rdi]
shl rdx, 4
mov dword [rax + rdx + 8], ecx
movaps xmmword [rsp + 0x110], xmm6
movaps xmmword [rsp + 0x120], xmm6
movaps xmmword [rsp + 0x130], xmm6
mov byte [rsp + 0x110], 0
xorps xmm0, xmm0
movups xmmword [rsp + 0x118], xmm0
movups xmmword [rsp + 0x128], xmm0
mov r13, qword [rsp + 0x88]
test r13, r13
jne 0x14010e1b8
lea r13, [rsp + 0x118]
movaps xmmword [r13 + 8], xmm0
mov qword [r13 + 0x18], 0
mov byte [r13 - 8], 1
mov rdi, qword [0x1402a5040]
cmp rdi, 1
jbe 0x14010f077
mov ecx, dword [0x14029bf80]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x14010ef70
mov rcx, qword [rdi]
shl rcx, 4
mov qword [rax + rcx], r13
mov ecx, dword [rdi + 8]
mov rdx, qword [rdi]
shl rdx, 4
mov dword [rax + rdx + 8], ecx
movaps xmmword [rsp + 0x220], xmm6
movabs rax, 0xaaaaaaaaaaaaaaaa
mov qword [rsp + 0x230], rax
xor eax, eax
mov byte [rsp + 0x220], al
movaps xmmword [rsp + 0x200], xmm6
movaps xmmword [rsp + 0x210], xmm6
mov byte [rsp + 0x200], al
mov eax, dword [r12 + 0x40]
cmp eax, 2
je 0x14010e2f1
cmp eax, 1
jne 0x14010e3ed
mov rax, qword [r12 + 0x38]
test rax, rax
je 0x14010e257
lock inc dword [rax + 8]
mov qword [rsp + 0x228], rax
mov eax, dword [0x1402a0e38]
mov ecx, dword [0x14029dfe4]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x14010ef83
lea rdi, [rsp + 0x228]
mov ecx, dword [0x14029bf80]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x14010f105
mov rcx, qword [0x1402a0e28]
shl rcx, 4
mov qword [rax + rcx], rdi
mov ecx, dword [0x1402a0e30]
mov rdx, qword [0x1402a0e28]
shl rdx, 4
mov dword [rax + rdx + 8], ecx
mov byte [rsp + 0x220], 1
jmp 0x14010e3ed
lea rdx, [rsp + 0x110]
lea r8, [rsp + 0x220]
mov rcx, r12
call qword [case.0x1401e7f70.0]
jmp 0x14010df1f
mov rax, qword [r12 + 0x38]
test rax, rax
je 0x14010f268
lock inc dword [rax + 8]
mov qword [rsp + 0x208], rax
lock inc dword [rax + 8]
mov qword [rsp + 0x210], rax
mov eax, dword [0x1402a0e38]
mov ecx, dword [0x14029dfe4]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x14010efd1
lea rdi, [rsp + 0x210]
mov ecx, dword [0x14029bf80]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x14010f118
mov rcx, qword [0x1402a0e28]
shl rcx, 4
mov qword [rax + rcx], rdi
mov ecx, dword [0x1402a0e30]
mov rdx, qword [0x1402a0e28]
shl rdx, 4
mov dword [rax + rdx + 8], ecx
mov eax, dword [0x1402a4570]
mov ecx, dword [0x14029dfe4]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x14010f01f
lea rdi, [rsp + 0x208]
mov ecx, dword [0x14029bf80]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x14010f122
mov rcx, qword [0x1402a4560]
shl rcx, 4
mov qword [rax + rcx], rdi
mov ecx, dword [0x1402a4568]
mov rdx, qword [0x1402a4560]
shl rdx, 4
mov dword [rax + rdx + 8], ecx
mov byte [rsp + 0x200], 1
movzx eax, byte [rsp + 0x19a]
and eax, 0x7f
cmp eax, 1
jne 0x14010e867
mov qword [rsp + 0x20], rsi
lea rdx, [rsp + 0x90]
lea r8, [rsp + 0x190]
mov rcx, r15
mov r9, r12
call fcn.14010f690
mov rcx, qword [rsp + 0x90]
mov qword [rsp + 0x90], 0
test rcx, rcx
jne 0x14010ec0d
cmp byte [rsp + 0x200], 0
je 0x14010e588
mov eax, dword [0x1402a4570]
mov ecx, dword [0x14029dfe4]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x14010ef04
mov ecx, dword [0x14029bf80]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x14010e4ab
mov rcx, qword [0x1402a4560]
shl rcx, 4
mov qword [rax + rcx], 0
mov ecx, dword [0x1402a4568]
mov rdx, qword [0x1402a4560]
shl rdx, 4
mov dword [rax + rdx + 8], ecx
mov eax, dword [0x1402a0e38]
mov ecx, dword [0x14029dfe4]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x14010ee22
mov ecx, dword [0x14029bf80]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x14010e50a
mov rcx, qword [0x1402a0e28]
shl rcx, 4
mov qword [rax + rcx], 0
mov ecx, dword [0x1402a0e30]
mov rdx, qword [0x1402a0e28]
shl rdx, 4
mov dword [rax + rdx + 8], ecx
mov rcx, qword [rsp + 0x210]
test rcx, rcx
je 0x14010e521
lock dec dword [rcx + 8]
je 0x14010f23c
mov rsi, qword [rsp + 0x208]
test rsi, rsi
je 0x14010e588
lock dec dword [rsi + 8]
jne 0x14010e588
mov rcx, qword [rsi]
mov rax, qword [rcx + 8]
lea rdx, [0x1401e6bb0]
cmp qword [rcx + 0x10], rdx
jne 0x14010ea8d
lea rcx, [0x140203760]
cmp rax, rcx
jne 0x14010ea8d
mov rcx, qword [rsi + 0x18]
test rcx, rcx
je 0x14010e56e
lock dec dword [rcx]
je 0x14010f06d
mov rdi, qword [rsi + 0x10]
test rdi, rdi
je 0x14010e580
lock dec dword [rdi]
je 0x14010ea0f
mov rcx, rsi
call fcn.14017b254
cmp byte [rsp + 0x220], 0
je 0x14010e608
mov eax, dword [0x1402a0e38]
mov ecx, dword [0x14029dfe4]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x14010ee70
mov ecx, dword [0x14029bf80]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x14010e5f1
mov rcx, qword [0x1402a0e28]
shl rcx, 4
mov qword [rax + rcx], 0
mov ecx, dword [0x1402a0e30]
mov rdx, qword [0x1402a0e28]
shl rdx, 4
mov dword [rax + rdx + 8], ecx
mov rcx, qword [rsp + 0x228]
test rcx, rcx
je 0x14010e608
lock dec dword [rcx + 8]
je 0x14010f246
mov rsi, qword [0x1402a5040]
cmp rsi, 1
jbe 0x14010f0be
mov ecx, dword [0x14029bf80]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x14010e648
mov rcx, qword [rsi]
shl rcx, 4
mov qword [rax + rcx], 0
mov ecx, dword [rsi + 8]
mov rdx, qword [rsi]
shl rdx, 4
mov dword [rax + rdx + 8], ecx
cmp byte [rsp + 0x110], 0
je 0x14010e663
mov rsi, qword [rsp + 0x120]
test rsi, rsi
jne 0x14010eaa0
mov rsi, qword [0x1402a5240]
cmp rsi, 1
jbe 0x14010eddb
mov ecx, dword [0x14029bf80]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x14010e6a3
mov rcx, qword [rsi]
shl rcx, 4
mov qword [rax + rcx], 0
mov ecx, dword [rsi + 8]
mov rdx, qword [rsi]
shl rdx, 4
mov dword [rax + rdx + 8], ecx
mov eax, dword [0x1402a61f0]
mov ecx, dword [0x14029dfe4]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x14010ecaa
mov ecx, dword [0x14029bf80]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x14010e702
mov rcx, qword [0x1402a61e0]
shl rcx, 4
mov qword [rax + rcx], 0
mov ecx, dword [0x1402a61e8]
mov rdx, qword [0x1402a61e0]
shl rdx, 4
mov dword [rax + rdx + 8], ecx
mov eax, dword [0x1402a6208]
mov ecx, dword [0x14029dfe4]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x14010ed46
mov ecx, dword [0x14029bf80]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x14010e761
mov rcx, qword [0x1402a61f8]
shl rcx, 4
mov qword [rax + rcx], 0
mov ecx, dword [0x1402a6200]
mov rdx, qword [0x1402a61f8]
shl rdx, 4
mov dword [rax + rdx + 8], ecx
mov rcx, qword [rsp + 0x90]
test rcx, rcx
jne 0x14010e909
test bpl, bpl
je 0x14010e799
mov rax, qword [r14]
mov al, byte [rax + 0x16]
and al, 0x7f
cmp al, 1
jne 0x14010e799
mov rax, qword [r15 + 0x30]
mov ecx, 0xfffffffe
lock xadd dword [rax], ecx
cmp ecx, 3
je 0x14010f135
mov rsi, qword [r14]
mov rax, qword [rsi]
mov rax, qword [rax + 0x38]
lea rcx, [0x140177560]
cmp rax, rcx
jne 0x14010e856
lea rdi, [rsi + 0x20]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x14010ec3c
mov rax, qword [rsi + 0x60]
cmp rax, qword [rsi + 0x68]
jne 0x14010e8b7
mov rax, qword [rsi + 0x78]
cmp rax, qword [rsi + 0x80]
jne 0x14010e8b7
mov r15, qword [rsi + 0x38]
test r15, r15
je 0x14010e7fb
lock dec dword [r15 + 8]
je 0x14010ea25
mov dword [rsi + 0xb8], 0
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov rsi, qword [r14]
test rsi, rsi
jne 0x14010e9b9
mov qword [r14], 0
mov rcx, qword [rsp + 0x238]
xor rcx, rsp
call fcn.14017e7b0
mov rax, rbx
movaps xmm6, xmmword [rsp + 0x240]
add rsp, 0x258
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rcx, rsi
xor edx, edx
call qword [case.0x1401e7f70.0]
test al, al
je 0x14010e80e
jmp 0x14010e8c0
cmp eax, 2
jne 0x14010e974
mov qword [rsp + 0x20], rsi
lea rdx, [rsp + 0x90]
lea r8, [rsp + 0x190]
mov rcx, r15
mov r9, r12
call fcn.140007120
jmp 0x14010e421
cmp eax, 2
je 0x14010dd12
test eax, eax
jne 0x14010f1c2
mov rax, qword [r15 + 0x30]
mov eax, dword [rax]
test al, 1
sete bpl
jmp 0x14010dd12
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov rax, qword [r14]
mov qword [rbx], rax
mov rax, qword [r14 + 8]
mov qword [r14 + 8], 0
mov qword [rbx + 8], rax
jmp 0x14010e820
cmp rcx, rdx
jne 0x14010f278
cmp qword [r12 + 0x58], rax
jb 0x14010f275
mov rcx, qword [r13]
shl rax, 7
mov rax, qword [rcx + rax + 0x28]
mov qword [r12 + 0x90], rax
jmp 0x14010df1f
lock dec dword [rcx]
jne 0x14010e772
mov rax, qword [rcx + 0x10]
call qword [case.0x1401e7f70.0]
jmp 0x14010e772
mov r8, qword [r12 + 0x68]
xor ecx, ecx
cmp r8, rdx
cmovb rcx, rax
sub rcx, rdx
add rcx, r8
dec rax
mov rdx, rax
sub rdx, rcx
cmp rdx, rcx
jb 0x14010def9
mov r8, rcx
shr r8, 2
add r8, rcx
cmp r8, 4
mov edx, 3
cmovae rdx, r8
cmp rdx, rax
jae 0x14010def9
mov rcx, r13
call fcn.14014feb0
jmp 0x14010def9
test eax, eax
jne 0x14010e421
mov qword [rsp + 0x20], rsi
lea rdx, [rsp + 0x90]
lea r8, [rsp + 0x190]
mov rcx, r15
mov r9, r12
call fcn.140007190
jmp 0x14010e421
lock dec dword [rcx]
jne 0x14010ded4
mov rax, qword [rcx + 0x10]
call qword [case.0x1401e7f70.0]
jmp 0x14010ded4
mov rbp, qword [r14 + 8]
mov qword [r14], 0
test rbp, rbp
je 0x14010e9e0
mov al, byte [rsi + 0x16]
and al, 0x7f
cmp al, 2
je 0x14010ebcb
lock dec dword [rbp + 0x38]
je 0x14010eae9
lock dec dword [rsi + 8]
je 0x14010eb5f
mov rcx, qword [r14]
test rcx, rcx
je 0x14010e827
lock dec dword [rcx + 8]
jne 0x14010e827
mov edx, 1
call fcn.140152dc0
jmp 0x14010e827
lea rcx, [rdi + 8]
call fcn.1400091b0
mov rcx, rdi
call fcn.14017b254
jmp 0x14010e580
mov rcx, qword [r15]
mov rax, qword [rcx + 8]
lea rdx, [0x1401e6bb0]
cmp qword [rcx + 0x10], rdx
jne 0x14010ec49
lea rcx, [0x140203760]
cmp rax, rcx
jne 0x14010ec49
mov rcx, qword [r15 + 0x18]
test rcx, rcx
je 0x14010ea5f
lock dec dword [rcx]
je 0x14010f172
mov r12, qword [r15 + 0x10]
test r12, r12
je 0x14010ea73
lock dec dword [r12]
je 0x14010ec25
mov rcx, r15
call fcn.14017b254
jmp 0x14010e7fb
mov rcx, rsi
call fcn.1400fdfc0
jmp 0x14010dd94
mov rcx, rsi
mov edx, 1
call qword [case.0x1401e7f70.0]
jmp 0x14010e588
mov rax, qword [rsp + 0x128]
mov rcx, rsi
cmp rax, rsi
je 0x14010ead7
lea rdi, [rax - 0x18]
mov rcx, qword [rax - 0x10]
test rcx, rcx
je 0x14010eac7
mov rax, qword [rax - 8]
call qword [case.0x1401e7f70.0]
mov rax, rdi
cmp rdi, rsi
jne 0x14010eab0
mov rcx, qword [rsp + 0x120]
mov qword [rsp + 0x128], rsi
call fcn.14017b254
jmp 0x14010e663
lea r15, [rbp + 0x40]
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x14010f2b6
mov rcx, qword [rbp + 0x48]
call qword [sym.imp.KERNEL32.dll_WakeAllConditionVariable]
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x14010f2c3
mov r12, qword [rbp + 0x50]
mov rdi, qword [rbp + 0x58]
xorps xmm0, xmm0
movups xmmword [rbp + 0x50], xmm0
mov rax, qword [rbp + 0x60]
mov r13, qword [rbp + 0x68]
movups xmmword [rbp + 0x60], xmm0
mov rbp, rax
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
cmp rbp, r13
jne 0x14010f2d0
mov rcx, r12
call fcn.14017b220
jmp 0x14010e9e0
lea rax, str.pm_r_
mov qword [rsi], rax
mov rdi, qword [rsi + 0xa0]
test rdi, rdi
jne 0x14010eebe
lea rdi, [rsi + 0x78]
mov r15, qword [rsi + 0x78]
mov r12, qword [rsi + 0x80]
mov rdx, r15
cmp r12, r15
jne 0x14010f4c3
mov qword [rsi + 0x80], r15
test rdx, rdx
jne 0x14010f39a
mov r15, qword [rsi + 0x60]
mov rdi, qword [rsi + 0x68]
cmp rdi, r15
jne 0x14010f3af
mov rcx, qword [rsi + 0x50]
call fcn.14017b220
mov rcx, rsi
call fcn.14017b254
jmp 0x14010e9ea
mov rax, qword [rbp + 0x30]
mov ecx, 0xfffffffe
lock xadd dword [rax], ecx
cmp ecx, 3
jne 0x14010e9d6
lea rdi, [rbp + 0x70]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x14010f595
mov rcx, qword [rbp + 0x78]
call fcn.140169f30
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
jmp 0x14010e9d6
lock dec dword [rcx]
jne 0x14010e43e
mov rax, qword [rcx + 0x10]
call qword [case.0x1401e7f70.0]
jmp 0x14010e43e
lea rcx, [r12 + 8]
call fcn.1400091b0
mov rcx, r12
call fcn.14017b254
jmp 0x14010ea73
mov rcx, rdi
call fcn.1400fdfc0
jmp 0x14010e7c8
mov rcx, r15
mov edx, 1
call qword [case.0x1401e7f70.0]
jmp 0x14010e7fb
lea rcx, [0x1402a61f0]
call fcn.14017b2bc
cmp dword [0x1402a61f0], 0xffffffff
jne 0x14010e06b
mov qword [0x1402a61e8], 0
lea rcx, [0x1402a61e0]
mov qword [0x1402a61e0], 0xffffffffffffffff
xor edx, edx
call fcn.140002850
lea rcx, [0x1402a61f0]
call fcn.14017b25c
jmp 0x14010e06b
lea rcx, [0x1402a61f0]
call fcn.14017b2bc
cmp dword [0x1402a61f0], 0xffffffff
jne 0x14010e6c8
mov qword [0x1402a61e8], 0
lea rcx, [0x1402a61e0]
mov qword [0x1402a61e0], 0xffffffffffffffff
xor edx, edx
call fcn.140002850
lea rcx, [0x1402a61f0]
call fcn.14017b25c
jmp 0x14010e6c8
lea rcx, [0x1402a6208]
call fcn.14017b2bc
cmp dword [0x1402a6208], 0xffffffff
jne 0x14010e0cf
mov qword [0x1402a6200], 0
lea rcx, [0x1402a61f8]
mov qword [0x1402a61f8], 0xffffffffffffffff
xor edx, edx
call fcn.140002850
lea rcx, [0x1402a6208]
call fcn.14017b25c
jmp 0x14010e0cf
lea rcx, [0x1402a6208]
call fcn.14017b2bc
cmp dword [0x1402a6208], 0xffffffff
jne 0x14010e727
mov qword [0x1402a6200], 0
lea rcx, [0x1402a61f8]
mov qword [0x1402a61f8], 0xffffffffffffffff
xor edx, edx
call fcn.140002850
lea rcx, [0x1402a6208]
call fcn.14017b25c
jmp 0x14010e727
lea rcx, [0x1402a5240]
call fcn.140008ab0
test al, al
je 0x14010f4de
mov qword [0x1402a5250], 0
lea rdi, [0x1402a5248]
mov qword [0x1402a5248], 0xffffffffffffffff
mov rcx, rdi
xor edx, edx
call fcn.140002850
mov qword [0x1402a5240], rdi
jmp 0x14010e12a
lea rcx, [0x1402a5240]
call fcn.140008ab0
test al, al
je 0x14010f4ea
mov qword [0x1402a5250], 0
lea rsi, [0x1402a5248]
mov qword [0x1402a5248], 0xffffffffffffffff
mov rcx, rsi
xor edx, edx
call fcn.140002850
mov qword [0x1402a5240], rsi
jmp 0x14010e674
lea rcx, [0x1402a0e38]
call fcn.14017b2bc
cmp dword [0x1402a0e38], 0xffffffff
jne 0x14010e4d0
mov qword [0x1402a0e30], 0
lea rcx, [0x1402a0e28]
mov qword [0x1402a0e28], 0xffffffffffffffff
xor edx, edx
call fcn.140002850
lea rcx, [0x1402a0e38]
call fcn.14017b25c
jmp 0x14010e4d0
lea rcx, [0x1402a0e38]
call fcn.14017b2bc
cmp dword [0x1402a0e38], 0xffffffff
jne 0x14010e5b7
mov qword [0x1402a0e30], 0
lea rcx, [0x1402a0e28]
mov qword [0x1402a0e28], 0xffffffffffffffff
xor edx, edx
call fcn.140002850
lea rcx, [0x1402a0e38]
call fcn.14017b25c
jmp 0x14010e5b7
mov rax, qword [rsi + 0xa8]
mov rcx, rdi
cmp rax, rdi
je 0x14010eef3
lea r15, [rax - 0x18]
mov rcx, qword [rax - 0x10]
test rcx, rcx
je 0x14010eee4
mov rax, qword [rax - 8]
call qword [case.0x1401e7f70.0]
mov rax, r15
cmp r15, rdi
jne 0x14010eecd
mov rcx, qword [rsi + 0xa0]
mov qword [rsi + 0xa8], rdi
call fcn.14017b254
jmp 0x14010eb79
lea rcx, [0x1402a4570]
call fcn.14017b2bc
cmp dword [0x1402a4570], 0xffffffff
jne 0x14010e471
mov qword [0x1402a4568], 0
lea rcx, [0x1402a4560]
mov qword [0x1402a4560], 0xffffffffffffffff
xor edx, edx
call fcn.140002850
lea rcx, [0x1402a4570]
call fcn.14017b25c
jmp 0x14010e471
call fcn.140002990
jmp 0x14010e081
call fcn.140002990
jmp 0x14010e0ea
call fcn.140002990
jmp 0x14010e140
test r13, r13
je 0x14010e1f8
call fcn.140002990
jmp 0x14010e1df
lea rcx, [0x1402a0e38]
call fcn.14017b2bc
cmp dword [0x1402a0e38], 0xffffffff
jne 0x14010e284
mov qword [0x1402a0e30], 0
lea rcx, [0x1402a0e28]
mov qword [0x1402a0e28], 0xffffffffffffffff
xor edx, edx
call fcn.140002850
lea rcx, [0x1402a0e38]
call fcn.14017b25c
jmp 0x14010e284
lea rcx, [0x1402a0e38]
call fcn.14017b2bc
cmp dword [0x1402a0e38], 0xffffffff
jne 0x14010e33c
mov qword [0x1402a0e30], 0
lea rcx, [0x1402a0e28]
mov qword [0x1402a0e28], 0xffffffffffffffff
xor edx, edx
call fcn.140002850
lea rcx, [0x1402a0e38]
call fcn.14017b25c
jmp 0x14010e33c
lea rcx, [0x1402a4570]
call fcn.14017b2bc
cmp dword [0x1402a4570], 0xffffffff
jne 0x14010e3a3
mov qword [0x1402a4568], 0
lea rcx, [0x1402a4560]
mov qword [0x1402a4560], 0xffffffffffffffff
xor edx, edx
call fcn.140002850
lea rcx, [0x1402a4570]
call fcn.14017b25c
jmp 0x14010e3a3
call fcn.14017b254
jmp 0x14010e56e
lea rcx, [0x1402a5040]
call fcn.140008ab0
test al, al
je 0x14010f4f6
mov qword [0x1402a5050], 0
lea rdi, [0x1402a5048]
mov qword [0x1402a5048], 0xffffffffffffffff
mov rcx, rdi
xor edx, edx
call fcn.140002850
mov qword [0x1402a5040], rdi
jmp 0x14010e1c9
lea rcx, [0x1402a5040]
call fcn.140008ab0
test al, al
je 0x14010f502
mov qword [0x1402a5050], 0
lea rsi, [0x1402a5048]
mov qword [0x1402a5048], 0xffffffffffffffff
mov rcx, rsi
xor edx, edx
call fcn.140002850
mov qword [0x1402a5040], rsi
jmp 0x14010e619
test rdi, rdi
je 0x14010e2c6
call fcn.140002990
jmp 0x14010e2a2
call fcn.140002990
jmp 0x14010e35a
test rdi, rdi
je 0x14010e3e5
call fcn.140002990
jmp 0x14010e3c1
lea rsi, [r15 + 0x70]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x14010f50e
mov rdi, qword [r15 + 0x78]
test byte [0x14029c8d0], 0x19
jne 0x14010f51b
mov rcx, qword [rdi]
call qword [sym.imp.KERNEL32.dll_SetEvent]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
jmp 0x14010e799
call fcn.14017b254
jmp 0x14010ea5f
lea rdx, [rsp + 0x110]
lea r8, [rsp + 0x220]
mov rcx, r14
call fcn.140206f20
jmp 0x14010df1f
lea rdx, [rsp + 0x90]
lea r9, [rsp + 0x190]
mov rcx, r15
mov r8, r12
call qword [case.0x1401e7f70.0]
jmp 0x14010e772
mov rcx, r15
call fcn.140205a30
xor ebp, ebp
jmp 0x14010dd12
cmp rax, rdi
jb 0x14010f5a2
mov rax, qword [r13]
mov qword [rsp + 0x38], rax
shl rdi, 7
lea rdx, [rsp + 0x200]
call fcn.140119490
mov rax, qword [rsp + 0x38]
mov rax, qword [rax + rdi + 0x28]
lea rcx, [rsp + 0x200]
cmp rax, qword [rcx]
jg 0x14010f218
lea rdx, [rsp + 0x110]
mov rcx, r12
call fcn.140205d30
jmp 0x14010def9
lea rdx, [rsp + 0x110]
mov rcx, rsi
xor r8d, r8d
call fcn.1402068d0
jmp 0x14010def9
int3
int3
int3
int3
call fcn.140123c50
jmp 0x14010e521
call fcn.140123c50
jmp 0x14010e608
lea rsi, [rsp + 0x200]
mov rdx, rsi
call fcn.140119490
mov rax, qword [rsi]
jmp 0x14010e8fc
mov qword [rsp + 0x208], rax
jmp 0x14010e30f
int3
lea rdx, [rsp + 0x200]
call fcn.140119490
mov rax, qword [r12 + 0x60]
cmp qword [r12 + 0x58], rax
jb 0x14010f5a5
mov rcx, qword [r13]
shl rax, 7
mov rax, qword [rcx + rax + 0x28]
mov rcx, qword [rsp + 0x200]
cmp rcx, rax
cmovl rax, rcx
jmp 0x14010e8fc
mov rcx, r15
call fcn.1400fdfc0
jmp 0x14010eafe
mov rcx, r15
call fcn.1400fdfc0
jmp 0x14010eb22
mov qword [rsp + 0x38], r13
mov qword [rsp + 0x48], r12
mov qword [rsp + 0x40], rdi
xor r12d, r12d
mov rdi, rbp
cmp qword [rsp + 0x40], rbp
jb 0x14010f5a8
mov rax, qword [rsp + 0x48]
mov r15, qword [rax + rbp*8]
mov qword [rax + rbp*8], 0
mov rax, qword [r15 + 8]
mov rcx, r15
call qword [case.0x1401e7f70.0]
test r15, r15
jne 0x14010f496
inc rbp
cmp rbp, qword [rsp + 0x40]
cmove rbp, r12
cmp rbp, qword [rsp + 0x38]
jne 0x14010f2e5
cmp qword [rsp + 0x38], rdi
jbe 0x14010f5c9
mov rax, qword [rsp + 0x38]
cmp qword [rsp + 0x40], rax
jb 0x14010f5ab
cmp qword [rsp + 0x40], rdi
jb 0x14010f5ae
cmp rdi, qword [rsp + 0x38]
jg 0x14010f5b1
shl qword [rsp + 0x38], 3
shl rdi, 3
mov rax, qword [rsp + 0x48]
mov rcx, qword [rax + rdi]
test rcx, rcx
jne 0x14010f389
mov rax, rdi
add rax, 8
mov rdi, rax
cmp qword [rsp + 0x38], rax
jne 0x14010f365
jmp 0x14010f627
lock dec dword [rcx]
jne 0x14010f373
mov rax, qword [rcx + 0x10]
call qword [case.0x1401e7f70.0]
jmp 0x14010f373
mov rcx, rdi
call fcn.140206c20
mov rcx, qword [rdi]
call fcn.14017b254
jmp 0x14010eba4
mov r12, qword [rsi + 0x58]
jbe 0x14010f404
cmp r12, rdi
jb 0x14010f5b4
cmp r12, r15
jb 0x14010f5b7
cmp r15, rdi
jg 0x14010f5ba
mov r12, qword [rsi + 0x50]
shl rdi, 7
shl r15, 7
mov rcx, qword [r12 + r15]
test rcx, rcx
jne 0x14010f3f3
sub r15, 0xffffffffffffff80
cmp rdi, r15
jne 0x14010f3dc
jmp 0x14010ebb5
lock dec dword [rcx]
jne 0x14010f3e5
mov rax, qword [rcx + 0x10]
call qword [case.0x1401e7f70.0]
jmp 0x14010f3e5
cmp r12, r15
jb 0x14010f5bd
jl 0x14010f5c0
je 0x14010f44b
mov r13, qword [rsi + 0x50]
shl r12, 7
shl r15, 7
mov rcx, qword [r13 + r15]
test rcx, rcx
jne 0x14010f436
sub r15, 0xffffffffffffff80
cmp r12, r15
jne 0x14010f421
jmp 0x14010f447
lock dec dword [rcx]
jne 0x14010f42b
mov rax, qword [rcx + 0x10]
call qword [case.0x1401e7f70.0]
jmp 0x14010f42b
mov r15, qword [rsi + 0x58]
cmp r15, rdi
jb 0x14010f5c3
test rdi, rdi
js 0x14010f5c6
je 0x14010ebb5
mov r15, qword [rsi + 0x50]
shl rdi, 7
xor r12d, r12d
mov rcx, qword [r15 + r12]
test rcx, rcx
jne 0x14010f485
sub r12, 0xffffffffffffff80
cmp rdi, r12
jne 0x14010f46e
jmp 0x14010ebb5
lock dec dword [rcx]
jne 0x14010f477
mov rax, qword [rcx + 0x10]
call qword [case.0x1401e7f70.0]
jmp 0x14010f477
lock dec dword [r15]
jne 0x14010f317
mov rax, qword [r15 + 0x10]
mov rcx, r15
call qword [case.0x1401e7f70.0]
jmp 0x14010f317
lock dec dword [rcx]
jne 0x14010f4d1
mov rax, qword [rcx + 0x10]
call qword [case.0x1401e7f70.0]
jmp 0x14010f4d1
mov rcx, qword [r12 - 0x80]
add r12, 0xffffffffffffff80
test rcx, rcx
jne 0x14010f4b2
cmp r12, r15
jne 0x14010f4c3
mov rdx, qword [rdi]
jmp 0x14010eb94
mov rdi, qword [0x1402a5240]
jmp 0x14010e12a
mov rsi, qword [0x1402a5240]
jmp 0x14010e674
mov rdi, qword [0x1402a5040]
jmp 0x14010e1c9
mov rsi, qword [0x1402a5040]
jmp 0x14010e619
mov rcx, rsi
call fcn.1400fdfc0
jmp 0x14010f14a
mov rax, qword [0x14029f540]
xor rax, rdi
lea rcx, [0x140074fa0]
lea r15, [rsp + 0x110]
mov qword [r15 + 0x18], rcx
lea rcx, [0x140278c88]
mov qword [r15 + 0x20], rcx
mov qword [r15 + 8], rax
mov qword [rsp + 0x28], r15
mov qword [rsp + 0x20], 0
lea rdx, [0x14029c8d0]
lea r8, str.WaitableEvent::Signal
lea r9, [0x1402780e8]
mov cl, 0x49
call fcn.140075040
mov rax, qword [r15 + 0x20]
mov rax, qword [rax + 8]
test rax, rax
je 0x14010f15b
mov rcx, qword [rsp + 0x118]
call qword [case.0x1401e7f70.0]
jmp 0x14010f15b
mov rcx, rdi
call fcn.1400fdfc0
jmp 0x14010ebf6
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
int3
cmp qword [rsp + 0x40], rdi
jb 0x14010f63f
jl 0x14010f642
jne 0x14010f645
mov rax, qword [rsp + 0x38]
cmp qword [rsp + 0x40], rax
jb 0x14010f689
cmp qword [rsp + 0x38], 0
js 0x14010f68c
je 0x14010f627
shl qword [rsp + 0x38], 3
xor r15d, r15d
mov rax, qword [rsp + 0x48]
mov rcx, qword [rax + r15]
test rcx, rcx
jne 0x14010f616
add r15, 8
cmp qword [rsp + 0x38], r15
jne 0x14010f5fb
jmp 0x14010f627
lock dec dword [rcx]
jne 0x14010f609
mov rax, qword [rcx + 0x10]
call qword [case.0x1401e7f70.0]
jmp 0x14010f609
mov rcx, qword [rsp + 0x48]
call fcn.14017b220
test rsi, rsi
je 0x14010e9ea
jmp 0x14010e9e0
int3
int3
mov rax, qword [rsp + 0x40]
lea r15, [rax*8]
shl rdi, 3
mov rax, qword [rsp + 0x48]
mov rcx, qword [rax + rdi]
test rcx, rcx
jne 0x14010f678
mov rax, rdi
add rax, 8
mov rdi, rax
cmp r15, rax
jne 0x14010f656
jmp 0x14010f5d4
lock dec dword [rcx]
jne 0x14010f664
mov rax, qword [rcx + 0x10]
call qword [case.0x1401e7f70.0]
jmp 0x14010f664
int3
int3