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

Disassembly:
push rsi
push rdi
push rbx
sub rsp, 0x90
mov rsi, rdx
mov rdi, rcx
mov ecx, dword [rcx + 0x18]
test ecx, ecx
je 0x469104
dec ecx
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 2
jb 0x469119
cmp qword [rax + 8], 0
je 0x469119
add rax, 0x10
jmp 0x4691fa
mov rcx, rdi
call fcn.0053fd10
mov ecx, eax
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 2
jae 0x4690f4
mov ecx, dword [rdi + 0x18]
test ecx, ecx
je 0x4691df
dec ecx
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
je 0x4691f8
mov rbx, rax
test rax, rax
jne 0x4691c6
mov qword [rsp + 0x28], 0
mov qword [rsp + 0x20], rdi
mov rax, qword [0x005f7f18]
movzx eax, byte [rax]
mov ecx, 0x70
mov edx, 8
call fcn.0044f650
test rax, rax
je 0x469211
mov rbx, rax
movups xmm0, xmmword [rsp + 0x80]
movups xmmword [rax + 0x60], xmm0
movups xmm0, xmmword [rsp + 0x70]
movups xmmword [rax + 0x50], xmm0
movups xmm0, xmmword [rsp + 0x60]
movups xmmword [rax + 0x40], xmm0
movups xmm0, xmmword [rsp + 0x20]
movups xmm1, xmmword [rsp + 0x30]
movups xmm2, xmmword [rsp + 0x40]
movups xmm3, xmmword [rsp + 0x50]
movups xmmword [rax + 0x30], xmm3
movups xmmword [rax + 0x20], xmm2
movups xmmword [rax + 0x10], xmm1
movups xmmword [rax], xmm0
mov ecx, dword [rdi + 0x18]
test ecx, ecx
je 0x469205
dec ecx
mov rdx, rbx
call fcn.005ab204
add rbx, 8
mov rcx, rbx
mov rdx, rsi
add rsp, 0x90
pop rbx
pop rdi
pop rsi
jmp 0x48c480
mov rcx, rdi
call fcn.0053fd10
mov ecx, eax
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
jne 0x469135
xor eax, eax
add rsp, 0x90
pop rbx
pop rdi
pop rsi
ret
mov rcx, rdi
call fcn.0053fd10
mov ecx, eax
jmp 0x4691be
mov ecx, 8
mov edx, 0x70
call fcn.00578c70
ud2
push rsi
push rdi
sub rsp, 0x108
movaps xmmword [rsp + 0xf0], xmm6
mov rsi, rcx
test rdx, rdx
je 0x48c58a
mov rax, qword [rdx + 0x60]
mov qword [rsp + 0xa0], rax
movups xmm0, xmmword [rdx + 0x50]
movaps xmmword [rsp + 0x90], xmm0
movups xmm0, xmmword [rdx + 0x40]
movaps xmmword [rsp + 0x80], xmm0
movups xmm0, xmmword [rdx]
movups xmm1, xmmword [rdx + 0x10]
movups xmm2, xmmword [rdx + 0x20]
movups xmm3, xmmword [rdx + 0x30]
movaps xmmword [rsp + 0x70], xmm3
movaps xmmword [rsp + 0x60], xmm2
movaps xmmword [rsp + 0x50], xmm1
movaps xmmword [rsp + 0x40], xmm0
mov qword [rdx], 0
cmp qword [rsp + 0x40], 0
je 0x48c580
movups xmm0, xmmword [rsp + 0x48]
movups xmm1, xmmword [rsp + 0x58]
movups xmm6, xmmword [rsp + 0x68]
movaps xmmword [rsp + 0xe0], xmm1
movaps xmmword [rsp + 0xd0], xmm0
mov r10, qword [rsp + 0x78]
movaps xmm0, xmmword [rsp + 0x80]
movaps xmmword [rsp + 0xb0], xmm0
mov rax, qword [rsp + 0x90]
mov qword [rsp + 0xc0], rax
mov ecx, dword [rsp + 0x98]
mov edx, dword [rsp + 0x9c]
movzx r8d, byte [rsp + 0xa0]
movzx r9d, byte [rsp + 0xa1]
movzx eax, byte [rsp + 0xa2]
mov r11d, dword [rsp + 0xa3]
mov dword [rsp + 0x28], r11d
movzx r11d, byte [rsp + 0xa7]
mov byte [rsp + 0x2c], r11b
jmp 0x48c5e5
lea rcx, [rsp + 0x40]
call fcn.0048f810
mov qword [rsp + 0x28], 0
mov qword [rsp + 0x30], 2
xorps xmm6, xmm6
movaps xmmword [rsp + 0x40], xmm6
call fcn.004b9b60
mov rcx, rax
shr rcx, 0x20
cmp eax, 2
mov edx, 1
cmovae edx, eax
mov rax, qword [rsp + 0x38]
mov qword [rsp + 0xc0], rax
movups xmm0, xmmword [rsp + 0x28]
movaps xmmword [rsp + 0xb0], xmm0
movaps xmmword [rsp + 0xd0], xmm6
mov al, 2
xor r8d, r8d
xor r10d, r10d
mov r11, qword [rsi + 0x60]
mov qword [rsp + 0xa0], r11
movups xmm0, xmmword [rsi + 0x50]
movaps xmmword [rsp + 0x90], xmm0
movups xmm0, xmmword [rsi + 0x40]
movaps xmmword [rsp + 0x80], xmm0
movups xmm0, xmmword [rsi]
movups xmm1, xmmword [rsi + 0x10]
movups xmm2, xmmword [rsi + 0x20]
movups xmm3, xmmword [rsi + 0x30]
movaps xmmword [rsp + 0x70], xmm3
movaps xmmword [rsp + 0x60], xmm2
movaps xmmword [rsp + 0x50], xmm1
movaps xmmword [rsp + 0x40], xmm0
mov qword [rsi], 1
lea rdi, [rsi + 8]
movaps xmm0, xmmword [rsp + 0xd0]
movaps xmm1, xmmword [rsp + 0xe0]
movups xmmword [rsi + 8], xmm0
movups xmmword [rsi + 0x18], xmm1
movups xmmword [rsi + 0x28], xmm6
mov qword [rsi + 0x38], r10
movaps xmm0, xmmword [rsp + 0xb0]
movups xmmword [rsi + 0x40], xmm0
mov r10, qword [rsp + 0xc0]
mov qword [rsi + 0x50], r10
mov dword [rsi + 0x58], ecx
mov dword [rsi + 0x5c], edx
mov byte [rsi + 0x60], r8b
mov byte [rsi + 0x61], r9b
mov byte [rsi + 0x62], al
movzx eax, byte [rsp + 0x2c]
mov byte [rsi + 0x67], al
mov eax, dword [rsp + 0x28]
mov dword [rsi + 0x63], eax
lea rcx, [rsp + 0x40]
call fcn.0048f810
mov rax, rdi
movaps xmm6, xmmword [rsp + 0xf0]
add rsp, 0x108
pop rdi
pop rsi
ret