Function at 0x4376c0
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, 0x5c
mov dword [ebp - 0x1c], esp
mov dword [ebp - 0x10], 0xffffffff
mov dword [ebp - 0x14], 0x537ff0
lea eax, [ebp - 0x18]
mov ecx, dword fs:[0]
mov dword [ebp - 0x18], ecx
mov dword fs:[0], eax
push 0x50e6a0
push 0
call dword [sym.imp.kernel32.dll_AddVectoredExceptionHandler]
test eax, eax
je 0x437b2c
lea eax, [ebp - 0x48]
mov dword [ebp - 0x48], 0x5000
push eax
call dword [sym.imp.kernel32.dll_SetThreadStackGuarantee]
test eax, eax
jne 0x437726
call dword [sym.imp.kernel32.dll_GetLastError]
cmp eax, 0x78
jne 0x437bfc
xor eax, eax
nop dword [eax + eax]
movzx ecx, byte [eax + 0x5a55e0]
test cl, cl
js 0x437780
lea ecx, [eax + 0x5a55e0]
neg ecx
test cl, 3
jne 0x4377af
jmp 0x43775a
inc eax
cmp eax, 4
je 0x437831
cmp byte [eax + 0x5a55e0], 0
jns 0x437750
nop word cs:[eax + eax]
nop dword [eax]
cmp eax, 4
jb 0x437730
jmp 0x437831
movzx esi, cl
movzx edx, byte [esi + 0x5a5178]
cmp edx, 3
je 0x4377bb
cmp edx, 2
jne 0x437885
cmp eax, 3
je 0x437885
cmp byte [eax + 0x5a55e1], 0xbf
jg 0x437885
inc eax
inc eax
cmp eax, 4
jb 0x437730
jmp 0x437831
cmp eax, 3
je 0x437885
movzx edx, byte [eax + 0x5a55e1]
cmp cl, 0xe0
je 0x4377e2
cmp esi, 0xed
jne 0x4377ef
cmp dl, 0x9f
jle 0x437816
jmp 0x437885
and dl, 0xe0
cmp dl, 0xa0
je 0x437816
jmp 0x437885
mov ch, cl
add ch, 0x1f
cmp ch, 0xc
jae 0x437809
cmp dl, 0xbf
jg 0x437885
cmp eax, 1
jbe 0x43781b
jmp 0x437885
and cl, 0xfe
cmp cl, 0xee
jne 0x437885
cmp dl, 0xbf
jg 0x437885
cmp eax, 2
jae 0x437885
cmp byte [eax + 0x5a55e2], 0xbf
jg 0x437885
add eax, 2
inc eax
cmp eax, 4
jb 0x437730
mov dword [ebp - 0x10], 0
lea ecx, [ebp - 0x48]
mov edx, 0x5a55e0
push 4
call fcn.005110b0
add esp, 4
mov esi, dword [ebp - 0x48]
cmp esi, 0x80000000
jne 0x43785f
lea ecx, [ebp - 0x48]
call fcn.005113a0
jmp 0x437885
mov edi, dword [ebp - 0x44]
call dword [sym.imp.kernel32.dll_GetCurrentThread]
mov ecx, dword [0x5b80cc]
push edi
push eax
call ecx
test esi, esi
je 0x437885
push edi
push 0
push dword [0x5b93c8]
call dword [sym.imp.kernel32.dll_HeapFree]
movzx eax, byte [0x5b9430]
xor ecx, ecx
mov edx, 5
call fcn.0051b940
test eax, eax
mov dword [ebp - 0x10], 0
je 0x437b68
lea ecx, [ebp - 0x48]
mov dword [eax], 0x6e69616d
mov dword [ebp - 0x48], 5
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x40], 4
call fcn.0044e4b0
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x40], edx
mov dword [ebp - 0x48], 0x80000000
mov esi, eax
mov ebx, edx
xor ecx, ecx
mov edx, 0x20
movzx eax, byte [0x5b9430]
call fcn.0051b940
mov edi, eax
test eax, eax
mov dword [ebp - 0x28], ebx
je 0x437b7c
mov dword [edi], 1
mov dword [edi + 4], 1
mov dword [edi + 0x10], esi
mov dword [edi + 0x14], ebx
movq xmm0, qword [0x5b93c0]
movd eax, xmm0
pshufd xmm0, xmm0, 0x55
movd edx, xmm0
nop
mov ebx, eax
mov ecx, edx
add ebx, 1
adc ecx, 0
jb 0x437b15
lock cmpxchg8b qword [0x5b93c0]
jne 0x437920
mov dword [edi + 8], ebx
mov dword [edi + 0xc], ecx
mov byte [edi + 0x18], 0
mov eax, dword [0x5b80f0]
test eax, eax
je 0x43795c
dec eax
push eax
call dword [sym.imp.kernel32.dll_TlsGetValue]
cmp eax, 2
jae 0x437983
jmp 0x437993
mov ecx, 0x5b80f0
mov dword [ebp - 0x20], edi
mov byte [ebp - 0x21], 1
mov dword [ebp - 0x10], 1
call fcn.00545b80
mov edi, dword [ebp - 0x20]
push eax
call dword [sym.imp.kernel32.dll_TlsGetValue]
cmp eax, 2
jb 0x437993
cmp dword [eax + 4], 0
mov esi, eax
je 0x437993
add esi, 8
jmp 0x437a9f
mov eax, dword [0x5b80f0]
test eax, eax
je 0x4379f2
dec eax
push eax
call dword [sym.imp.kernel32.dll_TlsGetValue]
test eax, eax
je 0x437a18
mov ebx, eax
cmp eax, 1
jne 0x437a77
lock dec dword [edi]
jne 0x4379c6
mov ecx, edi
call fcn.0050eef0
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x10], 0
lea eax, [ebp - 0x2c]
mov ecx, str.cannot_access_a_Thread_Local_Storage_value_during_or_after_destruction_rustc_25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04library_std_src_threadlocal.rs
mov edx, 0x46
push 0x5a4244
push 0x5a37ac
push eax
call fcn.0053be90
add esp, 0xc
jmp 0x437c52
mov ecx, 0x5b80f0
mov dword [ebp - 0x20], edi
mov byte [ebp - 0x21], 1
mov dword [ebp - 0x10], 1
call fcn.00545b80
mov edi, dword [ebp - 0x20]
push eax
call dword [sym.imp.kernel32.dll_TlsGetValue]
test eax, eax
jne 0x4379a8
movzx eax, byte [0x5b9430]
xor ecx, ecx
mov edx, 0xc
call fcn.0051b940
test eax, eax
je 0x437c35
mov dword [eax], 0x5b80f0
mov dword [eax + 4], 0
mov ebx, eax
mov eax, dword [0x5b80f0]
test eax, eax
je 0x437a4e
dec eax
jmp 0x437a6f
mov ecx, 0x5b80f0
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x20], edi
mov byte [ebp - 0x21], 1
mov dword [ebp - 0x10], 1
call fcn.00545b80
mov edi, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x28]
push ebx
push eax
call dword [sym.imp.kernel32.dll_TlsSetValue]
mov ecx, dword [ebx + 8]
cmp dword [ebx + 4], 0
lea esi, [ebx + 8]
mov dword [ebx + 4], 1
mov dword [ebx + 8], 0
je 0x437a9f
test ecx, ecx
je 0x437a9f
lock dec dword [ecx]
jne 0x437a9f
call fcn.0050eef0
cmp dword [esi], 0
jne 0x437b9d
mov dword [esi], edi
mov dword [ebp - 0x10], 0xa
mov ecx, 0x432380
mov dword [ebp - 0x10], 0xa
call fcn.00408740
xor eax, eax
mov ecx, dword [0x5b9368]
cmp ecx, 3
je 0x437b03
mov dword [ebp - 0x20], eax
lea eax, [ebp - 0x2d]
mov byte [ebp - 0x2d], 1
mov dword [ebp - 0x10], 0x11
mov ecx, 0x5b9368
xor edx, edx
mov dword [ebp - 0x50], eax
lea eax, [ebp - 0x50]
push 0x5a3aa8
push 0x5a441c
push eax
call fcn.00545710
add esp, 0xc
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x18]
mov dword fs:[0], ecx
add esp, 0x5c
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [ebp - 0x4c], esi
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x10], 4
call fcn.00545dc0
jmp 0x437c52
lea ecx, [ebp - 0x48]
mov edx, 0x5a5800
mov dword [ebp - 0x48], 0x5a57f8
mov dword [ebp - 0x44], 1
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x40], str.Index_out_of_bounds
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x10], 0
call fcn.0053ba80
jmp 0x437c52
mov ecx, 1
mov edx, 5
call fcn.0053b730
jmp 0x437c52
mov ecx, 8
mov edx, 0x20
mov dword [ebp - 0x4c], esi
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x10], 3
call fcn.0053b730
jmp 0x437c52
lea edx, [ebp - 0x48]
lea eax, [ebp - 0x2c]
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x48], 0x5a4744
mov dword [ebp - 0x44], 1
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x20], edi
mov byte [ebp - 0x54], 0
mov dword [ebp - 0x10], 2
lea ecx, [ebp - 0x60]
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x3c], 0
lea eax, [ebp - 0x58]
push edx
push eax
push ecx
call fcn.0050ea30
add esp, 0xc
mov ecx, dword [ebp - 0x60]
mov edx, dword [ebp - 0x5c]
call fcn.0050dfd0
mov ecx, 7
int 0x29
ud2
lea ecx, [ebp - 0x48]
mov edx, 0x5a5790
mov dword [ebp - 0x48], 0x5a5754
mov dword [ebp - 0x44], 1
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x40], str.Index_out_of_bounds
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x10], 0
call fcn.0053ba80
jmp 0x437c52
mov ecx, 4
mov edx, 0xc
mov dword [ebp - 0x20], edi
mov byte [ebp - 0x21], 1
mov dword [ebp - 0x10], 1
call fcn.0053b730
ud2