joyce8/EMBER2024-capa huggingface dataset:
Function at 0x140084ba0
Capabilities:
Get common file path

Disassembly:
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x50
mov rdi, qword [sym.imp.KERNEL32.dll_GetTempPathW]
xor r11d, r11d
lea r12, [rsp + 0x40]
mov rbp, rdx
mov rbx, rcx
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x30], r12
lea rsi, [rsp + 0x30]
mov edx, 0x400
mov word [rsp + 0x40], r11w
nop dword [rax]
xor r8d, r8d
mov rcx, rsi
call method.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t___.resize_unsigned_long_long__wchar_t_
mov rdx, qword [rsp + 0x30]
mov ecx, dword [rsp + 0x38]
call rdi
mov edx, eax
cmp qword [rsp + 0x38], rdx
jb 0x140084be0
test eax, eax
mov qword [rsp + 0x28], rdx
je 0x140084cb0
call method.std::_V2.system_category__
mov rdx, qword [rsp + 0x28]
xor edi, edi
mov dword [rbp], edi
xor r8d, r8d
mov rcx, rsi
mov qword [rbp + 8], rax
call method.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t___.resize_unsigned_long_long__wchar_t_
mov rax, qword [rsp + 0x30]
lea rcx, [rbx + 0x10]
mov rdi, qword [rsp + 0x38]
mov qword [rbx], rcx
cmp rax, r12
je 0x140084d20
mov qword [rbx], rax
mov rax, qword [rsp + 0x40]
mov qword [rbx + 0x10], rax
mov qword [rbx + 8], rdi
lea rdi, [rbx + 0x20]
xor r10d, r10d
mov rcx, rdi
mov qword [rsp + 0x30], r12
mov qword [rsp + 0x38], 0
mov word [rsp + 0x40], r10w
call method.std::filesystem::__cxx11::path::_List._List__
mov rcx, rbx
call method.std::filesystem::__cxx11::path._M_split_cmpts__
mov rcx, qword [rsp + 0x30]
cmp rcx, r12
je 0x140084c98
mov rax, qword [rsp + 0x40]
lea rdx, [rax + rax + 2]
call sym.operator_delete_void__unsigned_long_long_
mov r9d, dword [rbp]
test r9d, r9d
je 0x140084cd0
mov rax, rbx
add rsp, 0x50
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
call method.std::_V2.system_category__
mov rdx, qword [rsp + 0x28]
jmp 0x140084c18
mov rdx, rbp
mov rcx, rbx
call method.std::filesystem.status_std::filesystem::__cxx11::path_const__std::error_code_
mov r8d, dword [rbp]
test r8d, r8d
jne 0x140084d38
cmp al, 2
je 0x140084ca1
mov rax, qword [rbx]
xor edx, edx
mov qword [rbx + 8], 0
mov rcx, rbx
mov word [rax], dx
call method.std::filesystem::__cxx11::path._M_split_cmpts__
call method.std::_V2.generic_category__
mov dword [rbp], 0x14
mov qword [rbp + 8], rax
mov rax, rbx
add rsp, 0x50
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
lea r8, [rdi + rdi + 2]
mov rdx, r12
call sym.memcpy
jmp 0x140084c50
mov rax, qword [rbx]
xor ecx, ecx
mov qword [rbx + 8], 0
mov word [rax], cx
mov rcx, rbx
call method.std::filesystem::__cxx11::path._M_split_cmpts__
mov rax, rbx
add rsp, 0x50
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
Function at 0x140085e60
Capabilities:
Delete directory
Delete file

Disassembly:
push rsi
push rbx
sub rsp, 0x28
mov rsi, rcx
mov rbx, rdx
call method.std::filesystem.symlink_status_std::filesystem::__cxx11::path_const__std::error_code_
test al, al
je 0x140085eae
cmp al, 0xff
je 0x140085ec0
mov rdx, rbx
mov rcx, rsi
call method.std::filesystem.status_std::filesystem::__cxx11::path_const__std::error_code_
cmp al, 2
je 0x140085ed8
mov rcx, qword [rsi]
call qword [sym.imp.KERNEL32.dll_DeleteFileW]
test eax, eax
jne 0x140085ee5
mov eax, dword [rbx]
test eax, eax
jne 0x140085eae
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
call method.std::_V2.system_category__
mov dword [rbx], esi
mov qword [rbx + 8], rax
xor eax, eax
add rsp, 0x28
pop rbx
pop rsi
ret
call method.std::_V2.system_category__
mov dword [rbx], 0
mov qword [rbx + 8], rax
jmp 0x140085eae
mov rcx, qword [rsi]
call qword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
test eax, eax
je 0x140085e88
call method.std::_V2.system_category__
mov dword [rbx], 0
mov qword [rbx + 8], rax
mov eax, 1
add rsp, 0x28
pop rbx
pop rsi
ret

Function at 0x140085fd0
Capabilities:
Move file

Disassembly:
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x28
mov rsi, rdx
mov rbp, rcx
mov rdx, r8
mov rcx, rsi
mov rbx, r8
call method.std::filesystem.status_std::filesystem::__cxx11::path_const__std::error_code_
cmp al, 0xff
mov rdi, rax
je 0x140086030
mov ecx, dword [rbx]
test ecx, ecx
jne 0x140086023
test al, al
jne 0x140086048
mov rdx, qword [rsi]
mov r8d, 3
mov rcx, qword [rbp]
call qword [sym.imp.KERNEL32.dll_MoveFileExW]
test eax, eax
je 0x140086090
call method.std::_V2.system_category__
mov dword [rbx], 0
mov qword [rbx + 8], rax
add rsp, 0x28
pop rbx
pop rsi
pop rdi
pop rbp
ret
call method.std::_V2.system_category__
mov dword [rbx], 0
mov qword [rbx + 8], rax
jmp 0x140085ffd
mov rdx, rbx
mov rcx, rbp
call method.std::filesystem.status_std::filesystem::__cxx11::path_const__std::error_code_
mov edx, dword [rbx]
test edx, edx
jne 0x140086023
cmp dil, 2
je 0x140086078
cmp al, 2
jne 0x140085ffd
call method.std::_V2.generic_category__
mov dword [rbx], 0x14
mov qword [rbx + 8], rax
jmp 0x140086023
cmp al, 2
je 0x140085ffd
call method.std::_V2.generic_category__
mov dword [rbx], 0x15
mov qword [rbx + 8], rax
jmp 0x140086023
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov rdi, qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__errno]
cmp eax, 5
je 0x1400860c5
call rdi
mov dword [rax], 5
call method.std::_V2.generic_category__
mov rsi, rax
call rdi
mov eax, dword [rax]
mov qword [rbx + 8], rsi
mov dword [rbx], eax
add rsp, 0x28
pop rbx
pop rsi
pop rdi
pop rbp
ret
call rdi
mov dword [rax], 0xd
jmp 0x1400860aa
Function at 0x14008ee60
Capabilities:
Get disk size

Disassembly:
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x48
mov rbx, qword [rsp + 0x90]
mov rdi, rdx
mov rbp, r8
mov rsi, r9
mov qword [rsp + 0x28], 0
mov qword [rsp + 0x30], 0
lea rdx, [rsp + 0x28]
mov qword [rsp + 0x38], 0
lea r9, [rsp + 0x38]
lea r8, [rsp + 0x30]
call qword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExW]
test eax, eax
je 0x14008eef8
mov rax, qword [rsp + 0x30]
test rax, rax
je 0x14008eeba
mov qword [rdi], rax
mov rax, qword [rsp + 0x38]
test rax, rax
je 0x14008eec8
mov qword [rbp], rax
mov rax, qword [rsp + 0x28]
test rax, rax
jne 0x14008eef0
call method.std::_V2.system_category__
xor esi, esi
mov dword [rbx], esi
mov qword [rbx + 8], rax
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
ret
mov qword [rsi], rax
jmp 0x14008eed2
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
call method.std::_V2.system_category__
mov dword [rbx], esi
mov qword [rbx + 8], rax
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
ret

Function at 0x140094920
Capabilities:
Read file on windows

Disassembly:
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x20
mov r12, qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.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
cmp eax, 0xffffffff
movsxd rbp, eax
je 0x140094968
mov rax, rbp
add rsp, 0x20
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
call r12
cmp dword [rax], 4
je 0x14009493a
mov rax, rbp
add rsp, 0x20
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret

Function at 0x1400a7b00
Capabilities:
Read file on windows

Disassembly:
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x38
mov rax, qword [rcx + 8]
test rax, rax
mov rdi, rcx
je 0x1400a7b28
mov rcx, qword [rcx]
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
jmp rax
mov rbp, qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__errno]
lea rsi, [rsp + 0x2c]
mov ebx, 4
nop dword [rax]
mov ecx, dword [rdi + 0x10]
mov r8d, ebx
mov rdx, rsi
call sym.read
test eax, eax
jle 0x1400a7b70
cdqe
add rsi, rax
sub rbx, rax
jne 0x1400a7b40
mov eax, dword [rsp + 0x2c]
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
ret
cmp eax, 0xffffffff
jne 0x1400a7b7c
call rbp
cmp dword [rax], 4
je 0x1400a7b40
lea rcx, str.random_device_could_not_be_read
call method.std.__throw_runtime_error_char_const_
nop
nop
nop
nop
nop
nop
nop
nop

Function at 0x1400cac50
Capabilities:
Encode data using xor

Disassembly:
mov r11, rdx
mov rax, rcx
mov r10, rdx
and r11, 0xfffffffffffffff8
add r11, rcx
movabs rcx, 0xc6a4a7935bd1e995
imul r10, rcx
xor r10, r8
cmp rax, r11
je 0x1400caca8
nop word cs:[rax + rax]
mov r9, qword [rax]
add rax, 8
imul r9, rcx
mov r8, r9
shr r8, 0x2f
xor r8, r9
imul r8, rcx
xor r8, r10
mov r10, r8
imul r10, rcx
cmp r11, rax
jne 0x1400cac80
and edx, 7
je 0x1400cacdd
sub edx, 1
movsxd rax, edx
xor edx, edx
nop dword [rax]
movzx ecx, byte [r11 + rax]
shl rdx, 8
sub rax, 1
add rdx, rcx
test eax, eax
jns 0x1400cacb8
xor rdx, r10
movabs r10, 0xc6a4a7935bd1e995
imul r10, rdx
movabs rax, 0xc6a4a7935bd1e995
mov rdx, r10
shr rdx, 0x2f
xor rdx, r10
imul rdx, rax
mov rax, rdx
shr rax, 0x2f
xor rax, rdx
ret
Function at 0x1400cbc50
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
test rdx, rdx
mov rax, r8
je 0x1400cbc7c
movabs r9, 0x100000001b3
add rdx, rcx
nop dword [rax]
movsx r8, byte [rcx]
add rcx, 1
xor rax, r8
imul rax, r9
cmp rcx, rdx
jne 0x1400cbc68
ret

Function at 0x1400d3eb0
Capabilities:
Query environment variable

Disassembly:
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x68
lea rcx, [0x1400d5820]
xor edx, edx
movabs rdi, 0x2e78786362696c67
movabs r12, 0x6c6f6f705f68652e
call sym.pthread_mutex_init
lea rcx, str.GLIBCXX_TUNABLES
pxor xmm0, xmm0
mov qword [0x1400d5838], 0
movups xmmword [0x1400d5828], xmm0
call sym.getenv
mov dword [rsp + 0x40], 0
mov rbx, rax
mov dword [rsp + 0x58], 0x100
lea rax, str.obj_size
test rbx, rbx
mov qword [rsp + 0x30], 8
mov qword [rsp + 0x38], rax
lea rax, str.obj_count
mov qword [rsp + 0x48], 9
mov qword [rsp + 0x50], rax
jne 0x1400d3f65
jmp 0x1400d4012
mov rcx, rbx
mov edx, 0x3a
call sym.strchr
test rax, rax
mov rbx, rax
je 0x1400d3fc0
xor eax, eax
cmp byte [rbx], 0x3a
sete al
add rbx, rax
cmp qword [rbx], rdi
jne 0x1400d3f50
cmp qword [rbx + 7], r12
jne 0x1400d3f50
cmp byte [rbx + 0xf], 0x2e
jne 0x1400d3f50
lea rbp, [rsp + 0x30]
add rbx, 0x10
lea r13, [rsp + 0x60]
mov rsi, qword [rbp]
mov rcx, qword [rbp + 8]
test rsi, rsi
je 0x1400d3fab
mov r8, rsi
mov rdx, rbx
call sym.memcmp
test eax, eax
jne 0x1400d3fb5
cmp byte [rbx + rsi], 0x3d
je 0x1400d4048
add rbp, 0x18
cmp rbp, r13
jne 0x1400d3f8f
jmp 0x1400d3f50
mov eax, dword [rsp + 0x58]
mov edx, 0x1000
mov ecx, 6
cmp eax, edx
cmovle edx, eax
mov eax, dword [rsp + 0x40]
test eax, eax
cmove eax, ecx
movsxd rbx, eax
movsxd rax, edx
add rbx, 0x26
imul rbx, rax
shl rbx, 3
test rbx, rbx
mov qword [0x1400d5838], rbx
jne 0x1400d4022
lea rcx, [sym.__tcf_0]
add rsp, 0x68
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
jmp sym.atexit
mov qword [0x1400d5838], 0x16000
mov ebx, 0x16000
mov rcx, rbx
call sym.malloc
test rax, rax
mov qword [0x1400d5830], rax
je 0x1400d407f
xor edx, edx
mov qword [0x1400d5828], rax
mov qword [rax], rbx
mov qword [rax + 8], rdx
jmp 0x1400d3ffa
lea rdx, [rsp + 0x28]
xor r8d, r8d
lea rcx, [rbx + rsi + 1]
call sym.strtoul
mov rbx, qword [rsp + 0x28]
movzx edx, byte [rbx]
cmp dl, 0x3a
je 0x1400d406f
test dl, dl
jne 0x1400d3f50
test eax, eax
js 0x1400d3f50
mov dword [rbp + 0x10], eax
jmp 0x1400d3f50
xor ecx, ecx
mov qword [0x1400d5838], rcx
jmp 0x1400d3ffa
Function at 0x1400fbaf0
Capabilities:
Terminate process

Disassembly:
cld
pop r11
jmp 0x1400fbafd
inc rsi
mov byte [rdi], dl
inc rdi
mov dl, byte [rsi]
add ebx, ebx
jne 0x1400fbb0d
mov ebx, dword [rsi]
sub rsi, 0xfffffffffffffffc
adc ebx, ebx
mov dl, byte [rsi]
jb 0x1400fbaf5
lea eax, [rcx + 1]
jmp 0x1400fbb1b
dec eax
call r11
adc eax, eax
call r11
adc eax, eax
add ebx, ebx
jne 0x1400fbb2e
mov ebx, dword [rsi]
sub rsi, 0xfffffffffffffffc
adc ebx, ebx
mov dl, byte [rsi]
jae 0x1400fbb14
sub eax, 3
jb 0x1400fbb4e
shl eax, 8
movzx edx, dl
or eax, edx
inc rsi
xor eax, 0xffffffff
je 0x1400fbb9d
sar eax, 1
movsxd rbp, eax
jb 0x1400fbb84
jmp 0x1400fbb5c
add ebx, ebx
jne 0x1400fbb5a
mov ebx, dword [rsi]
sub rsi, 0xfffffffffffffffc
adc ebx, ebx
jb 0x1400fbb84
inc ecx
add ebx, ebx
jne 0x1400fbb6a
mov ebx, dword [rsi]
sub rsi, 0xfffffffffffffffc
adc ebx, ebx
jb 0x1400fbb84
call r11
adc ecx, ecx
add ebx, ebx
jne 0x1400fbb7d
mov ebx, dword [rsi]
sub rsi, 0xfffffffffffffffc
adc ebx, ebx
jae 0x1400fbb6c
add ecx, 2
jmp 0x1400fbb89
call r11
adc ecx, ecx
cmp rbp, 0xfffffffffffffb00
adc ecx, 2
call fcn.1400fbab2
jmp 0x1400fbafd
pop rsi
pop rdi
pop rax
mov dword [rdi], eax
mov rdi, rsi
push rsi
mov rdi, rsi
mov rsi, 0x4a800
mov dl, 7
push rbx
push rdi
lea rcx, [rdi + rsi - 3]
pop rsi
push rsi
pop rbx
jmp 0x1400fbbed
cmp rsi, rcx
jae 0x1400fbbf5
push rsi
pop rsi
lodsb al, byte [rsi]
cmp al, 0x80
jb 0x1400fbbd4
cmp al, 0x8f
ja 0x1400fbbd4
cmp byte [rsi - 2], 0xf
je 0x1400fbbda
sub al, 0xe8
cmp al, 1
ja 0x1400fbbbe
cmp rsi, rcx
jae 0x1400fbbf5
push rsi
lodsd eax, dword [rsi]
sub al, dl
jne 0x1400fbbc4
pop rdi
bswap eax
sub eax, edi
add eax, ebx
stosd dword [rdi], eax
cmp rsi, rcx
jae 0x1400fbbf5
lodsb al, byte [rsi]
jmp 0x1400fbbd4
pop rbx
pop rsi
sub rsp, 0x28
lea rdi, [rsi + 0xec000]
mov eax, dword [rdi]
or eax, eax
je 0x1400fbc5e
mov ebx, dword [rdi + 4]
lea rcx, [rax + rsi + 0x10c080]
add rbx, rsi
add rdi, 8
call qword [sym.imp.KERNEL32.DLL_LoadLibraryA]
xchg rbp, rax
mov al, byte [rdi]
inc rdi
or al, al
je 0x1400fbc02
jns 0x1400fbc37
movzx rdx, word [rdi]
add rdi, 2
jmp 0x1400fbc41
mov rcx, rdi
mov rdx, rdi
dec eax
repne scasb al, byte [rdi]
mov rcx, rbp
call qword [sym.imp.KERNEL32.DLL_GetProcAddress]
or rax, rax
je 0x1400fbc58
mov qword [rbx], rax
add rbx, 8
jmp 0x1400fbc22
jmp qword [sym.imp.KERNEL32.DLL_ExitProcess]
add rsp, 0x28
add rdi, 4
lea rbx, [rsi - 4]
xor eax, eax
mov al, byte [rdi]
inc rdi
or eax, eax
je 0x1400fbc98
cmp al, 0xef
ja 0x1400fbc8a
add rbx, rax
mov rax, qword [rbx]
bswap rax
add rax, rsi
mov qword [rbx], rax
jmp 0x1400fbc6a
and al, 0xf
shl eax, 0x10
mov ax, word [rdi]
add rdi, 2
jmp 0x1400fbc79
mov rbp, qword [sym.imp.KERNEL32.DLL_VirtualProtect]
lea rdi, [rsi - 0x1000]
mov ebx, 0x1000
push rax
mov r9, rsp
mov r8d, 4
mov rdx, rbx
mov rcx, rdi
sub rsp, 0x20
call rbp
lea rax, [rdi + 0x257]
and byte [rax], 0x7f
and byte [rax + 0x28], 0x7f
lea r9, [rsp + 0x20]
mov r8, qword [r9]
mov rdx, rbx
mov rcx, rdi
call rbp
add rsp, 0x28
pop rbp
pop rdi
pop rsi
pop rbx
lea rax, [rsp - 0x80]
push 0
cmp rsp, rax
jne 0x1400fbcec
sub rsp, 0xffffffffffffff80
jmp 0x140034fb4
Function at 0x1400029f0
Capabilities:
Hash data using fnv

Disassembly:
mov byte [rsp + 0x10], dl
mov dword [rsp + 8], ecx
movsx eax, byte [rsp + 0x10]
mov ecx, dword [rsp + 8]
xor ecx, eax
mov eax, ecx
mov eax, eax
imul rax, rax, 0x1000193
ret

Function at 0x1400039c8
Capabilities:
Parse pe header

Disassembly:
sub rsp, 0x28
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test rax, rax
je 0x140003a12
mov ecx, 0x5a4d
cmp word [rax], cx
jne 0x140003a12
movsxd rcx, dword [rax + 0x3c]
add rcx, rax
cmp dword [rcx], 0x4550
jne 0x140003a12
mov eax, 0x20b
cmp word [rcx + 0x18], ax
jne 0x140003a12
cmp dword [rcx + 0x84], 0xe
jbe 0x140003a12
cmp dword [rcx + 0xf8], 0
setne al
jmp 0x140003a14
xor al, al
add rsp, 0x28
ret

Function at 0x140007e80
Capabilities:
Parse pe header

Disassembly:
mov qword [rsp + 8], rbx
mov dword [rsp + 0x18], r8d
mov dword [rsp + 0x10], edx
push rbp
mov rbp, rsp
sub rsp, 0x50
mov ebx, ecx
test r8d, r8d
jne 0x140007d13
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test rax, rax
je 0x140007d13
mov ecx, 0x5a4d
cmp word [rax], cx
jne 0x140007d13
movsxd rcx, dword [rax + 0x3c]
add rcx, rax
cmp dword [rcx], 0x4550
jne 0x140007d13
mov eax, 0x20b
cmp word [rcx + 0x18], ax
jne 0x140007d13
cmp dword [rcx + 0x84], 0xe
jbe 0x140007d13
cmp dword [rcx + 0xf8], 0
je 0x140007d13
mov ecx, ebx
call fcn.140007db4
lea rax, [rbp + 0x18]
mov byte [rbp + 0x28], 0
mov qword [rbp - 0x20], rax
lea r9, [rbp - 0x2c]
lea rax, [rbp + 0x20]
mov qword [rbp - 0x18], rax
lea r8, [rbp - 0x20]
lea rax, [rbp + 0x28]
mov qword [rbp - 0x10], rax
lea rdx, [rbp - 0x28]
mov eax, 2
lea rcx, [rbp - 0x30]
mov dword [rbp - 0x2c], eax
mov dword [rbp - 0x28], eax
call fcn.140007ba4
cmp dword [rbp + 0x20], 0
je 0x140007d60
mov rbx, qword [rsp + 0x60]
add rsp, 0x50
pop rbp
ret
mov ecx, ebx
call fcn.140007d68
int3
xor r8d, r8d
xor edx, edx
jmp 0x140007cac
Function at 0x140658058
Capabilities:
Decompress data using aplib

Disassembly:
call fcn.1406581df
push r10
mov r10, rsp
push r10
mov rsi, qword [r10 + 0x10]
mov rdi, qword [r10 + 0x20]
cld
mov dl, 0x80
mov al, byte [rsi]
inc rsi
mov byte [rdi], al
inc rdi
mov ebx, 2
add dl, dl
jne 0x140658089
mov dl, byte [rsi]
inc rsi
adc dl, dl
jae 0x14065806f
add dl, dl
jne 0x140658096
mov dl, byte [rsi]
inc rsi
adc dl, dl
jae 0x1406580f6
xor eax, eax
add dl, dl
jne 0x1406580a5
mov dl, byte [rsi]
inc rsi
adc dl, dl
jae 0x1406581ad
add dl, dl
jne 0x1406580b6
mov dl, byte [rsi]
inc rsi
adc dl, dl
adc eax, eax
add dl, dl
jne 0x1406580c3
mov dl, byte [rsi]
inc rsi
adc dl, dl
adc eax, eax
add dl, dl
jne 0x1406580d0
mov dl, byte [rsi]
inc rsi
adc dl, dl
adc eax, eax
add dl, dl
jne 0x1406580dd
mov dl, byte [rsi]
inc rsi
adc dl, dl
adc eax, eax
je 0x1406580ea
push rdi
mov eax, eax
sub rdi, rax
mov al, byte [rdi]
pop rdi
mov byte [rdi], al
inc rdi
mov ebx, 2
jmp 0x14065807e
mov eax, 1
add dl, dl
jne 0x140658106
mov dl, byte [rsi]
inc rsi
adc dl, dl
adc eax, eax
add dl, dl
jne 0x140658113
mov dl, byte [rsi]
inc rsi
adc dl, dl
jb 0x1406580fb
sub eax, ebx
mov ebx, 1
jne 0x14065814c
mov ecx, 1
add dl, dl
jne 0x14065812e
mov dl, byte [rsi]
inc rsi
adc dl, dl
adc ecx, ecx
add dl, dl
jne 0x14065813b
mov dl, byte [rsi]
inc rsi
adc dl, dl
jb 0x140658123
push rsi
mov rsi, rdi
sub rsi, rbp
rep movsb byte [rdi], byte [rsi]
pop rsi
jmp 0x14065807e
dec eax
shl eax, 8
mov al, byte [rsi]
inc rsi
mov ebp, eax
mov ecx, 1
add dl, dl
jne 0x140658168
mov dl, byte [rsi]
inc rsi
adc dl, dl
adc ecx, ecx
add dl, dl
jne 0x140658175
mov dl, byte [rsi]
inc rsi
adc dl, dl
jb 0x14065815d
cmp eax, 0x7d00
jae 0x14065819b
cmp eax, 0x500
jb 0x140658196
inc ecx
push rsi
mov rsi, rdi
sub rsi, rax
rep movsb byte [rdi], byte [rsi]
pop rsi
jmp 0x14065807e
cmp eax, 0x7f
ja 0x14065819e
add ecx, 2
push rsi
mov rsi, rdi
sub rsi, rax
rep movsb byte [rdi], byte [rsi]
pop rsi
jmp 0x14065807e
mov al, byte [rsi]
inc rsi
xor ecx, ecx
shr al, 1
je 0x1406581d2
adc ecx, 2
mov ebp, eax
push rsi
mov rsi, rdi
sub rsi, rax
rep movsb byte [rdi], byte [rsi]
pop rsi
mov ebx, 1
jmp 0x14065807e
pop r10
sub rdi, qword [r10 + 0x20]
mov eax, edi
pop r10
ret 0x20
Function at 0x43f010
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r13
push rdi
push rsi
push rbx
sub rsp, 0x240
mov rbp, rsp
mov rbx, rcx
mov rcx, rbx
call fcn.00410530
mov r13d, eax
mov ecx, 0xfde9
xor edx, edx
mov r8, rbx
mov r9d, r13d
mov qword [rsp + 0x20], 0
mov dword [rsp + 0x28], 0
call fcn.00418490
mov esi, eax
cmp esi, 0x104
jbe 0x43f06b
mov ecx, esi
add ecx, ecx
mov ecx, ecx
call fcn.004090f0
mov rdi, rax
jmp 0x43f06f
lea rdi, [rbp + 0x38]
mov ecx, 0xfde9
xor edx, edx
mov r8, rbx
mov r9d, r13d
mov qword [rsp + 0x20], rdi
mov dword [rsp + 0x28], esi
call fcn.00418490
mov rcx, rdi
call sub.user32.dll_CharUpperW
xor ebx, ebx
xor ecx, ecx
mov edx, esi
sub edx, 1
mov eax, ecx
cmp eax, edx
jg 0x43f0c5
sub edx, ecx
add edx, 1
mov ecx, ebx
shl ecx, 5
shr ebx, 0x1b
or ecx, ebx
mov ebx, ecx
movsxd rcx, eax
movzx ecx, word [rdi + rcx*2]
xor ebx, ecx
add eax, 1
sub edx, 1
test edx, edx
jne 0x43f0a6
nop
lea rax, [rbp + 0x38]
cmp rdi, rax
je 0x43f0d7
mov rcx, rdi
call fcn.00409120
mov eax, ebx
lea rsp, [rbp + 0x240]
pop rbx
pop rsi
pop rdi
pop r13
pop rbp
ret

Function at 0x492f00
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x28
mov rbp, rsp
mov rbx, rcx
mov rsi, rdx
mov qword [rbp + 0x60], r8
movzx rax, byte [rbp + 0x70]
mov byte [rbp + 0x70], al
mov rcx, rsi
mov rdx, qword [rbp + 0x60]
mov r8, r9
call sub.kernel32.dll_FindResourceW
mov qword [rbx + 0x20], rax
cmp qword [rbx + 0x20], 0
jne 0x492f3f
mov rcx, rbp
call fcn.00492e20
mov rcx, rsi
mov rdx, qword [rbx + 0x20]
call sub.kernel32.dll_LoadResource
mov qword [rbx + 0x28], rax
cmp qword [rbx + 0x28], 0
jne 0x492f5e
mov rcx, rbp
call fcn.00492e20
mov rcx, qword [rbx + 0x28]
call sub.kernel32.dll_LockResource
mov rdi, rax
mov rcx, rsi
mov rdx, qword [rbx + 0x20]
call sub.kernel32.dll_SizeofResource
mov rcx, rbx
mov rdx, rdi
mov r8d, eax
call fcn.00492790
lea rsp, [rbp + 0x28]
pop rbx
pop rsi
pop rdi
pop rbp
ret

Function at 0x4a3080
Capabilities:
Resume thread

Disassembly:
sub rsp, 0x28
movzx rax, byte [rcx + 0x19]
or al, dl
test al, al
je 0x4a30d0
cmp byte [rcx + 0x1d], 0
jne 0x4a30d0
cmp byte [rcx + 0x40], 0
jne 0x4a30d0
mov byte [rcx + 0x1b], 0
mov byte [rcx + 0x19], 0
mov rcx, qword [rcx + 0x10]
call sub.kernel32.dll_ResumeThread
cmp eax, 1
je 0x4a30ed
mov rcx, qword [0x004629b8]
mov dl, 1
mov r8, qword [0x007dc258]
call fcn.0043c3c0
mov rcx, rax
call fcn.0040f030
jmp 0x4a30ed
mov rcx, qword [0x004629b8]
mov dl, 1
mov r8, qword [0x007dc258]
call fcn.0043c3c0
mov rcx, rax
call fcn.0040f030
add rsp, 0x28
ret

Function at 0x4a3720
Capabilities:
Suspend thread

Disassembly:
push rbp
sub rsp, 0x40
mov rbp, rsp
mov qword [rbp + 0x28], rbp
mov qword [rbp + 0x50], rcx
mov rax, qword [rbp + 0x50]
movzx rax, byte [rax + 0x1b]
mov byte [rbp + 0x3f], al
nop
mov rax, qword [rbp + 0x50]
mov byte [rax + 0x1b], 1
mov rax, qword [rbp + 0x50]
mov rcx, qword [rax + 0x10]
call sub.kernel32.dll_SuspendThread
mov rcx, qword [rbp + 0x50]
test eax, eax
setge dl
call fcn.004a2f80
jmp 0x4a377b
lea rsp, [rbp + 0x40]
pop rbp
ret
Function at 0x4a37a0
Capabilities:
Resume thread

Disassembly:
push rsi
push rbx
sub rsp, 0x28
mov rbx, rcx
mov rcx, qword [rbx + 0x10]
call sub.kernel32.dll_ResumeThread
mov esi, eax
mov rcx, rbx
test esi, esi
setge dl
call fcn.004a2f80
cmp esi, 1
jne 0x4a37ca
mov byte [rbx + 0x1b], 0
add rsp, 0x28
pop rbx
pop rsi
ret

Function at 0x4a7400
Capabilities:
Allocate or change rwx memory

Disassembly:
push rdi
push rsi
push rbx
sub rsp, 0x20
mov qword [rsp + 0x40], rcx
cmp qword [0x007e8eb0], 0
jne 0x4a74a6
xor ecx, ecx
mov edx, 0x1000
mov r8d, 0x1000
mov r9d, 0x40
call sub.kernel32.dll_VirtualAlloc
mov rbx, rax
mov rax, qword [0x007e8ea8]
mov qword [rbx], rax
lea rcx, [0x007a3978]
lea rdx, [rbx + 8]
mov r8d, 8
call fcn.004095a0
lea rax, [0x004a73c0]
mov qword [rbx + 0x10], rax
lea rsi, [rbx + 0x18]
mov byte [rsi], 0xe8
mov rcx, rsi
lea rdx, [rbx + 8]
call fcn.004a73f0
mov dword [rsi + 1], eax
mov rax, qword [0x007e8eb0]
mov qword [rsi + 5], rax
mov qword [0x007e8eb0], rsi
add rsi, 0x15
mov rax, rbx
neg rax
lea rax, [rsi + rax]
cmp rax, 0xfed
jl 0x4a7464
mov qword [0x007e8ea8], rbx
mov rax, qword [0x007e8eb0]
mov rsi, qword [0x007e8eb0]
mov rcx, qword [rsi + 5]
mov qword [0x007e8eb0], rcx
mov rcx, qword [rsp + 0x40]
lea rdi, [rsi + 5]
mov rsi, rcx
movsq qword [rdi], qword [rsi]
movsq qword [rdi], qword [rsi]
add rsp, 0x20
pop rbx
pop rsi
pop rdi
ret

Function at 0x4cdf80
Capabilities:
Hash data with md5

Disassembly:
push rbx
sub rsp, 0x20
mov rbx, rcx
mov rcx, rbx
mov edx, 0x40
xor r8, r8
call fcn.0040bcd0
mov byte [rbx], 0x80
mov dword [rbx + 0x50], 0
mov dword [rbx + 0x54], 0
mov dword [rbx + 0x40], 0x67452301
mov dword [rbx + 0x44], 0xefcdab89
mov dword [rbx + 0x48], 0x98badcfe
mov dword [rbx + 0x4c], 0x10325476
lea rcx, [rbx + 0x58]
mov edx, 0x40
xor r8, r8
call fcn.0040bcd0
mov byte [rbx + 0x98], 0
add rsp, 0x20
pop rbx
ret