joyce8/EMBER2024-capa huggingface dataset:
Function at 0x140040650
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push r15
push r14
push rsi
push rdi
push rbx
sub rsp, 0x20
movzx eax, byte [0x140132160]
test al, al
je 0x1400407ef
test edx, edx
je 0x140040677
cmp edx, 3
jne 0x1400407ef
mov rbx, qword [0x140132168]
test rbx, rbx
je 0x1400407ef
xor r14d, r14d
jmp 0x140040699
mov rbx, qword [rbx + 8]
test rbx, rbx
je 0x1400406cd
mov esi, dword [rbx + 0x18]
mov r15, qword [rbx]
test r15, r15
je 0x14004083a
dec esi
mov ecx, esi
call sub.KERNEL32.dll_TlsGetValue
test rax, rax
je 0x140040690
mov rdi, rax
mov ecx, esi
xor edx, edx
call fcn.140094144
mov rcx, rdi
call r15
mov r14b, 1
jmp 0x140040690
test r14b, 1
je 0x1400407ef
mov rbx, qword [0x140132168]
test rbx, rbx
je 0x1400407ef
xor r14d, r14d
jmp 0x1400406f9
mov rbx, qword [rbx + 8]
test rbx, rbx
je 0x14004072d
mov esi, dword [rbx + 0x18]
mov r15, qword [rbx]
test r15, r15
je 0x14004083a
dec esi
mov ecx, esi
call sub.KERNEL32.dll_TlsGetValue
test rax, rax
je 0x1400406f0
mov rdi, rax
mov ecx, esi
xor edx, edx
call fcn.140094144
mov rcx, rdi
call r15
mov r14b, 1
jmp 0x1400406f0
test r14b, 1
je 0x1400407ef
mov rbx, qword [0x140132168]
test rbx, rbx
je 0x1400407ef
xor r14d, r14d
jmp 0x140040759
mov rbx, qword [rbx + 8]
test rbx, rbx
je 0x14004078d
mov esi, dword [rbx + 0x18]
mov r15, qword [rbx]
test r15, r15
je 0x14004083a
dec esi
mov ecx, esi
call sub.KERNEL32.dll_TlsGetValue
test rax, rax
je 0x140040750
mov rdi, rax
mov ecx, esi
xor edx, edx
call fcn.140094144
mov rcx, rdi
call r15
mov r14b, 1
jmp 0x140040750
test r14b, 1
je 0x1400407ef
mov rbx, qword [0x140132168]
test rbx, rbx
je 0x1400407ef
xor r14d, r14d
jmp 0x1400407b9
mov rbx, qword [rbx + 8]
test rbx, rbx
je 0x1400407e9
mov esi, dword [rbx + 0x18]
mov r15, qword [rbx]
test r15, r15
je 0x14004083a
dec esi
mov ecx, esi
call sub.KERNEL32.dll_TlsGetValue
test rax, rax
je 0x1400407b0
mov rdi, rax
mov ecx, esi
xor edx, edx
call fcn.140094144
mov rcx, rdi
call r15
mov r14b, 1
jmp 0x1400407b0
test r14b, 1
jne 0x1400407fb
add rsp, 0x20
pop rbx
pop rdi
pop rsi
pop r14
pop r15
ret
mov rbx, qword [0x140132168]
jmp 0x140040808
mov rbx, qword [rbx + 8]
test rbx, rbx
je 0x1400407ef
mov esi, dword [rbx + 0x18]
mov r14, qword [rbx]
test r14, r14
je 0x14004083a
dec esi
mov ecx, esi
call sub.KERNEL32.dll_TlsGetValue
test rax, rax
je 0x140040804
mov rdi, rax
mov ecx, esi
xor edx, edx
call fcn.140094144
mov rcx, rdi
call r14
jmp 0x140040804
lea rcx, str.library_std_src_syspalwindows_thread_local_key.rs
call sym.core::option::unwrap_failed::hf5a192e0952253c6
ud2

Function at 0x1400435f0
Capabilities:
Get system information on windows

Disassembly:
push rsi
sub rsp, 0x50
mov rsi, rcx
xorps xmm0, xmm0
movaps xmmword [rsp + 0x40], xmm0
movaps xmmword [rsp + 0x30], xmm0
movaps xmmword [rsp + 0x20], xmm0
lea rcx, [rsp + 0x20]
call sub.KERNEL32.dll_GetSystemInfo
mov eax, dword [rsp + 0x40]
test rax, rax
je 0x140043625
mov qword [rsi + 8], rax
xor eax, eax
jmp 0x140043635
lea rax, str.The_number_of_hardware_threads_is_not_known_for_the_target_platform
mov qword [rsi + 8], rax
mov eax, 1
mov qword [rsi], rax
mov rax, rsi
add rsp, 0x50
pop rsi
ret
Function at 0x140043670
Capabilities:
Query environment variable

Disassembly:
push rsi
sub rsp, 0x70
call sub.KERNEL32.dll_GetEnvironmentStringsW
test rax, rax
je 0x140043688
mov rdx, rax
add rsp, 0x70
pop rsi
ret
call sub.KERNEL32.dll_GetLastError
shl rax, 0x20
or rax, 2
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x28]
mov qword [rsp + 0x30], rax
lea rax, [sym.__std::io::error::Error_as_core::fmt::Display_::fmt::hd3b962be12a1e431]
mov qword [rsp + 0x38], rax
lea rax, str.failure_getting_env_string_from_OS:
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x48], 1
mov qword [rsp + 0x60], 0
lea rax, [rsp + 0x30]
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x58], 1
lea rdx, str.library_std_src_syspalwindowsos.rs
lea rcx, [rsp + 0x40]
call sym.core::panicking::panic_fmt::h1831a24803b4fdac
ud2

Function at 0x140043f30
Capabilities:
Set environment variable

Disassembly:
push rsi
push rdi
push rbx
sub rsp, 0x90
mov r8, rdx
mov rdx, rcx
mov qword [rsp + 0x30], rcx
mov qword [rsp + 0x38], r8
lea rcx, [rsp + 0x40]
call sym._ZN3std3sys3pal7windows7to_u16s5inner17h012bd72fba547a21E.llvm.11506732742244318735
mov rdi, qword [rsp + 0x40]
mov rbx, qword [rsp + 0x48]
movabs rax, 0x8000000000000000
cmp rdi, rax
jne 0x140043f72
mov rsi, rbx
jmp 0x140043faa
xor esi, esi
mov rcx, rbx
xor edx, edx
call sub.KERNEL32.dll_SetEnvironmentVariableW
test eax, eax
jne 0x140043f91
call sub.KERNEL32.dll_GetLastError
mov esi, eax
shl rsi, 0x20
or rsi, 2
test rdi, rdi
je 0x140043faa
add rdi, rdi
mov r8d, 2
mov rcx, rbx
mov rdx, rdi
call sym.__rust_dealloc
test rsi, rsi
jne 0x140043fba
add rsp, 0x90
pop rbx
pop rdi
pop rsi
ret
mov qword [rsp + 0x28], rsi
lea rax, [rsp + 0x30]
mov qword [rsp + 0x70], rax
lea rax, [sym.__T_as_core::fmt::Debug_::fmt::h257912c1f4cfef06]
mov qword [rsp + 0x78], rax
lea rax, [rsp + 0x28]
mov qword [rsp + 0x80], rax
lea rax, [sym.__std::io::error::Error_as_core::fmt::Display_::fmt::hd3b962be12a1e431]
mov qword [rsp + 0x88], rax
lea rax, str.failed_to_remove_environment_variable__
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x48], 2
mov qword [rsp + 0x60], 0
lea rax, [rsp + 0x70]
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x58], 2
lea rdx, str.library_std_srcenv.rs
lea rcx, [rsp + 0x40]
call sym.core::panicking::panic_fmt::h1831a24803b4fdac
ud2
Function at 0x1400460c0
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push rsi
push rdi
push rbx
sub rsp, 0x20
mov rsi, rdx
mov rdi, rcx
mov ecx, dword [rcx + 0x18]
test ecx, ecx
je 0x1400460f0
dec ecx
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 2
jb 0x140046105
cmp byte [rax + 8], 0
je 0x140046105
add rax, 9
jmp 0x140046194
mov rcx, rdi
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 2
jae 0x1400460e1
mov ecx, dword [rdi + 0x18]
test ecx, ecx
je 0x14004617d
dec ecx
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
je 0x140046192
mov rbx, rax
test rax, rax
jne 0x14004615a
mov rax, qword [0x140121bb8]
movzx eax, byte [rax]
mov ecx, 0x10
mov edx, 8
call sym.__rust_alloc
test rax, rax
je 0x1400461a8
mov rbx, rax
mov qword [rax], rdi
mov byte [rax + 8], 0
mov ecx, dword [rdi + 0x18]
test ecx, ecx
je 0x14004619c
dec ecx
mov rdx, rbx
call fcn.140094144
xor ecx, ecx
test rsi, rsi
je 0x140046170
cmp byte [rsi], 0
mov byte [rsi], 0
movzx eax, byte [rsi + 1]
cmove eax, ecx
mov ecx, eax
lea rax, [rbx + 9]
mov byte [rbx + 8], 1
mov byte [rbx + 9], cl
jmp 0x140046194
mov rcx, rdi
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
jne 0x140046119
xor eax, eax
add rsp, 0x20
pop rbx
pop rdi
pop rsi
ret
mov rcx, rdi
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
jmp 0x140046152
mov ecx, 8
mov edx, 0x10
call sym.alloc::alloc::handle_alloc_error::h225ba2be7c4efe12
int3
Function at 0x1400461c0
Capabilities:
Generate random numbers via winapi
Get thread local storage value
Set thread local storage value

Disassembly:
push rsi
push rdi
push rbx
sub rsp, 0x30
mov rsi, rdx
mov rbx, rcx
mov ecx, dword [rcx + 0x18]
test ecx, ecx
je 0x1400461f4
dec ecx
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 2
jb 0x140046209
mov rcx, rax
cmp qword [rax + 8], 0
je 0x140046209
add rcx, 0x10
jmp 0x1400462f5
mov rcx, rbx
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 2
jae 0x1400461e1
mov ecx, dword [rbx + 0x18]
test ecx, ecx
je 0x1400462da
dec ecx
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
je 0x1400462f3
mov rdi, rax
test rax, rax
jne 0x140046272
mov rax, qword [0x140121bb8]
movzx eax, byte [rax]
mov ecx, 0x20
mov edx, 8
call sym.__rust_alloc
test rax, rax
je 0x14004630f
mov rdi, rax
mov qword [rax], rbx
mov qword [rax + 8], 0
mov ecx, dword [rbx + 0x18]
test ecx, ecx
je 0x140046300
dec ecx
mov rdx, rdi
call fcn.140094144
test rsi, rsi
je 0x14004628f
mov rcx, qword [rsi]
mov rax, qword [rsi + 8]
mov rdx, qword [rsi + 0x10]
mov qword [rsi], 0
cmp rcx, 1
je 0x1400462c4
xorps xmm0, xmm0
movaps xmmword [rsp + 0x20], xmm0
lea rdx, [rsp + 0x20]
xor ecx, ecx
mov r8d, 0x10
mov r9d, 2
call sub.bcrypt.dll_BCryptGenRandom
test eax, eax
js 0x1400462bf
mov rax, qword [rsp + 0x20]
mov rdx, qword [rsp + 0x28]
jmp 0x1400462c4
call sym._ZN3std3sys3pal7windows4rand12fallback_rng17h4d091330f59922afE.llvm.2863200704538083093
mov qword [rdi + 8], 1
lea rcx, [rdi + 0x10]
mov qword [rdi + 0x10], rax
mov qword [rdi + 0x18], rdx
jmp 0x1400462f5
mov rcx, rbx
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
jne 0x140046225
xor ecx, ecx
mov rax, rcx
add rsp, 0x30
pop rbx
pop rdi
pop rsi
ret
mov rcx, rbx
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
jmp 0x14004626a
mov ecx, 8
mov edx, 0x20
call sym.alloc::alloc::handle_alloc_error::h225ba2be7c4efe12
int3
Function at 0x140046320
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push rsi
push rdi
push rbx
sub rsp, 0x30
mov rsi, rdx
mov rbx, rcx
mov ecx, dword [rcx + 0x18]
test ecx, ecx
je 0x140046410
dec ecx
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 2
jb 0x140046353
mov rdi, rax
cmp qword [rax + 8], 0
jne 0x14004640a
mov ecx, dword [rbx + 0x18]
test ecx, ecx
je 0x140046435
dec ecx
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
je 0x14004644e
mov rdi, rax
test rax, rax
jne 0x1400463bc
mov rax, qword [0x140121bb8]
movzx eax, byte [rax]
mov ecx, 0x18
mov edx, 8
call sym.__rust_alloc
test rax, rax
je 0x14004646a
mov rdi, rax
mov qword [rax], rbx
mov qword [rax + 8], 0
mov ecx, dword [rbx + 0x18]
test ecx, ecx
je 0x14004645b
dec ecx
mov rdx, rdi
call fcn.140094144
test rsi, rsi
je 0x14004642e
mov rax, qword [rsi + 8]
cmp qword [rsi], 0
mov qword [rsi], 0
je 0x14004642e
mov rdx, qword [rdi + 8]
mov rcx, qword [rdi + 0x10]
mov qword [rsp + 0x20], rdx
mov qword [rsp + 0x28], rcx
mov qword [rdi + 8], 1
mov qword [rdi + 0x10], rax
test rdx, rdx
je 0x14004640a
test rcx, rcx
je 0x14004640a
lock dec qword [rcx]
jne 0x14004640a
lea rcx, [rsp + 0x28]
call sym.alloc::sync::Arc_T_A_::drop_slow::h482c7ceb150da178
add rdi, 0x10
jmp 0x140046450
mov rcx, rbx
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 2
jae 0x140046345
jmp 0x140046353
call sym.std::sync::mpmc::context::Context::new::h2f7181f3608f01c4
jmp 0x1400463d2
mov rcx, rbx
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
jne 0x14004636f
xor edi, edi
mov rax, rdi
add rsp, 0x30
pop rbx
pop rdi
pop rsi
ret
mov rcx, rbx
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
jmp 0x1400463b4
mov ecx, 8
mov edx, 0x18
call sym.alloc::alloc::handle_alloc_error::h225ba2be7c4efe12
int3
Function at 0x140046480
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push rsi
push rdi
push rbx
sub rsp, 0x30
mov rsi, rdx
mov rbx, rcx
mov ecx, dword [rcx + 0x18]
test ecx, ecx
je 0x140046576
dec ecx
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 2
jb 0x1400464b3
mov rdi, rax
cmp qword [rax + 8], 0
jne 0x140046570
mov ecx, dword [rbx + 0x18]
test ecx, ecx
je 0x140046594
dec ecx
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
je 0x1400465ad
mov rdi, rax
test rax, rax
jne 0x14004651c
mov rax, qword [0x140121bb8]
movzx eax, byte [rax]
mov ecx, 0x18
mov edx, 8
call sym.__rust_alloc
test rax, rax
je 0x1400465c9
mov rdi, rax
mov qword [rax], rbx
mov qword [rax + 8], 0
mov ecx, dword [rbx + 0x18]
test ecx, ecx
je 0x1400465ba
dec ecx
mov rdx, rdi
call fcn.140094144
test rsi, rsi
je 0x140046536
mov rax, qword [rsi]
mov qword [rsi], 0
test rax, rax
je 0x140046538
mov rax, qword [rsi + 8]
jmp 0x140046538
xor eax, eax
mov rdx, qword [rdi + 8]
mov rcx, qword [rdi + 0x10]
mov qword [rsp + 0x20], rdx
mov qword [rsp + 0x28], rcx
mov qword [rdi + 8], 1
mov qword [rdi + 0x10], rax
test rdx, rdx
je 0x140046570
test rcx, rcx
je 0x140046570
lock dec qword [rcx]
jne 0x140046570
lea rcx, [rsp + 0x28]
call sym.alloc::sync::Arc_T_A_::drop_slow::h4d56d9a5f4040168
add rdi, 0x10
jmp 0x1400465af
mov rcx, rbx
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 2
jae 0x1400464a5
jmp 0x1400464b3
mov rcx, rbx
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
jne 0x1400464cf
xor edi, edi
mov rax, rdi
add rsp, 0x30
pop rbx
pop rdi
pop rsi
ret
mov rcx, rbx
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
jmp 0x140046514
mov ecx, 8
mov edx, 0x18
call sym.alloc::alloc::handle_alloc_error::h225ba2be7c4efe12
int3
Function at 0x1400465e0
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push rsi
push rdi
push rbx
sub rsp, 0x20
mov rsi, rdx
mov rdi, rcx
mov ecx, dword [rcx + 0x18]
test ecx, ecx
je 0x140046611
dec ecx
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 2
jb 0x140046626
cmp qword [rax + 8], 0
je 0x140046626
add rax, 0x10
jmp 0x1400466dd
mov rcx, rdi
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 2
jae 0x140046601
mov ecx, dword [rdi + 0x18]
test ecx, ecx
je 0x1400466c2
dec ecx
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
je 0x1400466db
mov rbx, rax
test rax, rax
jne 0x14004668b
mov rax, qword [0x140121bb8]
movzx eax, byte [rax]
mov ecx, 0x20
mov edx, 8
call sym.__rust_alloc
test rax, rax
je 0x1400466f1
mov rbx, rax
mov qword [rax], rdi
mov qword [rax + 8], 0
mov ecx, dword [rdi + 0x18]
test ecx, ecx
je 0x1400466e5
dec ecx
mov rdx, rbx
call fcn.140094144
xor ecx, ecx
test rsi, rsi
je 0x1400466ab
mov rax, qword [rsi]
mov qword [rsi], 0
cmp rax, 1
jne 0x1400466ab
mov rdx, qword [rsi + 8]
mov ecx, dword [rsi + 0x10]
jmp 0x1400466ad
xor edx, edx
mov qword [rbx + 8], 1
lea rax, [rbx + 0x10]
mov qword [rbx + 0x10], rdx
mov byte [rbx + 0x18], cl
jmp 0x1400466dd
mov rcx, rdi
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
jne 0x140046642
xor eax, eax
add rsp, 0x20
pop rbx
pop rdi
pop rsi
ret
mov rcx, rdi
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
jmp 0x140046683
mov ecx, 8
mov edx, 0x20
call sym.alloc::alloc::handle_alloc_error::h225ba2be7c4efe12
int3

Function at 0x140046710
Capabilities:
Set thread local storage value

Disassembly:
push rsi
push rdi
sub rsp, 0x68
mov rsi, rcx
mov rdi, qword [rcx]
mov ecx, dword [rdi + 0x18]
test ecx, ecx
je 0x140046727
dec ecx
jmp 0x140046731
mov rcx, rdi
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
mov edx, 1
call fcn.140094144
mov edx, 0x20
mov r8d, 8
mov rcx, rsi
call sym.__rust_dealloc
mov ecx, dword [rdi + 0x18]
test ecx, ecx
je 0x140046759
dec ecx
jmp 0x140046763
mov rcx, rdi
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
xor edx, edx
add rsp, 0x68
pop rdi
pop rsi
jmp fcn.140094144
Function at 0x140046800
Capabilities:
Set thread local storage value

Disassembly:
push rsi
push rdi
sub rsp, 0x68
mov rsi, rcx
mov rdi, qword [rcx]
mov ecx, dword [rdi + 0x18]
test ecx, ecx
je 0x140046828
dec ecx
mov edx, 1
call fcn.140094144
cmp qword [rsi + 8], 0
jne 0x140046843
jmp 0x14004685b
mov rcx, rdi
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
mov edx, 1
call fcn.140094144
cmp qword [rsi + 8], 0
je 0x14004685b
mov rax, qword [rsi + 0x10]
test rax, rax
je 0x14004685b
lock dec qword [rax]
jne 0x14004685b
lea rcx, [rsi + 0x10]
call sym.alloc::sync::Arc_T_A_::drop_slow::h482c7ceb150da178
mov edx, 0x18
mov r8d, 8
mov rcx, rsi
call sym.__rust_dealloc
mov ecx, dword [rdi + 0x18]
test ecx, ecx
je 0x140046879
dec ecx
jmp 0x140046883
mov rcx, rdi
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
xor edx, edx
add rsp, 0x68
pop rdi
pop rsi
jmp fcn.140094144

Function at 0x140046960
Capabilities:
Set thread local storage value

Disassembly:
push rsi
push rdi
sub rsp, 0x68
mov rsi, rcx
mov rdi, qword [rcx]
mov ecx, dword [rdi + 0x18]
test ecx, ecx
je 0x140046988
dec ecx
mov edx, 1
call fcn.140094144
cmp qword [rsi + 8], 0
jne 0x1400469a3
jmp 0x1400469bb
mov rcx, rdi
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
mov edx, 1
call fcn.140094144
cmp qword [rsi + 8], 0
je 0x1400469bb
mov rax, qword [rsi + 0x10]
test rax, rax
je 0x1400469bb
lock dec qword [rax]
jne 0x1400469bb
lea rcx, [rsi + 0x10]
call sym.alloc::sync::Arc_T_A_::drop_slow::h4d56d9a5f4040168
mov edx, 0x18
mov r8d, 8
mov rcx, rsi
call sym.__rust_dealloc
mov ecx, dword [rdi + 0x18]
test ecx, ecx
je 0x1400469d9
dec ecx
jmp 0x1400469e3
mov rcx, rdi
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
xor edx, edx
add rsp, 0x68
pop rdi
pop rsi
jmp fcn.140094144

Function at 0x140046ac0
Capabilities:
Set thread local storage value

Disassembly:
push rsi
push rdi
sub rsp, 0x68
mov rsi, rcx
mov rdi, qword [rcx]
mov ecx, dword [rdi + 0x18]
test ecx, ecx
je 0x140046ad7
dec ecx
jmp 0x140046ae1
mov rcx, rdi
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
mov edx, 1
call fcn.140094144
mov edx, 0x10
mov r8d, 8
mov rcx, rsi
call sym.__rust_dealloc
mov ecx, dword [rdi + 0x18]
test ecx, ecx
je 0x140046b09
dec ecx
jmp 0x140046b13
mov rcx, rdi
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
xor edx, edx
add rsp, 0x68
pop rdi
pop rsi
jmp fcn.140094144
Function at 0x140046bb0
Capabilities:
Set thread local storage value

Disassembly:
push rsi
push rdi
sub rsp, 0x68
mov rsi, rcx
mov rdi, qword [rcx]
mov ecx, dword [rdi + 0x18]
test ecx, ecx
je 0x140046bd8
dec ecx
mov edx, 1
call fcn.140094144
cmp qword [rsi + 8], 0
jne 0x140046bf3
jmp 0x140046c0b
mov rcx, rdi
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
mov edx, 1
call fcn.140094144
cmp qword [rsi + 8], 0
je 0x140046c0b
mov rax, qword [rsi + 0x10]
test rax, rax
je 0x140046c0b
lock dec qword [rax]
jne 0x140046c0b
lea rcx, [rsi + 0x10]
call sym.alloc::sync::Arc_T_A_::drop_slow::h8960033529f128ad
mov edx, 0x18
mov r8d, 8
mov rcx, rsi
call sym.__rust_dealloc
mov ecx, dword [rdi + 0x18]
test ecx, ecx
je 0x140046c29
dec ecx
jmp 0x140046c33
mov rcx, rdi
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
xor edx, edx
add rsp, 0x68
pop rdi
pop rsi
jmp fcn.140094144
Function at 0x140047980
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push rsi
push rdi
sub rsp, 0x38
mov rsi, rcx
mov ecx, dword [0x140096510]
test ecx, ecx
je 0x140047a82
dec ecx
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 2
jb 0x1400479b2
mov rdi, rax
cmp qword [rax + 8], 0
jne 0x140047a7c
mov ecx, dword [0x140096510]
test ecx, ecx
je 0x140047aa4
dec ecx
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
je 0x140047ac1
mov rdi, rax
test rax, rax
jne 0x140047a28
mov rax, qword [0x140121bb8]
movzx eax, byte [rax]
mov ecx, 0x18
mov edx, 8
call sym.__rust_alloc
test rax, rax
je 0x140047ae0
mov rdi, rax
lea rax, sym.std::sys::pal::common::thread_local::os_local::destroy_value::hff89242aaeecafd5
mov qword [rdi], rax
mov qword [rdi + 8], 0
mov ecx, dword [0x140096510]
test ecx, ecx
je 0x140047acd
dec ecx
mov rdx, rdi
call fcn.140094144
test rsi, rsi
je 0x140047a42
mov rax, qword [rsi]
mov qword [rsi], 0
test rax, rax
je 0x140047a44
mov rax, qword [rsi + 8]
jmp 0x140047a44
xor eax, eax
mov rdx, qword [rdi + 8]
mov rcx, qword [rdi + 0x10]
mov qword [rsp + 0x28], rdx
mov qword [rsp + 0x30], rcx
mov qword [rdi + 8], 1
mov qword [rdi + 0x10], rax
test rdx, rdx
je 0x140047a7c
test rcx, rcx
je 0x140047a7c
lock dec qword [rcx]
jne 0x140047a7c
lea rcx, [rsp + 0x30]
call sym.alloc::sync::Arc_T_A_::drop_slow::h8960033529f128ad
add rdi, 0x10
jmp 0x140047ac3
lea rcx, sym.std::sys::pal::common::thread_local::os_local::destroy_value::hff89242aaeecafd5
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 2
jae 0x1400479a4
jmp 0x1400479b2
lea rcx, sym.std::sys::pal::common::thread_local::os_local::destroy_value::hff89242aaeecafd5
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
jne 0x1400479d1
xor edi, edi
mov rax, rdi
add rsp, 0x38
pop rdi
pop rsi
ret
lea rcx, sym.std::sys::pal::common::thread_local::os_local::destroy_value::hff89242aaeecafd5
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
jmp 0x140047a20
mov ecx, 8
mov edx, 0x18
call sym.alloc::alloc::handle_alloc_error::h225ba2be7c4efe12
int3
Function at 0x140047af0
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push rsi
push rdi
sub rsp, 0x28
mov rsi, rcx
mov ecx, dword [0x140096530]
test ecx, ecx
je 0x140047b1f
dec ecx
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 2
jb 0x140047b38
cmp byte [rax + 8], 0
je 0x140047b38
add rax, 9
jmp 0x140047be0
lea rcx, sym.std::sys::pal::common::thread_local::os_local::destroy_value::h503d6eda1e6cf15b
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 2
jae 0x140047b10
mov ecx, dword [0x140096530]
test ecx, ecx
je 0x140047bc1
dec ecx
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
je 0x140047bde
mov rdi, rax
test rax, rax
jne 0x140047b9e
mov rax, qword [0x140121bb8]
movzx eax, byte [rax]
mov ecx, 0x10
mov edx, 8
call sym.__rust_alloc
test rax, rax
je 0x140047bf7
mov rdi, rax
lea rax, sym.std::sys::pal::common::thread_local::os_local::destroy_value::h503d6eda1e6cf15b
mov qword [rdi], rax
mov byte [rdi + 8], 0
mov ecx, dword [0x140096530]
test ecx, ecx
je 0x140047be7
dec ecx
mov rdx, rdi
call fcn.140094144
xor ecx, ecx
test rsi, rsi
je 0x140047bb4
cmp byte [rsi], 0
mov byte [rsi], 0
movzx eax, byte [rsi + 1]
cmove eax, ecx
mov ecx, eax
lea rax, [rdi + 9]
mov byte [rdi + 8], 1
mov byte [rdi + 9], cl
jmp 0x140047be0
lea rcx, sym.std::sys::pal::common::thread_local::os_local::destroy_value::h503d6eda1e6cf15b
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
call sub.KERNEL32.dll_TlsGetValue
cmp rax, 1
jne 0x140047b53
xor eax, eax
add rsp, 0x28
pop rdi
pop rsi
ret
lea rcx, sym.std::sys::pal::common::thread_local::os_local::destroy_value::h503d6eda1e6cf15b
call sym.std::sys::pal::windows::thread_local_key::StaticKey::init::h2200aa7c23b42617
mov ecx, eax
jmp 0x140047b96
mov ecx, 8
mov edx, 0x10
call sym.alloc::alloc::handle_alloc_error::h225ba2be7c4efe12
int3