Function at 0x18020f610
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
mov rax, rsp
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0xf8]
sub rsp, 0x1d0
movaps xmmword [rax - 0x38], xmm6
mov rax, qword [0x180717100]
xor rax, rsp
mov qword [rbp + 0xb8], rax
mov r14d, r9d
mov r11, r8
mov r15, rdx
mov rdi, rcx
xor r13d, r13d
mov dword [rcx + 0x30], r9d
cmp r9d, 1
je 0x18020f6b0
mov r9, qword [rcx + 8]
mov rdx, qword [r9 + 0x58]
movsxd rcx, dword [rdx]
cmp rcx, r8
cmovb r8, rcx
sub ecx, r8d
mov dword [rdx], ecx
mov rcx, qword [r9 + 0x40]
movsxd rax, r8d
add qword [rcx], rax
mov rax, qword [r9 + 0x40]
mov rdx, qword [rax]
mov rax, qword [r9 + 0x38]
mov rcx, qword [rax]
mov qword [rax], rcx
sub edx, ecx
mov rax, qword [r9 + 0x50]
mov dword [rax], edx
cmp dword [r15], r13d
jne 0x18020f89b
test r11, r11
je 0x18020f89b
mov rcx, qword [rdi + 8]
mov rax, qword [rcx + 0x38]
mov rdx, qword [rax]
mov qword [rsp + 0x40], rdx
mov rax, qword [rcx + 0x40]
mov rcx, qword [rax]
sub rcx, rdx
mov qword [rsp + 0x48], rcx
movaps xmm0, xmmword [rsp + 0x40]
movdqa xmmword [rsp + 0x50], xmm0
mov qword [rbp - 0x70], r13
mov qword [rbp - 0x50], r13
lea rax, [rsp + 0x50]
mov qword [rbp - 0x68], rax
lea rcx, [rsp + 0x50]
mov qword [rbp - 0x60], rcx
lea rax, [rsp + 0x60]
mov qword [rbp - 0x58], rax
nop dword [rax]
movups xmm0, xmmword [rcx]
movups xmmword [rbp - 0x80], xmm0
cmp qword [rcx + 8], r13
jne 0x18020f71b
add rcx, 0x10
lea rax, [rsp + 0x60]
cmp rcx, rax
jne 0x18020f700
mov qword [rbp - 0x60], rcx
mov r8, qword [rdi + 0x38]
lea rdx, [rbp - 0x80]
lea rcx, [rbp + 0x30]
call fcn.1802168f0
xorps xmm2, xmm2
movdqu xmmword [rbp - 0x80], xmm2
mov qword [rbp - 0x70], r13
mov rbx, r13
lea rax, [rsp + 0x50]
mov qword [rbp - 0x68], rax
lea rcx, [rsp + 0x50]
lea rax, [rsp + 0x60]
mov qword [rbp - 0x58], rax
nop word [rax + rax]
movups xmm0, xmmword [rcx]
movups xmmword [rsp + 0x40], xmm0
add rbx, qword [rcx + 8]
add rcx, 0x10
lea rax, [rsp + 0x60]
cmp rcx, rax
jne 0x18020f760
mov qword [rbp - 0x60], rcx
mov qword [rbp - 0x50], rbx
movaps xmmword [rbp - 0x10], xmm2
movups xmm0, xmmword [rbp - 0x70]
movaps xmmword [rbp], xmm0
movups xmm1, xmmword [rbp - 0x60]
movaps xmmword [rbp + 0x10], xmm1
movsd xmm0, qword [rbp - 0x50]
movsd qword [rbp + 0x20], xmm0
movups xmm1, xmmword [rbp + 0x30]
movaps xmmword [rbp - 0x80], xmm1
movups xmm0, xmmword [rbp + 0x40]
movaps xmmword [rbp - 0x70], xmm0
movups xmm1, xmmword [rbp + 0x50]
movaps xmmword [rbp - 0x60], xmm1
movsd xmm0, qword [rbp + 0x60]
movsd qword [rbp - 0x50], xmm0
lea r9, [rdi + 0x10]
mov rax, qword [r9 + 0x10]
cmp qword [r9 + 0x18], 0xf
jbe 0x18020f7d9
add rax, qword [r9]
mov r9, qword [r9]
jmp 0x18020f7dc
add rax, r9
mov qword [rsp + 0x20], rax
lea r8, [rbp - 0x10]
lea rdx, [rbp - 0x80]
lea rcx, [rbp + 0x30]
call fcn.18021a030
mov r12, 0xffffffffffffffff
mov rdx, qword [rbp + 0x60]
cmp rdx, rbx
je 0x18020f818
cmp byte [rbp + 0x68], r13b
je 0x18020f818
mov rcx, qword [rdi + 0x20]
add rcx, rdx
mov qword [rdi + 0x38], rcx
mov rsi, r13
jmp 0x18020f889
mov r10, qword [rdi + 8]
mov rcx, qword [r10 + 0x40]
mov rax, qword [r10 + 0x38]
mov rcx, qword [rcx]
sub rcx, qword [rax]
cmp rcx, qword [r10 + 0x68]
jne 0x18020f839
mov qword [rdi + 0x38], r12
mov rsi, r13
jmp 0x18020f889
cmp rdx, rbx
cmovne rbx, rdx
mov qword [rdi + 0x38], rbx
mov rax, qword [r10 + 0x40]
mov r8, qword [rax]
mov rax, qword [r10 + 0x38]
mov r9, qword [rax]
sub r9, r8
add r9, qword [r10 + 0x68]
mov rcx, qword [r10 + 0x80]
sub rcx, qword [r10 + 0x70]
sub rcx, r8
add rcx, qword [rax]
mov eax, 0x10000
cmp r9, rax
cmovb rax, r9
mov esi, 0x200
cmp rcx, rsi
cmova rsi, rcx
cmp rax, rsi
cmovb rsi, rax
test r14d, r14d
jne 0x18020fa37
test rsi, rsi
jne 0x18020fa37
cmp qword [rdi + 0x38], 0xffffffffffffffff
jne 0x18020f8bb
call fcn.1801e1f30
mov dword [rsp + 0x40], 3
mov qword [rsp + 0x48], rax
movaps xmm6, xmmword [rsp + 0x40]
jmp 0x18020f8bf
movups xmm6, xmmword [r15]
movaps xmmword [rsp + 0x40], xmm6
cmp dword [r15], r13d
jne 0x18020f8d3
mov rbx, qword [rdi + 0x38]
cmp rbx, 0xffffffffffffffff
jne 0x18020f8d6
mov rbx, r13
lea rdx, [rdi + 0x50]
lea rcx, [rbp + 0x30]
call fcn.18021afa0
movd dword [rbp + 0x90], xmm6
mov eax, dword [rsp + 0x44]
mov dword [rbp + 0x94], eax
psrldq xmm6, 8
movq qword [rbp + 0x98], xmm6
mov qword [rbp + 0xa0], rbx
lea rsi, [rdi + 0x48]
mov rdi, qword [rdi + 0x40]
mov rbx, qword [rsi]
mov ecx, dword [0x180725560]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x18020f937
cmp qword [rax], rbx
je 0x18020fa1a
mov rax, qword [rax + 0x10]
test rax, rax
jne 0x18020f925
lea rax, [rbp + 0x30]
mov qword [rbp - 0x30], rax
lea rdx, [rbp + 0x30]
mov ecx, 0xb0
call fcn.1801e2240
mov rbx, rax
mov qword [rax + 0x20], r13
lea rax, [fcn.180223890]
mov qword [rbx + 0x28], rax
mov qword [rbx], r13
mov qword [rbx + 8], r13
mov qword [rbx + 0x10], r13
mov qword [rbx + 0x18], r13
mov dword [rbx + 0x30], r13d
lea rcx, [rbx + 0x38]
lea rdx, [rbp + 0x30]
call fcn.180223eb0
mov r8, rbx
mov rdx, rsi
mov rcx, rdi
call fcn.1801f2450
mov qword [rbp - 0x20], r13
mov qword [rbp - 0x28], r13
test al, al
je 0x18020fa0c
mov rax, qword [rsi]
mov qword [rsp + 0x60], rax
mov ecx, dword [0x180725560]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov qword [rsp + 0x70], rax
lea rax, [rsp + 0x60]
mov qword [rsp + 0x68], rax
lea rdx, [rsp + 0x60]
mov ecx, dword [0x180725560]
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
nop
mov rcx, qword [rdi + 0x28]
mov qword [rsp + 0x40], rcx
mov rax, qword [rsi]
mov qword [rsp + 0x48], rax
xor r9d, r9d
lea r8, [rbp - 0x40]
mov rdx, rbx
call fcn.180223890
nop
lea rcx, [rsp + 0x40]
call fcn.1801f2230
nop
mov rdx, qword [rsp + 0x70]
mov ecx, dword [0x180725560]
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
nop
lea rcx, [rbp + 0x38]
call fcn.1801fb110
jmp 0x18020fb68
cmp qword [rax + 8], 0
je 0x18020f937
nop
lea rdx, [rbp + 0x30]
lea rcx, [rbp + 0x30]
call fcn.180226500
nop
nop
jmp 0x18020fa0c
mov rbx, qword [rdi + 8]
mov rdx, rsi
mov rcx, rbx
call fcn.1801fa9f0
mov rax, qword [rbx + 0x40]
mov rcx, qword [rax]
mov qword [rsp + 0x40], rcx
mov qword [rsp + 0x48], rsi
mov rax, qword [rdi]
lea r15, [rax + 8]
mov r13, qword [rax]
lea rdx, [rdi + 0x50]
mov ecx, 0x110
call fcn.1801e2240
mov rbx, rax
mov rax, qword [r15 + 0x18]
xor r8d, r8d
mov r14d, r8d
mov ecx, r8d
test rax, rax
je 0x18020fa94
mov rcx, qword [r15 + 0x10]
mov r14, rax
lock inc dword [rax + 0xc]
mov rsi, qword [rsp + 0x48]
movzx eax, byte [r15 + 8]
mov qword [rbx + 0x20], r8
lea rdx, [0x180221390]
mov qword [rbx + 0x28], rdx
mov qword [rbx], r8
mov qword [rbx + 8], r8
mov qword [rbx + 0x10], r8
mov qword [rbx + 0x18], r8
mov dword [rbx + 0x30], r8d
mov byte [rbx + 0x38], al
mov qword [rbx + 0x40], r8
mov qword [rbx + 0x48], r8
mov rdx, rdi
test r14, r14
je 0x18020fb09
mov qword [rbx + 0x40], rcx
mov qword [rbx + 0x48], r14
lock inc dword [r14 + 0xc]
movups xmm0, xmmword [rsp + 0x40]
movups xmmword [rbx + 0x50], xmm0
lea rcx, [rbx + 0x60]
call fcn.1802214c0
lock xadd dword [r14 + 0xc], r12d
cmp r12d, 1
jne 0x18020fb02
mov rax, qword [r14]
mov rcx, r14
call qword [rax + reloc.WS2_32.dll_htonl]
mov rsi, qword [rsp + 0x48]
jmp 0x18020fb1b
movups xmm0, xmmword [rsp + 0x40]
movups xmmword [rbx + 0x50], xmm0
lea rcx, [rbx + 0x60]
call fcn.1802214c0
mov rax, qword [rsp + 0x40]
mov qword [rsp + 0x68], rax
mov dword [rsp + 0x60], esi
mov qword [rsp + 0x70], rsi
test byte [r15 + 8], 0x10
je 0x18020fb3e
test rsi, rsi
jne 0x18020fb3e
mov al, 1
jmp 0x18020fb40
xor eax, eax
mov qword [rsp + 0x30], rbx
mov byte [rsp + 0x28], al
mov dword [rsp + 0x20], 0
mov r9d, 1
lea r8, [rsp + 0x60]
mov rdx, r15
lea rcx, [r13 + 0x28]
call fcn.1801f1cc0
mov rcx, qword [rbp + 0xb8]
xor rcx, rsp
call fcn.18027f010
lea r11, [rsp + 0x1d0]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
movaps xmm6, xmmword [r11 - 0x10]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret