Function at 0x100065658
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
sub rsp, 0x1a0
movdqu xmm0, xmmword [r9]
xor r14d, r14d
mov r13, rcx
mov ecx, dword [0x1000de19c]
lea esi, [r14 + 1]
mov rbp, r8
movdqu xmmword [rsp + 0x68], xmm0
mov r12, rdx
mov qword [rsp + 0x60], r14
mov dil, 0xff
mov byte [rsp + 0x1f0], sil
xor ebx, ebx
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edx, dword [rbp]
mov r8, rax
mov qword [rsp + 0xd0], rax
shl edx, 0x1a
sar edx, 0x1a
sub edx, esi
je 0x100065dbf
sub edx, 8
je 0x100065c44
sub edx, 2
jne 0x100065ea3
mov cl, byte [rbp + 0x1c]
lea r14d, [rsi + 2]
mov al, cl
and al, r14b
mov dl, al
je 0x10006572b
cmp al, 2
jne 0x100065ea0
mov eax, dword [r13 + 0x8c]
mov r12b, 0x20
mov rcx, rbp
and al, r12b
cmp al, r12b
sete dl
call fcn.100059a64
mov rcx, qword [rsp + 0x1e8]
lea r8, [rsp + 0x68]
mov rdx, rax
call qword [sym.imp.GDI32.dll_PlayEnhMetaFile]
mov bpl, sil
jmp 0x100065b7c
shr cl, 2
and cl, 0xf
mov al, cl
cmp cl, sil
je 0x100065bb6
cmp al, 4
je 0x100065ab5
sub al, 5
cmp al, r14b
ja 0x100065beb
mov ebx, 0xc0
lea rcx, [rsp + 0xe0]
xor edx, edx
mov r8, rbx
call sub.msvcrt.dll_memset
mov edx, r14d
mov rcx, r12
call qword [sym.imp.GDI32.dll_SetStretchBltMode]
mov qword [rsp + 0xe8], r12
mov r12b, 0x20
mov edi, eax
mov eax, dword [r13 + 0x8c]
mov rcx, rbp
and al, r12b
mov dword [rsp + 0xe0], ebx
mov dword [rsp + 0x100], esi
cmp al, r12b
sete dl
call fcn.100059a64
movzx r9d, word [rbp + 0x18]
lea rcx, [rsp + 0x110]
mov qword [rsp + 0x108], rax
movzx eax, word [rbp + 0x1a]
xor r8d, r8d
xor edx, edx
mov dword [rsp + 0x20], eax
call qword [sym.imp.USER32.dll_SetRect]
mov rcx, qword [rsp + 0x1f8]
mov rbx, qword [rsp + 0x210]
mov eax, dword [rcx + 0xc]
mov r9d, dword [rcx + 8]
mov r8d, dword [rcx + 4]
mov edx, dword [rcx]
add eax, dword [rbx + 0xc]
add r9d, dword [rbx + 8]
sub r8d, dword [rbx + 4]
sub edx, dword [rbx]
lea rcx, [rsp + 0x120]
mov dword [rsp + 0x20], eax
call qword [sym.imp.USER32.dll_SetRect]
lea rdx, [rsp + 0x120]
lea rcx, [rsp + 0xf0]
call qword [sym.imp.USER32.dll_CopyRect]
mov r11b, byte [rbp + 0x1c]
mov eax, dword [rbx]
and r11b, 0x3c
mov dword [rsp + 0x140], eax
cmp r11b, r12b
jne 0x1000659da
test byte [r13 + 0x89], 0x80
mov eax, dword [rbx + 8]
mov dword [rsp + 0x144], eax
mov eax, dword [rbx + 4]
mov dword [rsp + 0x148], eax
mov eax, dword [rbx + 0xc]
mov dword [rsp + 0x14c], eax
jne 0x100065878
lea rdx, [0x100007b28]
xor r8d, r8d
mov rcx, r13
call fcn.100055880
mov r11, rax
jmp 0x10006587f
lea r11, [0x100013d20]
mov ecx, dword [r11]
mov ebx, dword [r11 + 8]
mov eax, ecx
and eax, 0xffffff80
cmp eax, 0xffffff80
je 0x1000658b0
mov eax, ecx
not ecx
and eax, 0xffffff80
and ecx, 0x7f
sub eax, esi
xor eax, ecx
mov dword [r11], eax
test eax, 0xffffff80
jne 0x1000658b0
mov rcx, r11
call fcn.100059224
test byte [r13 + 0x8c], r12b
je 0x1000658cd
mov eax, ebx
and eax, r14d
jne 0x1000658c5
or ebx, 2
jmp 0x1000658cd
cmp eax, 2
jne 0x1000658cd
and ebx, 0xfffffffd
mov r8, qword [rsp + 0x208]
mov ecx, ebx
and ecx, r14d
je 0x10006592d
sub ecx, esi
je 0x100065900
cmp ecx, esi
jne 0x100065954
movzx eax, word [rbp + 0x18]
mov ecx, dword [rsp + 0x128]
mov edx, dword [r8 + 8]
sub ecx, eax
sub ecx, edx
sub ecx, dword [rsp + 0x120]
jmp 0x100065946
movzx eax, word [rbp + 0x18]
mov ecx, dword [rsp + 0x128]
sub ecx, eax
sub ecx, dword [rsp + 0x120]
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
sub ecx, eax
mov dword [rsp + 0x130], eax
mov dword [rsp + 0x134], ecx
jmp 0x100065954
movzx eax, word [rbp + 0x18]
mov edx, dword [rsp + 0x128]
mov ecx, dword [r8]
sub edx, eax
sub edx, ecx
sub edx, dword [rsp + 0x120]
mov dword [rsp + 0x134], edx
mov dword [rsp + 0x130], ecx
and ebx, 0xc
je 0x1000659b0
cmp ebx, 4
je 0x100065983
cmp ebx, 8
jne 0x100065a14
movzx eax, word [rbp + 0x1a]
mov ecx, dword [rsp + 0x12c]
mov edx, dword [r8 + 0xc]
sub ecx, eax
sub ecx, edx
sub ecx, dword [rsp + 0x124]
jmp 0x1000659ca
movzx eax, word [rbp + 0x1a]
mov ecx, dword [rsp + 0x12c]
sub ecx, eax
sub ecx, dword [rsp + 0x124]
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
sub ecx, eax
mov dword [rsp + 0x138], eax
mov dword [rsp + 0x13c], ecx
jmp 0x100065a14
movzx eax, word [rbp + 0x1a]
mov edx, dword [rsp + 0x12c]
mov ecx, dword [r8 + 4]
sub edx, eax
sub edx, ecx
sub edx, dword [rsp + 0x124]
mov dword [rsp + 0x138], ecx
mov dword [rsp + 0x13c], edx
jmp 0x100065a14
mov dword [rsp + 0x130], eax
mov eax, dword [rbx + 8]
mov dword [rsp + 0x134], eax
mov dword [rsp + 0x144], eax
mov eax, dword [rbx + 4]
mov dword [rsp + 0x138], eax
mov dword [rsp + 0x148], eax
mov eax, dword [rbx + 0xc]
mov dword [rsp + 0x13c], eax
mov dword [rsp + 0x14c], eax
mov al, byte [rbp + 0x1c]
shr al, 2
and al, 0xf
cmp al, 6
jne 0x100065a4a
movzx ecx, byte [rbp + 0x1f]
movzx eax, byte [rbp + 0x20]
mov dword [rsp + 0x158], 2
shl eax, 0x10
shl ecx, 8
or ecx, eax
movzx eax, byte [rbp + 0x1e]
or ecx, eax
mov dword [rsp + 0x178], ecx
jmp 0x100065a93
cmp al, 7
jne 0x100065a93
movzx ecx, byte [rbp + 0x1e]
mov eax, 0x80808081
mov dword [rsp + 0x158], esi
mov byte [rsp + 0x17c], 0
mov byte [rsp + 0x17d], 0
mov byte [rsp + 0x17f], sil
imul ecx, dword [r13 + 0x80]
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov byte [rsp + 0x17e], dl
lea rcx, [rsp + 0xe0]
call fcn.100082088
mov rcx, qword [rsp + 0x1e8]
mov edx, edi
call qword [sym.imp.GDI32.dll_SetStretchBltMode]
jmp 0x100065723
mov eax, dword [r13 + 0x8c]
mov r12b, 0x20
mov rcx, rbp
and al, r12b
cmp al, r12b
sete dl
call fcn.100059a64
mov r12, qword [rsp + 0x1e8]
mov rcx, r12
mov rbx, rax
call qword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov rdx, rbx
mov rcx, rax
mov rsi, rax
call qword [sym.imp.GDI32.dll_SelectObject]
mov edx, 4
mov rcx, r12
mov rdi, rax
call qword [sym.imp.GDI32.dll_SetStretchBltMode]
movzx ecx, word [rbp + 0x18]
mov r10d, dword [rsp + 0x74]
mov r8d, dword [rsp + 0x6c]
mov r9d, dword [rsp + 0x70]
mov edx, dword [rsp + 0x68]
mov dword [rsp + 0x50], 0xcc0020
mov ebx, eax
movzx eax, word [rbp + 0x1a]
sub r10d, r8d
sub r9d, edx
mov dword [rsp + 0x48], eax
mov dword [rsp + 0x40], ecx
and dword [rsp + 0x38], 0
and dword [rsp + 0x30], 0
mov rcx, r12
mov qword [rsp + 0x28], rsi
mov dword [rsp + 0x20], r10d
call qword [sym.imp.GDI32.dll_StretchBlt]
mov edx, ebx
mov rcx, r12
call qword [sym.imp.GDI32.dll_SetStretchBltMode]
mov rdx, rdi
mov rcx, rsi
call qword [sym.imp.GDI32.dll_SelectObject]
mov rcx, rsi
call qword [sym.imp.GDI32.dll_DeleteDC]
mov bpl, byte [rsp + 0x1f0]
mov rcx, qword [rsp + 0xd0]
test rcx, rcx
je 0x100065b8f
mov rax, qword [rcx]
call qword [rax + 0x18]
mov rcx, qword [rsp + 0x60]
test rcx, rcx
je 0x100065ba4
test bpl, bpl
je 0x100065ba4
call qword [sym.imp.GDI32.dll_DeleteObject]
add rsp, 0x1a0
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret
movzx ecx, byte [rbp + 0x1e]
mov eax, 0x80808081
imul ecx, dword [r13 + 0x80]
imul ecx
lea edi, [rcx + rdx]
sar edi, 7
mov eax, edi
shr eax, 0x1f
add edi, eax
test dil, dil
jne 0x100065beb
xor bpl, bpl
mov byte [rsp + 0x1f0], bpl
jmp 0x100065e92
test r8, r8
je 0x100065e8f
mov eax, dword [r13 + 0x8c]
mov r12b, 0x20
mov rcx, rbp
and al, r12b
cmp al, r12b
sete dl
call fcn.100059a64
mov rcx, qword [rsp + 0xd0]
mov r8, rbp
mov r9, qword [rcx]
mov rdx, rax
call qword [r9 + 0x10]
mov r12, qword [rsp + 0x1e8]
xor bpl, bpl
mov r14, rax
mov qword [rsp + 0x60], rax
mov byte [rsp + 0x1f0], bpl
jmp 0x100065e95
lea rbx, [rbp + 8]
cmp byte [rbx], sil
jbe 0x100065db2
cmp byte [rbx], 2
je 0x100065d5d
jbe 0x100065ea3
cmp byte [rbx], 4
jbe 0x100065db2
cmp byte [rbx], 5
je 0x100065d45
cmp byte [rbx], 6
jne 0x100065ea3
mov rcx, qword [rbx + 8]
test rcx, rcx
je 0x100065d3d
lea rdx, [rsp + 0x1f8]
call fcn.1000790a0
test eax, eax
js 0x100065d3d
mov rdi, qword [rsp + 0x1f8]
test rdi, 0xffffffffffff0000
jne 0x100065ccd
mov r9d, dword [rbx + 0x14]
mov r8d, dword [rbx + 0x10]
lea rax, [rsp + 0x68]
mov rdx, r12
mov rcx, rdi
mov qword [rsp + 0x20], rax
call fcn.1000645dc
jmp 0x100065d3d
xor edx, edx
lea rcx, [rsp + 0x7c]
lea r8d, [rdx + 0x14]
call sub.msvcrt.dll_memset
mov al, byte [r13 + 0x8c]
mov r9d, dword [rbx + 0x14]
movdqu xmm0, xmmword [rsp + 0x68]
movdqu xmmword [rsp + 0x80], xmm0
mov r8d, dword [rbx + 0x10]
mov rdx, qword [rsp + 0x1e8]
mov r12b, 0x20
and al, r12b
mov ecx, 0x21
mov dword [rsp + 0x78], 0x18
cmp al, r12b
lea rax, [rsp + 0x78]
mov qword [rsp + 0x28], rax
cmove esi, ecx
lea rax, [rsp + 0x68]
mov rcx, rdi
mov qword [rsp + 0x20], rax
mov dword [rsp + 0x7c], esi
call qword [sym.imp.UxTheme.dll_DrawThemeBackgroundEx]
xor bpl, bpl
jmp 0x100065b7c
mov r9d, dword [rbx + 0xc]
mov r8d, dword [rbx + 8]
lea rdx, [rsp + 0x68]
mov rcx, r12
call qword [sym.imp.USER32.dll_DrawFrameControl]
jmp 0x100065d3d
movzx ecx, byte [rbx + 0xb]
mov eax, 0x80808081
imul ecx, dword [r13 + 0x80]
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dil, dl
test dl, dl
jne 0x100065d93
xor bpl, bpl
mov byte [rsp + 0x1f0], bpl
jmp 0x100065e95
mov ecx, dword [rbx + 8]
and ecx, 0xffffff
call qword [sym.imp.GDI32.dll_CreateSolidBrush]
mov bpl, sil
mov r14, rax
mov qword [rsp + 0x60], rax
jmp 0x100065e95
xor bpl, bpl
mov byte [rsp + 0x1f0], bpl
jmp 0x100065e06
mov ecx, dword [rbp + 8]
mov dil, byte [r13 + 0x80]
xor al, al
cmp ecx, 0x2710
mov byte [rsp + 0x1f0], al
jl 0x100065df6
add ecx, 0xffffd8f0
call qword [sym.imp.USER32.dll_GetSysColorBrush]
mov bpl, bl
mov r14, rax
mov qword [rsp + 0x60], rax
jmp 0x100065e95
call sub.wmpdui.dll_GetStdColorBrushI
mov bpl, bl
mov r14, rax
mov qword [rsp + 0x60], rax
test rbx, rbx
je 0x100065e95
cmp byte [rbx], 0
mov ecx, dword [rsp + 0x68]
mov eax, dword [rsp + 0x6c]
mov r8d, dword [rsp + 0x70]
mov edx, dword [rsp + 0x74]
mov dword [rsp + 0x90], ecx
mov dword [rsp + 0x94], eax
mov dword [rsp + 0xa0], ecx
mov dword [rsp + 0xa4], eax
mov dword [rsp + 0xb0], r8d
mov dword [rsp + 0xb4], edx
mov dword [rsp + 0xc0], r8d
mov dword [rsp + 0xc4], edx
mov r14d, 3
je 0x100066003
cmp byte [rbx], r14b
je 0x100066003
add eax, edx
mov r9d, esi
cdq
sub eax, edx
sar eax, 1
mov dword [rsp + 0xb4], eax
mov dword [rsp + 0xa4], eax
jmp 0x100066040
mov bpl, sil
mov r14, rbx
test dil, dil
je 0x100065b7c
jmp 0x100065ea3
mov r14, rbx
mov rdx, qword [rsp + 0x200]
lea r8, [rsp + 0x68]
lea rcx, [rsp + 0x78]
call qword [sym.imp.USER32.dll_IntersectRect]
lea rcx, [rsp + 0x78]
call qword [sym.imp.USER32.dll_IsRectEmpty]
xor ebp, ebp
cmp eax, ebp
jne 0x100065b74
cmp dil, 0xff
jne 0x100065fe3
movabs rbx, 0x8000000000000001
cmp dword [0x1000e2d3c], ebp
je 0x100065f4d
mov al, byte [0x1000e2d40]
cmp byte [0x1000e2d00], bpl
je 0x100065f0f
cmp al, 4
jae 0x100065f04
cmp al, bpl
jne 0x100065f4d
test byte [0x1000e2d38], sil
jne 0x100065f33
jmp 0x100065f4d
cmp al, 4
jae 0x100065f18
cmp al, bpl
jne 0x100065f4d
test qword [0x1000e2d28], rbx
je 0x100065f4d
mov rcx, qword [0x1000e2d30]
mov rax, rcx
and rax, rbx
cmp rax, rcx
jne 0x100065f4d
mov rcx, qword [0x1000e2d10]
lea r8, [0x10000d328]
lea rdx, [0x10000d558]
call fcn.1000531fc
lea rdx, [rsp + 0x78]
mov r8, r14
mov rcx, r12
call qword [sym.imp.USER32.dll_FillRect]
cmp dword [0x1000e2d3c], ebp
je 0x100065b74
mov al, byte [0x1000e2d40]
cmp byte [0x1000e2d00], bpl
je 0x100065f94
cmp al, 4
jae 0x100065f86
cmp al, bpl
jne 0x100065b74
test byte [0x1000e2d38], sil
jne 0x100065fc4
jmp 0x100065b74
cmp al, 4
jae 0x100065fa1
cmp al, bpl
jne 0x100065b74
test qword [0x1000e2d28], rbx
je 0x100065b74
mov rcx, qword [0x1000e2d30]
mov rax, rcx
and rax, rbx
cmp rax, rcx
jne 0x100065b74
mov rcx, qword [0x1000e2d10]
lea r8, [0x10000d328]
lea rdx, [0x10000d568]
call fcn.1000531fc
jmp 0x100065b74
lea rdx, [rsp + 0x78]
mov r9b, dil
mov r8, r14
mov rcx, r12
mov dword [rsp + 0x28], ebp
mov dword [rsp + 0x20], ebp
call sub.wmpdui.dll_UtilDrawBlendRect
jmp 0x100065b74
mov r12b, 0x20
lea eax, [rcx + r8]
xor r9d, r9d
cdq
sub eax, edx
sar eax, 1
test byte [r13 + 0x8c], r12b
mov r12, qword [rsp + 0x1e8]
mov dword [rsp + 0xb0], eax
mov dword [rsp + 0xa0], eax
je 0x100066040
mov dword [rsp + 0x90], r8d
mov dword [rsp + 0xc0], ecx
mov edx, dword [rbx + 8]
movzx eax, dl
movzx ecx, dx
shl ax, 8
shr cx, 8
shl cx, 8
mov word [rsp + 0x98], ax
mov eax, edx
shr eax, 0x10
mov word [rsp + 0x9a], cx
shr edx, 0x18
shl dx, 8
movzx ecx, al
shl cx, 8
mov word [rsp + 0x9e], dx
mov word [rsp + 0x9c], cx
cmp byte [rbx], r14b
je 0x1000660a4
cmp byte [rbx], 4
je 0x1000660a4
and dword [rsp + 0x78], 0
mov edx, dword [rbx + 0xc]
mov dword [rsp + 0x7c], r14d
jmp 0x100066130
mov edx, dword [rbx + 0xc]
and dword [rsp + 0x78], 0
mov dword [rsp + 0x80], esi
movzx eax, dl
movzx ecx, dx
mov dword [rsp + 0x7c], 2
shl ax, 8
shr cx, 8
mov dword [rsp + 0x84], r14d
shl cx, 8
mov word [rsp + 0xb8], ax
mov word [rsp + 0xa8], ax
mov eax, edx
mov word [rsp + 0xba], cx
mov word [rsp + 0xaa], cx
shr eax, 0x10
shr edx, 0x18
mov esi, 2
movzx ecx, al
shl cx, 8
shl dx, 8
mov word [rsp + 0xbe], dx
mov word [rsp + 0xae], dx
mov edx, dword [rbx + 0x10]
mov word [rsp + 0xbc], cx
mov word [rsp + 0xac], cx
movzx ecx, dx
movzx eax, dl
mov dword [rsp + 0x28], r9d
shr cx, 8
shl ax, 8
lea r9, [rsp + 0x78]
shl cx, 8
mov word [rsp + 0xc8], ax
mov eax, edx
mov word [rsp + 0xca], cx
shr edx, 0x18
shr eax, 0x10
movzx ecx, al
shl dx, 8
mov r8d, 4
shl cx, 8
mov word [rsp + 0xce], dx
lea rdx, [rsp + 0x90]
mov word [rsp + 0xcc], cx
mov rcx, r12
mov dword [rsp + 0x20], esi
call qword [sym.imp.GDI32.dll_GdiGradientFill]
jmp 0x100065b7c