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

Disassembly:
push r14
push r13
push r12
sub rsp, 0x20
test edx, edx
jne 0x140017a30
test r8, r8
je 0x140017af0
mov eax, 1
add rsp, 0x20
pop r12
pop r13
pop r14
ret
cmp edx, 1
je 0x140017b20
cmp edx, 3
jne 0x140017a17
mov ecx, dword [0x1400b8188]
cmp ecx, 0xffffffff
je 0x140017a17
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov r12, rax
test rax, rax
je 0x140017a17
test byte [rax + 0x40], 0x30
je 0x140017b50
mov rcx, qword [rax + 0x1d8]
test rcx, rcx
je 0x140017a72
call sym._pthread_cleanup_dest.part.0
mov rcx, qword [r12 + 0x28]
test rcx, rcx
je 0x140017aa5
mov r13, qword [sym.imp.KERNEL32.dll_CloseHandle]
call r13
mov rcx, qword [r12 + 0x30]
test rcx, rcx
je 0x140017a93
call r13
mov qword [r12 + 0x30], 0
mov qword [r12 + 0x28], 0
lea rcx, [r12 + 0x38]
call dbg.pthread_mutex_destroy
lea rcx, [r12 + 0x68]
call dbg.pthread_spin_destroy
cmp eax, 1
je 0x140017be4
cmp qword [r12 + 0x1d0], 0
mov qword [r12 + 0x68], 0xffffffffffffffff
je 0x140017c50
mov ecx, dword [0x1400b8188]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
jmp 0x140017a17
mov rcx, qword [0x1400ead60]
test rcx, rcx
je 0x140017a17
call qword [sym.imp.KERNEL32.dll_RemoveVectoredExceptionHandler]
mov qword [0x1400ead60], 0
jmp 0x140017a17
lea rdx, [dbg.SetThreadName_VEH]
mov ecx, 1
call qword [sym.imp.KERNEL32.dll_AddVectoredExceptionHandler]
mov qword [0x1400ead60], rax
mov eax, 1
add rsp, 0x20
pop r12
pop r13
pop r14
ret
mov rcx, qword [rax + 0x30]
mov eax, dword [rax + 0xbc]
test eax, eax
jne 0x140017bf0
test rcx, rcx
je 0x140017b6d
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [r12 + 0x1d8]
mov qword [r12 + 0x30], 0
mov dword [r12 + 0xbc], 1
test rcx, rcx
je 0x140017b94
call sym._pthread_cleanup_dest.part.0
lea r14, [r12 + 0x38]
lea r13, [r12 + 0x68]
test byte [r12 + 0x44], 4
je 0x140017c30
mov rcx, qword [r12 + 0x28]
mov dword [r12], 0xdeadbeef
test rcx, rcx
je 0x140017bc2
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [r12 + 0x28], 0
mov rcx, r14
call dbg.pthread_mutex_destroy
mov rcx, r13
call dbg.pthread_spin_destroy
cmp eax, 1
jne 0x140017ac2
call sym.replace_spin_keys.part.0
nop dword [rax]
test rcx, rcx
je 0x140017bfb
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [r12 + 0x30], 0
lea rcx, [r12 + 0x38]
call dbg.pthread_mutex_destroy
lea rcx, [r12 + 0x68]
call dbg.pthread_spin_destroy
cmp eax, 1
je 0x140017be4
mov qword [r12 + 0x68], 0xffffffffffffffff
jmp 0x140017a17
mov rcx, r14
call dbg.pthread_mutex_destroy
mov rcx, r13
call dbg.pthread_spin_destroy
cmp eax, 1
jne 0x140017c1d
jmp 0x140017be4
mov rcx, r12
call sym.push_pthread_mem.part.0
jmp 0x140017ada
Function at 0x140018900
Capabilities:
Hijack thread execution

Disassembly:
push r13
push r12
push rsi
push rbx
sub rsp, 0x4f8
mov rsi, rcx
test rcx, rcx
je 0x1400189ee
lea r12, [0x1400b8178]
mov rcx, r12
call dbg.pthread_mutex_lock
mov rcx, rsi
call dbg.__pthread_get_pointer
mov rcx, r12
mov rbx, rax
call dbg.pthread_mutex_unlock
test rbx, rbx
je 0x1400189ee
mov rcx, qword [rbx + 0x28]
lea rax, [rcx - 1]
cmp rax, 0xfffffffffffffffd
ja 0x1400189ee
lea r12, [rsp + 0x20]
mov rdx, r12
call qword [sym.imp.KERNEL32.dll_GetHandleInformation]
test eax, eax
je 0x1400189ee
lea r13, [rbx + 0x38]
mov rcx, r13
call dbg.pthread_mutex_lock
call sym.__pthread_self_lite
test rax, rax
je 0x14001898b
cmp rsi, qword [rax + 0x1d8]
je 0x140018a08
mov edx, dword [rbx + 0x44]
movzx eax, byte [rbx + 0x40]
and edx, 3
cmp edx, 3
je 0x140018a60
test al, 3
jne 0x1400189e0
and eax, 0xfffffffc
or eax, 1
mov byte [rbx + 0x40], al
lock add dword [0x1400eada8], 1
mov rcx, qword [rbx + 0x30]
test rcx, rcx
je 0x1400189c2
call qword [sym.imp.KERNEL32.dll_SetEvent]
mov rcx, r13
call dbg.pthread_mutex_unlock
xor eax, eax
add rsp, 0x4f8
pop rbx
pop rsi
pop r12
pop r13
ret
mov rcx, r13
call dbg.pthread_mutex_unlock
test byte [rbx + 0x40], 0xc
je 0x1400189ca
mov eax, 3
add rsp, 0x4f8
pop rbx
pop rsi
pop r12
pop r13
ret
movzx eax, byte [rbx + 0x40]
test al, 3
jne 0x1400189e0
and eax, 0xfffffffc
or eax, 1
mov byte [rbx + 0x40], al
lock add dword [0x1400eada8], 1
mov rcx, qword [rbx + 0x30]
test rcx, rcx
je 0x140018a30
call qword [sym.imp.KERNEL32.dll_SetEvent]
mov eax, dword [rbx + 0x44]
mov edx, eax
and edx, 3
cmp edx, 3
jne 0x1400189c2
and eax, 0xfffffffe
mov rcx, r13
mov dword [rbx + 0x44], eax
movzx eax, byte [rbx + 0x40]
and eax, 0xfffffff3
or eax, 4
mov byte [rbx + 0x40], al
call dbg.pthread_mutex_unlock
call dbg._pthread_invoke_cancel
nop dword [rax]
test al, 0xc
jne 0x1400189e0
test al, 0xf
jne 0x1400189ee
mov rcx, qword [rbx + 0x28]
mov dword [rsp + 0x50], 0x100001
call qword [sym.imp.KERNEL32.dll_SuspendThread]
xor edx, edx
mov rcx, qword [rbx + 0x28]
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0x102
jne 0x1400189c2
mov rcx, qword [rbx + 0x28]
mov rdx, r12
call qword [sym.imp.KERNEL32.dll_GetThreadContext]
lea rax, [dbg._pthread_invoke_cancel]
mov rcx, qword [rbx + 0x28]
mov rdx, r12
mov qword [rsp + 0x118], rax
call qword [sym.imp.KERNEL32.dll_SetThreadContext]
movzx eax, byte [rbx + 0x40]
and dword [rbx + 0x44], 0xfffffffe
and eax, 0xfffffff0
or eax, 5
mov byte [rbx + 0x40], al
lock add dword [0x1400eada8], 1
mov rcx, qword [rbx + 0x30]
test rcx, rcx
je 0x140018ae6
call qword [sym.imp.KERNEL32.dll_SetEvent]
mov rcx, r13
call dbg.pthread_mutex_unlock
mov rcx, qword [rbx + 0x28]
call qword [sym.imp.KERNEL32.dll_ResumeThread]
jmp 0x1400189c2
Function at 0x140018b00
Capabilities:
Hijack thread execution
Resume thread
Suspend thread

Disassembly:
push r13
push r12
push rbx
sub rsp, 0x20
lea r13, [0x1400b8178]
mov r12, rcx
mov rcx, r13
mov ebx, edx
call dbg.pthread_mutex_lock
mov rcx, r12
call dbg.__pthread_get_pointer
test rax, rax
je 0x140018b80
cmp qword [rax + 0x1d8], r12
jne 0x140018b80
test byte [rax + 0x40], 0xc
jne 0x140018b80
mov edx, dword [rax + 0xbc]
test edx, edx
jne 0x140018b80
mov rax, qword [rax + 0x28]
sub rax, 1
cmp rax, 0xfffffffffffffffd
ja 0x140018b80
mov rcx, r13
call dbg.pthread_mutex_unlock
test ebx, ebx
je 0x140018ba0
lea edx, [rbx - 2]
cmp edx, 0x15
ja 0x140018ba8
mov rcx, r12
add rsp, 0x20
pop rbx
pop r12
pop r13
jmp dbg.pthread_cancel
mov rcx, r13
call dbg.pthread_mutex_unlock
mov eax, 3
add rsp, 0x20
pop rbx
pop r12
pop r13
ret
xor eax, eax
jmp 0x140018b8d
mov eax, 0x16
jmp 0x140018b8d
Function at 0x140018e50
Capabilities:
Create thread
Resume thread

Disassembly:
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x40
mov rdi, rcx
mov rsi, rdx
mov rbx, r8
mov rbp, r9
call sym.pop_pthread_mem
mov r12, rax
test rax, rax
je 0x1400190b9
test rdi, rdi
je 0x140018e8a
mov rax, qword [rax + 0x1d8]
mov qword [rdi], rax
mov r13, qword [sym.imp.KERNEL32.dll_Sleep]
mov qword [r12 + 8], rbp
mov dword [r12 + 0x44], 1
mov rbp, qword [sym.imp.KERNEL32.dll_CreateEventA]
mov dword [r12 + 0xbc], 0
mov r14, r13
mov qword [r12 + 0x28], 0xffffffffffffffff
mov qword [r12 + 0x10], rbx
xor ebx, ebx
xor r9d, r9d
xor r8d, r8d
mov edx, 1
xor ecx, ecx
call rbp
mov qword [r12 + 0x30], rax
test rax, rax
jne 0x140018ef7
add ebx, 1
cmp ebx, 1
je 0x140019000
mov ecx, 0x14
call r14
cmp ebx, 5
jne 0x140018ec5
mov qword [r12 + 0x38], 0xffffffffffffffff
lea r14, [r12 + 0x68]
mov rcx, r14
call dbg.pthread_spin_destroy
cmp eax, 1
je 0x1400190fa
cmp qword [r12 + 0x30], 0
mov qword [r12 + 0x68], 0xffffffffffffffff
mov dword [r12], 0xbab1f00d
mov dword [r12 + 0xc0], 0
mov dword [r12 + 0xb8], 0
je 0x1400190a2
xor edx, edx
test rsi, rsi
je 0x140018f6f
mov eax, dword [rsi]
mov edx, dword [rsi + 0x10]
mov dword [r12 + 0x44], eax
test al, 8
jne 0x1400190d0
mov eax, dword [rsi + 0x18]
mov dword [r12 + 0xc0], eax
lea r8, [dbg.pthread_create_wrapper]
mov r9, r12
xor ecx, ecx
mov qword [rsp + 0x28], 0
mov dword [rsp + 0x20], 4
call qword [sym.imp.msvcrt.dll__beginthreadex]
mov r13, rax
lea rax, [rax - 1]
cmp rax, 0xfffffffffffffffd
ja 0x140019060
mov eax, dword [r12 + 0xc0]
mov edx, 0xfffffff1
cmp eax, 0xfffffff2
jge 0x140019030
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_SetThreadPriority]
mov rcx, qword [r12 + 0x30]
call qword [sym.imp.KERNEL32.dll_ResetEvent]
test byte [r12 + 0x44], 4
jne 0x140019010
mov qword [r12 + 0x28], r13
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_ResumeThread]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_Sleep]
xor eax, eax
add rsp, 0x40
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
ret
xor ecx, ecx
call r13
jmp 0x140018ec5
mov qword [r12 + 0x28], 0
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_ResumeThread]
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x140018fdf
mov edx, 0xfffffffe
cmp eax, 0xffffffff
jl 0x140018fb5
mov edx, 2
cmp eax, edx
cmovle edx, eax
cmp eax, 0xf
mov eax, 0xf
cmovge edx, eax
jmp 0x140018fb5
mov rcx, qword [r12 + 0x30]
test rcx, rcx
je 0x140019070
call qword [sym.imp.KERNEL32.dll_CloseHandle]
lea rcx, [r12 + 0x38]
call dbg.pthread_mutex_destroy
mov rcx, r14
call dbg.pthread_spin_destroy
cmp eax, 1
je 0x1400190fa
mov qword [r12 + 0x68], 0xffffffffffffffff
mov qword [r12 + 0x30], 0
mov qword [r12 + 0x28], 0
test rdi, rdi
je 0x1400190ae
mov qword [rdi], 0
cmp qword [r12 + 0x1d0], 0
je 0x1400190f0
mov eax, 0xb
add rsp, 0x40
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
ret
mov dword [rsp + 0x3c], edx
call sym.__pthread_self_lite
mov edx, dword [rsp + 0x3c]
mov eax, dword [rax + 0xc0]
mov dword [r12 + 0xc0], eax
jmp 0x140018f6f
mov rcx, r12
call sym.push_pthread_mem.part.0
jmp 0x1400190b9
call sym.replace_spin_keys.part.0
nop
Function at 0x14001c590
Capabilities:
Read file on windows

Disassembly:
push rsi
push rbx
sub rsp, 0x28
mov r9, qword [rcx + 0x40]
mov rsi, rdx
mov rbx, rcx
mov edx, 1
mov rcx, rsi
call sym.fread
mov edx, 0xffffffff
test rax, rax
jle 0x14001c5bc
movzx edx, byte [rsi + rax - 1]
mov dword [rbx + 0x48], edx
add rsp, 0x28
pop rbx
pop rsi
ret

Function at 0x14001d1e0
Capabilities:
Write file on windows

Disassembly:
push rdi
push rsi
push rbx
sub rsp, 0x30
cmp byte [0x1400baee0], 0
jne 0x14001d2e3
mov byte [0x1400baee0], 1
call dbg.__cxa_current_exception_type
test rax, rax
je 0x14001d2b8
mov rbx, qword [rax + 8]
xor eax, eax
lea r9, [rsp + 0x2c]
cmp byte [rbx], 0x2a
mov dword [rsp + 0x2c], 0xffffffff
sete al
xor r8d, r8d
xor edx, edx
add rbx, rax
mov rcx, rbx
call dbg.__cxa_demangle
mov ecx, 2
mov rsi, qword [dbg.__acrt_iob_func]
mov rdi, rax
call rsi
mov edx, 1
lea rcx, str.terminate_called_after_throwing_an_instance_of_
mov r8d, 0x30
mov r9, rax
call sym.fwrite
mov edx, dword [rsp + 0x2c]
mov ecx, 2
test edx, edx
je 0x14001d2a9
call rsi
mov rcx, rbx
mov rdx, rax
call sym.fputs
mov ecx, 2
call rsi
mov r8d, 2
mov edx, 1
lea rcx, [0x1400bccf1]
mov r9, rax
call sym.fwrite
mov eax, dword [rsp + 0x2c]
test eax, eax
jne 0x1400b6477
jmp 0x1400b646f
call rsi
mov rcx, rdi
mov rdx, rax
call sym.fputs
jmp 0x14001d277
mov ecx, 2
call qword [dbg.__acrt_iob_func]
mov r8d, 0x2d
mov edx, 1
lea rcx, str.terminate_called_without_an_active_exception_n
mov r9, rax
call sym.fwrite
nop
jmp 0x1400b646a
mov ecx, 2
call qword [dbg.__acrt_iob_func]
mov r8d, 0x1d
mov edx, 1
lea rcx, str.terminate_called_recursively_n
mov r9, rax
call sym.fwrite
call sym.abort
nop
nop
nop
call sym.abort
mov rcx, rdi
call sym.free
call dbg.__cxa_rethrow
call dbg.__cxa_begin_catch
call dbg.__cxa_end_catch
jmp 0x1400b646a

Function at 0x14007c1e0
Capabilities:
Read file on windows

Disassembly:
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x20
mov r12, qword [sym.imp.msvcrt.dll__errno]
mov rdi, rcx
mov rsi, rdx
mov ebx, r8d
mov rcx, qword [rdi]
call sym.fileno
mov ecx, eax
mov r8d, ebx
mov rdx, rsi
call sym.read
movsxd rbp, eax
cmp eax, 0xffffffff
je 0x14007c228
mov rax, rbp
add rsp, 0x20
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
call r12
cmp dword [rax], 4
je 0x14007c1fa
mov rax, rbp
add rsp, 0x20
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret

Function at 0x14008ec00
Capabilities:
Read file on windows

Disassembly:
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x38
mov rax, qword [rcx + 8]
mov rdi, rcx
test rax, rax
je 0x14008ec28
mov rcx, qword [rcx]
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
jmp rax
mov rbp, qword [sym.imp.msvcrt.dll__errno]
mov ebx, 4
lea rsi, [rsp + 0x2c]
nop dword [rax]
mov ecx, dword [rdi + 0x10]
mov r8d, ebx
mov rdx, rsi
call sym.read
test eax, eax
jle 0x14008ec70
cdqe
add rsi, rax
sub rbx, rax
jne 0x14008ec40
mov eax, dword [rsp + 0x2c]
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
ret
cmp eax, 0xffffffff
jne 0x14008ec7c
call rbp
cmp dword [rax], 4
je 0x14008ec40
lea rcx, str.random_device_could_not_be_read
call dbg.std::__throw_runtime_error(char const*)
nop
nop
nop
nop
nop
nop
nop
nop
Function at 0x140003920
Capabilities:
Parse pe header

Disassembly:
push rbx
sub rsp, 0x40
mov qword [rsp + 0x58], rdx
mov rbx, r8
xor edx, edx
test rcx, rcx
je 0x140003954
cmp word [rcx], 0x5a4d
jne 0x140003954
movsxd rax, dword [rcx + 0x3c]
cmp eax, 0x400
jg 0x140003954
add rcx, rax
cmp dword [rcx], 0x4550
jne 0x140003954
mov edx, dword [rcx + 0x28]
add rdx, qword [rsp + 0x58]
mov rcx, rbx
call fcn.140003860
test eax, eax
jne 0x140003970
xor eax, eax
add rsp, 0x40
pop rbx
ret
mov rcx, rbx
call fcn.1400038d0
test rax, rax
je 0x140003965
lea rdx, [rax + 0x10]
lea rax, [rsp + 0x38]
mov rcx, qword [rbx]
mov r9d, 8
mov qword [rsp + 0x20], rax
lea r8, [rsp + 0x58]
mov qword [rsp + 0x38], 0
call fcn.140004119
not eax
shr eax, 0x1f
add rsp, 0x40
pop rbx
ret

Function at 0x140004020
Capabilities:
Execute syscall

Disassembly:
pop rax
mov qword [rsp + 8], rcx
mov qword [rsp + 0x10], rdx
mov qword [rsp + 0x18], r8
mov qword [rsp + 0x20], r9
sub rsp, 0x28
mov rcx, r10
call fcn.140003fc0
add rsp, 0x28
mov rcx, qword [rsp + 8]
mov rdx, qword [rsp + 0x10]
mov r8, qword [rsp + 0x18]
mov r9, qword [rsp + 0x20]
mov r10, rcx
syscall
ret

Function at 0x140004474
Capabilities:
Allocate or change rwx memory

Disassembly:
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x50
mov rax, qword [0x14000eab8]
xor ebx, ebx
add rax, 0x18
mov r12, rcx
mov ecx, dword [0x14000eab4]
mov rsi, rdx
mov rdi, r8
cmp ebx, ecx
jge 0x1400044c2
mov rdx, qword [rax]
cmp r12, rdx
jb 0x1400044ba
mov r8, qword [rax + 8]
mov r8d, dword [r8 + 8]
add rdx, r8
cmp r12, rdx
jb 0x1400045a9
inc ebx
add rax, 0x28
jmp 0x14000449a
mov rcx, r12
call fcn.140004ca1
mov rbp, rax
test rax, rax
jne 0x1400044e1
mov rdx, r12
lea rcx, str.Address__p_has_no_image_section
call fcn.140004410
movsxd rbx, ebx
mov rax, qword [0x14000eab8]
xor edx, edx
imul rbx, rbx, 0x28
add rax, rbx
mov dword [rax], edx
mov qword [rax + 0x20], rbp
call fcn.140004d4f
mov edx, dword [rbp + 0xc]
mov r8d, 0x30
lea rcx, [rax + rdx]
mov rax, qword [0x14000eab8]
lea rdx, [rsp + 0x20]
mov qword [rax + rbx + 0x18], rcx
call qword [sym.imp.KERNEL32.dll_VirtualQuery]
test rax, rax
jne 0x140004543
mov rax, qword [0x14000eab8]
mov edx, dword [rbp + 8]
lea rcx, str.__VirtualQuery_failed_for__d_bytes_at_address__p
mov r8, qword [rax + rbx + 0x18]
call fcn.140004410
mov eax, dword [rsp + 0x44]
lea edx, [rax - 4]
and edx, 0xfffffffb
je 0x1400045a3
lea edx, [rax - 0x40]
and edx, 0xffffffbf
je 0x1400045a3
cmp eax, 2
mov rcx, qword [rsp + 0x20]
mov rdx, qword [rsp + 0x38]
mov r8d, 0x40
mov eax, 4
cmove r8d, eax
add rbx, qword [0x14000eab8]
mov qword [rbx + 8], rcx
mov r9, rbx
mov qword [rbx + 0x10], rdx
call qword [sym.imp.KERNEL32.dll_VirtualProtect]
test eax, eax
jne 0x1400045a3
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.__VirtualProtect_failed_with_code_0x_x
mov edx, eax
call fcn.140004410
inc dword [0x14000eab4]
mov ecx, edi
mov rdi, r12
rep movsb byte [rdi], byte [rsi]
add rsp, 0x50
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
Function at 0x1400111fe
Capabilities:
Terminate process

Disassembly:
jmp 0x140013010
mov qword [rsp + 8], rcx
sub rsp, 0x28
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_SetUnhandledExceptionFilter]
mov rcx, qword [rsp + 0x30]
call qword [sym.imp.KERNEL32.dll_UnhandledExceptionFilter]
call qword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov edx, 0xc0000409
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_TerminateProcess]
add rsp, 0x28
ret

Function at 0x140011285
Capabilities:
Parse pe header

Disassembly:
jmp 0x140014350
sub rsp, 0x38
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov qword [rsp + 0x20], rax
cmp qword [rsp + 0x20], 0
jne 0x140014370
xor al, al
jmp 0x1400143f1
mov rax, qword [rsp + 0x20]
movzx eax, word [rax]
cmp eax, 0x5a4d
je 0x140014383
xor al, al
jmp 0x1400143f1
mov rax, qword [rsp + 0x20]
movsxd rax, dword [rax + 0x3c]
mov rcx, qword [rsp + 0x20]
add rcx, rax
mov rax, rcx
mov qword [rsp + 0x28], rax
mov rax, qword [rsp + 0x28]
cmp dword [rax], 0x4550
je 0x1400143ad
xor al, al
jmp 0x1400143f1
mov rax, qword [rsp + 0x28]
movzx eax, word [rax + 0x18]
cmp eax, 0x20b
je 0x1400143c1
xor al, al
jmp 0x1400143f1
mov rax, qword [rsp + 0x28]
cmp dword [rax + 0x84], 0xe
ja 0x1400143d3
xor al, al
jmp 0x1400143f1
mov eax, 8
imul rax, rax, 0xe
mov rcx, qword [rsp + 0x28]
cmp dword [rcx + rax + 0x88], 0
jne 0x1400143ef
xor al, al
jmp 0x1400143f1
mov al, 1
add rsp, 0x38
ret
Function at 0x140009cc0
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push r12
sub rsp, 0x30
lea rax, [rdx - 1]
mov r12, rcx
cmp rax, 0xfffe
ja 0x140009df0
mov qword [rsp + 0x48], rbp
lea rcx, [0x14006e3c0]
mov qword [rsp + 0x58], rdi
mov qword [rsp + 0x28], r14
movzx r14d, dx
xor edx, edx
call fcn.14002232c
mov rdi, rax
mov ebp, 1
test rax, rax
je 0x140009dd8
mov qword [rsp + 0x40], rbx
mov qword [rsp + 0x50], rsi
mov qword [rsp + 0x20], r15
mov r15d, r14d
shr r15, 4
xor r9d, r9d
lea r8, [r15 + 1]
mov rcx, rdi
lea edx, [r9 + 6]
call qword [sym.imp.KERNEL32.dll_FindResourceExW]
mov rsi, rax
test rax, rax
je 0x140009d98
mov rdx, rax
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_LoadResource]
test rax, rax
je 0x140009d98
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_LockResource]
mov rbx, rax
test rax, rax
je 0x140009d98
mov rdx, rsi
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_SizeofResource]
mov edx, eax
mov ecx, r14d
add rdx, rbx
and ecx, 0xf
jbe 0x140009d8d
cmp rbx, rdx
jae 0x140009d98
movzx eax, word [rbx]
lea rbx, [rbx + rax*2]
add rbx, 2
add ecx, 0xffffffff
jne 0x140009d78
cmp rbx, rdx
jae 0x140009d98
cmp word [rbx], 0
jne 0x140009db6
mov edx, ebp
lea rcx, [0x14006e3c0]
inc ebp
call fcn.14002232c
mov rdi, rax
test rax, rax
jne 0x140009d21
jmp 0x140009dc9
test rdi, rdi
je 0x140009dc9
mov r8d, r14d
mov rdx, rdi
mov rcx, r12
call fcn.14000b390
mov rsi, qword [rsp + 0x50]
mov rbx, qword [rsp + 0x40]
mov r15, qword [rsp + 0x20]
mov r14, qword [rsp + 0x28]
mov al, 1
mov rdi, qword [rsp + 0x58]
mov rbp, qword [rsp + 0x48]
add rsp, 0x30
pop r12
ret
xor al, al
add rsp, 0x30
pop r12
ret
Function at 0x14000b390
Capabilities:
Extract resource via kernel32 functions

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push r14
sub rsp, 0x20
mov eax, r8d
mov rsi, rdx
shr eax, 4
mov edi, r8d
inc ax
mov r14, rcx
movzx edx, ax
mov r8d, 6
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_FindResourceW]
mov rbp, rax
test rax, rax
je 0x14000b4b6
mov rdx, rax
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_LoadResource]
test rax, rax
je 0x14000b4b6
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_LockResource]
mov rbx, rax
test rax, rax
je 0x14000b4b6
mov rdx, rbp
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_SizeofResource]
mov ecx, eax
add rcx, rbx
and edi, 0xf
jbe 0x14000b439
nop word [rax + rax]
cmp rbx, rcx
jae 0x14000b4b6
movzx eax, word [rbx]
lea rbx, [rbx + rax*2]
add rbx, 2
add edi, 0xffffffff
jne 0x14000b420
cmp rbx, rcx
jae 0x14000b4b6
movzx edi, word [rbx]
test di, di
je 0x14000b4b6
lfence
mov r10, qword [r14]
mov ecx, 1
mov eax, dword [r10 - 0xc]
sub ecx, dword [r10 - 8]
sub eax, edi
or ecx, eax
jge 0x14000b46f
lfence
mov edx, edi
mov rcx, r14
call fcn.14000b500
mov r10, qword [r14]
movzx r9d, word [rbx]
lea r8, [rbx + 2]
mov rdx, rdi
mov rcx, r10
call fcn.140028aa8
test eax, eax
je 0x14000b49a
cmp eax, 0xc
je 0x14000b4e9
cmp eax, 0x16
je 0x14000b4d3
cmp eax, 0x22
je 0x14000b4d3
cmp eax, 0x50
jne 0x14000b4de
mov rcx, qword [r14]
cmp edi, dword [rcx - 0xc]
jg 0x14000b4d3
mov dword [rcx - 0x10], edi
xor r8d, r8d
mov rcx, qword [r14]
lea eax, [r8 + 1]
mov word [rcx + rdi*2], r8w
jmp 0x14000b4b8
xor eax, eax
mov rbx, qword [rsp + 0x30]
mov rbp, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
mov rdi, qword [rsp + 0x48]
add rsp, 0x20
pop r14
ret
mov ecx, 0x80070057
call fcn.1400013c0
int3
mov ecx, 0x80004005
call fcn.1400013c0
int3
mov ecx, 0x8007000e
call fcn.1400013c0
int3
Function at 0x140018510
Capabilities:
Query or enumerate registry key

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r14
push r15
lea rbp, [rsp - 0x240]
sub rsp, 0x340
mov rax, qword [0x14006b020]
xor rax, rsp
mov qword [rbp + 0x230], rax
mov rbx, rdx
mov rsi, rcx
lea r15, vtable.CTracePie.0
mov qword [rsp + 0x70], r15
xor r14d, r14d
mov qword [rbp + 0x18], r14
mov word [rbp + 0x20], r14w
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [rbp + 0x18], eax
call qword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov dword [rbp + 0x1c], eax
lea r9d, [r14 + 0x40]
lea r8, str.PIE_RegistryKey::GetSubKeyNames
lea edx, [r14 + 0x78]
lea rcx, [rsp + 0x78]
call fcn.1400133b0
lea r9d, [r14 + 0x12]
lea r8, str.Reg_keys
lea edx, [r14 + 0x28]
lea rcx, [rbp - 0x10]
call fcn.1400133b0
cmp byte [rbp + 0x21], 1
jne 0x1400185b8
lea r8, [0x14005a24c]
lea edx, [r14 + 5]
lea rcx, [rsp + 0x70]
call fcn.1400134a0
lea rax, vtable.CTracePieCommonRegKeys.0
mov qword [rsp + 0x70], rax
mov edi, r14d
nop word [rax + rax]
mov dword [rsp + 0x60], 0xff
mov edx, edi
inc edi
mov qword [rsp + 0x38], r14
mov qword [rsp + 0x30], r14
mov qword [rsp + 0x28], r14
mov qword [rsp + 0x20], r14
lea r9, [rsp + 0x60]
lea r8, [rbp + 0x30]
mov rcx, qword [rsi]
call qword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
test eax, eax
jne 0x1400186cb
mov qword [rsp + 0x40], r14
mov qword [rsp + 0x50], r14
mov qword [rsp + 0x58], 7
mov word [rsp + 0x40], r14w
lea rax, [rbp + 0x30]
mov r8, 0xffffffffffffffff
nop
inc r8
cmp word [rax + r8*2], 0
jne 0x140018630
lea rdx, [rbp + 0x30]
lea rcx, [rsp + 0x40]
call fcn.140009ed0
nop
mov rdx, qword [rbx + 8]
cmp rdx, qword [rbx + 0x10]
je 0x140018677
movups xmm0, xmmword [rsp + 0x40]
movups xmmword [rdx], xmm0
movups xmm1, xmmword [rsp + 0x50]
movups xmmword [rdx + 0x10], xmm1
mov edx, 7
mov word [rsp + 0x40], r14w
add qword [rbx + 8], 0x20
jmp 0x140018689
lea r8, [rsp + 0x40]
mov rcx, rbx
call fcn.14000ba40
mov rdx, qword [rsp + 0x58]
cmp rdx, 8
jb 0x1400185d0
lea rdx, [rdx*2 + 2]
mov rcx, qword [rsp + 0x40]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1400186c1
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140018719
call fcn.140022904
jmp 0x1400185d0
mov qword [rsp + 0x70], r15
cmp byte [rbp + 0x21], 1
jne 0x1400186f3
cmp byte [rbp + 0x20], 0
jne 0x1400186f3
lea r8, [0x14005a254]
mov edx, 5
lea rcx, [rsp + 0x70]
call fcn.1400134a0
nop
mov rcx, qword [rbp + 0x230]
xor rcx, rsp
call fcn.1400223c0
mov rbx, qword [rsp + 0x380]
add rsp, 0x340
pop r15
pop r14
pop rdi
pop rsi
pop rbp
ret
call fcn.14002c5b4
nop
int3