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

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
sub rsp, 0x20
mov rax, qword [0x1801902f8]
mov rsi, rcx
mov rbp, rdx
mov ecx, dword [rax]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
movsxd rcx, dword [0x18018fe90]
xor edi, edi
mov ebx, edi
test rax, rax
je 0x1800c64f9
test ecx, ecx
jle 0x1800c64f9
cmp ecx, dword [rax + 8]
jge 0x1800c64f9
mov rax, qword [rax]
mov rbx, qword [rax + rcx*8]
test rbx, rbx
jne 0x1800c652e
lea ecx, [rbx + 0x18]
call sym.tcl86t.dll_hclpAlloc
mov rbx, rax
test rax, rax
je 0x1800c65a3
xor eax, eax
lea rcx, [0x18018fe90]
mov qword [rbx], rax
mov rdx, rbx
mov qword [rbx + 8], rax
mov qword [rbx + 0x10], rax
call fcn.180106bc0
test rbp, rbp
je 0x1800c6543
mov edx, 0xffffffff
mov rcx, rbp
call sym.tcl86t.dll_hcl_NewStringObj
mov rdi, rax
mov rcx, qword [rbx]
test rcx, rcx
je 0x1800c655f
mov r8d, dword [rcx]
lea edx, [r8 - 1]
mov dword [rcx], edx
cmp r8d, 1
jg 0x1800c655f
call sym.tcl86t.dll_hclFreeObj
mov qword [rbx], rsi
test rsi, rsi
je 0x1800c6569
inc dword [rsi]
mov rcx, qword [rbx + 8]
test rcx, rcx
je 0x1800c6583
mov edx, dword [rcx]
lea eax, [rdx - 1]
mov dword [rcx], eax
cmp edx, 1
jg 0x1800c6583
call sym.tcl86t.dll_hclFreeObj
mov qword [rbx + 8], rdi
test rdi, rdi
je 0x1800c658e
inc dword [rdi]
mov rbx, qword [rsp + 0x30]
mov rbp, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
ret
mov edx, 0x18
lea rcx, str.unable_to_alloc__u_bytes
call sym.tcl86t.dll_hcl_Panic
int3

Function at 0x1800c65c0
Capabilities:
Get thread local storage value

Disassembly:
mov qword [rsp + 8], rbx
push rdi
sub rsp, 0x20
mov rax, qword [0x1801902f8]
mov rdi, rcx
mov ecx, dword [rax]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
movsxd rcx, dword [0x18018fe90]
xor ebx, ebx
test rax, rax
je 0x1800c65fa
test ecx, ecx
jle 0x1800c65fa
cmp ecx, dword [rax + 8]
jge 0x1800c65fa
mov rax, qword [rax]
mov rbx, qword [rax + rcx*8]
test rbx, rbx
jne 0x1800c662b
lea ecx, [rbx + 0x18]
call sym.tcl86t.dll_hclpAlloc
mov rbx, rax
test rax, rax
je 0x1800c6660
xor eax, eax
lea rcx, [0x18018fe90]
mov qword [rbx], rax
mov rdx, rbx
mov qword [rbx + 8], rax
mov qword [rbx + 0x10], rax
call fcn.180106bc0
test rdi, rdi
je 0x1800c6652
mov rcx, qword [rbx + 8]
test rcx, rcx
jne 0x1800c664a
mov qword [rdi], rcx
mov rax, qword [rbx]
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
call sym.tcl86t.dll_hcl_GetString
mov qword [rdi], rax
mov rax, qword [rbx]
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
mov edx, 0x18
lea rcx, str.unable_to_alloc__u_bytes
call sym.tcl86t.dll_hcl_Panic
int3
Function at 0x1800c7380
Capabilities:
Get thread local storage value

Disassembly:
mov qword [rsp + 8], rbx
push rdi
sub rsp, 0x20
mov rax, qword [0x1801902f8]
mov rdi, rcx
mov ecx, dword [rax]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
movsxd rdx, dword [0x18018fe90]
xor ebx, ebx
test rax, rax
je 0x1800c73ba
test edx, edx
jle 0x1800c73ba
cmp edx, dword [rax + 8]
jge 0x1800c73ba
mov rax, qword [rax]
mov rbx, qword [rax + rdx*8]
test rbx, rbx
jne 0x1800c73eb
lea ecx, [rbx + 0x18]
call sym.tcl86t.dll_hclpAlloc
mov rbx, rax
test rax, rax
je 0x1800c73fa
xor eax, eax
lea rcx, [0x18018fe90]
mov qword [rbx], rax
mov rdx, rbx
mov qword [rbx + 8], rax
mov qword [rbx + 0x10], rax
call fcn.180106bc0
mov qword [rbx + 0x10], rdi
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
mov edx, 0x18
lea rcx, str.unable_to_alloc__u_bytes
call sym.tcl86t.dll_hcl_Panic
int3

Function at 0x1800c7410
Capabilities:
Get thread local storage value

Disassembly:
push rbx
sub rsp, 0x20
mov rax, qword [0x1801902f8]
mov ecx, dword [rax]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
movsxd rcx, dword [0x18018fe90]
xor ebx, ebx
test rax, rax
je 0x1800c7443
test ecx, ecx
jle 0x1800c7443
cmp ecx, dword [rax + 8]
jge 0x1800c7443
mov rax, qword [rax]
mov rbx, qword [rax + rcx*8]
test rbx, rbx
jne 0x1800c7474
lea ecx, [rbx + 0x18]
call sym.tcl86t.dll_hclpAlloc
mov rbx, rax
test rax, rax
je 0x1800c747e
xor eax, eax
lea rcx, [0x18018fe90]
mov qword [rbx], rax
mov rdx, rbx
mov qword [rbx + 8], rax
mov qword [rbx + 0x10], rax
call fcn.180106bc0
mov rax, qword [rbx + 0x10]
add rsp, 0x20
pop rbx
ret
mov edx, 0x18
lea rcx, str.unable_to_alloc__u_bytes
call sym.tcl86t.dll_hcl_Panic
int3

Function at 0x1800c8750
Capabilities:
Allocate thread local storage
Get thread local storage value

Disassembly:
mov qword [rsp + 8], rbx
push rdi
sub rsp, 0x20
mov rbx, qword [rcx + 0xa0]
mov rdi, rcx
call sym.tcl86t.dll_hcl_PopCallFrame
mov rdx, rbx
mov rcx, rdi
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
jmp sym.tcl86t.dll_hclStackFree
Function at 0x1800cb0f0
Capabilities:
Allocate thread local storage
Get thread local storage value

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x20], rbp
mov qword [rsp + 8], rcx
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x20
mov r12, qword [rcx + 0x28]
mov rbp, 0xffffffffffffffff
mov rdi, rdx
mov rbx, rcx
lea edx, [rbp + 0x29]
lea r15d, [rbp + 6]
call sym.tcl86t.dll_hclStackAlloc
mov r14, rax
mov rax, qword [rdi]
mov r8, qword [rax + 8]
lea r13, [rax + 0x20]
mov r9d, dword [r8 + 0x3c]
inc r9d
test r9d, 0xfffffffd
jne 0x1800cb14b
mov r13, qword [rax + 0x20]
mov rdi, qword [rdi + 8]
test rdi, rdi
je 0x1800cb22f
mov qword [rsp + 0x58], rsi
mov rsi, rbp
cmp rdi, r12
je 0x1800cb22a
mov rax, r12
mov rbx, rsi
test rsi, rsi
js 0x1800cb19d
nop dword [rax]
nop dword [rax + rax]
mov rdx, qword [r14 + rbx*8]
lea rcx, [rax + 0x28]
mov rdx, qword [rdx]
call qword [rax + 0x68]
test rax, rax
je 0x1800cb1f1
sub rbx, 1
mov rax, qword [rax + 0x18]
jns 0x1800cb180
lea rcx, [rax + 0xa0]
mov rdx, r13
call qword [rax + 0xe0]
mov rdx, rax
test rax, rax
je 0x1800cb1f1
inc dword [rdi + 0x168]
mov rcx, qword [rdi + 0x1b0]
test rcx, rcx
je 0x1800cb1e0
cmp qword [rcx], 0
je 0x1800cb1d7
mov rax, qword [rcx + 8]
inc dword [rax + 0x168]
mov rcx, qword [rcx + 0x18]
test rcx, rcx
jne 0x1800cb1c7
mov rax, qword [rdx + 0x18]
cmp qword [rax + 0x18], 0
je 0x1800cb1f1
inc dword [rdi + 0x16c]
mov rbx, qword [rsp + 0x50]
inc ebp
inc rsi
cmp ebp, r15d
jne 0x1800cb219
add r15d, r15d
mov rdx, r14
mov rcx, rbx
lea r8d, [r15*8]
call fcn.180088950
mov r14, rax
mov qword [r14 + rsi*8], rdi
mov rdi, qword [rdi + 0x20]
test rdi, rdi
jne 0x1800cb160
mov rsi, qword [rsp + 0x58]
mov rdx, r14
mov rcx, rbx
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
add rsp, 0x20
pop r15
pop r14
pop r13
pop r12
pop rdi
jmp sym.tcl86t.dll_hclStackFree
Function at 0x1800ccd50
Capabilities:
Allocate thread local storage
Get thread local storage value

Disassembly:
push rbx
sub rsp, 0x20
xor r8d, r8d
mov r10, rcx
cmp dword [rcx + 0x1a0], r8d
jle 0x1800ccdc8
mov r9d, r8d
nop dword [rax + rax]
mov rdx, qword [r10 + 0x1a8]
add rdx, r9
mov rcx, qword [rdx + 0x10]
test rcx, rcx
je 0x1800ccd8b
mov rax, qword [rdx + 0x18]
mov qword [rcx + 0x18], rax
mov rcx, qword [rdx + 0x18]
test rcx, rcx
je 0x1800ccd9c
mov rax, qword [rdx + 0x10]
mov qword [rcx + 0x10], rax
mov rcx, qword [rdx]
test rcx, rcx
je 0x1800ccdb8
cmp qword [rcx + 0x1b0], rdx
jne 0x1800ccdb8
mov rax, qword [rdx + 0x18]
mov qword [rcx + 0x1b0], rax
inc r8d
add r9, 0x20
cmp r8d, dword [r10 + 0x1a0]
jl 0x1800ccd70
mov rbx, qword [r10 + 0x1a8]
test rbx, rbx
je 0x1800cce79
cmp dword [0x1801905e4], 0
jne 0x1800cce02
call qword [sym.imp.KERNEL32.dll_TlsAlloc]
mov dword [0x1801905ac], eax
mov dword [0x1801905e4], 1
cmp eax, 0xffffffff
je 0x1800ccefa
jmp 0x1800cce08
mov eax, dword [0x1801905ac]
mov ecx, eax
mov qword [rsp + 0x30], rdi
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rdi, rax
test rax, rax
jne 0x1800cce2b
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x1800ccf07
test rdi, rdi
jne 0x1800cce38
call fcn.180105bb0
mov rdi, rax
movzx eax, byte [rbx - 0x10]
add rbx, 0xfffffffffffffff0
cmp al, 0xef
jne 0x1800ccee1
cmp byte [rbx + 3], al
jne 0x1800ccee1
movzx edx, byte [rbx + 1]
cmp edx, 0xa
jne 0x1800cce7f
mov eax, dword [rbx + 8]
sub dword [rdi + 0x28], eax
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov r8, rbx
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov rdi, qword [rsp + 0x30]
add rsp, 0x20
pop rbx
ret
lea rax, [rdx + rdx*4]
lea rcx, [rdi + rax*8]
mov eax, dword [rbx + 8]
sub dword [rcx + 0x54], eax
mov rax, qword [rcx + 0x30]
mov qword [rbx], rax
mov r9d, dword [rcx + 0x40]
mov qword [rcx + 0x30], rbx
test r9d, r9d
jne 0x1800ccea5
mov qword [rcx + 0x38], rbx
inc dword [rcx + 0x48]
inc r9d
cmp rdi, qword [0x18018f158]
mov dword [rcx + 0x40], r9d
je 0x1800cce74
lea rax, [rdx + rdx*2]
lea rcx, [0x180190200]
cmp r9d, dword [rcx + rax*8 + 8]
jle 0x1800cce74
mov r8d, dword [rcx + rax*8 + 0xc]
mov rcx, rdi
mov rdi, qword [rsp + 0x30]
add rsp, 0x20
pop rbx
jmp fcn.180106700
movzx r9d, byte [rbx + 3]
lea rcx, str.alloc:_invalid_block:__p:__x__x
movzx r8d, al
mov rdx, rbx
call sym.tcl86t.dll_hcl_Panic
int3
lea rcx, str.could_not_allocate_thread_local_storage
call sym.tcl86t.dll_hcl_Panic
int3
lea rcx, str.TlsGetValue_failed_from_TclpGetAllocCache
call sym.tcl86t.dll_hcl_Panic
int3
Function at 0x1800cdb20
Capabilities:
Get thread local storage value

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
sub rsp, 0x20
mov rax, qword [0x1801902f8]
mov rbp, rcx
mov rdi, r8
mov rsi, rdx
mov ecx, dword [rax]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
movsxd r9, dword [0x18018feb0]
xor ebx, ebx
test rax, rax
je 0x1800cdb6c
test r9d, r9d
jle 0x1800cdb6c
cmp r9d, dword [rax + 8]
jge 0x1800cdb6c
mov rax, qword [rax]
mov rbx, qword [rax + r9*8]
test rbx, rbx
jne 0x1800cdb9e
lea ecx, [rbx + 0x60]
call sym.tcl86t.dll_hclpAlloc
mov rbx, rax
test rax, rax
je 0x1800cdbdc
xor edx, edx
mov rcx, rax
lea r8d, [rdx + 0x60]
call sub.VCRUNTIME140.dll_memset
mov rdx, rbx
lea rcx, [0x18018feb0]
call fcn.180106bc0
mov ecx, 0x20
call sym.tcl86t.dll_hclpAlloc
mov rcx, rax
test rax, rax
je 0x1800cdbee
mov qword [rax], rbp
mov rbp, qword [rsp + 0x38]
mov qword [rax + 8], rsi
mov rsi, qword [rsp + 0x40]
mov qword [rax + 0x10], rdi
mov rax, qword [rbx + 0x38]
mov qword [rcx + 0x18], rax
mov qword [rbx + 0x38], rcx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
mov edx, 0x60
lea rcx, str.unable_to_alloc__u_bytes
call sym.tcl86t.dll_hcl_Panic
int3
mov edx, 0x20
lea rcx, str.unable_to_alloc__u_bytes
call sym.tcl86t.dll_hcl_Panic
int3

Function at 0x1800cdd00
Capabilities:
Get thread local storage value

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rsi
push rdi
sub rsp, 0x20
mov rax, qword [0x1801902f8]
mov rsi, rcx
mov edi, edx
mov ecx, dword [rax]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
movsxd r8, dword [0x18018feb0]
xor ebx, ebx
test rax, rax
je 0x1800cdd43
test r8d, r8d
jle 0x1800cdd43
cmp r8d, dword [rax + 8]
jge 0x1800cdd43
mov rax, qword [rax]
mov rbx, qword [rax + r8*8]
test rbx, rbx
jne 0x1800cdd75
lea ecx, [rbx + 0x60]
call sym.tcl86t.dll_hclpAlloc
mov rbx, rax
test rax, rax
je 0x1800cdd92
xor edx, edx
mov rcx, rax
lea r8d, [rdx + 0x60]
call sub.VCRUNTIME140.dll_memset
mov rdx, rbx
lea rcx, [0x18018feb0]
call fcn.180106bc0
mov r8d, edi
mov rdx, rsi
mov rcx, rbx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
jmp fcn.1800cde30
mov edx, 0x60
lea rcx, str.unable_to_alloc__u_bytes
call sym.tcl86t.dll_hcl_Panic
int3
Function at 0x1800cdef0
Capabilities:
Get thread local storage value

Disassembly:
mov qword [rsp + 0x18], rbp
push rsi
push rdi
push r15
sub rsp, 0x20
mov rax, qword [0x1801902f8]
mov r15, rcx
mov rbp, rdx
mov ecx, dword [rax]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
movsxd r8, dword [0x18018feb0]
xor esi, esi
mov edi, esi
test rax, rax
je 0x1800cdf34
test r8d, r8d
jle 0x1800cdf34
cmp r8d, dword [rax + 8]
jge 0x1800cdf34
mov rax, qword [rax]
mov rdi, qword [rax + r8*8]
test rdi, rdi
jne 0x1800cdf6a
lea ecx, [rdi + 0x60]
call sym.tcl86t.dll_hclpAlloc
mov rdi, rax
test rax, rax
je 0x1800cdff5
xor edx, edx
mov rcx, rax
lea r8d, [rdx + 0x60]
call sub.VCRUNTIME140.dll_memset
mov rdx, rdi
lea rcx, [0x18018feb0]
call fcn.180106bc0
mov qword [rsp + 0x40], rbx
lea rcx, [rdi + 0x18]
mov qword [rsp + 0x48], r14
call sym.tcl86t.dll_hcl_MutexLock
mov rbx, qword [rdi]
test rbx, rbx
je 0x1800cdfd3
mov rdx, rbp
mov rcx, rbx
call r15
mov rcx, qword [rbx + 8]
cmp eax, 1
jne 0x1800cdfc8
test rsi, rsi
jne 0x1800cdfa1
mov qword [rdi], rcx
jmp 0x1800cdfa5
mov qword [rsi + 8], rcx
cmp qword [rbx + 8], 0
jne 0x1800cdfb0
mov qword [rdi + 8], rsi
cmp qword [rdi + 0x10], rbx
jne 0x1800cdfba
mov qword [rdi + 0x10], rsi
mov rcx, rbx
mov rbx, qword [rbx + 8]
call sym.tcl86t.dll_hclpFree
jmp 0x1800cdfce
mov rsi, rbx
mov rbx, rcx
test rbx, rbx
jne 0x1800cdf85
mov rcx, qword [rdi + 0x18]
mov r14, qword [rsp + 0x48]
mov rbx, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x50]
add rsp, 0x20
pop r15
pop rdi
pop rsi
jmp qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov edx, 0x60
lea rcx, str.unable_to_alloc__u_bytes
call sym.tcl86t.dll_hcl_Panic
int3
Function at 0x1800ce010
Capabilities:
Get thread local storage value

Disassembly:
push rbx
push r12
push r14
sub rsp, 0x20
mov rax, qword [0x1801902f8]
mov ebx, ecx
mov ecx, dword [rax]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
movsxd rdx, dword [0x18018feb0]
xor r12d, r12d
mov r14d, r12d
test rax, rax
je 0x1800ce04d
test edx, edx
jle 0x1800ce04d
cmp edx, dword [rax + 8]
jge 0x1800ce04d
mov rax, qword [rax]
mov r14, qword [rax + rdx*8]
test r14, r14
jne 0x1800ce084
lea ecx, [r14 + 0x60]
call sym.tcl86t.dll_hclpAlloc
mov r14, rax
test rax, rax
je 0x1800ce1bc
xor edx, edx
mov rcx, rax
lea r8d, [rdx + 0x60]
call sub.VCRUNTIME140.dll_memset
mov rdx, r14
lea rcx, [0x18018feb0]
call fcn.180106bc0
call sym.tcl86t.dll_hcl_AsyncReady
test eax, eax
je 0x1800ce0a5
xor edx, edx
xor ecx, ecx
call sym.tcl86t.dll_hcl_AsyncInvoke
mov eax, 1
add rsp, 0x20
pop r14
pop r12
pop rbx
ret
mov qword [rsp + 0x40], rbp
lea rcx, [r14 + 0x18]
mov eax, ebx
mov qword [rsp + 0x48], rsi
mov ebp, ebx
mov qword [rsp + 0x50], rdi
or ebp, 0xfffffffd
mov qword [rsp + 0x58], r15
and eax, 0xfffffffd
cmovne ebp, ebx
call sym.tcl86t.dll_hcl_MutexLock
mov rbx, qword [r14]
test rbx, rbx
je 0x1800ce10e
mov rsi, qword [rbx]
test rsi, rsi
je 0x1800ce105
mov qword [rbx], r12
mov rcx, qword [r14 + 0x18]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov edx, ebp
mov rcx, rbx
call rsi
lea rcx, [r14 + 0x18]
mov edi, eax
call sym.tcl86t.dll_hcl_MutexLock
test edi, edi
jne 0x1800ce138
mov qword [rbx], rsi
mov rbx, qword [rbx + 8]
test rbx, rbx
jne 0x1800ce0d7
mov rcx, qword [r14 + 0x18]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor eax, eax
mov rdi, qword [rsp + 0x50]
mov rsi, qword [rsp + 0x48]
mov rbp, qword [rsp + 0x40]
mov r15, qword [rsp + 0x58]
add rsp, 0x20
pop r14
pop r12
pop rbx
ret
mov rcx, qword [r14]
cmp rcx, rbx
jne 0x1800ce15d
mov rax, qword [rbx + 8]
mov qword [r14], rax
cmp qword [rbx + 8], r12
jne 0x1800ce151
mov qword [r14 + 8], r12
cmp qword [r14 + 0x10], rbx
jne 0x1800ce1a0
mov qword [r14 + 0x10], r12
jmp 0x1800ce1a0
test rcx, rcx
je 0x1800ce1a8
mov rax, qword [rcx + 8]
cmp rax, rbx
je 0x1800ce184
mov rcx, rax
test rax, rax
jne 0x1800ce162
mov rcx, qword [r14 + 0x18]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, 1
jmp 0x1800ce11a
mov rax, qword [rbx + 8]
mov qword [rcx + 8], rax
cmp qword [rbx + 8], r12
jne 0x1800ce196
mov qword [r14 + 8], rcx
cmp qword [r14 + 0x10], rbx
jne 0x1800ce1a0
mov qword [r14 + 0x10], rcx
mov rcx, rbx
call sym.tcl86t.dll_hclpFree
mov rcx, qword [r14 + 0x18]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, 1
jmp 0x1800ce11a
mov edx, 0x60
lea rcx, str.unable_to_alloc__u_bytes
call sym.tcl86t.dll_hcl_Panic
int3
Function at 0x1800ce1d0
Capabilities:
Get thread local storage value

Disassembly:
push rbx
sub rsp, 0x20
mov rax, qword [0x1801902f8]
mov ecx, dword [rax]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
movsxd rcx, dword [0x18018feb0]
xor ebx, ebx
test rax, rax
je 0x1800ce203
test ecx, ecx
jle 0x1800ce203
cmp ecx, dword [rax + 8]
jge 0x1800ce203
mov rax, qword [rax]
mov rbx, qword [rax + rcx*8]
test rbx, rbx
jne 0x1800ce235
lea ecx, [rbx + 0x60]
call sym.tcl86t.dll_hclpAlloc
mov rbx, rax
test rax, rax
je 0x1800ce23e
xor edx, edx
mov rcx, rax
lea r8d, [rdx + 0x60]
call sub.VCRUNTIME140.dll_memset
mov rdx, rbx
lea rcx, [0x18018feb0]
call fcn.180106bc0
mov eax, dword [rbx + 0x20]
add rsp, 0x20
pop rbx
ret
mov edx, 0x60
lea rcx, str.unable_to_alloc__u_bytes
call sym.tcl86t.dll_hcl_Panic
int3

Function at 0x1800ce250
Capabilities:
Get thread local storage value

Disassembly:
mov qword [rsp + 0x10], rsi
push rdi
sub rsp, 0x20
mov rax, qword [0x1801902f8]
mov esi, ecx
mov ecx, dword [rax]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
movsxd rdx, dword [0x18018feb0]
xor edi, edi
test rax, rax
je 0x1800ce289
test edx, edx
jle 0x1800ce289
cmp edx, dword [rax + 8]
jge 0x1800ce289
mov rax, qword [rax]
mov rdi, qword [rax + rdx*8]
test rdi, rdi
jne 0x1800ce2bb
lea ecx, [rdi + 0x60]
call sym.tcl86t.dll_hclpAlloc
mov rdi, rax
test rax, rax
je 0x1800ce2df
xor edx, edx
mov rcx, rax
lea r8d, [rdx + 0x60]
call sub.VCRUNTIME140.dll_memset
mov rdx, rdi
lea rcx, [0x18018feb0]
call fcn.180106bc0
mov qword [rsp + 0x30], rbx
mov ecx, esi
mov ebx, dword [rdi + 0x20]
mov dword [rdi + 0x20], esi
call sym.tcl86t.dll_hcl_ServiceModeHook
mov rsi, qword [rsp + 0x38]
mov eax, ebx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
mov edx, 0x60
lea rcx, str.unable_to_alloc__u_bytes
call sym.tcl86t.dll_hcl_Panic
int3

Function at 0x1800ce300
Capabilities:
Get thread local storage value

Disassembly:
mov qword [rsp + 8], rbx
push rdi
sub rsp, 0x20
mov rax, qword [0x1801902f8]
mov rdi, rcx
mov ecx, dword [rax]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
movsxd rdx, dword [0x18018feb0]
xor ebx, ebx
test rax, rax
je 0x1800ce33a
test edx, edx
jle 0x1800ce33a
cmp edx, dword [rax + 8]
jge 0x1800ce33a
mov rax, qword [rax]
mov rbx, qword [rax + rdx*8]
test rbx, rbx
jne 0x1800ce36c
lea ecx, [rbx + 0x60]
call sym.tcl86t.dll_hclpAlloc
mov rbx, rax
test rax, rax
je 0x1800ce3ad
xor edx, edx
mov rcx, rax
lea r8d, [rdx + 0x60]
call sub.VCRUNTIME140.dll_memset
mov rdx, rbx
lea rcx, [0x18018feb0]
call fcn.180106bc0
cmp dword [rbx + 0x24], 0
je 0x1800ce386
mov eax, dword [rdi]
lea rcx, [rbx + 0x28]
cmp eax, dword [rcx]
jl 0x1800ce386
jne 0x1800ce397
mov eax, dword [rbx + 0x2c]
cmp dword [rdi + 4], eax
jge 0x1800ce397
mov rax, qword [rdi]
lea rcx, [rbx + 0x28]
mov qword [rcx], rax
mov dword [rbx + 0x24], 1
cmp dword [rbx + 0x30], 0
jne 0x1800ce3a2
call sym.tcl86t.dll_hcl_SetTimer
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
mov edx, 0x60
lea rcx, str.unable_to_alloc__u_bytes
call sym.tcl86t.dll_hcl_Panic
int3
Function at 0x1800ce3c0
Capabilities:
Get thread local storage value

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push r15
sub rsp, 0x20
mov rax, qword [0x1801902f8]
mov ebx, ecx
xor r15d, r15d
mov ebp, r15d
mov ecx, dword [rax]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rdx, rax
mov esi, r15d
movsxd rax, dword [0x18018feb0]
test rdx, rdx
je 0x1800ce409
test eax, eax
jle 0x1800ce409
cmp eax, dword [rdx + 8]
jge 0x1800ce409
mov rcx, rax
mov rax, qword [rdx]
mov rsi, qword [rax + rcx*8]
test rsi, rsi
jne 0x1800ce43f
lea ecx, [rsi + 0x60]
call sym.tcl86t.dll_hclpAlloc
mov rsi, rax
test rax, rax
je 0x1800ce57f
xor edx, edx
mov rcx, rax
lea r8d, [rdx + 0x60]
call sub.VCRUNTIME140.dll_memset
mov rdx, rsi
lea rcx, [0x18018feb0]
call fcn.180106bc0
call sym.tcl86t.dll_hcl_AsyncReady
test eax, eax
je 0x1800ce464
xor edx, edx
xor ecx, ecx
call sym.tcl86t.dll_hcl_AsyncInvoke
mov eax, 1
mov rbx, qword [rsp + 0x50]
add rsp, 0x20
pop r15
pop rsi
pop rbp
ret
mov qword [rsp + 0x40], rdi
mov eax, ebx
mov edi, ebx
mov qword [rsp + 0x48], r14
mov r14d, dword [rsi + 0x20]
or edi, 0xfffffffd
and eax, 0xfffffffd
mov dword [rsi + 0x20], r15d
cmovne edi, ebx
mov eax, edi
and eax, 0xfffffffd
cmp eax, 0x20
jne 0x1800ce495
lea edi, [rax + 2]
jmp 0x1800ce538
mov ecx, edi
call sym.tcl86t.dll_hcl_ServiceEvent
test eax, eax
jne 0x1800ce55c
mov ebp, edi
and ebp, 2
je 0x1800ce4b6
mov qword [rsi + 0x28], r15
mov eax, 1
jmp 0x1800ce4b9
mov eax, r15d
mov dword [rsi + 0x24], eax
mov rbx, qword [rsi + 0x38]
mov dword [rsi + 0x30], 1
test rbx, rbx
je 0x1800ce4e9
nop dword [rax]
mov rax, qword [rbx]
test rax, rax
je 0x1800ce4e0
mov rcx, qword [rbx + 0x10]
mov edx, edi
call rax
mov rbx, qword [rbx + 0x18]
test rbx, rbx
jne 0x1800ce4d0
mov dword [rsi + 0x30], r15d
test ebp, ebp
jne 0x1800ce4fa
mov rcx, r15
cmp dword [rsi + 0x24], r15d
je 0x1800ce4fe
lea rcx, [rsi + 0x28]
call sym.tcl86t.dll_hcl_WaitForEvent
mov ebp, eax
test eax, eax
js 0x1800ce557
mov rbx, qword [rsi + 0x38]
test rbx, rbx
je 0x1800ce52d
mov r8, qword [rbx + 8]
test r8, r8
je 0x1800ce524
mov rcx, qword [rbx + 0x10]
mov edx, edi
call r8
mov rbx, qword [rbx + 0x18]
test rbx, rbx
jne 0x1800ce512
mov ecx, edi
call sym.tcl86t.dll_hcl_ServiceEvent
test eax, eax
jne 0x1800ce55c
test dil, 0x20
je 0x1800ce547
call sym.tcl86t.dll_hclServiceIdle
test eax, eax
jne 0x1800ce55c
test dil, 2
jne 0x1800ce561
test ebp, ebp
je 0x1800ce483
jmp 0x1800ce561
mov ebp, r15d
jmp 0x1800ce561
mov ebp, 1
mov rdi, qword [rsp + 0x40]
mov eax, ebp
mov rbx, qword [rsp + 0x50]
mov dword [rsi + 0x20], r14d
mov r14, qword [rsp + 0x48]
add rsp, 0x20
pop r15
pop rsi
pop rbp
ret
mov edx, 0x60
lea rcx, str.unable_to_alloc__u_bytes
call sym.tcl86t.dll_hcl_Panic
int3
Function at 0x1800ce5a0
Capabilities:
Get thread local storage value

Disassembly:
mov qword [rsp + 0x18], rsi
push rdi
sub rsp, 0x20
mov rax, qword [0x1801902f8]
xor esi, esi
mov ecx, dword [rax]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
movsxd rcx, dword [0x18018feb0]
xor edi, edi
test rax, rax
je 0x1800ce5d9
test ecx, ecx
jle 0x1800ce5d9
cmp ecx, dword [rax + 8]
jge 0x1800ce5d9
mov rax, qword [rax]
mov rdi, qword [rax + rcx*8]
test rdi, rdi
jne 0x1800ce60f
lea ecx, [rdi + 0x60]
call sym.tcl86t.dll_hclpAlloc
mov rdi, rax
test rax, rax
je 0x1800ce6f5
xor edx, edx
mov rcx, rax
lea r8d, [rdx + 0x60]
call sub.VCRUNTIME140.dll_memset
mov rdx, rdi
lea rcx, [0x18018feb0]
call fcn.180106bc0
cmp dword [rdi + 0x20], esi
jne 0x1800ce621
xor eax, eax
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
ret
mov qword [rsp + 0x30], rbx
mov qword [rsp + 0x38], r14
mov dword [rdi + 0x20], esi
call sym.tcl86t.dll_hcl_AsyncReady
test eax, eax
je 0x1800ce640
xor edx, edx
xor ecx, ecx
call sym.tcl86t.dll_hcl_AsyncInvoke
mov rbx, qword [rdi + 0x38]
mov r14d, 1
mov dword [rdi + 0x30], r14d
mov dword [rdi + 0x24], esi
test rbx, rbx
je 0x1800ce69d
mov rax, qword [rbx]
test rax, rax
je 0x1800ce669
mov rcx, qword [rbx + 0x10]
mov edx, 0xfffffffd
call rax
mov rbx, qword [rbx + 0x18]
test rbx, rbx
jne 0x1800ce656
mov rbx, qword [rdi + 0x38]
test rbx, rbx
je 0x1800ce69d
nop dword [rax + rax]
mov rax, qword [rbx + 8]
test rax, rax
je 0x1800ce694
mov rcx, qword [rbx + 0x10]
mov edx, 0xfffffffd
call rax
mov rbx, qword [rbx + 0x18]
test rbx, rbx
jne 0x1800ce680
xor ecx, ecx
call sym.tcl86t.dll_hcl_ServiceEvent
mov rbx, qword [rsp + 0x30]
test eax, eax
je 0x1800ce6bb
mov esi, r14d
xor ecx, ecx
call sym.tcl86t.dll_hcl_ServiceEvent
test eax, eax
jne 0x1800ce6b0
call sym.tcl86t.dll_hclServiceIdle
test eax, eax
lea rdx, [rdi + 0x28]
cmovne esi, r14d
xor ecx, ecx
cmp dword [rdi + 0x24], ecx
cmovne rcx, rdx
call sym.tcl86t.dll_hcl_SetTimer
mov eax, esi
mov dword [rdi + 0x20], r14d
mov rsi, qword [rsp + 0x40]
mov r14, qword [rsp + 0x38]
mov dword [rdi + 0x30], 0
add rsp, 0x20
pop rdi
ret
mov edx, 0x60
lea rcx, str.unable_to_alloc__u_bytes
call sym.tcl86t.dll_hcl_Panic
int3