Function at 0x411aa0
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 0x411ccf
mov byte [ebp - 5], 0
mov eax, dword [0x8f9068]
cmp eax, 3
jne 0x411ad2
cmp byte [ebp - 5], 0
je 0x411ae0
add esp, 0x18
pop esi
pop ebp
ret
lea ecx, [ebp - 5]
call fcn.00411d70
cmp byte [ebp - 5], 0
jne 0x411acc
mov eax, dword [0x445040]
test eax, eax
je 0x411b32
dec eax
push eax
call sub.KERNEL32.dll_TlsGetValue
cmp eax, 1
jbe 0x411b47
cmp byte [eax + 4], 0
mov esi, eax
je 0x411b47
mov eax, dword [0x8f9088]
add esi, 5
cmp eax, esi
jne 0x411c07
mov eax, dword [0x8f908c]
inc eax
jne 0x411c26
mov ecx, str.lock_count_overflow_in_reentrant_mutexlibrary_std_src_sync_remutex.rs
mov edx, 0x26
push 0x8efc94
call fcn.00404f90
add esp, 4
ud2
mov ecx, 0x445040
call fcn.00411290
push eax
call sub.KERNEL32.dll_TlsGetValue
cmp eax, 1
ja 0x411af5
mov eax, dword [0x445040]
test eax, eax
je 0x411b88
dec eax
push eax
call sub.KERNEL32.dll_TlsGetValue
test eax, eax
je 0x411b9c
mov esi, eax
cmp eax, 1
jne 0x411bf1
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 0x8efa48
push 0x8ef2b0
push eax
call fcn.00404f00
add esp, 0xc
ud2
mov ecx, 0x445040
call fcn.00411290
push eax
call sub.KERNEL32.dll_TlsGetValue
test eax, eax
jne 0x411b5b
movzx eax, byte [0x8f9060]
mov eax, dword [0x8f90c0]
test eax, eax
jne 0x411bbe
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x411d0a
mov dword [0x8f90c0], eax
push 8
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x411d0a
mov dword [eax], 0x445040
mov byte [eax + 4], 0
mov esi, eax
mov eax, dword [0x445040]
test eax, eax
je 0x411cc0
dec eax
push esi
push eax
call sub.KERNEL32.dll_TlsSetValue
mov word [esi + 4], 1
mov eax, dword [0x8f9088]
add esi, 5
cmp eax, esi
je 0x411b0d
lea eax, [0x8f9084]
push eax
call sub.KERNEL32.dll_TryAcquireSRWLockExclusive
test al, al
je 0x411acc
mov dword [0x8f9088], esi
mov eax, 1
mov dword [0x8f908c], 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 [0x8f906c], 0
jne 0x411ce8
mov dword [0x8f906c], 0xffffffff
lea ecx, [0x8f9070]
call fcn.00411e00
mov eax, dword [ebp - 0xc]
movsd xmm0, qword [ebp - 0x1c]
movsd xmm1, qword [ebp - 0x14]
mov dword [0x8f9080], eax
movsd qword [0x8f9078], xmm1
movsd qword [0x8f9070], xmm0
inc dword [0x8f906c]
dec dword [0x8f908c]
jne 0x411acc
mov dword [0x8f9088], 0
lea eax, [0x8f9084]
push eax
call sub.KERNEL32.dll_ReleaseSRWLockExclusive
add esp, 0x18
pop esi
pop ebp
ret
mov ecx, 0x445040
call fcn.00411290
jmp 0x411bea
mov ecx, str.called__Option::unwrap____on_a__None__value_rustc_d5c2e9c342b358556da91d61ed4133f6f50fc0c3library_alloc_srccollections_btree_navigate.rsIndex_out_of_bounds
mov edx, 0x2b
push 0x8efc08
call fcn.00404630
add esp, 4
ud2
lea eax, [ebp - 8]
mov edx, 0x10
mov ecx, str.already_borrowedlibrary_std_srcio_stdio.rs
push 0x8ef9d0
push 0x8ef2c0
push eax
call fcn.00404f00
add esp, 0xc
ud2
mov ecx, 4
mov edx, 8
call fcn.00403710
ud2