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

Disassembly:
sub rsp, 0x308
mov rax, qword [0x18002d000]
xor rax, rsp
mov qword [rsp + 0x2f0], rax
lea rdx, [rsp + 0x258]
sub rdx, rcx
nop word [rax + rax]
movzx eax, word [rcx]
add rcx, 2
mov word [rdx + rcx - 2], ax
test ax, ax
jne 0x18001c520
mov ecx, dword [0x18002dbb0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov qword [rsp + 0x38], 0
lea r8, [rsp + 0x50]
mov rcx, rax
lea rax, [rsp + 0x40]
mov r9d, 0x2a0
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x50]
mov edx, 0x2201cc
mov dword [rsp + 0x28], 0x2a0
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
mov ecx, dword [rsp + 0x2de]
test eax, eax
mov edx, 1
cmove ecx, edx
mov eax, ecx
mov rcx, qword [rsp + 0x2f0]
xor rcx, rsp
call fcn.18000ee20
add rsp, 0x308
ret

Function at 0x18001c5b0
Capabilities:
Get thread local storage value

Disassembly:
sub rsp, 0x308
mov rax, qword [0x18002d000]
xor rax, rsp
mov qword [rsp + 0x2f0], rax
lea r8, [rsp + 0x258]
sub r8, rcx
nop word [rax + rax]
movzx eax, word [rcx]
add rcx, 2
mov word [r8 + rcx - 2], ax
test ax, ax
jne 0x18001c5e0
mov ecx, dword [0x18002dbb0]
mov byte [rsp + 0x2eb], dl
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov qword [rsp + 0x38], 0
lea r8, [rsp + 0x50]
mov rcx, rax
lea rax, [rsp + 0x40]
mov r9d, 0x2a0
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x50]
mov edx, 0x2201fc
mov dword [rsp + 0x28], 0x2a0
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
mov ecx, dword [rsp + 0x2de]
test eax, eax
mov edx, 1
cmove ecx, edx
mov eax, ecx
mov rcx, qword [rsp + 0x2f0]
xor rcx, rsp
call fcn.18000ee20
add rsp, 0x308
ret

Function at 0x18001c680
Capabilities:
Get thread local storage value

Disassembly:
sub rsp, 0x308
mov rax, qword [0x18002d000]
xor rax, rsp
mov qword [rsp + 0x2f0], rax
lea rdx, [rsp + 0x258]
sub rdx, rcx
nop word [rax + rax]
movzx eax, word [rcx]
add rcx, 2
mov word [rdx + rcx - 2], ax
test ax, ax
jne 0x18001c6b0
mov ecx, dword [0x18002dbb0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov qword [rsp + 0x38], 0
lea r8, [rsp + 0x50]
mov rcx, rax
lea rax, [rsp + 0x40]
mov r9d, 0x2a0
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x50]
mov edx, 0x2201c8
mov dword [rsp + 0x28], 0x2a0
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
mov ecx, dword [rsp + 0x2de]
test eax, eax
mov edx, 1
cmove ecx, edx
mov eax, ecx
mov rcx, qword [rsp + 0x2f0]
xor rcx, rsp
call fcn.18000ee20
add rsp, 0x308
ret
Function at 0x18001c740
Capabilities:
Get thread local storage value

Disassembly:
sub rsp, 0x308
mov rax, qword [0x18002d000]
xor rax, rsp
mov qword [rsp + 0x2f0], rax
lea r8, [rsp + 0x258]
sub r8, rcx
nop word [rax + rax]
movzx eax, word [rcx]
add rcx, 2
mov word [r8 + rcx - 2], ax
test ax, ax
jne 0x18001c770
mov ecx, dword [0x18002dbb0]
mov byte [rsp + 0x2eb], dl
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov qword [rsp + 0x38], 0
lea r8, [rsp + 0x50]
mov rcx, rax
lea rax, [rsp + 0x40]
mov r9d, 0x2a0
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x50]
mov edx, 0x2201c4
mov dword [rsp + 0x28], 0x2a0
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
mov ecx, dword [rsp + 0x2de]
test eax, eax
mov edx, 1
cmove ecx, edx
mov eax, ecx
mov rcx, qword [rsp + 0x2f0]
xor rcx, rsp
call fcn.18000ee20
add rsp, 0x308
ret

Function at 0x18001c810
Capabilities:
Get thread local storage value

Disassembly:
push rbx
sub rsp, 0x300
mov rax, qword [0x18002d000]
xor rax, rsp
mov qword [rsp + 0x2f0], rax
mov rbx, rcx
xor edx, edx
lea rcx, str.ArcNamemulti_0_disk_0_rdisk_0_partition_1_
nop word [rax + rax]
movzx eax, word [rdx + rcx]
add rdx, 2
mov word [rsp + rdx + 0x256], ax
test ax, ax
jne 0x18001c840
mov ecx, dword [0x18002dbb0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov qword [rsp + 0x38], 0
lea r8, [rsp + 0x50]
mov rcx, rax
lea rax, [rsp + 0x40]
mov r9d, 0x2a0
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x50]
mov edx, 0x2201d0
mov dword [rsp + 0x28], 0x2a0
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x18001c8d4
mov eax, dword [rsp + 0x2de]
test eax, eax
jne 0x18001c8d9
lea rcx, [rsp + 0x258]
lea rdx, [rsp + 0x258]
sub rbx, rcx
movzx ecx, word [rdx]
add rdx, 2
mov word [rbx + rdx - 2], cx
test cx, cx
jne 0x18001c8c1
jmp 0x18001c8d9
mov eax, 1
mov rcx, qword [rsp + 0x2f0]
xor rcx, rsp
call fcn.18000ee20
add rsp, 0x300
pop rbx
ret
Function at 0x18001c900
Capabilities:
Get thread local storage value

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
sub rsp, 0x300
mov rax, qword [0x18002d000]
xor rax, rsp
mov qword [rsp + 0x2f0], rax
mov rsi, rdx
mov edx, 0x7d
mov rbx, rcx
call qword [sym.imp.msvcrt.dll_wcschr]
xor ebp, ebp
mov rdx, rsi
mov r8, rbx
lea rdi, [rsi + 0x210]
mov word [rax + 2], bp
sub rdx, rbx
movzx eax, word [r8]
add r8, 2
mov word [rdx + r8 + 0x20e], ax
test ax, ax
jne 0x18001c948
mov edx, 0x7b
mov rcx, rbx
call qword [sym.imp.msvcrt.dll_wcschr]
lea r8, str.__Volume_s
lea rcx, [rsp + 0x258]
mov r9, rax
mov edx, 0x41
call qword [sym.imp.msvcrt.dll__snwprintf]
mov ecx, dword [0x18002dbb0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov qword [rsp + 0x38], rbp
lea r8, [rsp + 0x50]
mov rcx, rax
lea rax, [rsp + 0x40]
mov r9d, 0x2a0
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x50]
mov edx, 0x2201d0
mov dword [rsp + 0x28], 0x2a0
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x18001ca85
cmp dword [rsp + 0x2de], ebp
jne 0x18001ca85
lea rax, [rsp + 0x258]
mov rdx, rsi
lea rcx, [rsp + 0x258]
sub rdx, rax
nop word [rax + rax]
movzx eax, word [rcx]
add rcx, 2
mov word [rdx + rcx + 6], ax
test ax, ax
jne 0x18001ca00
mov ecx, dword [0x18002dbb0]
lea rbx, [rsi + 0x418]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov qword [rsp + 0x38], rbp
lea r8, [rsp + 0x50]
mov rcx, rax
lea rax, [rsp + 0x40]
mov r9d, 0x2a0
mov qword [rsp + 0x30], rax
mov edx, 0x2201ac
mov dword [rsp + 0x28], 0x22c
mov qword [rsp + 0x20], rbx
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x18001ca85
lea rdx, [rsi + 0x43c]
cmp word [rdx], bp
jne 0x18001ca81
sub rdx, rdi
nop dword [rax]
movzx ecx, word [rdi]
add rdi, 2
mov word [rdx + rdi - 2], cx
test cx, cx
jne 0x18001ca70
mov eax, ebp
jmp 0x18001ca8a
mov eax, 1
mov rcx, qword [rsp + 0x2f0]
xor rcx, rsp
call fcn.18000ee20
mov rbx, qword [rsp + 0x330]
add rsp, 0x300
pop rdi
pop rsi
pop rbp
ret
Function at 0x18001cac0
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push r12
sub rsp, 0x50
mov r12d, ecx
mov ecx, dword [0x18002dbb0]
mov rdi, r9
mov esi, r8d
mov rbp, rdx
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rbx, rax
test rax, rax
jne 0x18001cb3f
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], eax
lea rcx, str..dcrypt
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov dword [rsp + 0x20], 3
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov rbx, rax
cmp rax, 0xffffffffffffffff
jne 0x18001cb30
mov eax, 0x591
jmp 0x18001cb82
mov ecx, dword [0x18002dbb0]
mov rdx, rax
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
lea rax, [rsp + 0x40]
mov qword [rsp + 0x38], 0
mov r9d, esi
mov qword [rsp + 0x30], rax
mov eax, dword [rsp + 0x80]
mov r8, rbp
mov dword [rsp + 0x28], eax
mov edx, r12d
mov rcx, rbx
mov qword [rsp + 0x20], rdi
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
jne 0x18001cb80
call qword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x18001cb82
xor eax, eax
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x70]
mov rdi, qword [rsp + 0x78]
add rsp, 0x50
pop r12
ret

Function at 0x18001cbb0
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
sub rsp, 0x28
mov ecx, dword [0x18002dbb0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [0x18002dbb0]
xor edx, edx
add rsp, 0x28
jmp qword [sym.imp.KERNEL32.dll_TlsSetValue]
Function at 0x18001cc60
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x20], rsi
push rdi
sub rsp, 0x50
mov rdi, rcx
xor ecx, ecx
mov edx, 0x2a0
lea r9d, [rcx + 4]
mov r8d, 0x3000
mov dword [rsp + 0x48], 0x2a0
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov qword [rsp + 0x40], rax
test rax, rax
je 0x18001cdc5
mov ecx, dword [0x18002dbb0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
xor esi, esi
mov rbx, rax
test rax, rax
jne 0x18001ccf3
mov qword [rsp + 0x30], rsi
lea rcx, str..dcrypt
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov dword [rsp + 0x28], esi
mov dword [rsp + 0x20], 3
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov rbx, rax
cmp rax, 0xffffffffffffffff
je 0x18001cd32
mov ecx, dword [0x18002dbb0]
mov rdx, rax
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
mov qword [rsp + 0x38], rsi
lea rax, [rsp + 0x68]
lea r8, [rsp + 0x40]
mov qword [rsp + 0x30], rax
mov r9d, 0xc
mov edx, 0x2201f0
mov rcx, rbx
mov dword [rsp + 0x28], esi
mov qword [rsp + 0x20], rsi
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
jne 0x18001cd42
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
je 0x18001cd42
mov rcx, qword [rsp + 0x40]
mov edx, 0x2a0
call qword [sym.imp.KERNEL32.dll_VirtualLock]
mov rbx, qword [rsp + 0x40]
test rbx, rbx
je 0x18001cdc5
mov rcx, rbx
mov rdx, rdi
mov r8d, 0x104
call sub.msvcrt.dll_memcpy
mov ecx, dword [0x18002dbb0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov qword [rsp + 0x38], rsi
mov r9d, 0x2a0
mov rcx, rax
lea rax, [rsp + 0x70]
mov r8, rbx
mov qword [rsp + 0x30], rax
mov edx, 0x220194
mov dword [rsp + 0x28], 0x2a0
mov qword [rsp + 0x20], rbx
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
mov edi, 1
test eax, eax
je 0x18001cdab
mov edi, dword [rbx + 0x28e]
mov rcx, rbx
call sym.dcapi.dll_secure_free
mov eax, edi
mov rbx, qword [rsp + 0x60]
mov rsi, qword [rsp + 0x78]
add rsp, 0x50
pop rdi
ret
mov rbx, qword [rsp + 0x60]
mov rsi, qword [rsp + 0x78]
mov eax, 9
add rsp, 0x50
pop rdi
ret

Function at 0x18001cde0
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push rbx
sub rsp, 0x40
mov ecx, dword [0x18002dbb0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rbx, rax
test rax, rax
jne 0x18001ce38
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], eax
lea rcx, str..dcrypt
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov dword [rsp + 0x20], 3
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov rbx, rax
cmp rax, 0xffffffffffffffff
je 0x18001ce7f
mov ecx, dword [0x18002dbb0]
mov rdx, rax
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
mov qword [rsp + 0x38], 0
lea rax, [rsp + 0x58]
xor r9d, r9d
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x50]
xor r8d, r8d
mov edx, 0x220190
mov rcx, rbx
mov dword [rsp + 0x28], 4
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
jne 0x18001ce87
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
je 0x18001ce87
xor eax, eax
add rsp, 0x40
pop rbx
ret
mov eax, dword [rsp + 0x50]
add rsp, 0x40
pop rbx
ret
Function at 0x18001cfb0
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
push r12
push r13
sub rsp, 0x60
mov rbx, rcx
xor ecx, ecx
mov esi, r9d
mov rbp, r8
mov r12, rdx
lea r9d, [rcx + 4]
mov edx, 0x2a0
mov r8d, 0x3000
mov dword [rsp + 0x50], 0x2a0
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov qword [rsp + 0x48], rax
test rax, rax
je 0x18001d181
mov ecx, dword [0x18002dbb0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
xor r13d, r13d
mov rdi, rax
test rax, rax
jne 0x18001d057
mov qword [rsp + 0x30], r13
lea rcx, str..dcrypt
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov dword [rsp + 0x28], r13d
mov dword [rsp + 0x20], 3
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov rdi, rax
cmp rax, 0xffffffffffffffff
je 0x18001d097
mov ecx, dword [0x18002dbb0]
mov rdx, rax
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
mov qword [rsp + 0x38], r13
lea rax, [rsp + 0x40]
lea r8, [rsp + 0x48]
mov qword [rsp + 0x30], rax
mov r9d, 0xc
mov edx, 0x2201f0
mov rcx, rdi
mov dword [rsp + 0x28], r13d
mov qword [rsp + 0x20], r13
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
jne 0x18001d0a7
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
je 0x18001d0a7
mov rcx, qword [rsp + 0x48]
mov edx, 0x2a0
call qword [sym.imp.KERNEL32.dll_VirtualLock]
mov rdi, qword [rsp + 0x48]
test rdi, rdi
je 0x18001d181
lea rcx, [rdi + 0x208]
nop dword [rax]
movzx eax, word [rbx]
add rcx, 2
add rbx, 2
mov word [rcx - 2], ax
test ax, ax
jne 0x18001d0c0
mov rcx, rdi
mov rdx, r12
mov r8d, 0x104
call sub.msvcrt.dll_memcpy
movzx r11d, word [rbp]
mov ecx, dword [0x18002dbb0]
mov word [rdi + 0x29a], r11w
mov dword [rdi + 0x296], esi
mov dword [rdi + 0x29c], 0xffffffff
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov qword [rsp + 0x38], r13
mov r9d, 0x2a0
mov rcx, rax
lea rax, [rsp + 0x44]
mov r8, rdi
mov qword [rsp + 0x30], rax
mov edx, 0x2201b8
mov dword [rsp + 0x28], 0x2a0
mov qword [rsp + 0x20], rdi
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
jne 0x18001d16d
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea r8, str.DeviceIoControl:__d
lea rcx, str.drv_ioctl.c
mov r9d, eax
mov edx, 0x1b6
call sym.dcapi.dll_log_print
mov ebx, 1
jmp 0x18001d173
mov ebx, dword [rdi + 0x28e]
mov rcx, rdi
call sym.dcapi.dll_secure_free
test ebx, ebx
jne 0x18001d186
jmp 0x18001d1a1
mov ebx, 9
lea r8, str.dc_start_encrypt_errorcode:__d
lea rcx, str.drv_ioctl.c
mov r9d, ebx
mov edx, 0x1c2
call sym.dcapi.dll_log_print
lea r11, [rsp + 0x60]
mov eax, ebx
mov rbx, qword [r11 + 0x20]
mov rbp, qword [r11 + 0x28]
mov rsi, qword [r11 + 0x30]
mov rsp, r11
pop r13
pop r12
pop rdi
ret
Function at 0x18001d1d0
Capabilities:
Set thread local storage value

Disassembly:
sub rsp, 0x48
xor eax, eax
lea rcx, str..dcrypt
xor r9d, r9d
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], eax
xor r8d, r8d
xor edx, edx
mov dword [rsp + 0x20], 3
call qword [sym.imp.KERNEL32.dll_CreateFileW]
cmp rax, 0xffffffffffffffff
je 0x18001d218
mov ecx, dword [0x18002dbb0]
mov rdx, rax
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
xor eax, eax
add rsp, 0x48
ret
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea r8, str.Error_in_CreateFile:_0x_X_n
lea rcx, str.drv_ioctl.c
mov r9d, eax
mov edx, 0x2c
call sym.dcapi.dll_log_print
mov eax, 1
add rsp, 0x48
ret
Function at 0x18001e1e0
Capabilities:
Encode data using xor
Get thread local storage value
Hash data with crc32

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x20], rbp
push rsi
sub rsp, 0x740
mov rax, qword [0x18002d000]
xor rax, rsp
mov qword [rsp + 0x730], rax
mov rbx, rcx
mov ecx, dword [0x18002dbb0]
mov ebp, edx
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
lea r8, [rsp + 0x258]
mov qword [rsp + 0x48], 0
mov rsi, rax
sub r8, rbx
nop dword [rax]
movzx ecx, word [rbx]
add rbx, 2
mov word [r8 + rbx - 2], cx
test cx, cx
jne 0x18001e230
mov qword [rsp + 0x38], 0
lea rax, [rsp + 0x40]
lea r8, [rsp + 0x50]
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x2f0]
mov r9d, 0x2a0
mov edx, 0x2201ac
mov rcx, rsi
mov dword [rsp + 0x28], 0x22c
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x18001e407
test byte [rsp + 0x300], 0x14
jne 0x18001e407
cmp dword [rsp + 0x30c], 0
jne 0x18001e407
mov ebx, 1
lea rcx, [rsp + 0x48]
mov edx, ebx
call sym.dcapi.dll_checker_dc_obtain_structure_info
cmp eax, ebx
je 0x18001e40c
mov qword [rsp + 0x750], rdi
mov rdi, qword [rsp + 0x48]
or r8d, 0xffffffff
lea r9d, [rbx + 7]
lea r11, [0x180027090]
lea r10, [rdi + 1]
movzx ecx, byte [r10 - 1]
movzx eax, r8b
shr r8d, 8
xor rcx, rax
add r10, 4
mov edx, dword [r11 + rcx*4]
movzx ecx, byte [r10 - 4]
xor edx, r8d
movzx eax, dl
shr edx, 8
xor rcx, rax
mov r8d, dword [r11 + rcx*4]
movzx ecx, byte [r10 - 3]
xor r8d, edx
movzx eax, r8b
shr r8d, 8
xor rcx, rax
mov edx, dword [r11 + rcx*4]
movzx ecx, byte [r10 - 2]
xor edx, r8d
movzx eax, dl
shr edx, 8
xor rcx, rax
mov r8d, dword [r11 + rcx*4]
xor r8d, edx
dec r9
jne 0x18001e2e0
mov qword [rsp + 0x38], r9
mov eax, 0x10624dd3
mov rcx, rsi
mov r9d, 0x2a0
mov dword [rsp + 0x2da], ebp
mul r8d
shr edx, 6
lea rax, [rsp + 0x40]
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x50]
mov dword [rsp + 0x28], 0x2a0
imul edx, edx, 0x3e8
sub r8d, edx
mov edx, 0x2201a4
mov qword [rsp + 0x20], rax
mov dword [rsp + 0x2ec], r8d
lea r8, [rsp + 0x50]
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
mov esi, eax
test rdi, rdi
je 0x18001e3ae
mov rcx, rdi
call qword [sym.imp.msvcrt.dll_free]
mov rdi, qword [rsp + 0x750]
test esi, esi
je 0x18001e40c
mov ebx, dword [rsp + 0x2de]
test ebx, ebx
jne 0x18001e40c
test bpl, 8
jne 0x18001e3d5
test byte [rsp + 0x304], 8
je 0x18001e40c
lea r9, [rsp + 0x314]
lea r8, [0x1800216c0]
lea rcx, [rsp + 0x520]
mov edx, 0x104
call qword [sym.imp.msvcrt.dll__snwprintf]
lea rcx, [rsp + 0x520]
call qword [sym.imp.KERNEL32.dll_DeleteVolumeMountPointW]
jmp 0x18001e40c
mov ebx, 8
mov eax, ebx
mov rcx, qword [rsp + 0x730]
xor rcx, rsp
call fcn.18000ee20
lea r11, [rsp + 0x740]
mov rbx, qword [r11 + 0x20]
mov rbp, qword [r11 + 0x28]
mov rsp, r11
pop rsi
ret
Function at 0x18001e970
Capabilities:
Enumerate disk volumes

Disassembly:
sub rsp, 0xaa8
mov rax, qword [0x18002d000]
xor rax, rsp
mov qword [rsp + 0xa90], rax
lea rcx, [rsp + 0x880]
mov edx, 0x104
call qword [sym.imp.KERNEL32.dll_FindFirstVolumeW]
mov qword [rsp + 0x20], rax
cmp rax, 0xffffffffffffffff
je 0x18001ea58
lea rdx, [rsp + 0x20]
lea rcx, [rsp + 0x880]
call fcn.18001c900
test eax, eax
je 0x18001ea10
mov rcx, qword [rsp + 0x20]
lea rdx, [rsp + 0x670]
mov r8d, 0x104
call qword [sym.imp.KERNEL32.dll_FindNextVolumeW]
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x12
je 0x18001ea4d
lea rdx, [rsp + 0x20]
lea rcx, [rsp + 0x670]
call fcn.18001c900
test eax, eax
je 0x18001ea10
lea rcx, [rsp + 0x20]
call sym.dcapi.dll_dc_next_volume
test eax, eax
jne 0x18001ea58
nop dword [rax]
test byte [rsp + 0x448], 1
je 0x18001ea29
lea rcx, [rsp + 0x28]
mov edx, 1
call sym.dcapi.dll_dc_unmount_volume
mov rcx, qword [rsp + 0x20]
lea rdx, [rsp + 0x670]
mov r8d, 0x104
call qword [sym.imp.KERNEL32.dll_FindNextVolumeW]
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x12
jne 0x18001e9e5
mov rcx, qword [rsp + 0x20]
call qword [sym.imp.KERNEL32.dll_FindVolumeClose]
xor eax, eax
mov rcx, qword [rsp + 0xa90]
xor rcx, rsp
call fcn.18000ee20
add rsp, 0xaa8
ret

Function at 0x18001ee50
Capabilities:
Get storage device properties

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x20], rsi
push rdi
sub rsp, 0x870
mov rax, qword [0x18002d000]
xor rax, rsp
mov qword [rsp + 0x860], rax
xor eax, eax
mov rbx, rcx
mov rdi, rdx
lea rcx, [rsp + 0x60]
xor edx, edx
mov r8d, 0x800
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x50], eax
call sub.msvcrt.dll_memset
xor esi, esi
lea rax, [rsp + 0x40]
lea r8, [rsp + 0x48]
mov qword [rsp + 0x38], rsi
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x60]
lea r9d, [rsi + 0xc]
mov edx, 0x2d1400
mov rcx, rbx
mov dword [rsp + 0x28], 0x800
mov qword [rsp + 0x48], rsi
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
jne 0x18001eedf
lea eax, [rsi + 1]
jmp 0x18001ef37
mov edx, dword [rsp + 0x6c]
mov byte [rdi], sil
mov r8, rdi
test edx, edx
je 0x18001ef05
mov byte [rdi], sil
jg 0x18001eef7
mov rax, rsi
jmp 0x18001ef01
lea rcx, [rsp + 0x60]
call fcn.18001ea80
lea r8, [rdi + rax]
mov edx, dword [rsp + 0x70]
test edx, edx
je 0x18001ef2e
cmp r8, rdi
je 0x18001ef1d
mov byte [r8], 0x20
mov edx, dword [rsp + 0x70]
inc r8
mov byte [r8], sil
test edx, edx
jle 0x18001ef2e
lea rcx, [rsp + 0x60]
call fcn.18001ea80
cmp byte [rdi], sil
sete sil
mov eax, esi
mov rcx, qword [rsp + 0x860]
xor rcx, rsp
call fcn.18000ee20
lea r11, [rsp + 0x870]
mov rbx, qword [r11 + 0x20]
mov rsi, qword [r11 + 0x28]
mov rsp, r11
pop rdi
ret
Function at 0x18001f070
Capabilities:
Allocate thread local storage
Get thread local storage value

Disassembly:
push rbx
sub rsp, 0x20
mov rbx, rcx
test edx, edx
je 0x18001f0f2
dec edx
je 0x18001f0af
cmp edx, 2
jne 0x18001f110
mov ecx, dword [0x18002dbb0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x18001f110
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, 1
add rsp, 0x20
pop rbx
ret
call qword [sym.imp.KERNEL32.dll_TlsAlloc]
mov dword [0x18002dbb0], eax
cmp eax, 0xffffffff
jne 0x18001f0c8
xor eax, eax
add rsp, 0x20
pop rbx
ret
lea r8, str.DISKCRYPTOR_MUTEX
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_CreateMutexW]
mov qword [0x18002dba8], rbx
mov qword [0x18002dac0], rax
mov eax, 1
add rsp, 0x20
pop rbx
ret
mov rcx, qword [0x18002dac0]
test rcx, rcx
je 0x18001f104
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [0x18002dbb0]
call qword [sym.imp.KERNEL32.dll_TlsFree]
mov eax, 1
add rsp, 0x20
pop rbx
ret

Function at 0x18001f130
Capabilities:
Extract resource via kernel32 functions

Disassembly:
mov qword [rsp + 8], rbx
push rdi
sub rsp, 0x20
mov rdi, rcx
mov rcx, qword [0x18002dba8]
lea r8, str.EXEFILE
movzx edx, dx
call qword [sym.imp.KERNEL32.dll_FindResourceW]
mov rbx, rax
test rax, rax
je 0x18001f192
mov rcx, qword [0x18002dba8]
mov rdx, rax
call qword [sym.imp.KERNEL32.dll_SizeofResource]
mov rcx, qword [0x18002dba8]
mov rdx, rbx
mov dword [rdi], eax
call qword [sym.imp.KERNEL32.dll_LoadResource]
mov rcx, rax
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
jmp qword [sym.imp.KERNEL32.dll_LockResource]
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
Function at 0x18001f760
Capabilities:
Create new key via cryptacquirecontext
Generate random numbers via winapi
Log keystrokes via application hook

Disassembly:
sub rsp, 0x268
mov rax, qword [0x18002d000]
xor rax, rsp
mov qword [rsp + 0x250], rax
mov edx, 0x2000
mov r9d, 4
mov r8d, 0x3000
xor ecx, ecx
mov dword [rsp + 0x40], 0x2000
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov qword [rsp + 0x38], rax
test rax, rax
je 0x18001f7db
xor r9d, r9d
lea rdx, [rsp + 0x38]
mov ecx, 0x2201f0
lea r8d, [r9 + 0xc]
mov dword [rsp + 0x20], 0
call sym.dcapi.dll_dc_device_control
test eax, eax
je 0x18001f7d6
mov rcx, qword [rsp + 0x38]
mov edx, 0x2000
call qword [sym.imp.KERNEL32.dll_VirtualLock]
mov rax, qword [rsp + 0x38]
mov qword [0x18002db40], rax
test rax, rax
jne 0x18001f804
mov eax, 9
mov rcx, qword [rsp + 0x250]
xor rcx, rsp
call fcn.18000ee20
add rsp, 0x268
ret
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
xor r8d, r8d
lea rdx, [0x18001f380]
lea ecx, [r8 + 7]
mov r9d, eax
call qword [sym.imp.USER32.dll_SetWindowsHookExW]
mov qword [0x18002db38], rax
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
xor r8d, r8d
lea ecx, [r8 + 2]
lea rdx, [0x18001f2c0]
mov r9d, eax
call qword [sym.imp.USER32.dll_SetWindowsHookExW]
lea rcx, [rsp + 0x30]
mov r9d, 1
xor r8d, r8d
xor edx, edx
mov dword [rsp + 0x20], 0
mov qword [0x18002db48], rax
call qword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
test eax, eax
jne 0x18001f88e
lea r9d, [rax + 1]
lea rcx, [rsp + 0x30]
xor r8d, r8d
xor edx, edx
mov dword [rsp + 0x20], 8
call qword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
test eax, eax
je 0x18001f8bf
mov rcx, qword [rsp + 0x30]
lea r8, [rsp + 0x50]
mov edx, 0x200
call qword [sym.imp.ADVAPI32.dll_CryptGenRandom]
lea rcx, [rsp + 0x50]
mov edx, 0x200
call fcn.18001f1f0
mov rcx, qword [rsp + 0x30]
xor edx, edx
call qword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
call sym.dcapi.dll_rnd_reseed_now
xor eax, eax
mov rcx, qword [rsp + 0x250]
xor rcx, rsp
call fcn.18000ee20
add rsp, 0x268
ret