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

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x98
lea rbx, [rsp + 0x60]
mov qword [rsp + 0xe0], rcx
mov r14d, edx
xor ecx, ecx
mov qword [rsp + 0xf8], r9
mov rdx, rbx
lea r9, [rsp + 0xf8]
mov qword [rsp + 0x58], r9
call fcn.1402b7d40
mov r15, rax
test rax, rax
je 0x1400d21e8
mov r8d, dword [rsp + 0x60]
xor eax, eax
test r8d, r8d
cmovs r15, rax
mov rax, qword [0x1404cb008]
test rax, rax
je 0x1400d229f
mov rdi, qword [rax]
mov rcx, qword [rdi]
test rcx, rcx
je 0x1400d26e9
cmp qword [rsp + 0xe0], 0
je 0x1400d2233
mov rdx, qword [rsp + 0xe0]
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x1400d2233
mov eax, dword [rdi + 8]
mov edx, r14d
and edx, eax
cmp eax, edx
je 0x1400d247b
test r14b, 0x80
je 0x1400d2247
mov r13d, pe_nt_image_headers64
mov r14d, pe_nt_image_headers64
jmp 0x1400d22a2
mov edx, dword [rdi + 8]
xor r8d, r8d
mov rcx, rbx
call fcn.1400d0920
mov rdx, qword [rdi]
mov r9, qword [rdi + 0x10]
mov r8, rbx
lea rax, [0x14039c3e5]
lea rcx, str.Did_not_see_expected_message__s__s:__s
test rdx, rdx
cmove rdx, rax
or r14d, 2
call fcn.1400e4e50
xor r9d, r9d
mov edx, 8
lea rcx, [0x14039c3b0]
mov rbx, rax
mov r8, rax
call fcn.1400d1f10
mov rcx, rbx
call fcn.14034efb0
mov r13d, r14d
mov r12d, 0x20
nop dword [rax + rax]
sub r12d, 1
bt r13d, r12d
jb 0x1400d22dd
test r12d, r12d
jne 0x1400d22b0
nop
mov rcx, r15
call fcn.14034efb0
nop
add rsp, 0x98
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov dword [rsp + 0xe8], r14d
mov qword [rsp + 0x30], r15
mov r15d, r13d
mov r13d, r12d
mov ebx, 1
mov ecx, r13d
shl ebx, cl
test dword [rsp + 0xe8], ebx
je 0x1400d241e
lea r14, [0x1404cb000]
lea r12, [0x1404cafe0]
mov rcx, r14
call fcn.140341618
mov rax, qword [0x1404cafe0]
mov ecx, eax
test eax, eax
jne 0x1400d2334
mov rcx, r12
call fcn.1401001a0
mov ecx, eax
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rsi, rax
mov eax, ebx
or eax, 1
test esi, esi
lea ebp, [rsi + 1]
cmovne ebx, eax
mov eax, dword [0x14035ca00]
or eax, 5
test eax, ebx
jne 0x1400d2430
mov eax, ebx
and eax, 2
mov dword [rsp + 0x38], eax
mov eax, ebx
mov rcx, r14
lea rdi, [fcn.1400d1f10]
and eax, 1
mov dword [rsp + 0x44], eax
lea rax, [0x1400d0c20]
cmovne rdi, rax
call fcn.140341260
mov rax, qword [0x1404cafe0]
mov ecx, eax
test eax, eax
jne 0x1400d239e
mov rcx, r12
call fcn.1401001a0
mov ecx, eax
mov rdx, rbp
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
mov r8, qword [rsp + 0x30]
xor r9d, r9d
mov edx, ebx
mov rcx, qword [rsp + 0xe0]
call rdi
mov ecx, dword [rsp + 0x38]
test ecx, ecx
je 0x1400d23e8
mov edx, dword [0x1404cb010]
test edx, edx
jne 0x1400d2440
call qword [sym.imp.KERNEL32.dll_IsDebuggerPresent]
test eax, eax
je 0x1400d2899
mov eax, dword [rsp + 0x44]
test eax, eax
jne 0x1400d2899
int3
mov rax, qword [0x1404cafe0]
mov esi, esi
mov ecx, eax
test eax, eax
jne 0x1400d2401
mov rcx, r12
call fcn.1401001a0
mov ecx, eax
mov rdx, rsi
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
jmp 0x1400d241e
sub r13d, 1
bt r15d, r13d
jb 0x1400d22f0
test r13d, r13d
jne 0x1400d2410
mov r15, qword [rsp + 0x30]
jmp 0x1400d22c0
mov dword [rsp + 0x38], 2
or ebx, 2
jmp 0x1400d2364
xor r9d, r9d
xor r8d, r8d
mov edx, 0xffffffff
lea rcx, str.Unspecified_fatal_error_encountered__aborting.
call fcn.1402b3210
xor ecx, ecx
mov r9d, 0x10010
xor r8d, r8d
mov rbx, rax
mov rdx, rax
call qword [sym.imp.USER32.dll_MessageBoxW]
mov rcx, rbx
call fcn.14034efb0
jmp 0x1400d23cd
mov r12, qword [rdi + 0x10]
lea rax, [0x14039c402]
test r12, r12
je 0x1400d2764
test r15, r15
je 0x1400d275d
mov ecx, 0x18
call sub.msvcrt.dll_malloc
mov rsi, rax
test rax, rax
je 0x1400d2860
mov rcx, r12
call sub.msvcrt.dll_strlen
mov qword [rsi + 8], 0
lea edx, [rax + 1]
mov dword [rsi + 4], eax
mov r8, rax
mov r13d, eax
test rdx, rdx
jne 0x1400d26fb
xor ebp, ebp
movzx edx, byte [r12]
mov qword [rsi + 0x10], rbp
test dl, dl
je 0x1400d27f5
xor r8d, r8d
mov qword [rsp + 0x48], rdi
mov rcx, rbp
xor r10d, r10d
mov dword [rsp + 0x38], 0xffffffff
mov eax, 0xffffffff
movq xmm2, qword [0x14039e110]
xor r9d, r9d
mov dword [rsp + 0x44], 0xffffffff
mov r11d, 0xffffffff
movq xmm1, qword [0x14039e118]
mov dword [rsp + 0x30], r8d
cmp dl, 0x2a
je 0x1400d26c3
cmp dl, 0x3f
je 0x1400d26ac
mov r10d, dword [rsp + 0x30]
mov edi, r9d
mov rdx, rcx
add rdi, rcx
sub r10d, 1
sub r10d, ecx
test r9d, r9d
je 0x1400d27ce
nop word [rax + rax]
add rdx, 1
test eax, eax
mov byte [rdx - 1], 0x3f
lea r8d, [r10 + rdx]
cmovs eax, r8d
cmp rdi, rdx
jne 0x1400d2560
add dword [rsp + 0x30], r9d
mov edx, dword [rsp + 0x30]
sub edx, 1
mov dword [rsp + 0x44], edx
movq xmm0, qword [rsi + 8]
xor r10d, r10d
xor r9d, r9d
paddd xmm0, xmm1
movq qword [rsi + 8], xmm0
movzx edx, byte [r12]
add dword [rsp + 0x30], 1
lea rcx, [rdi + 1]
mov byte [rdi], dl
movzx edx, byte [r12 + 1]
add r12, 1
test dl, dl
jne 0x1400d2527
mov edx, r9d
mov rdi, qword [rsp + 0x48]
mov r8d, dword [rsp + 0x30]
test edx, edx
je 0x1400d292a
mov dword [rsp + 0x44], r8d
add rdx, rcx
add rcx, 1
test eax, eax
mov byte [rcx - 1], 0x3f
cmovs eax, r8d
cmp rcx, rdx
jne 0x1400d25da
mov byte [rdx], 0
mov ecx, r11d
mov edx, dword [rsp + 0x38]
not ecx
shr ecx, 0x1f
cmp r11d, edx
setne dl
and edx, ecx
mov ecx, eax
not ecx
shr ecx, 0x1f
or edx, ecx
test r11d, r11d
js 0x1400d27d6
mov dword [rsi + 0xc], 0xffffffff
test dl, dl
jne 0x1400d288a
cmp byte [rbp], 0x2a
je 0x1400d2838
test r13d, r13d
je 0x1400d2647
lea eax, [r13 - 1]
mov rdx, rax
add rax, rbp
cmp byte [rax], 0x2a
je 0x1400d2932
mov edx, dword [rsp + 0x38]
lea eax, [r13 - 1]
sub eax, edx
test r11d, r11d
js 0x1400d282d
cmp r11d, eax
setl al
movzx eax, al
mov dword [rsi], eax
cmp eax, 1
je 0x1400d2811
mov rcx, r15
call sub.msvcrt.dll_strlen
mov rdx, rax
mov eax, dword [rsi + 8]
cmp rdx, rax
jb 0x1400d27b8
mov eax, dword [rsi + 0xc]
cmp rax, rdx
jb 0x1400d27b8
cmp dword [rsi], 4
ja case.default.0x1400d26aa
mov eax, dword [rsi]
lea rcx, [0x14039c4b0]
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
movq xmm0, qword [rsi + 8]
add r9d, 1
paddd xmm0, xmm2
movq qword [rsi + 8], xmm0
jmp 0x1400d25ab
test r10d, r10d
jne 0x1400d2750
mov edi, dword [rsp + 0x30]
test r11d, r11d
mov r10d, 1
mov dword [rsp + 0x38], edi
cmovs r11d, edi
mov rdi, rcx
jmp 0x1400d259b
mov rax, qword [rsp + 0xe0]
neg rax
sbb eax, eax
jmp 0x1400d221f
mov rcx, rdx
mov qword [rsp + 0x30], rdx
mov qword [rsp + 0x38], rax
call sub.msvcrt.dll_malloc
mov rdx, qword [rsp + 0x30]
mov r8, qword [rsp + 0x38]
test rax, rax
mov rbp, rax
jne 0x1400d24d5
mov qword [rsp + 0x20], rdx
lea r9, [0x14039c421]
lea r8, [0x14039c438]
mov edx, 4
lea rcx, [0x14039c3b0]
call fcn.1400d2190
jmp 0x1400d2747
sub r13d, 1
mov dword [rsi + 4], r13d
jmp 0x1400d25ab
lea rax, [0x14039c412]
mov qword [rsp + 0x20], rax
lea r9, str.g_pattern_match_simple
lea r8, [0x14039c3e8]
mov edx, 8
lea rcx, [0x14039c3b0]
call fcn.1400d2190
jmp 0x1400d2233
lea rax, str.pspec__match_type___G_MATCH_LAST
lea r9, str.g_pattern_spec_match
mov edx, 8
mov qword [rsp + 0x20], rax
lea r8, [0x14039c3e8]
lea rcx, [0x14039c3b0]
call fcn.1400d2190
mov rcx, qword [rsi + 0x10]
call fcn.14034efb0
mov rcx, rsi
call fcn.14034efb0
jmp 0x1400d2233
mov rdi, rcx
jmp 0x1400d2587
test dl, dl
je 0x1400d2625
mov ecx, dword [rsp + 0x44]
lea edx, [r13 - 1]
sub edx, ecx
cmp edx, eax
setg al
movzx eax, al
jmp 0x1400d2663
mov byte [rbp], 0
test r8d, r8d
je 0x1400d282d
mov dword [rsp + 0x38], 0xffffffff
mov r11d, 0xffffffff
jmp 0x1400d2634
mov rcx, rbp
mov edx, r13d
call fcn.1400eecf0
mov rcx, rbp
mov qword [rsi + 0x10], rax
call fcn.14034efb0
jmp 0x1400d266e
mov dword [rsi], 4
jmp 0x1400d266e
lea r12d, [r13 - 1]
mov dword [rsi], 3
lea rdx, [rbp + 1]
mov rcx, rbp
mov dword [rsi + 4], r12d
mov r8, r12
call sub.msvcrt.dll_memmove
mov byte [rbp + r12], 0
jmp 0x1400d266e
mov qword [rsp + 0x20], 0x18
lea r9, [0x14039c421]
lea r8, [0x14039c438]
mov edx, 4
lea rcx, [0x14039c3b0]
call fcn.1400d2190
jmp 0x1400d2888
mov edx, dword [rsp + 0x38]
lea eax, [r13 - 1]
sub eax, edx
jmp 0x1400d265a
call fcn.1400edb70
mov eax, dword [rsi + 4]
mov r13, qword [rsi + 0x10]
test eax, eax
je 0x1400d2947
sub rdx, rax
add rdx, r15
mov rcx, r13
xor ebp, ebp
call sub.msvcrt.dll_strcmp
test eax, eax
sete bpl
mov rcx, r13
call fcn.14034efb0
mov rcx, rsi
call fcn.14034efb0
test ebp, ebp
je 0x1400d2233
mov rdx, qword [0x1404cb008]
test rdx, rdx
je 0x1400d2943
mov rbx, qword [rdx + 8]
mov qword [rdx + 8], 0
mov ecx, 0x10
call fcn.1400e6130
mov rcx, qword [rdi]
mov qword [0x1404cb008], rbx
call fcn.14034efb0
mov rcx, qword [rdi + 0x10]
call fcn.14034efb0
mov rcx, rdi
call fcn.14034efb0
mov rcx, r15
call fcn.14034efb0
jmp 0x1400d22c9
mov rdx, rcx
jmp 0x1400d25ed
mov dword [rsi], 2
mov dword [rsi + 4], edx
mov byte [rax], 0
jmp 0x1400d266e
xor ebx, ebx
jmp 0x1400d28f3
mov rcx, r13
call fcn.14034efb0
mov rcx, rsi
call fcn.14034efb0
jmp 0x1400d28db
mov r8d, dword [rsi + 4]
mov r13, qword [rsi + 0x10]
cmp rdx, r8
je 0x1400d29b1
test r8d, r8d
je 0x1400d2947
mov rdx, r15
mov rcx, r13
xor ebp, ebp
call sub.msvcrt.dll_strncmp
test eax, eax
sete bpl
jmp 0x1400d28c3
mov rcx, r15
call fcn.1400eecf0
mov r13, qword [rsi + 0x10]
lea r8, [rsp + 0x54]
mov r12, rax
mov rdx, rax
mov rcx, r13
call fcn.1400d97f0
mov rcx, r12
mov ebp, eax
call fcn.14034efb0
jmp 0x1400d28c3
mov rdx, r15
jmp 0x1400d28b3
mov r13, qword [rsi + 0x10]
mov rbp, r15
movzx eax, byte [r13]
lea r12, [r13 + 1]
test al, al
je 0x1400d2a07
mov r8, rbx
cmp al, 0x2a
je 0x1400d2a41
cmp al, 0x3f
jne 0x1400d2ab2
movzx eax, byte [rbp]
test al, al
je 0x1400d2a9b
mov rdx, qword [0x14048f9a0]
movsx rax, byte [rax + rdx]
add rbp, rax
movzx eax, byte [r12]
add r12, 1
test al, al
jne 0x1400d29d0
mov rbx, r8
cmp byte [rbp], 0
sete bpl
movzx ebp, bpl
jmp 0x1400d28c3
mov eax, dword [rsi + 4]
mov r13, qword [rsi + 0x10]
cmp rdx, rax
je 0x1400d29b1
mov rcx, r13
call fcn.14034efb0
mov rcx, rsi
call fcn.14034efb0
jmp 0x1400d2233
mov dword [rsp + 0x54], 1
mov rdx, qword [0x14048f9a0]
movzx ebx, byte [r12]
add r12, 1
cmp bl, 0x3f
je 0x1400d2aa0
cmp bl, 0x2a
je 0x1400d2a50
test bl, bl
je 0x1400d2947
mov dword [rsp + 0x60], 0
movzx eax, byte [rbp]
cmp al, bl
jne 0x1400d2a97
jmp 0x1400d2ac0
mov rdx, qword [0x14048f9a0]
movsx rax, byte [rax + rdx]
add rbp, rax
movzx eax, byte [rbp]
cmp bl, al
je 0x1400d2ac0
test al, al
jne 0x1400d2a80
mov rbx, r8
jmp 0x1400d2a2c
movzx eax, byte [rbp]
test al, al
je 0x1400d2a9b
movsx rax, byte [rax + rdx]
add rbp, rax
jmp 0x1400d2a50
cmp al, byte [rbp]
jne 0x1400d2a9b
add rbp, 1
jmp 0x1400d29f7
mov qword [rsp + 0x38], rbp
add rbp, 1
mov rcx, r12
mov rdx, rbp
mov qword [rsp + 0x30], r8
call fcn.1400d97f0
test eax, eax
jne 0x1400d2947
cmp dword [rsp + 0x60], 0
mov r8, qword [rsp + 0x30]
jne 0x1400d2a9b
mov r9, qword [rsp + 0x38]
cmp byte [r9 + 1], 0
jne 0x1400d2a6b
jmp 0x1400d29f7