Function at 0x1401249b0
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, 0x1b8
mov r15, rdx
mov rsi, rcx
mov rax, qword [0x14033f038]
xor rax, rsp
mov qword [rsp + 0x1b0], rax
lea rdi, [rsp + 0x40]
mov r8d, 0x170
mov rcx, rdi
mov dl, 0xaa
call fcn.140173760
mov dword [rdi], 0
lea rax, [rsp + 0x48]
lea rcx, [rsp + 0x108]
mov qword [rcx + 8], rax
mov qword [rcx + 0x28], rax
mov dl, 1
mov byte [rcx], dl
mov qword [rcx + 0x10], rax
mov qword [rcx + 0x18], rax
mov qword [rcx + 0x20], rcx
lea rax, [rsp + 0x138]
lea rcx, [rsp + 0x178]
mov qword [rcx + 8], rax
mov qword [rcx + 0x28], rax
mov byte [rcx], dl
mov qword [rcx + 0x10], rax
mov qword [rcx + 0x18], rax
mov qword [rcx + 0x20], rcx
mov rbx, qword [0x140351380]
cmp rbx, 1
jbe 0x140125020
mov qword [rsp + 0x1a8], rbx
mov ecx, dword [0x1403411e0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x140124fe4
mov rcx, qword [rbx]
shl rcx, 4
mov edx, dword [rax + rcx + 8]
cmp edx, dword [rbx + 8]
jne 0x140124fe4
cmp qword [rax + rcx], 0
je 0x140124fe4
mov rbx, qword [rsi + 0x20]
add rbx, 0x40
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x140124fad
mov r12, qword [rsi + 0x20]
mov r8, qword [r12 + 0x10]
mov esi, 3
test r8, r8
je 0x14012507d
mov rax, r8
shr rax, 1
movabs r11, 0x5555555555555555
and rax, r11
mov rcx, r8
sub rcx, rax
movabs r13, 0x3333333333333333
mov rax, rcx
and rax, r13
shr rcx, 2
and rcx, r13
add rcx, rax
mov r9, rcx
shr r9, 4
add r9, rcx
movabs rdi, 0xf0f0f0f0f0f0f0f
and r9, rdi
movabs rbp, 0x101010101010101
imul r9, rbp
shr r9, 0x38
cmp r9, 1
jbe 0x14012506c
mov rcx, r15
cmp r8, r15
ja 0x140124b38
mov rax, r15
xor edx, edx
div r8
mov rcx, rdx
mov rax, qword [r12 + 8]
mov rax, qword [rax + rcx*8]
test rax, rax
je 0x14012507d
mov r14, qword [rax]
test r14, r14
je 0x14012507d
mov rax, qword [r14 + 8]
cmp rax, r15
jne 0x140124fba
cmp qword [r14 + 0x10], r15
jne 0x140124fd2
cmp byte [r14 + 0x20], 0
jne 0x140125078
mov rsi, qword [r14 + 0x18]
test rsi, rsi
je 0x140124b89
lock inc dword [rsi + 8]
mov r15, qword [r14 + 0x10]
cmp r15, qword [r12 + 0x38]
je 0x140125099
mov r9, qword [r14]
mov rcx, qword [r14 + 8]
mov r10, qword [r12 + 0x10]
mov rax, r10
shr rax, 1
and rax, r11
mov rdx, r10
sub rdx, rax
mov rax, rdx
and rax, r13
shr rdx, 2
and rdx, r13
add rdx, rax
mov r15, rdx
shr r15, 4
add r15, rdx
and r15, rdi
imul r15, rbp
shr r15, 0x38
cmp r15, 1
jbe 0x14012508d
cmp rcx, r10
jb 0x140124bee
mov rax, rcx
xor edx, edx
div r10
mov rcx, rdx
mov rdi, qword [r12 + 8]
mov rax, qword [rdi + rcx*8]
mov r11, rax
mov rax, qword [rax]
cmp rax, r14
jne 0x140124bf7
lea rax, [r12 + 0x18]
cmp r11, rax
je 0x140124c2c
mov rax, qword [r11 + 8]
cmp r15d, 1
jbe 0x140125251
cmp rax, r10
jb 0x140124c27
xor edx, edx
div r10
mov rax, rdx
cmp rax, rcx
je 0x140124c5f
test r9, r9
je 0x140124c54
mov r8, qword [r9 + 8]
cmp r15d, 1
jbe 0x140125245
mov rdx, r8
cmp r8, r10
jb 0x140124c4f
mov rax, r8
xor edx, edx
div r10
cmp rdx, rcx
je 0x140124c6c
mov qword [rdi + rcx*8], 0
mov r9, qword [r14]
test r9, r9
je 0x14012525d
mov r8, qword [r9 + 8]
cmp r15d, 1
jbe 0x140125161
cmp r8, r10
jb 0x140124c86
mov rax, r8
xor edx, edx
div r10
mov r8, rdx
cmp r8, rcx
je 0x140124c97
mov rax, qword [r12 + 8]
mov qword [rax + r8*8], r11
mov r9, qword [r14]
mov qword [r11], r9
mov qword [r14], 0
dec qword [r12 + 0x20]
mov rcx, qword [r14 + 0x18]
test rcx, rcx
je 0x140124cb9
lock dec dword [rcx + 8]
je 0x14012516c
mov rcx, r14
call fcn.14016eccc
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov rax, qword [rsi]
mov rax, qword [rax + 8]
lea rcx, [0x14015db00]
cmp rax, rcx
jne 0x1401250da
lea rdi, [rsi + 0x40]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x140125186
mov al, byte [rsi + 0x51]
test al, 1
jne 0x140124e6c
mov al, byte [rsi + 0x48]
test al, 1
jne 0x140124e6c
mov byte [rsi + 0x51], 1
mov rbx, qword [rsi + 0x68]
mov r14, qword [rsi + 0x70]
cmp rbx, r14
jne 0x140125193
cmp byte [rsi + 0x50], 0
jne 0x140124e6c
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov r15, qword [rsi + 0x10]
lea rbx, [rsi + 0x18]
lea rdx, [rsp + 0x30]
mov qword [rdx - 8], rbx
lea r14, [rsp + 0x28]
mov qword [r14 + 8], r14
mov qword [r14 + 0x10], 1
mov rcx, r14
xor r8d, r8d
call fcn.14005ca10
cmp qword [r14 + 0x10], 0
je 0x1401251a8
xor r12d, r12d
mov r13, qword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
mov rax, qword [rsp + 0x30]
mov rax, qword [rax + r12*8]
mov r14, qword [rax + 0x10]
test r14, r14
je 0x1401251c0
add r14, 0x108
mov rcx, r14
call r13
test al, al
je 0x1401251d0
inc r12
mov rax, qword [rsp + 0x38]
cmp r12, rax
jb 0x140124d76
mov rcx, qword [rsp + 0x28]
mov rcx, qword [rcx + 0x10]
cmp dword [rcx + 4], 4
je 0x1401251dd
mov r14, qword [rcx + 0xe0]
mov qword [rcx + 0xe0], 0
test r14, r14
je 0x140124e1a
lock dec dword [r14 + 8]
jne 0x140124e1a
mov rax, qword [r14]
mov rax, qword [rax]
lea rcx, [0x1400b04e0]
cmp rax, rcx
jne 0x140125218
lea rax, [0x1403000d8]
mov qword [r14], rax
mov rcx, qword [r14 + 0x10]
test rcx, rcx
je 0x140124e12
lock dec dword [rcx + 8]
je 0x14012522b
mov rcx, r14
call fcn.14016eccc
cmp qword [rsp + 0x38], 0
je 0x140124e4f
xor r14d, r14d
mov r12d, 0x108
mov r13, qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov rax, qword [rsp + 0x30]
mov rax, qword [rax + r14*8]
mov rcx, qword [rax + 0x10]
add rcx, r12
call r13
inc r14
cmp r14, qword [rsp + 0x38]
jb 0x140124e32
mov rcx, qword [r15 + 0x20]
mov rdx, rbx
call fcn.14006f170
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x1401251c3
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
xor ebp, ebp
test rsi, rsi
je 0x140124e82
lock dec dword [rsi + 8]
je 0x140124eb2
lea rcx, [rsp + 0x40]
call fcn.14004db40
mov rcx, qword [rsp + 0x1b0]
xor rcx, rsp
call fcn.140171860
mov eax, ebp
add rsp, 0x1b8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rax, qword [rsi]
mov rax, qword [rax + 0xe0]
lea rcx, [fcn.140097f60]
cmp rax, rcx
jne 0x140125273
lea rax, method.std::Cr::codecvt_char__char__struct__Mbstatet_.virtual_40
mov qword [rsi], rax
mov rdi, qword [rsi + 0x68]
test rdi, rdi
jne 0x1401252d8
mov rcx, qword [rsi + 0x58]
mov rax, qword [0x1403428e0]
and rax, rcx
cmp rax, qword [0x1403428c8]
jne 0x140124eff
call fcn.1401571d0
mov qword [rsi + 0x58], 0
mov rbx, qword [rsi + 0x28]
test rbx, rbx
je 0x140124fa0
lock dec dword [rbx]
jne 0x140124fa0
lea rcx, [rbx + 0xf0]
mov rdx, qword [rbx + 0xf8]
call fcn.1400709a0
mov rcx, qword [rbx + 0xe0]
test rcx, rcx
jne 0x1401252f8
mov r14, qword [rbx + 0xd8]
mov qword [rbx + 0xd8], 0
test r14, r14
jne 0x140125318
mov rax, qword [rbx + 0xc8]
mov rdi, qword [rbx + 0xd0]
cmp rdi, rax
jne 0x14012533c
mov rdx, qword [rbx + 0xb8]
lea rcx, fcn.140055170
xor r8d, r8d
call fcn.140054930
mov rdi, qword [rbx + 0x88]
test rdi, rdi
jne 0x1401253b2
mov rcx, rbx
call fcn.14016eccc
mov rcx, rsi
call fcn.14016eccc
jmp 0x140124e82
mov rcx, rbx
call fcn.140047ff0
jmp 0x140124aa8
cmp r9d, 1
jbe 0x140125525
cmp rax, r8
jae 0x140124fda
cmp rax, rcx
jne 0x14012507d
mov r14, qword [r14]
jmp 0x140124b4d
xor edx, edx
div r8
mov rax, rdx
jmp 0x140124fc9
mov rbx, qword [rsp + 0x1a8]
mov ecx, dword [0x1403411e0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x140125531
mov rcx, qword [rbx]
shl rcx, 4
mov qword [rax + rcx], rdi
mov ecx, dword [rbx + 8]
mov rdx, qword [rbx]
shl rdx, 4
mov dword [rax + rdx + 8], ecx
jmp 0x140124a8f
lea rcx, [0x140351380]
call fcn.14006d330
test al, al
je 0x14012556b
xorps xmm0, xmm0
movups xmmword [0x140351388], xmm0
lea r14, [0x140351380]
lea rbx, [0x140351388]
mov rcx, rbx
xor edx, edx
call fcn.140041af0
mov rcx, r14
mov rdx, rbx
xor r8d, r8d
mov r9, r14
call fcn.14006d410
jmp 0x140124a52
lea rcx, [r8 - 1]
and rcx, r15
jmp 0x140124b38
mov esi, 0x10
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov ebp, esi
jmp 0x140124e82
lea rax, [r10 - 1]
and rcx, rax
jmp 0x140124bee
mov rcx, qword [r12 + 0x30]
xorps xmm0, xmm0
movups xmmword [r12 + 0x30], xmm0
test rcx, rcx
je 0x140124b94
lock dec dword [rcx + 8]
jne 0x140124b94
mov rax, qword [rcx]
mov rax, qword [rax + 0xe0]
mov edx, 1
mov r15, r11
call qword [case.0x140211850.0]
mov r11, r15
jmp 0x140124b94
lea rcx, [0x14015d9b0]
cmp rax, rcx
jne 0x140125265
lea r14, [rsi + 0x18]
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x140125577
cmp byte [rsi + 0x21], 0
jne 0x140125584
mov byte [rsi + 0x21], 1
mov rdi, qword [rsi + 0x30]
mov rbx, qword [rsi + 0x38]
xorps xmm0, xmm0
movups xmmword [rsi + 0x30], xmm0
mov qword [rsi + 0x40], 0
mov r15, qword [rsi + 0x58]
mov r12, qword [rsi + 0x50]
cmp r15, r12
jne 0x1401254ae
mov qword [rsi + 0x58], r12
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
cmp rdi, rbx
jne 0x1401254bf
test rdi, rdi
je 0x140124e75
mov rcx, rdi
call fcn.14016eccc
jmp 0x140124e75
dec r10
and r8, r10
jmp 0x140124c86
mov rax, qword [rcx]
mov rax, qword [rax + 0xe0]
mov edx, 1
call qword [case.0x140211850.0]
jmp 0x140124cb9
mov rcx, rdi
call fcn.140047ff0
jmp 0x140124cf6
mov rcx, qword [rbx]
mov rdx, qword [rsi + 0x58]
call fcn.1400d2c50
add rbx, 0x28
jmp 0x140124d18
mov rax, qword [rsp + 0x28]
mov rcx, qword [rax + 0x10]
cmp dword [rcx + 4], 4
jne 0x140124dc1
jmp 0x140124e4f
int3
mov rcx, rdi
call fcn.140047ff0
jmp 0x140124e6c
mov rcx, r14
call fcn.140047ff0
jmp 0x140124da1
test rax, rax
je 0x140124e4f
xor r14d, r14d
mov r12d, 0x108
mov r13, qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov rax, qword [rsp + 0x30]
mov rax, qword [rax + r14*8]
mov rcx, qword [rax + 0x10]
add rcx, r12
call r13
inc r14
cmp r14, qword [rsp + 0x38]
jb 0x1401251f6
jmp 0x140124e4f
mov rcx, r14
mov edx, 1
call qword [case.0x140211850.0]
jmp 0x140124e1a
mov rax, qword [rcx]
mov rax, qword [rax + 0xe0]
mov edx, 1
call qword [case.0x140211850.0]
jmp 0x140124e12
lea rdx, [r10 - 1]
and rdx, r8
jmp 0x140124c4f
lea rdx, [r10 - 1]
and rax, rdx
jmp 0x140124c27
xor r9d, r9d
jmp 0x140124c97
mov rcx, rsi
call qword [case.0x140211850.0]
jmp 0x140124e75
lea rcx, [0x140044f30]
cmp rax, rcx
jne 0x140125512
lea rax, [0x1403007d0]
mov qword [rsi], rax
lea rcx, [rsi + 0x68]
mov rdx, qword [rsi + 0x70]
call fcn.140044fe0
mov rdi, qword [rsi + 0x50]
test rdi, rdi
je 0x1401252bc
mov rbx, qword [rsi + 0x58]
mov rcx, rdi
cmp rbx, rdi
jne 0x14012558c
mov qword [rsi + 0x58], rdi
call fcn.14016eccc
mov rdi, qword [rsi + 0x30]
test rdi, rdi
jne 0x1401255a6
mov rcx, rsi
call fcn.14016eccc
xor ebp, ebp
jmp 0x140124e82
mov rbx, qword [rsi + 0x70]
mov rcx, rdi
cmp rbx, rdi
jne 0x14012553b
mov qword [rsi + 0x70], rdi
call fcn.14016eccc
xor ebp, ebp
jmp 0x140124ee3
lock dec dword [rcx + 8]
jne 0x140124f40
mov rax, qword [rcx]
mov rax, qword [rax]
mov edx, 1
call qword [case.0x140211850.0]
jmp 0x140124f40
mov rcx, qword [r14 + 0x10]
mov qword [r14 + 0x10], 0
test rcx, rcx
jne 0x140125555
mov rcx, r14
call fcn.14016eccc
xor ebp, ebp
jmp 0x140124f5b
mov rcx, qword [rbx + 0xc0]
jbe 0x1401253ec
cmp rcx, rdi
jb 0x1401255d5
cmp rcx, rax
jb 0x1401255d8
cmp rax, rdi
jg 0x1401255db
mov r14, qword [rbx + 0xb8]
shl rdi, 3
lea rdi, [rdi + rdi*2]
shl rax, 3
lea r15, [rax + rax*2]
mov ebp, 0
mov rcx, qword [r14 + r15 + 0x10]
mov qword [r14 + r15 + 0x10], 0
test rcx, rcx
je 0x1401253a4
mov rax, qword [rcx]
mov rax, qword [rax]
mov edx, 1
call qword [case.0x140211850.0]
add r15, 0x18
cmp rdi, r15
jne 0x140125380
jmp 0x140124f72
mov r14, qword [rbx + 0x90]
mov rcx, rdi
cmp r14, rdi
je 0x1401253d9
add r14, 0xfffffffffffffff8
mov rcx, r14
call fcn.1400a2ee0
cmp r14, rdi
jne 0x1401253c1
mov rcx, qword [rbx + 0x88]
mov qword [rbx + 0x90], rdi
call fcn.14016eccc
xor ebp, ebp
jmp 0x140124f98
cmp rcx, rax
jb 0x1401255de
jl 0x1401255e1
je 0x140125448
mov r14, qword [rbx + 0xb8]
shl rcx, 3
lea r15, [rcx + rcx*2]
shl rax, 3
lea r12, [rax + rax*2]
mov rcx, qword [r14 + r12 + 0x10]
mov qword [r14 + r12 + 0x10], 0
test rcx, rcx
je 0x140125438
mov rax, qword [rcx]
mov rax, qword [rax]
mov edx, 1
call qword [case.0x140211850.0]
add r12, 0x18
cmp r15, r12
jne 0x140125414
mov rax, qword [rbx + 0xc0]
cmp rax, rdi
jb 0x1401255e4
test rdi, rdi
js 0x1401255e7
mov ebp, 0
je 0x140124f72
mov r14, qword [rbx + 0xb8]
shl rdi, 3
lea rdi, [rdi + rdi*2]
xor r15d, r15d
mov ebp, 0
mov rcx, qword [r14 + r15 + 0x10]
mov qword [r14 + r15 + 0x10], 0
test rcx, rcx
je 0x1401254a0
mov rax, qword [rcx]
mov rax, qword [rax]
mov edx, 1
call qword [case.0x140211850.0]
add r15, 0x18
cmp rdi, r15
jne 0x14012547c
jmp 0x140124f72
add r15, 0xfffffffffffffff0
mov rcx, r15
call fcn.1400a4eb0
jmp 0x14012512c
mov r14, rdi
mov r8, qword [r14]
mov rax, qword [r14 + 8]
mov rcx, qword [rax + 0x10]
mov rax, qword [rcx]
mov rax, qword [rax + 0xb0]
mov rdx, rsi
call qword [case.0x140211850.0]
mov rcx, qword [r14 + 8]
call fcn.1400d2fc0
add r14, 0x10
cmp r14, rbx
jne 0x1401254c2
test rdi, rdi
je 0x140124e75
add rbx, 0xfffffffffffffff0
mov rcx, rbx
call fcn.1400a4eb0
cmp rbx, rdi
je 0x140125154
jmp 0x1401254fb
mov rcx, rsi
mov edx, 1
call qword [case.0x140211850.0]
jmp 0x1401252d1
lea rdx, [r8 - 1]
and rax, rdx
jmp 0x140124fc9
call fcn.140001120
jmp 0x140125002
add rbx, 0xffffffffffffffd8
mov rcx, rbx
call fcn.140098270
cmp rbx, rdi
jne 0x14012553b
mov rcx, qword [rsi + 0x68]
jmp 0x1401252e8
mov rax, qword [rcx]
mov rax, qword [rax]
mov edx, 1
call qword [case.0x140211850.0]
jmp 0x14012532d
mov rbx, qword [0x140351380]
jmp 0x140124a52
mov rcx, r14
call fcn.140047ff0
jmp 0x1401250ff
mov rcx, r14
jmp 0x140124e6f
add rbx, 0xfffffffffffffff0
mov rcx, rbx
call fcn.1400a4eb0
cmp rbx, rdi
jne 0x14012558c
mov rcx, qword [rsi + 0x50]
jmp 0x1401252b3
mov rbx, qword [rsi + 0x38]
mov rcx, rdi
cmp rbx, rdi
je 0x1401255c7
add rbx, 0xfffffffffffffff0
mov rcx, rbx
call fcn.1400a4eb0
cmp rbx, rdi
jne 0x1401255b2
mov rcx, qword [rsi + 0x30]
mov qword [rsi + 0x38], rdi
call fcn.14016eccc
jmp 0x1401252c9
int3
int3
int3
int3
int3
int3
int3