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

Disassembly:
push ebp
mov ebp, esp
push esi
sub esp, 0x18
mov eax, dword [ebp + 8]
mov eax, dword [eax]
cmp byte [eax], 0
mov byte [eax], 0
je 0x411cbf
mov byte [ebp - 5], 0
mov eax, dword [0x7d8068]
cmp eax, 3
jne 0x411ac2
cmp byte [ebp - 5], 0
je 0x411ad0
add esp, 0x18
pop esi
pop ebp
ret
lea ecx, [ebp - 5]
call fcn.00411d60
cmp byte [ebp - 5], 0
jne 0x411abc
mov eax, dword [0x445040]
test eax, eax
je 0x411b22
dec eax
push eax
call sub.KERNEL32.dll_TlsGetValue
cmp eax, 1
jbe 0x411b37
cmp byte [eax + 4], 0
mov esi, eax
je 0x411b37
mov eax, dword [0x7d8088]
add esi, 5
cmp eax, esi
jne 0x411bf7
mov eax, dword [0x7d808c]
inc eax
jne 0x411c16
mov ecx, str.lock_count_overflow_in_reentrant_mutexlibrary_std_src_sync_remutex.rs
mov edx, 0x26
push 0x7cf494
call fcn.00404f80
add esp, 4
ud2
mov ecx, 0x445040
call fcn.00411280
push eax
call sub.KERNEL32.dll_TlsGetValue
cmp eax, 1
ja 0x411ae5
mov eax, dword [0x445040]
test eax, eax
je 0x411b78
dec eax
push eax
call sub.KERNEL32.dll_TlsGetValue
test eax, eax
je 0x411b8c
mov esi, eax
cmp eax, 1
jne 0x411be1
lea eax, [ebp - 8]
mov ecx, str.cannot_access_a_Thread_Local_Storage_value_during_or_after_destructionlibrary_std_src_threadlocal.rs
mov edx, 0x46
push 0x7cf248
push 0x7ceab0
push eax
call fcn.00404ef0
add esp, 0xc
ud2
mov ecx, 0x445040
call fcn.00411280
push eax
call sub.KERNEL32.dll_TlsGetValue
test eax, eax
jne 0x411b4b
movzx eax, byte [0x7d8060]
mov eax, dword [0x7d80c0]
test eax, eax
jne 0x411bae
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x411cfa
mov dword [0x7d80c0], eax
push 8
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x411cfa
mov dword [eax], 0x445040
mov byte [eax + 4], 0
mov esi, eax
mov eax, dword [0x445040]
test eax, eax
je 0x411cb0
dec eax
push esi
push eax
call sub.KERNEL32.dll_TlsSetValue
mov word [esi + 4], 1
mov eax, dword [0x7d8088]
add esi, 5
cmp eax, esi
je 0x411afd
lea eax, [0x7d8084]
push eax
call sub.KERNEL32.dll_TryAcquireSRWLockExclusive
test al, al
je 0x411abc
mov dword [0x7d8088], esi
mov eax, 1
mov dword [0x7d808c], eax
mov dword [ebp - 0x1c], 1
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x18], 0
mov dword [ebp - 0xe], 0
mov dword [ebp - 0x12], 0
cmp dword [0x7d806c], 0
jne 0x411cd8
mov dword [0x7d806c], 0xffffffff
lea ecx, [0x7d8070]
call fcn.00411df0
mov eax, dword [ebp - 0xc]
movsd xmm0, qword [ebp - 0x1c]
movsd xmm1, qword [ebp - 0x14]
mov dword [0x7d8080], eax
movsd qword [0x7d8078], xmm1
movsd qword [0x7d8070], xmm0
inc dword [0x7d806c]
dec dword [0x7d808c]
jne 0x411abc
mov dword [0x7d8088], 0
lea eax, [0x7d8084]
push eax
call sub.KERNEL32.dll_ReleaseSRWLockExclusive
add esp, 0x18
pop esi
pop ebp
ret
mov ecx, 0x445040
call fcn.00411280
jmp 0x411bda
mov ecx, str.called__Option::unwrap____on_a__None__value_rustc_d5c2e9c342b358556da91d61ed4133f6f50fc0c3library_alloc_srccollections_btree_navigate.rsIndex_out_of_bounds
mov edx, 0x2b
push 0x7cf408
call fcn.00404620
add esp, 4
ud2
lea eax, [ebp - 8]
mov edx, 0x10
mov ecx, str.already_borrowedlibrary_std_srcio_stdio.rs
push 0x7cf1d0
push 0x7ceac0
push eax
call fcn.00404ef0
add esp, 0xc
ud2
mov ecx, 4
mov edx, 8
call fcn.00403700
ud2