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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x30
mov dword [ebp - 0x1c], esp
mov dword [ebp - 0x10], 0xffffffff
mov dword [ebp - 0x14], 0x707360
mov dword [ebp - 0x38], ecx
lea eax, [ebp - 0x18]
mov edi, edx
mov ecx, dword fs:[0]
mov dword [ebp - 0x18], ecx
mov dword fs:[0], eax
mov eax, dword [0x9193dc]
cmp eax, 2
jne 0x7229f4
lea esi, [0x9193e4]
push esi
call dword [sym.imp.kernel32.dll_AcquireSRWLockExclusive]
mov eax, dword [0x919aac]
test eax, 0x7fffffff
jne 0x7229fe
xor eax, eax
movzx ecx, byte [0x9193e8]
test cl, cl
jne 0x722a14
mov ebx, dword [0x9193f4]
mov dword [ebp - 0x3c], edi
mov dword [ebp - 0x20], eax
test ebx, ebx
je 0x722864
mov edi, ebx
dec edi
mov dword [0x9193f4], edi
mov ecx, dword [0x9193ec]
mov esi, dword [ecx + ebx*4 - 4]
je 0x722879
mov eax, dword [ecx]
mov dword [ecx], esi
xor edx, edx
mov dword [ebp - 0x28], eax
mov eax, esi
mov esi, edi
sub esi, 2
cmovb esi, edx
cmp ebx, 4
jae 0x722972
cmp edi, 2
jne 0x722b34
xor edx, edx
mov edi, 1
jmp 0x7229a6
mov esi, dword [0x9193f8]
mov ecx, esi
inc ecx
je 0x722b8e
mov dword [0x9193f8], ecx
mov ecx, 0x20
test esi, esi
mov eax, 0x20
je 0x72288d
bsr eax, esi
xor eax, 0x1f
sub ecx, eax
xor eax, eax
mov ebx, 1
mov edi, esi
mov dword [ebp - 0x24], ecx
sub ecx, 1
cmovb ecx, eax
btc edi, ecx
shl ebx, cl
test esi, esi
cmove edi, esi
cmp byte [ebp - 0x20], 0
jne 0x7228c8
mov eax, dword [0x919aac]
mov dword [ebp - 0x10], 0xffffffff
test eax, 0x7fffffff
jne 0x722b4e
lea eax, [0x9193e4]
mov dword [ebp - 0x10], 0xffffffff
push eax
call dword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
mov eax, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x20], ebx
mov dword [eax], 1
mov dword [eax + 4], esi
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ebx
mov dword [eax + 0x10], edi
mov ebx, edi
mov eax, dword [0x919400]
mov dword [ebp - 0x28], esi
test eax, eax
je 0x722a46
dec eax
mov esi, dword [ebp - 0x38]
push eax
call dword [sym.imp.kernel32.dll_TlsGetValue]
cmp eax, 1
jbe 0x722925
cmp dword [eax + 4], 0
mov edi, eax
jne 0x722b04
mov eax, dword [0x919400]
test eax, eax
je 0x722a55
dec eax
push eax
call dword [sym.imp.kernel32.dll_TlsGetValue]
test eax, eax
je 0x722a6e
mov ecx, dword [ebp - 0x20]
mov edi, eax
cmp eax, 1
jne 0x722adc
lea eax, [ebp - 0x34]
mov ecx, 0x8f7944
mov edx, 0x46
push 0x8f79dc
push 0x8ca7e0
push eax
call fcn.0070a360
add esp, 0xc
ud2
mov edi, 1
mov dword [ebp - 0x24], eax
nop word [eax + eax]
mov eax, edx
mov edx, dword [ecx + edi*4]
cmp edx, dword [ecx + edi*4 + 4]
mov edx, edi
sbb edx, 0xffffffff
mov edi, dword [ecx + edx*4]
mov dword [ecx + eax*4], edi
lea edi, [edx + edx + 1]
cmp edi, esi
jbe 0x722980
add ebx, 0xfffffffe
cmp edi, ebx
jne 0x7229b3
mov eax, dword [ebp - 0x24]
mov esi, dword [ecx + edi*4]
mov dword [ecx + edx*4], esi
mov edx, edi
mov dword [ecx + edi*4], eax
jmp 0x7229d0
mov eax, dword [ebp - 0x24]
test edx, edx
mov dword [ecx + edx*4], eax
je 0x722b2f
nop word cs:[eax + eax]
nop dword [eax + eax]
lea edi, [edx - 1]
mov esi, edi
shr esi, 1
mov ebx, dword [ecx + esi*4]
cmp ebx, eax
jbe 0x7229ed
mov dword [ecx + edx*4], ebx
cmp edi, 2
mov edx, esi
jae 0x7229d0
jmp 0x722b31
mov esi, edx
jmp 0x722b31
call fcn.00722c10
jmp 0x7227e0
call fcn.00721f90
xor al, 1
movzx ecx, byte [0x9193e8]
test cl, cl
je 0x72280e
mov dword [ebp - 0x34], esi
mov byte [ebp - 0x30], al
mov dword [ebp - 0x10], 0
lea eax, [ebp - 0x34]
mov ecx, str.called__Result::unwrap____on_an__Err__value
mov edx, 0x2b
push 0x8ca8a4
push 0x8ca7f0
push eax
call fcn.0070a360
add esp, 0xc
jmp 0x722bac
mov ecx, 0x919400
call fcn.00721c80
jmp 0x72290a
mov ecx, 0x919400
call fcn.00721c80
push eax
call dword [sym.imp.kernel32.dll_TlsGetValue]
test eax, eax
jne 0x722942
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x34], 0x919400
movzx eax, byte [0x919aa5]
mov eax, dword [0x919820]
test eax, eax
jne 0x722a9f
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x722b76
mov dword [0x919820], eax
push 0xc
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je 0x722b76
mov edi, eax
mov eax, dword [ebp - 0x2c]
mov dword [edi + 8], eax
movsd xmm0, qword [ebp - 0x34]
movsd qword [edi], xmm0
mov eax, dword [0x919400]
test eax, eax
je 0x722b67
dec eax
push edi
push eax
call dword [sym.imp.kernel32.dll_TlsSetValue]
mov ecx, dword [ebp - 0x20]
movq xmm0, qword [edi + 4]
movd eax, xmm0
movq qword [ebp - 0x34], xmm0
mov dword [edi + 4], 1
mov dword [edi + 8], 0
test eax, eax
je 0x722b07
lea ecx, [ebp - 0x30]
call fcn.006bccd0
mov ecx, dword [ebp - 0x20]
add edi, 8
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x24]
mov dword [edi], eax
mov dword [esi], eax
mov dword [esi + 4], edx
mov dword [esi + 8], ecx
mov dword [esi + 0xc], ebx
mov ecx, dword [ebp - 0x18]
mov dword fs:[0], ecx
add esp, 0x30
pop esi
pop edi
pop ebx
pop ebp
ret
xor esi, esi
mov dword [ecx + esi*4], eax
mov esi, dword [ebp - 0x28]
mov ecx, 0x20
test esi, esi
mov eax, 0x20
jne 0x722887
jmp 0x72288d
call fcn.00721f90
test al, al
jne 0x7228c8
mov byte [0x9193e8], 1
jmp 0x7228c8
mov ecx, 0x919400
call fcn.00721c80
jmp 0x722ad1
mov ecx, 4
mov edx, 0xc
mov dword [ebp - 0x10], 2
call fcn.00709d20
jmp 0x722bac
mov dword [ebp - 0x10], 1
mov ecx, str.Ran_out_of_thread_IDsC:Users_runneradmin.cargo_registry_srcindex.crates.io_6f17d22bba15001f_thread_local_1.1.7_src_thread_id.rs
mov edx, 0x15
push 0x8ca884
call fcn.0070a3e0
add esp, 4
ud2