Function at 0x408d80
Capabilities:
Get thread local storage value
Resolve function by parsing pe exports
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x890
mov byte [esp + 0x70c], 0
movzx eax, byte [0x5c6170]
mov eax, dword [0x5c6108]
test eax, eax
jne 0x408db9
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x4097de
mov dword [0x5c6108], eax
push 8
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x4097de
mov dword [eax + 4], 1
mov dword [eax], 1
mov dword [esp + 0xa0], 0
mov dword [esp + 0xe8], 0x200
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], 0x5a41ac
mov dword [esp + 0xa8], 0
mov dword [esp + 0xc8], 0
mov dword [esp + 0xd0], 0
mov dword [esp + 0xd8], 0
mov dword [esp + 0xe0], 0
mov dword [esp + 0xb8], 0x3b9aca00
mov dword [esp + 0xec], 0x10101
lea esi, [esp + 0x4f8]
lea edx, [esp + 0xa0]
mov ecx, esi
call sym.tokio::runtime::builder::Builder::build::h4aada4c841a3aae8
cmp dword [esp + 0x4f8], 2
je 0x4097f2
lea eax, [esp + 0x248]
push 0x1d0
push esi
push eax
call sym._memcpy
add esp, 0xc
lea eax, [esp + 0x6c8]
lea ecx, [esp + 0x7a8]
push 0xe0
push eax
push ecx
call sym._memcpy
add esp, 0xc
mov eax, dword [esp + 0x24c]
mov edx, dword [esp + 0x248]
mov ecx, 1
mov esi, 1
lock xadd dword [eax], ecx
test edx, edx
jne 0x408ec5
xor esi, esi
test ecx, ecx
js 0x409756
mov ecx, dword [esp + 0x26c]
cmp ecx, 0xffffffff
je 0x408efc
xor edx, edx
test ecx, ecx
je 0x408eeb
lock inc dword [ecx + 4]
mov edx, ecx
jle 0x409756
mov edi, dword [esp + 0x258]
cmp edi, 0x3b9aca00
jne 0x408f10
jmp 0x408f39
mov edx, 0xffffffff
mov edi, dword [esp + 0x258]
cmp edi, 0x3b9aca00
je 0x408efa
mov ecx, dword [esp + 0x250]
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x254]
mov dword [esp + 0x90], ecx
mov ecx, dword [esp + 0x260]
lock inc dword [ecx]
jle 0x409756
mov ebx, dword [esp + 0x268]
lock inc dword [ebx]
jle 0x409756
mov dword [esp + 0xf0], esi
mov dword [esp + 0xf4], eax
mov eax, dword [esp + 0x50]
mov esi, dword [esp + 0x90]
mov dword [esp + 0x114], edx
mov dword [esp + 0xf8], eax
mov dword [esp + 0xfc], esi
mov dword [esp + 0x100], edi
mov dword [esp + 0x108], ecx
mov dword [esp + 0x110], ebx
lea ecx, [esp + 0x4f8]
lea edx, [esp + 0xf0]
call sym.tokio::runtime::context::try_enter::ha0a230723d0075f0
cmp dword [esp + 0x4f8], 3
je 0x40982d
movsd xmm2, qword [esp + 0x510]
movsd xmm1, qword [esp + 0x508]
movq xmm0, qword [esp + 0x518]
cmp dword [esp + 0x270], 4
movsd qword [esp + 0x80], xmm2
movsd qword [esp + 0x78], xmm1
movsd xmm2, qword [esp + 0x4f8]
movq xmm1, qword [esp + 0x500]
movq qword [esp + 0x88], xmm0
movq qword [esp + 0x70], xmm1
movsd qword [esp + 0x68], xmm2
jne 0x4090ab
push 0xe0
lea eax, [esp + 0x7ac]
push eax
lea eax, [esp + 0xf8]
push eax
call sym._memcpy
add esp, 0xc
call sym.std::sys::common::thread_local::os_local::Key_LT_T_GT_::get::h7453f295b74b2140
test eax, eax
je 0x40988a
cmp byte [eax], 2
jne 0x4098b0
mov byte [eax], 1
push 0xe0
lea eax, [esp + 0xf4]
push eax
lea esi, [esp + 0x500]
push esi
call sym._memcpy
add esp, 0xc
lea ecx, [esp + 0x418]
mov edx, esi
call sym.tokio::park::thread::CachedParkThread::block_on::h91b0d1e3970797ae
cmp dword [esp + 0x418], 0
jne 0x4098cc
mov eax, dword [esp + 0x420]
mov esi, dword [esp + 0x41c]
mov dword [esp + 0x10], eax
call sym.std::sys::common::thread_local::os_local::Key_LT_T_GT_::get::h7453f295b74b2140
test eax, eax
je 0x4098f2
cmp byte [eax], 2
je 0x409918
mov byte [eax], 2
jmp 0x40966f
lea esi, [esp + 0x418]
push 0xe0
lea eax, [esp + 0x7ac]
push eax
push esi
call sym._memcpy
add esp, 0xc
mov dword [esp + 0x30], esi
xor eax, eax
mov cl, 1
lock cmpxchg byte [esp + 0x298], cl
je 0x4090ec
nop dword [eax + eax]
lea ecx, [esp + 0x298]
call sym.parking_lot::raw_mutex::RawMutex::lock_slow::h06df723492a6430d
mov edi, dword [esp + 0x2a8]
mov esi, dword [esp + 0x2a0]
mov ebx, dword [esp + 0x2a4]
mov dword [esp + 0x2a8], 0x3b9aca01
cmp edi, 0x3b9aca01
jne 0x409140
mov dword [esp + 0x500], 0x3b9aca02
mov al, 1
xor ecx, ecx
lock cmpxchg byte [esp + 0x298], cl
je 0x4091b8
lea ecx, [esp + 0x298]
call sym.parking_lot::raw_mutex::RawMutex::unlock_slow::h7a3bc9387d667bed
jmp 0x4091b8
push 0x14c
lea eax, [esp + 0x2b0]
push eax
lea eax, [esp + 0x104]
push eax
call sym._memcpy
add esp, 0xc
mov dword [esp + 0xf4], ebx
mov dword [esp + 0xf0], esi
mov dword [esp + 0xf8], edi
mov al, 1
xor ecx, ecx
lock cmpxchg byte [esp + 0x298], cl
je 0x40918d
lea ecx, [esp + 0x298]
call sym.parking_lot::raw_mutex::RawMutex::unlock_slow::h7a3bc9387d667bed
push 0x158
lea eax, [esp + 0xf4]
push eax
lea eax, [esp + 0x500]
push eax
call sym._memcpy
add esp, 0xc
lea eax, [esp + 0x270]
mov dword [esp + 0x650], eax
mov eax, dword [esp + 0x500]
cmp eax, 0x3b9aca02
jne 0x409539
call sym.std::sys::common::thread_local::os_local::Key_LT_T_GT_::get::h7453f295b74b2140
test eax, eax
je 0x40975a
cmp byte [eax], 2
jne 0x409780
mov byte [eax], 0
lea ecx, [esp + 0xfc]
mov eax, dword [esp + 0x3f8]
mov dword [esp + 0xf0], 0
shr eax, 2
mov dword [esp + 0xf4], eax
lea eax, [esp + 0x3f8]
mov dword [esp + 0xf8], eax
movzx eax, byte [esp + 0x37]
mov dword [esp + 0xfc], 0
mov dword [esp + 0x100], 0
mov dword [esp + 0x104], 0
mov byte [esp + 0x10c], 2
mov byte [ecx + 0x13], al
movzx eax, word [esp + 0x35]
mov word [ecx + 0x11], ax
lea eax, [esp + 0xf0]
mov dword [esp + 0x48], eax
call sym.std::sys::common::thread_local::os_local::Key_LT_T_GT_::get::h95c2994aa4b79b86
test eax, eax
je 0x409730
mov eax, dword [eax]
lock inc dword [eax]
jle 0x409756
lea ecx, [esp + 8]
add eax, 8
mov dword [esp + 8], 0x5a2f8c
mov dword [esp + 0xc], eax
mov dword [esp + 0x4c], ecx
nop dword [eax + eax]
mov eax, dword [0x54a324]
test eax, eax
je 0x4092a0
dec eax
jmp 0x4092aa
mov ecx, 0x54a324
call dbg.init
push eax
call sub.KERNEL32.dll_TlsGetValue
cmp eax, 2
jb 0x4092d0
cmp byte [eax + 4], 0
je 0x4092d0
mov esi, eax
movzx eax, byte [eax + 5]
add esi, 5
mov edi, eax
jmp 0x409368
mov eax, dword [0x54a324]
test eax, eax
je 0x4092e0
dec eax
jmp 0x4092ea
mov ecx, 0x54a324
call dbg.init
push eax
call sub.KERNEL32.dll_TlsGetValue
mov esi, eax
test eax, eax
je 0x409300
cmp esi, 1
jne 0x40935d
jmp 0x4096a7
movzx eax, byte [0x5c6170]
mov eax, dword [0x5c6108]
test eax, eax
jne 0x409322
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x4096cd
mov dword [0x5c6108], eax
push 8
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x4096cd
mov dword [eax], 0x54a324
mov byte [eax + 4], 0
mov esi, eax
mov eax, dword [0x54a324]
test eax, eax
je 0x40934c
dec eax
jmp 0x409356
mov ecx, 0x54a324
call dbg.init
push esi
push eax
call sub.KERNEL32.dll_TlsSetValue
mov word [esi + 4], 1
add esi, 5
xor edi, edi
movzx ebx, byte [esi + 1]
mov word [esi], 0x8001
lea edx, [esp + 0x48]
lea eax, [esp + 0x4c]
lea ecx, [esp + 0x18]
push eax
lea eax, [esp + 0x34]
push eax
call sym.__LT_tokio..future..poll_fn..PollFn_LT_F_GT__u20_as_u20_core..future..future..Future_GT_::poll::h5b546b21678f762d
add esp, 8
mov eax, edi
mov byte [esi], al
mov byte [esi + 1], bl
movq xmm0, qword [esp + 0x18]
movd eax, xmm0
movdqa xmmword [esp + 0x50], xmm0
cmp eax, 3
je 0x4096a7
cmp eax, 2
jne 0x409470
call sym.std::sys::common::thread_local::os_local::Key_LT_T_GT_::get::h95c2994aa4b79b86
test eax, eax
je 0x409480
mov edi, dword [eax]
mov eax, 2
xor ecx, ecx
lock cmpxchg dword [edi + 8], ecx
je 0x409290
xor eax, eax
mov cl, 1
lea esi, [edi + 0x10]
lock cmpxchg byte [edi + 0x10], cl
je 0x4093ea
mov ecx, esi
call sym.parking_lot::raw_mutex::RawMutex::lock_slow::h06df723492a6430d
xor eax, eax
mov ecx, 1
lock cmpxchg dword [edi + 8], ecx
jne 0x409440
lea ebx, [edi + 0xc]
nop dword [eax + eax]
sub esp, 0xc
mov ecx, ebx
mov edx, esi
mov dword [esp + 8], 0x3b9aca00
call sym.parking_lot::condvar::Condvar::wait_until_internal::h4ce8b711d1fd1e5c
add esp, 0xc
mov eax, 2
xor ecx, ecx
lock cmpxchg dword [edi + 8], ecx
jne 0x409400
mov al, 1
xor ecx, ecx
lock cmpxchg byte [esi], cl
je 0x409290
jmp 0x40945c
cmp eax, 2
jne 0x4096e1
xor eax, eax
xchg dword [edi + 8], eax
mov al, 1
xor ecx, ecx
lock cmpxchg byte [esi], cl
je 0x409290
mov ecx, esi
call sym.parking_lot::raw_mutex::RawMutex::unlock_slow::h7a3bc9387d667bed
jmp 0x409290
mov eax, dword [esp + 0x20]
mov dword [esp + 0x10], eax
jmp 0x40949c
pshufd xmm0, xmmword [esp + 0x90], 0x55
movdqa xmm1, xmmword [0x54b070]
punpckldq xmm1, xmm0
movdqa xmmword [esp + 0x50], xmm1
mov eax, dword [esp + 8]
mov eax, dword [eax + 0xc]
push dword [esp + 0xc]
call eax
add esp, 4
movdqa xmm0, xmmword [esp + 0x50]
movd eax, xmm0
cmp eax, 2
je 0x409730
test eax, eax
jne 0x40960d
lea ecx, [esp + 0xf0]
call sym.__LT_tokio..sync..notify..Notified_u20_as_u20_core..ops..drop..Drop_GT_::drop::h32a9b46ce33b1e6b
mov eax, dword [esp + 0x104]
test eax, eax
je 0x4094ed
mov eax, dword [eax + 0xc]
push dword [esp + 0x108]
call eax
add esp, 4
call sym.std::sys::common::thread_local::os_local::Key_LT_T_GT_::get::h7453f295b74b2140
test eax, eax
je 0x40979c
cmp byte [eax], 2
je 0x4097c2
mov byte [eax], 2
lea ecx, [esp + 0x4f8]
call sym.__ZN4core3ptr130drop_in_place_LT_core..option..Option_LT_tokio..runtime..basic_scheduler..InnerGuard_LT_tokio..runtime..driver
movdqa xmm0, xmmword [esp + 0x50]
movdqa xmmword [esp + 0x90], xmm0
xor eax, eax
mov cl, 1
lock cmpxchg byte [esp + 0x298], cl
jne 0x4090e0
jmp 0x4090ec
cmp eax, 0x3b9aca01
je 0x409931
mov ecx, dword [esp + 0x628]
mov eax, dword [esp + 0x30]
mov dword [esp + 0x628], 0
test ecx, ecx
je 0x40994a
mov edx, dword [esp + 0x634]
movsd xmm0, qword [esp + 0x62c]
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x648]
movsd qword [esp + 0x38], xmm0
lock inc dword [edx]
jle 0x409756
mov esi, dword [esp + 0x40]
movq xmm0, qword [esp + 0x38]
mov dword [esp + 0x18], eax
lea eax, [esp + 8]
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x14]
mov dword [esp + 0x20], eax
mov dword [esp + 0x108], esi
movq qword [esp + 0x100], xmm0
mov dword [esp + 0xf4], edx
mov dword [esp + 0xf8], 0
mov dword [esp + 0xfc], ecx
lea ecx, [esp + 0x4f8]
mov dword [esp + 0xf0], ecx
mov dword [esp + 8], ecx
lea ecx, [esp + 0xf4]
mov dword [esp + 0x14], ecx
lea edx, [esp + 0x18]
call sym.tokio::macros::scoped_tls::ScopedKey_LT_T_GT_::set::h2d3e9f7036d105bb
mov dword [esp + 0x10], edx
mov esi, eax
lea ecx, [esp + 0xf0]
call sym.__ZN4core3ptr104drop_in_place_LT_tokio..runtime..basic_scheduler..enter..Guard_LT_tokio..runtime..driver..Driver_GT__GT_17he98
jmp 0x409657
lea ecx, [esp + 0xf0]
call sym.__LT_tokio..sync..notify..Notified_u20_as_u20_core..ops..drop..Drop_GT_::drop::h32a9b46ce33b1e6b
mov eax, dword [esp + 0x104]
test eax, eax
je 0x409633
mov eax, dword [eax + 0xc]
push dword [esp + 0x108]
call eax
add esp, 4
call sym.std::sys::common::thread_local::os_local::Key_LT_T_GT_::get::h7453f295b74b2140
test eax, eax
je 0x409963
cmp byte [eax], 2
je 0x409986
pshufd xmm0, xmmword [esp + 0x50], 0x55
mov byte [eax], 2
movd esi, xmm0
lea ecx, [esp + 0x4f8]
call sym.__ZN4core3ptr130drop_in_place_LT_core..option..Option_LT_tokio..runtime..basic_scheduler..InnerGuard_LT_tokio..runtime..driver
lea ecx, [esp + 0x418]
call sym.__ZN4core3ptr62drop_in_place_LT_merino..main.._u7b__u7b_closure_u7d__u7d__GT_17hf5852153b76c1b97E.1872
lea ecx, [esp + 0x68]
call sym.__LT_tokio..runtime..context..EnterGuard_u20_as_u20_core..ops..drop..Drop_GT_::drop::h3ebe6d127f0cedec
lea ecx, [esp + 0x68]
call sym.core::ptr::drop_in_place_LT_core..option..Option_LT_tokio..runtime..handle..Handle_GT__GT_::h5a961eaba1b1c027
lea ecx, [esp + 0x248]
call sym.core::ptr::drop_in_place_LT_tokio..runtime..Runtime_GT_::h43f2f52f623b9f31
lea ecx, [esp + 0xa0]
call sym.core::ptr::drop_in_place_LT_tokio..runtime..builder..Builder_GT_::he0ae4676dc62afeb
mov edx, dword [esp + 0x10]
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov edx, 0x46
mov ecx, str.cannot_access_a_Thread_Local_Storage_value_during_or_after_destruction_rustc_82e1608dfa6e0b5569232559e3d385fea5a93112library_std_src_threadlocal.rs
push 0x5a5754
push 0x5552c4
lea eax, [esp + 0x20]
push eax
call dbg.unwrap_failed
add esp, 0xc
jmp 0x40999d
mov ecx, 4
mov edx, 8
call dbg.handle_alloc_error
jmp 0x40999d
lea ebx, [esp + 0x14]
lea edi, [esp + 0x38]
mov dword [esp + 0x18], 0x5a4fc8
mov dword [esp + 0x1c], 1
mov dword [esp + 0x28], 0
mov dword [esp + 0x14], eax
mov dword [esp + 0x38], ebx
mov dword [esp + 0x20], edi
mov dword [esp + 0x3c], sym.core::fmt::num::imp::__LT_impl_u20_core..fmt..Display_u20_for_u20_u32_GT_::fmt::h615afddd8531f490
mov dword [esp + 0x24], 1
lea ecx, [esp + 0x18]
mov edx, 0x5a2efc
call dbg.panic_fmt
jmp 0x40999d
mov edx, 0x1b
mov ecx, str.Failed_to__Enter::block_on_
push 0x5553bc
push 0x555334
lea eax, [esp + 0x20]
push eax
call dbg.unwrap_failed
add esp, 0xc
jmp 0x40999d
ud2
mov edx, 0x46
mov ecx, str.cannot_access_a_Thread_Local_Storage_value_during_or_after_destruction_rustc_82e1608dfa6e0b5569232559e3d385fea5a93112library_std_src_threadlocal.rs
push 0x5a5754
push 0x5a528c
lea eax, [esp + 0x20]
push eax
call dbg.unwrap_failed
add esp, 0xc
jmp 0x40999d
mov edx, 0xc1
mov ecx, 0x5a53e0
push 0x5a54a4
call sym.std::panicking::begin_panic::hb017f3a55f95e16b
add esp, 4
jmp 0x40999d
mov edx, 0x46
mov ecx, str.cannot_access_a_Thread_Local_Storage_value_during_or_after_destruction_rustc_82e1608dfa6e0b5569232559e3d385fea5a93112library_std_src_threadlocal.rs
push 0x5a5754
push 0x5a528c
lea eax, [esp + 0x20]
push eax
call dbg.unwrap_failed
add esp, 0xc
jmp 0x40999d
mov edx, 0x26
mov ecx, str.assertion_failed:_c.get__.is_entered___home_user_.cargo_registry_src_index.crates.io_6f17d22bba15001f_tokio_1.15.0_src_runtime_enter.rs
push 0x5a53d0
call dbg.panic
add esp, 4
jmp 0x40999d
mov ecx, 4
mov edx, 8
call dbg.handle_alloc_error
jmp 0x40999d
movq xmm0, qword [esp + 0x4fc]
movq qword [esp + 0x248], xmm0
lea esi, [esp + 0x248]
mov edx, 0x1b
mov ecx, str.Failed_building_the_Runtime
push 0x54c068
push 0x54bdfc
push esi
call dbg.unwrap_failed
add esp, 0xc
jmp 0x40999d
lea eax, [esp + 0x68]
mov dword [esp + 0x68], 0x5a474c
mov dword [esp + 0x418], 0x5a4ddc
mov dword [esp + 0x41c], 1
mov dword [esp + 0x428], 0
mov dword [esp + 0x6c], sym.__LT__RF_T_u20_as_u20_core..fmt..Display_GT_::fmt::h09d8bcc9c7492b64
mov dword [esp + 0x420], eax
mov dword [esp + 0x424], 1
lea ecx, [esp + 0x418]
mov edx, 0x5a4754
call dbg.panic_fmt
jmp 0x40999d
lea eax, [esp + 0x18]
mov edx, 0x46
mov ecx, str.cannot_access_a_Thread_Local_Storage_value_during_or_after_destruction_rustc_82e1608dfa6e0b5569232559e3d385fea5a93112library_std_src_threadlocal.rs
push 0x5a5754
push 0x5a528c
push eax
call dbg.unwrap_failed
add esp, 0xc
jmp 0x40999d
mov edx, 0xc1
mov ecx, 0x5a53e0
push 0x5a54a4
call sym.std::panicking::begin_panic::hb017f3a55f95e16b
add esp, 4
jmp 0x40999d
lea eax, [esp + 0x18]
mov edx, 0x15
mov ecx, 0x555773
push 0x5557f4
push 0x5556b8
push eax
call dbg.unwrap_failed
add esp, 0xc
jmp 0x40999d
lea eax, [esp + 0x18]
mov edx, 0x46
mov ecx, str.cannot_access_a_Thread_Local_Storage_value_during_or_after_destruction_rustc_82e1608dfa6e0b5569232559e3d385fea5a93112library_std_src_threadlocal.rs
push 0x5a5754
push 0x5a528c
push eax
call dbg.unwrap_failed
add esp, 0xc
jmp 0x40999d
mov edx, 0x26
mov ecx, str.assertion_failed:_c.get__.is_entered___home_user_.cargo_registry_src_index.crates.io_6f17d22bba15001f_tokio_1.15.0_src_runtime_enter.rs
push 0x5a53d0
call dbg.panic
add esp, 4
jmp 0x40999d
mov edx, 0x2b
mov ecx, str.called__Option::unwrap____on_a__None__value_rustc_82e1608dfa6e0b5569232559e3d385fea5a93112library_std_src_threadmod.rs
push 0x555390
call dbg.panic
add esp, 4
jmp 0x40999d
mov edx, 0xd
mov ecx, str.invalid_state_home_user_.cargo_registry_src_index.crates.io_6f17d22bba15001f_tokio_1.15.0_src_runtime_basic_scheduler.rs1CZ
push 0x5a439c
call dbg.expect_failed
add esp, 4
jmp 0x40999d
mov edx, 0x46
mov ecx, str.cannot_access_a_Thread_Local_Storage_value_during_or_after_destruction_rustc_82e1608dfa6e0b5569232559e3d385fea5a93112library_std_src_threadlocal.rs
push 0x5a5754
push 0x5a528c
lea eax, [esp + 0x20]
push eax
call dbg.unwrap_failed
add esp, 0xc
jmp 0x40999d
mov edx, 0x26
mov ecx, str.assertion_failed:_c.get__.is_entered___home_user_.cargo_registry_src_index.crates.io_6f17d22bba15001f_tokio_1.15.0_src_runtime_enter.rs
push 0x5a53d0
call dbg.panic
add esp, 4
ud2