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

Disassembly:
push rbx
sub rsp, 0x20
mov rbx, qword [0x140368c40]
test rbx, rbx
je 0x14013979d
mov rcx, rbx
call qword [rbx + 0xb8]
mov rax, qword [rbx + 0xe0]
test rax, rax
je 0x140139775
mov edx, 1
mov rcx, rbx
call rax
mov rcx, qword [0x140360a30]
mov r8, rbx
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov ecx, dword [0x140368c20]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
and qword [0x140368c40], 0
add rsp, 0x20
pop rbx
ret

Function at 0x14013a418
Capabilities:
Allocate thread local storage

Disassembly:
sub rsp, 0x28
call qword [sym.imp.KERNEL32.dll_TlsAlloc]
mov dword [0x140368c20], eax
add rsp, 0x28
ret

Function at 0x14013a4a0
Capabilities:
Set thread local storage value

Disassembly:
mov qword [rsp + 8], rbx
push rdi
sub rsp, 0x20
mov ebx, ecx
mov rcx, qword [0x140360a30]
mov edx, 8
mov r8d, 0x250
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov ecx, dword [0x140368c20]
mov rdx, rax
mov rdi, rax
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
mov qword [0x140368c40], rdi
and dword [rdi + 0x11c], 0
or eax, 0xffffffff
mov edx, ebx
mov rcx, rdi
mov dword [rdi + 0x118], 0xffffff
mov dword [rdi + 0xe8], 2
mov dword [rdi + 0xec], 0x3f
mov dword [rdi + 0x120], eax
mov dword [rdi + 0x124], eax
call fcn.14013da68
mov rbx, qword [rsp + 0x30]
lea rax, [0x14013b358]
mov qword [rdi + 0xb0], rax
lea rax, [0x14013b3bc]
mov qword [rdi + 0xb8], rax
lea rax, [fcn.14013adfc]
mov qword [rdi + 0x20], rax
lea rax, [0x14013acac]
mov qword [rdi + 0x60], rax
lea rax, [0x14013b460]
mov qword [rdi + 0xc8], rax
lea rax, [0x14013b408]
mov qword [rdi + 0xc0], rax
lea rax, [0x14013a938]
mov qword [rdi + 0x68], rax
lea rax, [0x14013a8dc]
mov qword [rdi + 0x48], rax
lea rax, [0x14013a908]
mov qword [rdi + 0x50], rax
lea rax, [0x14013a78c]
mov qword [rdi + 0x58], rax
lea rax, [0x14013b150]
mov qword [rdi + 0x88], rax
mov rax, rdi
add rsp, 0x20
pop rdi
ret
Function at 0x1401420a4
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
mov qword [rsp + 0x20], rsi
push rdi
push r12
push r13
push r14
mov r10d, dword [rsp + 0x68]
movsxd rsi, dword [rcx + 0x160]
mov ebx, r8d
mov r12, rdx
mov r11, rcx
test r10d, r10d
je 0x14014216b
mov eax, dword [rsp + 0x50]
mov ecx, ebx
mov ebp, ebx
shl eax, 2
imul ecx, dword [rsp + 0x58]
movsxd r13, eax
mov eax, esi
imul eax, r9d
mov r9d, dword [rsp + 0x48]
neg ebp
movsxd rdi, eax
mov qword [rsp + 0x28], rdi
mov eax, dword [r11 + 0x158]
movsxd r8, ecx
add r8, r13
add r8, r12
imul eax, r9d
movsxd rdx, eax
add rdx, qword [r11 + 0x150]
add rdx, rdi
cmp dword [rsp + 0x60], 0
jle 0x140142150
mov edi, dword [rsp + 0x60]
mov al, byte [r8 + 2]
xor byte [rdx + 2], al
mov al, byte [r8 + 1]
xor byte [rdx + 1], al
mov al, byte [r8]
lea r8, [r8 + 4]
xor byte [rdx], al
add rdx, rsi
dec rdi
jne 0x14014212c
mov rdi, qword [rsp + 0x28]
dec r10d
inc r9d
cmp dword [r11 + 0x174], 0
jne 0x140142164
add ecx, ebp
jmp 0x140142166
add ecx, ebx
test r10d, r10d
jne 0x140142100
mov rbx, qword [rsp + 0x30]
mov rbp, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
pop r14
pop r13
pop r12
pop rdi
ret

Function at 0x140142f0c
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
mov qword [rsp + 0x20], rsi
push rdi
push r12
push r13
push r14
mov r11d, dword [rsp + 0x68]
movsxd rsi, dword [rcx + 0x160]
mov edi, r8d
mov r12, rdx
mov rbx, rcx
test r11d, r11d
je 0x140142fd5
mov eax, dword [rsp + 0x50]
mov ecx, r8d
mov ebp, r8d
lea r10d, [rax + rax*2]
mov eax, esi
imul ecx, dword [rsp + 0x58]
movsxd r13, r10d
imul eax, r9d
mov r9d, dword [rsp + 0x48]
movsxd r10, eax
mov qword [rsp + 0x28], r10
neg ebp
mov eax, dword [rbx + 0x158]
movsxd r8, ecx
add r8, r13
add r8, r12
imul eax, r9d
movsxd rdx, eax
add rdx, qword [rbx + 0x150]
add rdx, r10
cmp dword [rsp + 0x60], 0
jle 0x140142fbb
mov r10d, dword [rsp + 0x60]
mov al, byte [r8 + 2]
xor byte [rdx + 2], al
mov al, byte [r8 + 1]
xor byte [rdx + 1], al
mov al, byte [r8]
lea r8, [r8 + 3]
xor byte [rdx], al
add rdx, rsi
dec r10
jne 0x140142f97
mov r10, qword [rsp + 0x28]
dec r11d
inc r9d
cmp dword [rbx + 0x174], 0
jne 0x140142fce
add ecx, ebp
jmp 0x140142fd0
add ecx, edi
test r11d, r11d
jne 0x140142f6b
mov rbx, qword [rsp + 0x30]
mov rbp, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
pop r14
pop r13
pop r12
pop rdi
ret
Function at 0x140145560
Capabilities:
Get file size
Read file on windows

Disassembly:
xor r8d, r8d
jmp 0x140145568
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
push rsi
push rdi
push r14
sub rsp, 0x40
mov rax, rdx
xor ebx, ebx
mov r14, rcx
mov qword [rsp + 0x30], rbx
lea r8d, [rbx + 1]
xor r9d, r9d
mov edx, 0x80000000
mov rcx, rax
mov dword [rsp + 0x28], pe_nt_image_headers64
mov dword [rsp + 0x20], 3
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov rbp, rax
cmp rax, 0xffffffffffffffff
je 0x14014562b
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetFileSize]
mov rcx, qword [0x140360a30]
xor edx, edx
mov r8d, eax
mov edi, eax
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov rsi, rax
test rax, rax
je 0x140145622
lea r9, [rsp + 0x78]
mov r8d, edi
mov rdx, rax
mov rcx, rbp
mov qword [rsp + 0x20], rbx
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x140145610
cmp dword [rsp + 0x78], edi
jne 0x140145610
mov r8d, edi
mov rdx, rsi
mov rcx, r14
call fcn.140145654
mov rbx, rax
mov rcx, qword [0x140360a30]
mov r8, rsi
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov rcx, rbp
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rbp, qword [rsp + 0x68]
mov rax, rbx
mov rbx, qword [rsp + 0x60]
add rsp, 0x40
pop r14
pop rdi
pop rsi
ret

Function at 0x140145568
Capabilities:
Get file size
Read file on windows

Disassembly:
xor r8d, r8d
jmp 0x140145568
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
push rsi
push rdi
push r14
sub rsp, 0x40
mov rax, rdx
xor ebx, ebx
mov r14, rcx
mov qword [rsp + 0x30], rbx
lea r8d, [rbx + 1]
xor r9d, r9d
mov edx, 0x80000000
mov rcx, rax
mov dword [rsp + 0x28], pe_nt_image_headers64
mov dword [rsp + 0x20], 3
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov rbp, rax
cmp rax, 0xffffffffffffffff
je 0x14014562b
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetFileSize]
mov rcx, qword [0x140360a30]
xor edx, edx
mov r8d, eax
mov edi, eax
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov rsi, rax
test rax, rax
je 0x140145622
lea r9, [rsp + 0x78]
mov r8d, edi
mov rdx, rax
mov rcx, rbp
mov qword [rsp + 0x20], rbx
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x140145610
cmp dword [rsp + 0x78], edi
jne 0x140145610
mov r8d, edi
mov rdx, rsi
mov rcx, r14
call fcn.140145654
mov rbx, rax
mov rcx, qword [0x140360a30]
mov r8, rsi
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov rcx, rbp
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rbp, qword [rsp + 0x68]
mov rax, rbx
mov rbx, qword [rsp + 0x60]
add rsp, 0x40
pop r14
pop rdi
pop rsi
ret
Function at 0x1401597d0
Capabilities:
Generate random numbers via rtlgenrandom
Query environment variable

Disassembly:
mov qword [rsp + 8], rbx
push rdi
sub rsp, 0x30
xor edi, edi
mov ebx, edi
nop
lea rcx, [rsp + 0x48]
mov edx, 4
mov dword [rsp + 0x48], edi
call sub.ADVAPI32.dll_SystemFunction036
test al, al
je 0x140159869
mov edx, dword [rsp + 0x48]
mov rcx, rdi
nop
cmp rbx, 4
jae 0x140159821
mov eax, edx
inc rbx
shr eax, cl
add rcx, 8
mov byte [rsp + rbx + 0x4f], al
cmp rcx, 0x20
jb 0x140159800
cmp rbx, 4
jb 0x1401597e0
lea rcx, str.EXPAT_ENTROPY_DEBUG
call qword [sym.imp.msvcrt.dll_getenv]
mov ebx, dword [rsp + 0x50]
test rax, rax
je 0x1401598e3
movzx ecx, byte [rax]
cmp cl, byte [0x1402347bc]
jne 0x1401598e3
movzx eax, byte [rax + 1]
cmp al, byte [0x1402347bd]
jne 0x1401598e3
call qword [sym.imp.msvcrt.dll___iob_func]
lea r8, str.rand_s
jmp 0x1401598c0
lea rcx, [rsp + 0x48]
call qword [sym.imp.KERNEL32.dll_GetSystemTimeAsFileTime]
mov ebx, dword [rsp + 0x48]
xor ebx, dword [rsp + 0x4c]
call qword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
lea rcx, str.EXPAT_ENTROPY_DEBUG
xor eax, ebx
imul ebx, eax, 0x7fffffff
call qword [sym.imp.msvcrt.dll_getenv]
test rax, rax
je 0x1401598e3
movzx ecx, byte [rax]
cmp cl, byte [0x1402347bc]
jne 0x1401598e3
movzx eax, byte [rax + 1]
cmp al, byte [0x1402347bd]
jne 0x1401598e3
call qword [sym.imp.msvcrt.dll___iob_func]
lea r8, str.fallback_4_
lea rdx, str.Entropy:__s_____0x_0lx___lu_bytes__n
lea rcx, [rax + 0x60]
mov r9d, 8
mov dword [rsp + 0x28], 4
mov dword [rsp + 0x20], ebx
call qword [sym.imp.msvcrt.dll_fprintf]
mov eax, ebx
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
Function at 0x14015e020
Capabilities:
Encode data using xor

Disassembly:
movzx edx, byte [rcx + 0x28]
mov r9, qword [rcx + 0x30]
mov r8, rcx
sub dl, cl
sub dl, 0x20
movsx rax, dl
add r9, rax
movsx eax, dl
shl r9, 0x38
dec eax
cmp eax, 6
ja case.default.0x14015e058
lea rdx, [0x140000000]
cdqe
mov ecx, dword [rdx + rax*4 + 0x15e170]
add rcx, rdx
jmp rcx
movzx eax, byte [r8 + 0x26]
shl rax, 0x30
or r9, rax
movzx eax, byte [r8 + 0x25]
shl rax, 0x28
or r9, rax
movzx eax, byte [r8 + 0x24]
shl rax, 0x20
or r9, rax
movzx eax, byte [r8 + 0x23]
shl rax, 0x18
or r9, rax
movzx eax, byte [r8 + 0x22]
shl rax, 0x10
or r9, rax
movzx eax, byte [r8 + 0x21]
shl rax, 8
or r9, rax
movzx eax, byte [r8 + 0x20]
or r9, rax
xor qword [r8 + 0x18], r9
mov r10, qword [r8]
mov rcx, qword [r8 + 8]
mov rax, qword [r8 + 0x18]
mov rdx, qword [r8 + 0x10]
mov r11d, 2
add r10, rcx
add rdx, rax
rol rcx, 0xd
xor rcx, r10
rol rax, 0x10
xor rax, rdx
add rdx, rcx
rol r10, 0x20
add r10, rax
mov qword [r8], r10
rol rcx, 0x11
xor rcx, rdx
rol rax, 0x15
xor rax, r10
rol rdx, 0x20
dec r11
jne 0x14015e0c3
xor qword [r8], r9
mov r9, qword [r8]
xor rdx, 0xff
mov qword [r8 + 0x10], rdx
mov qword [r8 + 0x18], rax
mov qword [r8 + 8], rcx
lea r10d, [r11 + 4]
nop dword [rax + rax]
add r9, rcx
add rdx, rax
rol rcx, 0xd
xor rcx, r9
rol rax, 0x10
xor rax, rdx
add rdx, rcx
rol r9, 0x20
add r9, rax
mov qword [r8], r9
rol rcx, 0x11
xor rcx, rdx
rol rax, 0x15
xor rax, r9
rol rdx, 0x20
dec r10
jne 0x14015e120
mov qword [r8 + 0x18], rax
xor rax, rdx
mov qword [r8 + 8], rcx
xor rax, rcx
mov qword [r8 + 0x10], rdx
xor rax, r9
ret

Function at 0x14015e200
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x18], rbx
push rsi
lea rbx, [rdx + r8]
mov qword [rsp + 0x10], rbp
mov r11, rcx
lea rax, [rcx + 0x28]
mov qword [rsp + 0x18], rdi
cmp rdx, rbx
jae 0x14015e239
mov r8, qword [rax]
cmp r8, rax
jae 0x14015e242
movzx ecx, byte [rdx]
inc rdx
mov byte [r8], cl
inc qword [rax]
cmp rdx, rbx
jb 0x14015e220
cmp qword [rax], rax
jb 0x14015e318
movzx ecx, byte [r11 + 0x26]
movzx edi, byte [r11 + 0x27]
mov r10, qword [r11]
mov r8, qword [r11 + 8]
mov r9, qword [r11 + 0x10]
shl rdi, 8
or rdi, rcx
movzx ecx, byte [r11 + 0x25]
lea rbp, [r11 + 0x20]
shl rdi, 8
mov esi, 2
or rdi, rcx
movzx ecx, byte [r11 + 0x24]
shl rdi, 8
or rdi, rcx
movzx ecx, byte [r11 + 0x23]
shl rdi, 8
or rdi, rcx
movzx ecx, byte [r11 + 0x22]
shl rdi, 8
or rdi, rcx
movzx ecx, byte [r11 + 0x21]
shl rdi, 8
or rdi, rcx
movzx ecx, byte [rbp]
shl rdi, 8
or rdi, rcx
xor qword [r11 + 0x18], rdi
mov rcx, qword [r11 + 0x18]
nop word [rax + rax]
add r10, r8
add r9, rcx
rol r8, 0xd
xor r8, r10
rol rcx, 0x10
xor rcx, r9
add r9, r8
rol r10, 0x20
add r10, rcx
mov qword [r11], r10
rol r8, 0x11
xor r8, r9
rol rcx, 0x15
xor rcx, r10
rol r9, 0x20
dec rsi
jne 0x14015e2c0
xor qword [r11], rdi
add qword [r11 + 0x30], 8
mov qword [r11 + 0x18], rcx
mov qword [r11 + 8], r8
mov qword [r11 + 0x10], r9
mov qword [rax], rbp
cmp rdx, rbx
jb 0x14015e220
mov rdi, qword [rsp + 0x18]
mov rbp, qword [rsp + 0x10]
mov rbx, qword [rsp + 0x20]
mov rax, r11
pop rsi
ret
Function at 0x1401778b0
Capabilities:
Hash data with crc32

Disassembly:
sub rsp, 8
mov r11d, edx
mov r10, rcx
mov r8d, 0x80000000
test rcx, rcx
je 0x14017791f
mov qword [rsp], rbx
lea rbx, [0x14023b100]
test r10b, 1
je 0x140177913
mov ecx, r11d
mov eax, r8d
mov edx, 0x80000000
and ecx, 0x1f
xor r8d, r8d
mov r9d, dword [rbx + rcx*4]
nop dword [rax + rax]
test r9d, edx
je 0x140177900
lea ecx, [rdx - 1]
xor r8d, eax
test r9d, ecx
je 0x140177913
shr edx, 1
test al, 1
je 0x14017790f
shr eax, 1
xor eax, 0xedb88320
jmp 0x1401778f0
shr eax, 1
jmp 0x1401778f0
inc r11d
sar r10, 1
jne 0x1401778d0
mov rbx, qword [rsp]
mov eax, r8d
add rsp, 8
ret

Function at 0x14017a450
Capabilities:
Encode data using xor
Generate random numbers using the delphi lcg

Disassembly:
push rbx
push rbp
push rdi
sub rsp, 0x40
mov rdi, qword [rcx + 0xf8]
mov rbp, rcx
call fcn.14018e810
mov rbx, rax
test rax, rax
jne 0x14017a48d
lea r8, str.Encryption_needs_passphrase
or rdx, 0xffffffffffffffff
mov rcx, rbp
call fcn.140187580
lea eax, [rbx - 0x19]
add rsp, 0x40
pop rdi
pop rbp
pop rbx
ret
lea rcx, [rsp + 0x20]
mov edx, 0xb
call fcn.14018e760
test eax, eax
je 0x14017a4c0
lea r8, str.Cant_generate_random_number_for_encryption
or rdx, 0xffffffffffffffff
mov rcx, rbp
call fcn.140187580
mov eax, 0xffffffe2
add rsp, 0x40
pop rdi
pop rbp
pop rbx
ret
mov qword [rsp + 0x70], rsi
or rax, 0xffffffffffffffff
mov qword [rsp + 0x78], r14
nop
inc rax
cmp byte [rbx + rax], 0
jne 0x14017a4d0
lea rcx, [rdi + 0x50]
mov r8, rax
mov rdx, rbx
call fcn.14017aa10
movzx eax, byte [rdi + 0x5d]
xor ebx, ebx
mov byte [rsp + 0x2b], al
lea r14d, [rbx + 0xc]
nop word [rax + rax]
movzx edx, byte [rsp + rbx + 0x20]
mov eax, dword [rdi + 0x58]
mov r8d, 1
or eax, 2
mov byte [rsp + 0x60], dl
mov ecx, eax
xor ecx, 1
imul ecx, eax
shr ecx, 8
xor cl, dl
lea rdx, [rsp + 0x60]
mov byte [rsp + rbx + 0x30], cl
mov ecx, dword [rdi + 0x50]
not ecx
call fcn.140177210
lea rdx, [rsp + 0x68]
mov r8d, 1
not eax
mov dword [rdi + 0x50], eax
movzx eax, al
add eax, dword [rdi + 0x54]
imul ecx, eax, 0x8088405
inc ecx
mov dword [rdi + 0x54], ecx
mov ecx, dword [rdi + 0x58]
movzx eax, byte [rdi + 0x57]
not ecx
mov byte [rsp + 0x68], al
call fcn.140177210
lea rbx, [rbx + 1]
not eax
mov dword [rdi + 0x58], eax
dec r14
jne 0x14017a500
lea r8d, [r14 + 0xc]
lea rdx, [rsp + 0x30]
mov rcx, rbp
call fcn.1401832c0
mov r14, qword [rsp + 0x78]
mov rsi, qword [rsp + 0x70]
test eax, eax
jne 0x14017a5a2
add qword [rdi + 0xb0], 0xc
add qword [rdi + 0x18], 0xc
add rsp, 0x40
pop rdi
pop rbp
pop rbx
ret
Function at 0x14017a940
Capabilities:
Encode data using xor
Generate random numbers using the delphi lcg

Disassembly:
push rbx
push rsi
push rdi
sub rsp, 0x20
mov rax, qword [rsp + 0x60]
mov rdi, r9
mov rsi, rdx
cmp r8, rax
mov rbx, rcx
cmovb eax, r8d
test eax, eax
je 0x14017aa06
mov qword [rsp + 0x40], rbp
mov qword [rsp + 0x48], r14
sub rsi, r9
mov r14d, eax
mov ebp, eax
nop word [rax + rax]
movzx edx, byte [rsi + rdi]
mov eax, dword [rbx + 8]
mov r8d, 1
or eax, 2
mov byte [rsp + 0x60], dl
mov ecx, eax
xor ecx, 1
imul ecx, eax
shr ecx, 8
xor cl, dl
lea rdx, [rsp + 0x60]
mov byte [rdi], cl
mov ecx, dword [rbx]
not ecx
call fcn.140177210
lea rdx, [rsp + 0x50]
mov r8d, 1
not eax
mov dword [rbx], eax
movzx eax, al
add eax, dword [rbx + 4]
imul ecx, eax, 0x8088405
inc ecx
mov dword [rbx + 4], ecx
mov ecx, dword [rbx + 8]
movzx eax, byte [rbx + 7]
not ecx
mov byte [rsp + 0x50], al
call fcn.140177210
lea rdi, [rdi + 1]
not eax
mov dword [rbx + 8], eax
dec rbp
jne 0x14017a980
mov rbp, qword [rsp + 0x40]
mov eax, r14d
mov r14, qword [rsp + 0x48]
add rsp, 0x20
pop rdi
pop rsi
pop rbx
ret
xor eax, eax
add rsp, 0x20
pop rdi
pop rsi
pop rbx
ret

Function at 0x14017aa10
Capabilities:
Generate random numbers using the delphi lcg

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x20], rsi
push rdi
sub rsp, 0x20
mov rdi, r8
mov rsi, rdx
mov rbx, rcx
mov dword [rcx], 0x12345678
mov dword [rcx + 4], 0x23456789
mov dword [rcx + 8], 0x34567890
test r8, r8
je 0x14017aa9c
mov ecx, dword [rbx]
movzx eax, byte [rsi]
lea rdx, [rsp + 0x30]
not ecx
mov r8d, 1
mov byte [rsp + 0x30], al
call fcn.140177210
lea rdx, [rsp + 0x40]
mov r8d, 1
not eax
mov dword [rbx], eax
movzx eax, al
add eax, dword [rbx + 4]
imul ecx, eax, 0x8088405
inc ecx
mov dword [rbx + 4], ecx
mov ecx, dword [rbx + 8]
movzx eax, byte [rbx + 7]
not ecx
mov byte [rsp + 0x40], al
call fcn.140177210
lea rsi, [rsi + 1]
not eax
mov dword [rbx + 8], eax
dec rdi
jne 0x14017aa41
mov rbx, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x48]
xor eax, eax
add rsp, 0x20
pop rdi
ret

Function at 0x14017e0b0
Capabilities:
Encode data using xor
Generate random numbers using the delphi lcg

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x20], rsi
push rdi
sub rsp, 0x20
mov rax, qword [rsp + 0x50]
mov rdi, r9
mov rsi, rdx
cmp r8, rax
mov rbx, rcx
cmovb eax, r8d
test eax, eax
je 0x14017e155
mov qword [rsp + 0x30], rbp
sub rsi, r9
mov ebp, eax
mov eax, dword [rbx + 8]
lea rdx, [rsp + 0x50]
mov r8d, 1
or eax, 2
mov ecx, eax
xor ecx, 1
imul ecx, eax
shr ecx, 8
xor cl, byte [rsi + rdi]
mov byte [rdi], cl
mov byte [rsp + 0x50], cl
mov ecx, dword [rbx]
not ecx
call fcn.140177210
lea rdx, [rsp + 0x40]
mov r8d, 1
not eax
mov dword [rbx], eax
movzx eax, al
add eax, dword [rbx + 4]
imul ecx, eax, 0x8088405
inc ecx
mov dword [rbx + 4], ecx
mov ecx, dword [rbx + 8]
movzx eax, byte [rbx + 7]
not ecx
mov byte [rsp + 0x40], al
call fcn.140177210
lea rdi, [rdi + 1]
not eax
mov dword [rbx + 8], eax
dec rbp
jne 0x14017e0e2
mov rbp, qword [rsp + 0x30]
mov rbx, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x48]
add rsp, 0x20
pop rdi
ret
Function at 0x14017e170
Capabilities:
Encode data using xor
Generate random numbers using the delphi lcg

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
sub rsp, 0x40
cmp qword [rsp + 0x70], 0xc
mov rbp, r9
mov rsi, r8
mov rdi, rdx
mov rbx, rcx
jae 0x14017e1a8
mov rax, qword [rsp + 0x78]
mov byte [rax], 0xff
or eax, 0xffffffff
jmp 0x14017e2ac
mov dword [rcx], 0x12345678
mov dword [rcx + 4], 0x23456789
mov dword [rcx + 8], 0x34567890
test r8, r8
je 0x14017e21c
mov ecx, dword [rbx]
movzx eax, byte [rdi]
lea rdx, [rsp + 0x70]
not ecx
mov r8d, 1
mov byte [rsp + 0x70], al
call fcn.140177210
lea rdx, [rsp + 0x20]
mov r8d, 1
not eax
mov dword [rbx], eax
movzx eax, al
add eax, dword [rbx + 4]
imul ecx, eax, 0x8088405
inc ecx
mov dword [rbx + 4], ecx
mov ecx, dword [rbx + 8]
movzx eax, byte [rbx + 7]
not ecx
mov byte [rsp + 0x20], al
call fcn.140177210
lea rdi, [rdi + 1]
not eax
mov dword [rbx + 8], eax
dec rsi
jne 0x14017e1c1
lea rax, [rsp + 0x28]
lea rdi, [rsp + 0x28]
mov esi, 0xc
sub rbp, rax
nop
mov eax, dword [rbx + 8]
lea rdx, [rsp + 0x70]
mov r8d, 1
or eax, 2
mov ecx, eax
xor ecx, 1
imul ecx, eax
shr ecx, 8
xor cl, byte [rdi + rbp]
mov byte [rdi], cl
mov byte [rsp + 0x70], cl
mov ecx, dword [rbx]
not ecx
call fcn.140177210
lea rdx, [rsp + 0x20]
mov r8d, 1
not eax
mov dword [rbx], eax
movzx eax, al
add eax, dword [rbx + 4]
imul ecx, eax, 0x8088405
inc ecx
mov dword [rbx + 4], ecx
mov ecx, dword [rbx + 8]
movzx eax, byte [rbx + 7]
not ecx
mov byte [rsp + 0x20], al
call fcn.140177210
lea rdi, [rdi + 1]
not eax
mov dword [rbx + 8], eax
dec rsi
jne 0x14017e230
movzx eax, byte [rsp + 0x33]
mov rcx, qword [rsp + 0x78]
mov byte [rcx], al
xor eax, eax
mov rbx, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x58]
mov rsi, qword [rsp + 0x60]
add rsp, 0x40
pop rdi
ret
Function at 0x1401870c0
Capabilities:
Terminate process

Disassembly:
mov qword [rsp + 8], rbx
push rdi
sub rsp, 0x20
mov r8d, 0x24
mov rbx, rdx
mov edi, ecx
lea ecx, [r8 - 0x22]
lea rdx, str.Fatal_Internal_Error_in_libarchive:
call fcn.14018e220
or r8, 0xffffffffffffffff
nop dword [rax]
inc r8
cmp byte [rbx + r8], 0
jne 0x1401870f0
mov rdx, rbx
mov ecx, 2
call fcn.14018e220
mov r8d, 1
lea rdx, [0x14023d554]
lea ecx, [r8 + 1]
call fcn.14018e220
mov ecx, edi
call qword [sym.imp.msvcrt.dll_exit]
int3
Function at 0x140188a80
Capabilities:
Terminate process

Disassembly:
sub rsp, 0x28
mov r8, qword [rdx + 8]
mov rdx, qword [rdx]
call fcn.140188580
test rax, rax
jne 0x140188aa8
lea rdx, str.Out_of_memory
lea ecx, [rax + 1]
add rsp, 0x28
jmp fcn.1401870c0
add rsp, 0x28
ret
Function at 0x14018db20
Capabilities:
Read file on windows

Disassembly:
mov qword [rsp + 0x10], rbx
push rdi
sub rsp, 0x30
mov eax, 0xffffffff
mov rbx, r8
mov rdi, rdx
cmp r8, rax
cmova rbx, rax
test ecx, ecx
jns 0x14018db5b
call qword [sym.imp.msvcrt.dll__errno]
mov dword [rax], 9
or rax, 0xffffffffffffffff
mov rbx, qword [rsp + 0x48]
add rsp, 0x30
pop rdi
ret
test rbx, rbx
jne 0x14018db6d
xor eax, eax
mov rbx, qword [rsp + 0x48]
add rsp, 0x30
pop rdi
ret
call qword [sym.imp.msvcrt.dll__get_osfhandle]
lea r9, [rsp + 0x40]
mov r8d, ebx
mov rdx, rdi
mov rcx, rax
mov qword [rsp + 0x20], 0
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x14018dbf7
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xe8
jne 0x14018dbbc
call qword [sym.imp.msvcrt.dll__errno]
mov dword [rax], 0xb
or rax, 0xffffffffffffffff
mov rbx, qword [rsp + 0x48]
add rsp, 0x30
pop rdi
ret
cmp eax, 0x6d
je 0x14018db60
cmp eax, 5
jne 0x14018dbe1
call qword [sym.imp.msvcrt.dll__errno]
mov dword [rax], 9
or rax, 0xffffffffffffffff
mov rbx, qword [rsp + 0x48]
add rsp, 0x30
pop rdi
ret
mov ecx, eax
call fcn.14018d760
or rax, 0xffffffffffffffff
mov rbx, qword [rsp + 0x48]
add rsp, 0x30
pop rdi
ret
mov eax, dword [rsp + 0x40]
mov rbx, qword [rsp + 0x48]
add rsp, 0x30
pop rdi
ret

Function at 0x14018e220
Capabilities:
Write file on windows

Disassembly:
mov qword [rsp + 0x10], rbx
push rdi
sub rsp, 0x30
mov eax, 0xffffffff
mov rbx, r8
mov rdi, rdx
cmp r8, rax
cmova rbx, rax
test ecx, ecx
jns 0x14018e25b
call qword [sym.imp.msvcrt.dll__errno]
mov dword [rax], 9
or rax, 0xffffffffffffffff
mov rbx, qword [rsp + 0x48]
add rsp, 0x30
pop rdi
ret
call qword [sym.imp.msvcrt.dll__get_osfhandle]
lea r9, [rsp + 0x40]
mov r8d, ebx
mov rdx, rdi
mov rcx, rax
mov qword [rsp + 0x20], 0
call qword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
jne 0x14018e2be
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 5
jne 0x14018e2a8
call qword [sym.imp.msvcrt.dll__errno]
mov dword [rax], 9
or rax, 0xffffffffffffffff
mov rbx, qword [rsp + 0x48]
add rsp, 0x30
pop rdi
ret
mov ecx, eax
call fcn.14018d760
or rax, 0xffffffffffffffff
mov rbx, qword [rsp + 0x48]
add rsp, 0x30
pop rdi
ret
mov eax, dword [rsp + 0x40]
mov rbx, qword [rsp + 0x48]
add rsp, 0x30
pop rdi
ret
Function at 0x14018e760
Capabilities:
Create new key via cryptacquirecontext
Generate random numbers via winapi

Disassembly:
mov qword [rsp + 8], rbx
push rdi
sub rsp, 0x30
mov rdi, rcx
mov rbx, rdx
lea rcx, [rsp + 0x50]
mov r9d, 1
xor r8d, r8d
xor edx, edx
mov dword [rsp + 0x20], 0xf0000000
call qword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
test eax, eax
jne 0x14018e7c1
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x80090016
jne 0x14018e7f1
lea rcx, [rsp + 0x50]
mov r9d, 1
xor r8d, r8d
xor edx, edx
mov dword [rsp + 0x20], 8
call qword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
test eax, eax
je 0x14018e7f1
mov rcx, qword [rsp + 0x50]
mov r8, rdi
mov edx, ebx
call qword [sym.imp.ADVAPI32.dll_CryptGenRandom]
mov rcx, qword [rsp + 0x50]
xor edx, edx
mov ebx, eax
call qword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
test ebx, ebx
je 0x14018e7f1
xor eax, eax
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
mov eax, 0xffffffe7
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret