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

Disassembly:
push rsi
push r13
push r15
sub rsp, 0x50
mov rsi, rcx
lea rcx, [0x18011df88]
call fcn.180094fc0
mov ecx, eax
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov r13, rax
test rax, rax
jne 0x18003e8ea
lea ecx, [rax + 0x10]
call sym.glib_2.0.dll_g_slice_alloc
mov r13, rax
test rax, rax
je 0x18003e8d3
xor eax, eax
mov qword [r13], rax
mov qword [r13 + 8], rax
lea rcx, [0x18011df88]
call fcn.180094fc0
mov ecx, eax
mov rdx, r13
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
mov rax, qword [rsi + 0x40]
xor edx, edx
mov qword [rsp + 0x88], rbx
mov r15d, edx
mov qword [rsp + 0x48], rbp
mov qword [rsp + 0x40], rdi
mov qword [rsp + 0x38], r12
mov qword [rsp + 0x30], r14
cmp dword [rax + 8], edx
jbe 0x18003ea99
nop dword [rax + rax]
mov rax, qword [rax]
mov ecx, r15d
mov rbx, qword [rax + rcx*8]
mov qword [rax + rcx*8], rdx
test rbx, rbx
je 0x18003eaf5
mov ecx, dword [rbx + 0x2c]
and ecx, 0xffffffef
mov dword [rbx + 0x2c], ecx
test cl, 1
je 0x18003ea65
mov rax, qword [rbx + 0x10]
mov r14, qword [rbx + 8]
mov r12, qword [rbx]
mov qword [rsp + 0x78], rdx
mov qword [rsp + 0x80], rdx
mov rax, qword [rax + 0x10]
mov qword [rsp + 0x70], rax
test r14, r14
je 0x18003e97e
mov rax, qword [r14]
mov rcx, r12
call qword [case.0x180005f92.0]
mov ecx, dword [rbx + 0x2c]
test cl, 0x20
jne 0x18003e98e
mov rcx, rbx
call fcn.18003e660
mov ecx, dword [rbx + 0x2c]
mov ebp, ecx
or ecx, 2
and ebp, 2
mov dword [rbx + 0x2c], ecx
test r14, r14
je 0x18003e9bb
mov rax, qword [r14 + 0x10]
lea r9, [rsp + 0x78]
lea r8, [rsp + 0x80]
mov rdx, rbx
mov rcx, r12
call qword [case.0x180005f92.0]
mov rax, qword [0x18011ef68]
mov rcx, rsi
call qword [case.0x180005f92.0]
mov rdi, qword [r13 + 8]
mov rcx, rbx
mov r8, qword [rsp + 0x78]
mov rdx, qword [rsp + 0x80]
mov rax, qword [rsp + 0x70]
inc dword [r13]
mov qword [r13 + 8], rbx
call qword [case.0x180005f92.0]
xor ecx, ecx
mov qword [r13 + 8], rdi
test eax, eax
sete cl
dec dword [r13]
mov dword [rsp + 0x70], ecx
test r14, r14
je 0x18003ea17
mov rax, qword [r14 + 8]
mov rcx, r12
call qword [case.0x180005f92.0]
mov rax, qword [0x18011ef58]
mov rcx, rsi
call qword [case.0x180005f92.0]
test ebp, ebp
jne 0x18003ea2f
and dword [rbx + 0x2c], 0xfffffffd
mov eax, dword [rbx + 0x2c]
and eax, 0x41
cmp al, 0x41
jne 0x18003ea41
mov rcx, rbx
call fcn.18003e7a0
cmp dword [rsp + 0x70], 0
je 0x18003ea65
test byte [rbx + 0x2c], 1
je 0x18003ea65
cmp qword [rbx + 0x20], rsi
jne 0x18003eac8
mov r8d, 1
mov rdx, rsi
mov rcx, rbx
call fcn.18003cb40
mov eax, dword [rbx + 0x18]
cmp eax, 1
jbe 0x18003ea74
dec eax
mov dword [rbx + 0x18], eax
jmp 0x18003ea85
mov r8d, 1
mov rdx, rsi
mov rcx, rbx
call fcn.18003dca0
mov rax, qword [rsi + 0x40]
inc r15d
cmp r15d, dword [rax + 8]
jae 0x18003ea99
xor edx, edx
jmp 0x18003e920
xor edx, edx
mov rcx, rax
mov r14, qword [rsp + 0x30]
mov r12, qword [rsp + 0x38]
mov rdi, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x48]
mov rbx, qword [rsp + 0x88]
add rsp, 0x50
pop r15
pop r13
pop rsi
jmp sym.glib_2.0.dll_g_ptr_array_set_size
lea rax, str.source__context__context
mov r8d, 0xc7f
lea r9, str.g_main_dispatch
mov qword [rsp + 0x20], rax
lea rdx, str.d:_buildob_bora_15653658cayman_glibglib_srcglibgmain.c
lea rcx, [0x18009cbc8]
call sym.glib_2.0.dll_g_assertion_message_expr
int3
lea rax, str.source
mov r8d, 0xc3b
lea r9, str.g_main_dispatch
mov qword [rsp + 0x20], rax
lea rdx, str.d:_buildob_bora_15653658cayman_glibglib_srcglibgmain.c
lea rcx, [0x18009cbc8]
call sym.glib_2.0.dll_g_assertion_message_expr
int3