Function at 0x1000661a8
Capabilities:
Get thread local storage value

Disassembly:
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x10], rdx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x148
movdqu xmm0, xmmword [r8]
mov r14, qword [r9 + 8]
mov r13, rdx
lea rdx, [0x1000086e8]
xor r8d, r8d
mov rsi, rcx
movdqu xmmword [rsp + 0x60], xmm0
mov ebp, 0x800
call fcn.100055880
mov r15d, 0xffffff80
mov ebx, dword [rax + 8]
mov rdi, rax
mov eax, dword [rax]
mov edx, eax
mov r12d, 1
and edx, r15d
cmp edx, r15d
je 0x10006622a
mov ecx, eax
not eax
and ecx, r15d
and eax, 0x7f
sub ecx, r12d
xor ecx, eax
mov dword [rdi], ecx
test r15d, ecx
jne 0x10006622a
mov rcx, rdi
call fcn.100059224
lea rdi, [0x1000e1ec4]
test ebx, ebx
je 0x100066295
xor ebp, ebp
test ebx, ebx
jle 0x100066250
movzx edx, bx
mov rcx, r14
call fcn.100064958
mov r14, rdi
test rax, rax
cmovne r14, rax
mov rcx, rsi
call fcn.10005fb00
mov rbx, rax
test rax, rax
je 0x100066295
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x100]
mov rdx, qword [0x1000e2050]
mov rdi, qword [rax]
mov rcx, rax
call qword [rdi + 0x50]
test al, al
je 0x100066295
mov al, byte [rbx + 0xd2]
shr al, 1
not al
test r12b, al
mov eax, 0x100000
cmove ebp, eax
mov ebx, dword [rsi + 0x90]
mov ecx, dword [0x1000de19c]
xor r12d, r12d
and qword [rsp + 0x98], r12
mov qword [rsp + 0xa0], r12
mov dword [rsp + 0x190], ebx
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rdi, rax
mov qword [rsp + 0x90], rax
test rax, rax
je 0x100066449
lea rdx, [0x1000078f0]
xor r8d, r8d
mov rcx, rsi
call fcn.100055880
lea ebx, [r12 - 0x80]
mov r12d, 1
mov edx, dword [rax]
mov r15d, dword [rax + 8]
mov ecx, edx
and ecx, ebx
cmp ecx, ebx
je 0x10006631c
mov ecx, edx
not edx
and ecx, ebx
and edx, 0x7f
sub ecx, r12d
xor ecx, edx
mov dword [rax], ecx
test ebx, ecx
jne 0x10006631c
mov rcx, rax
call fcn.100059224
lea rdx, [0x100007858]
xor r8d, r8d
mov rcx, rsi
call fcn.100055880
mov edx, dword [rax]
mov r13d, dword [rax + 8]
mov ecx, edx
and ecx, ebx
cmp ecx, ebx
je 0x100066358
mov ecx, edx
not edx
and ecx, ebx
and edx, 0x7f
sub ecx, r12d
xor ecx, edx
mov dword [rax], ecx
test ebx, ecx
jne 0x100066358
mov rcx, rax
call fcn.100059224
lea rdx, [0x1000077c0]
xor r8d, r8d
mov rcx, rsi
call fcn.100055880
mov edx, dword [rax]
mov r12d, dword [rax + 8]
mov ecx, edx
and ecx, ebx
cmp ecx, ebx
je 0x100066393
mov ecx, edx
not edx
and ecx, ebx
and edx, 0x7f
dec ecx
xor ecx, edx
mov dword [rax], ecx
test ebx, ecx
jne 0x100066393
mov rcx, rax
call fcn.100059224
mov rbx, qword [rsi + 0x98]
mov ecx, dword [rbx]
mov eax, ecx
and eax, 0xffffff80
cmp eax, 0xffffff80
je 0x1000663b5
mov eax, ecx
and ecx, 0x7f
and eax, 0xffffff80
sub eax, 0xffffff80
xor eax, ecx
mov dword [rbx], eax
mov rax, qword [rsi + 0x98]
and dword [rsp + 0x30], 0
mov rdi, qword [rdi]
mov rdx, qword [rax + 8]
mov r8d, dword [rsp + 0x190]
mov rcx, qword [rsp + 0x90]
mov r9d, r12d
mov dword [rsp + 0x28], r15d
mov dword [rsp + 0x20], r13d
call qword [rdi]
mov r15d, 0xffffff80
mov r12, rax
mov qword [rsp + 0xa0], rax
mov eax, dword [rbx]
mov ecx, eax
and ecx, r15d
cmp ecx, r15d
je 0x100066421
mov edx, eax
not eax
and edx, r15d
and eax, 0x7f
dec edx
xor edx, eax
mov dword [rbx], edx
test r15d, edx
jne 0x100066421
mov rcx, rbx
call fcn.100059224
mov r13, qword [rsp + 0x198]
test r12, r12
je 0x100066442
mov rdx, r12
mov rcx, r13
call qword [sym.imp.GDI32.dll_SelectObject]
mov qword [rsp + 0x98], rax
mov ebx, dword [rsp + 0x190]
or dword [rsp + 0x1a0], 0xffffffff
lea rdx, [0x1000075e8]
xor r8d, r8d
mov rcx, rsi
call fcn.100055880
mov r12d, 1
mov edx, dword [rax]
mov rdi, rax
shl edx, 0x1a
sar edx, 0x1a
sub edx, r12d
je 0x10006648d
cmp edx, 8
jne 0x1000664c1
mov edx, dword [rax + 0x10]
and edx, 0xffffff
bts edx, 0x19
jmp 0x1000664b1
mov ecx, dword [rax + 8]
cmp ecx, 0x2710
jl 0x1000664a6
add ecx, 0xffffd8f0
call qword [sym.imp.USER32.dll_GetSysColor]
jmp 0x1000664ab
call sub.wmpdui.dll_GetStdColorI
bts eax, 0x19
mov edx, eax
mov rcx, r13
call qword [sym.imp.GDI32.dll_SetTextColor]
mov dword [rsp + 0x1a0], eax
mov edx, dword [rdi]
mov eax, edx
and eax, r15d
cmp eax, r15d
je 0x1000664eb
mov ecx, edx
not edx
and ecx, r15d
and edx, 0x7f
sub ecx, r12d
xor ecx, edx
mov dword [rdi], ecx
test r15d, ecx
jne 0x1000664eb
mov rcx, rdi
call fcn.100059224
mov edx, r12d
mov rcx, r13
call qword [sym.imp.GDI32.dll_SetBkMode]
mov eax, ebx
xor r8d, r8d
movaps xmm5, xmmword [rsp + 0x60]
cdq
mov rcx, rsi
movdqa xmmword [rsp + 0xd0], xmm5
mov edi, eax
xor edi, edx
sub edi, edx
lea rdx, [0x100008790]
call fcn.100055880
mov edx, dword [rax]
mov bl, byte [rax + 8]
mov ecx, edx
and ecx, r15d
cmp ecx, r15d
je 0x10006654d
mov ecx, edx
not edx
and ecx, r15d
and edx, 0x7f
sub ecx, r12d
xor ecx, edx
mov dword [rax], ecx
test r15d, ecx
jne 0x10006654d
mov rcx, rax
call fcn.100059224
test bl, bl
je 0x1000665d6
and dword [rsp + 0x20], 0
mov eax, 0x2aaaaaab
lea rcx, [rsp + 0x80]
imul edi
mov eax, edx
xor r8d, r8d
shr eax, 0x1f
add edx, eax
mov r9d, edx
call qword [sym.imp.USER32.dll_SetRect]
mov edx, dword [rsp + 0x60]
mov eax, dword [rsp + 0x68]
add edx, dword [rsp + 0x80]
cmp edx, eax
mov dword [rsp + 0x60], edx
jle 0x100066599
mov dword [rsp + 0x60], eax
jmp 0x1000665a9
sub eax, dword [rsp + 0x88]
cmp eax, edx
cmovl eax, edx
mov dword [rsp + 0x68], eax
mov ecx, dword [rsp + 0x64]
mov eax, dword [rsp + 0x6c]
add ecx, dword [rsp + 0x84]
cmp ecx, eax
mov dword [rsp + 0x64], ecx
jle 0x1000665c6
mov dword [rsp + 0x64], eax
jmp 0x1000665d6
sub eax, dword [rsp + 0x8c]
cmp eax, ecx
cmovl eax, ecx
mov dword [rsp + 0x6c], eax
lea rdx, [0x100007858]
xor r8d, r8d
mov rcx, rsi
call fcn.100055880
mov edx, dword [rax]
mov r15d, dword [rax + 8]
mov ecx, edx
and ecx, 0xffffff80
cmp ecx, 0xffffff80
je 0x100066619
mov ecx, edx
not edx
and ecx, 0xffffff80
and edx, 0x7f
sub ecx, r12d
xor ecx, edx
mov dword [rax], ecx
test ecx, 0xffffff80
jne 0x100066619
mov rcx, rax
call fcn.100059224
mov edi, dword [rsp + 0x1b0]
and r15d, 8
test byte [rsi + 0x8a], r12b
jne 0x100066760
test r15d, r15d
jne 0x100066760
mov eax, ebp
shr eax, 0xb
not al
test r12b, al
jne 0x100066760
bt edi, 9
jb 0x100066760
test edi, 0x150
jne 0x100066760
mov r8d, edi
and r8d, 0xc
cmp r8d, 4
je 0x100066760
test byte [rsi + 0x8b], 0x20
jne 0x100066760
xor ebp, ebp
xor r12d, r12d
xor r13d, r13d
and edi, 3
lea r15d, [rbp + 1]
je 0x1000666be
sub edi, r15d
je 0x1000666a5
cmp edi, r15d
jne 0x1000666c3
lea ebp, [r12 + 2]
mov r12d, dword [rsp + 0x68]
jmp 0x1000666c3
mov ecx, dword [rsp + 0x68]
mov eax, dword [rsp + 0x60]
mov ebp, 6
add eax, ecx
cdq
sub eax, edx
sar eax, 1
mov r12d, eax
jmp 0x1000666c3
mov r12d, dword [rsp + 0x60]
test r8d, r8d
je 0x1000666d8
cmp r8d, 8
jne 0x1000666dd
mov r13d, dword [rsp + 0x6c]
or ebp, r8d
jmp 0x1000666dd
mov r13d, dword [rsp + 0x64]
mov rcx, qword [rsp + 0x198]
mov edx, ebp
call qword [sym.imp.GDI32.dll_SetTextAlign]
mov rdx, qword [rsi]
or rcx, 0xffffffffffffffff
mov ebx, eax
xor eax, eax
mov rdi, r14
repne scasw ax, word [rdi]
not rcx
sub rcx, r15
mov rdi, rcx
mov rcx, rsi
call qword [rdx + 8]
mov r8d, r13d
mov r13, qword [rsp + 0x198]
neg al
lea rax, [rsp + 0xd0]
mov edx, r12d
sbb r9d, r9d
and qword [rsp + 0x38], 0
mov dword [rsp + 0x30], edi
and r9d, 0x80
mov rcx, r13
mov qword [rsp + 0x28], r14
or r9d, 4
mov qword [rsp + 0x20], rax
call qword [sym.imp.GDI32.dll_ExtTextOutW]
mov edx, ebx
mov rcx, r13
call qword [sym.imp.GDI32.dll_SetTextAlign]
jmp 0x100066b78
mov edx, edi
mov rcx, rsi
call fcn.100067c18
mov ebx, eax
mov eax, edi
or ebx, ebp
and eax, 3
mov ebp, 2
je 0x10006678b
sub eax, r12d
je 0x100066788
sub eax, r12d
jne 0x10006678b
or ebx, ebp
jmp 0x10006678b
or ebx, r12d
and edi, 0xc
je 0x1000667ae
cmp edi, 4
je 0x1000667a9
cmp edi, 8
je 0x1000667a4
cmp edi, 0xc
jne 0x1000667b1
or ebx, 0x10
jmp 0x1000667b1
or ebx, 0x28
jmp 0x1000667b1
or ebx, 0x24
jmp 0x1000667b1
or ebx, 0x20
mov al, byte [rsi + 0x8b]
shr al, 5
and al, r12b
je 0x1000669f9
xor r12b, r12b
call fcn.1000788b0
test eax, eax
js 0x1000669f3
mov eax, 1
lea rcx, [rsp + 0xac]
xor edx, edx
lea r8d, [rax + 0x13]
mov byte [rsp + 0x190], r12b
mov byte [rsp + 0x191], r12b
mov byte [rsp + 0x192], 0xff
mov byte [rsp + 0x193], al
mov dword [rsp + 0xa8], 0x18
call sub.msvcrt.dll_memset
lea rax, [rsp + 0x190]
lea r9, [rsp + 0xa8]
movaps xmm0, xmmword [rsp + 0x60]
movdqa xmmword [rsp + 0xe0], xmm0
mov qword [rsp + 0xb8], rax
lea rax, [rsp + 0x78]
lea rdx, [rsp + 0xe0]
mov r8d, ebp
mov rcx, r13
mov dword [rsp + 0xac], 9
mov qword [rsp + 0x20], rax
call qword [sym.imp.UxTheme.dll_BeginBufferedPaint]
mov r13, rax
test rax, rax
je 0x1000669eb
and qword [rsp + 0x80], 0
lea rdx, [rsp + 0x80]
lea rcx, [0x10000ff70]
call fcn.1000790a0
test eax, eax
js 0x1000669ca
lea rdx, [0x1000088a8]
xor r8d, r8d
mov rcx, rsi
xor edi, edi
call fcn.100055880
mov ecx, dword [rax + 8]
mov edx, dword [rax]
mov dword [rsp + 0x70], ecx
mov ecx, edx
and ecx, 0xffffff80
cmp ecx, 0xffffff80
je 0x1000668dc
mov ecx, edx
not edx
and ecx, 0xffffff80
and edx, 0x7f
dec ecx
xor ecx, edx
mov dword [rax], ecx
test ecx, 0xffffff80
jne 0x1000668dc
mov rcx, rax
call fcn.100059224
mov rdx, qword [rsp + 0xa0]
test rdx, rdx
je 0x1000668f7
mov rcx, qword [rsp + 0x78]
call qword [sym.imp.GDI32.dll_SelectObject]
mov rdi, rax
xor edx, edx
lea rcx, [rsp + 0xf4]
lea r8d, [rdx + 0x44]
call sub.msvcrt.dll_memset
mov eax, dword [rsp + 0x70]
mov rcx, qword [rsp + 0x198]
mov dword [rsp + 0x124], eax
mov dword [rsp + 0xf0], 0x48
mov dword [rsp + 0xf4], 0x2801
call qword [sym.imp.GDI32.dll_GetTextColor]
lea rcx, [rsp + 0xc0]
movaps xmm0, xmmword [rsp + 0x60]
mov dword [rsp + 0xf8], eax
mov eax, dword [rsp + 0x70]
movdqa xmmword [rsp + 0xc0], xmm0
neg eax
mov r8d, eax
mov edx, eax
call qword [sym.imp.USER32.dll_InflateRect]
mov rdx, qword [rsp + 0x78]
mov rcx, qword [rsp + 0x80]
lea r11, [rsp + 0xf0]
lea rax, [rsp + 0xc0]
xor r9d, r9d
mov qword [rsp + 0x40], r11
mov qword [rsp + 0x38], rax
mov dword [rsp + 0x30], ebx
or dword [rsp + 0x28], 0xffffffff
xor r8d, r8d
mov qword [rsp + 0x20], r14
call qword [sym.imp.UxTheme.dll_DrawThemeTextEx]
movzx r12d, r12b
test eax, eax
mov eax, 1
cmovns r12d, eax
test rdi, rdi
je 0x1000669ca
mov rcx, qword [rsp + 0x78]
mov rdx, rdi
call qword [sym.imp.GDI32.dll_SelectObject]
mov edx, 1
mov rcx, r13
call qword [sym.imp.UxTheme.dll_EndBufferedPaint]
mov r13, qword [rsp + 0x198]
test r12b, r12b
jne 0x100066b78
jmp 0x1000669f3
mov r13, qword [rsp + 0x198]
mov r12d, 1
test r15d, r15d
je 0x100066a85
lea rdx, [0x1000089c8]
xor r8d, r8d
mov rcx, rsi
call fcn.100055880
mov edx, dword [rax]
mov edi, dword [rax + 8]
mov ecx, edx
and ecx, 0xffffff80
cmp ecx, 0xffffff80
je 0x100066a44
mov ecx, edx
not edx
and ecx, 0xffffff80
and edx, 0x7f
sub ecx, r12d
xor ecx, edx
mov dword [rax], ecx
test ecx, 0xffffff80
jne 0x100066a44
mov rcx, rax
call fcn.100059224
mov rcx, r13
call qword [sym.imp.GDI32.dll_GetTextColor]
mov dword [rsp + 0x50], r12d
mov byte [rsp + 0x48], dil
mov dword [rsp + 0x40], ebp
mov dword [rsp + 0x38], ebp
and dword [rsp + 0x30], 0
mov dword [rsp + 0x28], eax
lea r9, [rsp + 0x60]
or r8d, 0xffffffff
mov rdx, r14
mov rcx, r13
mov dword [rsp + 0x20], ebx
call fcn.1000641a4
jmp 0x100066b78
cmp dword [0x1000e2d3c], 0
movabs rdi, 0x8000000000000001
je 0x100066af7
cmp byte [0x1000e2d00], 0
mov al, byte [0x1000e2d40]
je 0x100066aba
cmp al, 4
jae 0x100066aaf
test al, al
jne 0x100066af7
test byte [0x1000e2d38], r12b
jne 0x100066add
jmp 0x100066af7
cmp al, 4
jae 0x100066ac2
test al, al
jne 0x100066af7
test qword [0x1000e2d28], rdi
je 0x100066af7
mov rcx, qword [0x1000e2d30]
mov rax, rcx
and rax, rdi
cmp rax, rcx
jne 0x100066af7
mov rcx, qword [0x1000e2d10]
lea r8, [0x10000d308]
lea rdx, [0x10000d518]
call fcn.1000531fc
lea r9, [rsp + 0x60]
or r8d, 0xffffffff
mov rdx, r14
mov rcx, r13
mov dword [rsp + 0x20], ebx
call qword [sym.imp.USER32.dll_DrawTextW]
cmp dword [0x1000e2d3c], 0
je 0x100066b78
cmp byte [0x1000e2d00], 0
mov al, byte [0x1000e2d40]
je 0x100066b3b
cmp al, 4
jae 0x100066b30
test al, al
jne 0x100066b78
test byte [0x1000e2d38], r12b
jne 0x100066b5e
jmp 0x100066b78
cmp al, 4
jae 0x100066b43
test al, al
jne 0x100066b78
test qword [0x1000e2d28], rdi
je 0x100066b78
mov rcx, qword [0x1000e2d30]
mov rax, rcx
and rax, rdi
cmp rax, rcx
jne 0x100066b78
mov rcx, qword [0x1000e2d10]
lea r8, [0x10000d308]
lea rdx, [0x10000d528]
call fcn.1000531fc
mov eax, dword [rsp + 0x1a0]
cmp eax, 0xffffffff
je 0x100066b8f
mov edx, eax
mov rcx, r13
call qword [sym.imp.GDI32.dll_SetTextColor]
mov rax, qword [rsp + 0x98]
test rax, rax
je 0x100066ba8
mov rdx, rax
mov rcx, r13
call qword [sym.imp.GDI32.dll_SelectObject]
mov rcx, qword [rsp + 0x90]
test rcx, rcx
je 0x100066bbb
mov rax, qword [rcx]
call qword [rax + 8]
mov rax, qword [rsp + 0x1a8]
cmp r14, qword [rax + 8]
je 0x100066be9
lea rax, [0x1000e1ec4]
cmp r14, rax
je 0x100066be9
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov r8, r14
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
add rsp, 0x148
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret