joyce8/EMBER2024-capa huggingface dataset:
Function at 0x1800119d0
Capabilities:
Check if file exists
Get common file path
Get file attributes

Disassembly:
push rbx
sub rsp, 0x450
mov rax, qword [0x18009c160]
xor rax, rsp
mov qword [rsp + 0x440], rax
lea rcx, [rsp + 0x232]
xor ebx, ebx
xor edx, edx
mov r8d, 0x206
mov word [rsp + 0x230], bx
call fcn.18001ab30
lea rcx, [rsp + 0x230]
mov edx, 0x103
call qword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
lea rcx, [rsp + 0x22]
xor edx, edx
mov r8d, 0x206
mov word [rsp + 0x20], bx
call fcn.18001ab30
call fcn.18002ff20
test eax, eax
je 0x180011b6c
lea r9, [0x180080e20]
lea r8, [rsp + 0x230]
lea rdx, str._s_s
lea rcx, [rsp + 0x20]
call fcn.180019b90
lea rcx, [rsp + 0x20]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x180011a79
lea eax, [rbx + 1]
jmp 0x180011b6e
xor edx, edx
lea rcx, [rsp + 0x20]
mov qword [rsp + 0x460], rdi
lea r8d, [rdx + 1]
call qword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov rdi, rax
test rax, rax
je 0x180011aba
lea rdx, str.HAFInitShareSeg
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
je 0x180011ab1
call rax
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
call fcn.180011c40
lea r9, reloc.WS2_32.dll_connect
mov rdi, rbx
mov r8, rbx
mov eax, ebx
mov rcx, r9
cmp dword [rcx], 4
je 0x180011ae3
inc eax
add rcx, 0x38
cmp eax, 1
jb 0x180011ad1
jmp 0x180011b04
movsxd rcx, eax
imul rcx, rcx, 0x38
mov rdx, qword [rcx + r9 + 8]
test rdx, rdx
je 0x180011b04
mov rax, qword [rcx + r9 + 0x10]
test rax, rax
je 0x180011b04
mov rdi, rdx
mov r8, rax
lea rcx, [0x1800b24a0]
mov r9d, 1
mov rdx, rdi
call fcn.180010f80
cmp dword [0x1800b24a8], ebx
je 0x180011b5f
mov ecx, dword [0x1800b24e8]
test ecx, ecx
jle 0x180011b55
mov rdx, qword [0x1800b24e0]
lea rax, [rdx + 8]
cmp qword [rax], rdi
je 0x180011b47
inc ebx
add rax, 0x18
cmp ebx, ecx
jl 0x180011b36
jmp 0x180011b55
movsxd rax, ebx
lea rcx, [rax + rax*2]
mov dword [rdx + rcx*8], 1
mov dword [0x1800b24d8], 1
mov rdi, qword [rsp + 0x460]
mov ebx, 1
mov eax, ebx
mov rcx, qword [rsp + 0x440]
xor rcx, rsp
call fcn.1800190b0
add rsp, 0x450
pop rbx
ret

Function at 0x180013ea0
Capabilities:
Extract resource via kernel32 functions

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
sub rsp, 0x20
mov ebx, edx
shr edx, 4
mov rsi, r9
inc dx
movzx r9d, r8w
mov rdi, rcx
movzx r8d, dx
mov edx, 6
and ebx, 0xf
call qword [sym.imp.KERNEL32.dll_FindResourceExW]
test rax, rax
je 0x180013f0b
mov rdx, rax
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_LoadResource]
mov rdx, rax
test rax, rax
je 0x180013f0b
xor ebp, ebp
mov eax, ebp
movzx ecx, word [rdx]
add rdx, 2
cmp ebx, eax
je 0x180013f22
inc eax
lea rdx, [rdx + rcx*2]
cmp eax, 0x10
jl 0x180013ef5
xor eax, eax
mov rbx, qword [rsp + 0x30]
mov rbp, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
ret
mov edi, dword [rsp + 0x50]
dec edi
cmp ecx, edi
cmovle edi, ecx
movsxd rcx, edi
lea rbx, [rcx + rcx]
mov rcx, rsi
mov r8, rbx
call fcn.18001a450
mov word [rbx + rsi], bp
mov eax, edi
jmp 0x180013f0d
Function at 0x1800162c0
Capabilities:
Query or enumerate registry value

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x18], rsi
push rdi
sub rsp, 0x40
mov rsi, r8
mov rdi, rcx
test rdx, rdx
je 0x1800162ee
or r9d, 0x20019
mov r8d, r9d
call fcn.180016220
mov rbx, rax
jmp 0x1800162f1
mov rbx, rcx
test rbx, rbx
je 0x180016397
lea rax, [rsp + 0x58]
lea r9, [rsp + 0x30]
xor r8d, r8d
mov qword [rsp + 0x28], rax
mov rdx, rsi
mov rcx, rbx
mov qword [rsp + 0x20], 0
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x18001638a
cmp dword [rsp + 0x30], 4
jne 0x18001638a
mov eax, dword [rsp + 0x58]
mov ecx, 4
mov rdx, rsi
cmp eax, ecx
cmova eax, ecx
xor r9d, r9d
xor r8d, r8d
mov dword [rsp + 0x58], eax
lea rax, [rsp + 0x58]
mov rcx, rbx
mov qword [rsp + 0x28], rax
mov rax, qword [rsp + 0x70]
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x18001638a
cmp rbx, rdi
je 0x180016375
mov rcx, rbx
call fcn.1800162a0
mov eax, 1
mov rbx, qword [rsp + 0x50]
mov rsi, qword [rsp + 0x60]
add rsp, 0x40
pop rdi
ret
cmp rbx, rdi
je 0x180016397
mov rcx, rbx
call fcn.1800162a0
mov rbx, qword [rsp + 0x50]
mov rsi, qword [rsp + 0x60]
xor eax, eax
add rsp, 0x40
pop rdi
ret

Function at 0x1800163b0
Capabilities:
Query or enumerate registry value

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x20], rbp
push rsi
sub rsp, 0x40
mov rbp, r8
mov rsi, rcx
test rdx, rdx
je 0x1800163de
or r9d, 0x20019
mov r8d, r9d
call fcn.180016220
mov rbx, rax
jmp 0x1800163e1
mov rbx, rcx
mov qword [rsp + 0x50], rdi
test rbx, rbx
je 0x180016493
lea rax, [rsp + 0x58]
lea r9, [rsp + 0x30]
xor r8d, r8d
mov qword [rsp + 0x28], rax
mov rdx, rbp
mov rcx, rbx
mov qword [rsp + 0x20], 0
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x180016486
cmp dword [rsp + 0x30], 3
jne 0x180016486
mov ecx, dword [rsp + 0x58]
call fcn.180019688
mov rdi, rax
test rax, rax
je 0x180016486
lea rax, [rsp + 0x58]
xor r9d, r9d
xor r8d, r8d
mov qword [rsp + 0x28], rax
mov rdx, rbp
mov rcx, rbx
mov qword [rsp + 0x20], rdi
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x18001647e
mov rax, qword [rsp + 0x70]
mov rcx, qword [rsp + 0x78]
mov qword [rax], rdi
mov eax, dword [rsp + 0x58]
mov dword [rcx], eax
cmp rbx, rsi
je 0x180016477
mov rcx, rbx
call fcn.1800162a0
mov eax, 1
jmp 0x180016495
mov rcx, rdi
call fcn.1800190d0
cmp rbx, rsi
je 0x180016493
mov rcx, rbx
call fcn.1800162a0
xor eax, eax
mov rdi, qword [rsp + 0x50]
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
add rsp, 0x40
pop rsi
ret
Function at 0x1800164b0
Capabilities:
Query or enumerate registry value

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x20], rbp
push rdi
sub rsp, 0x40
mov rbp, r8
mov rdi, rcx
test rdx, rdx
je 0x1800164de
or r9d, 0x20019
mov r8d, r9d
call fcn.180016220
mov rbx, rax
jmp 0x1800164e1
mov rbx, rcx
mov qword [rsp + 0x50], rsi
test rbx, rbx
je 0x1800165d0
lea rax, [rsp + 0x58]
lea r9, [rsp + 0x30]
xor r8d, r8d
mov qword [rsp + 0x28], rax
mov rdx, rbp
mov rcx, rbx
mov qword [rsp + 0x20], 0
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x1800165c3
mov eax, dword [rsp + 0x30]
cmp eax, 1
je 0x18001653a
cmp eax, 2
je 0x18001653a
cmp eax, 6
je 0x18001653a
cmp eax, 7
jne 0x1800165c3
mov ecx, dword [rsp + 0x58]
add ecx, 2
call fcn.180019688
mov r8d, dword [rsp + 0x58]
xor edx, edx
add r8d, 2
mov rcx, rax
mov rsi, rax
call fcn.18001ab30
lea r11, [rsp + 0x58]
xor r9d, r9d
mov qword [rsp + 0x28], r11
xor r8d, r8d
mov rdx, rbp
mov rcx, rbx
mov qword [rsp + 0x20], rsi
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x1800165aa
mov rcx, qword [rsp + 0x70]
mov rdx, rsi
call fcn.1800136a0
cmp rbx, rdi
je 0x18001659b
mov rcx, rbx
call fcn.1800162a0
mov rcx, rsi
call fcn.1800190d0
mov eax, 1
jmp 0x1800165d2
mov rcx, rsi
call fcn.1800190d0
mov rcx, qword [rsp + 0x70]
lea rdx, [0x180083280]
call fcn.1800136a0
cmp rbx, rdi
je 0x1800165d0
mov rcx, rbx
call fcn.1800162a0
xor eax, eax
mov rsi, qword [rsp + 0x50]
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
add rsp, 0x40
pop rdi
ret
Function at 0x180016890
Capabilities:
Set registry value

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rsi
push rdi
sub rsp, 0x30
mov rsi, r8
mov rdi, rcx
test rdx, rdx
je 0x1800168be
or r9d, 0x20006
mov r8d, r9d
call fcn.180016250
mov rbx, rax
jmp 0x1800168c1
mov rbx, rcx
test rbx, rbx
je 0x180016920
lea rax, [rsp + 0x60]
mov r9d, 4
xor r8d, r8d
mov rdx, rsi
mov rcx, rbx
mov dword [rsp + 0x28], 4
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
test eax, eax
jne 0x180016913
cmp rbx, rdi
je 0x1800168fe
mov rcx, rbx
call fcn.1800162a0
mov eax, 1
mov rbx, qword [rsp + 0x40]
mov rsi, qword [rsp + 0x48]
add rsp, 0x30
pop rdi
ret
cmp rbx, rdi
je 0x180016920
mov rcx, rbx
call fcn.1800162a0
mov rbx, qword [rsp + 0x40]
mov rsi, qword [rsp + 0x48]
xor eax, eax
add rsp, 0x30
pop rdi
ret

Function at 0x180016940
Capabilities:
Set registry value

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
push rsi
sub rsp, 0x30
mov rbp, r8
mov rsi, rcx
test rdx, rdx
je 0x18001696e
or r9d, 0x20006
mov r8d, r9d
call fcn.180016250
mov rbx, rax
jmp 0x180016971
mov rbx, rcx
test rbx, rbx
je 0x1800169e8
mov rdx, qword [rsp + 0x60]
or rcx, 0xffffffffffffffff
xor eax, eax
mov qword [rsp + 0x40], rdi
mov rdi, rdx
mov r9d, 1
repne scasw ax, word [rdi]
xor r8d, r8d
not rcx
lea eax, [rcx + rcx]
mov rcx, rbx
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], rdx
mov rdx, rbp
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov rdi, qword [rsp + 0x40]
test eax, eax
jne 0x1800169db
cmp rbx, rsi
je 0x1800169c6
mov rcx, rbx
call fcn.1800162a0
mov eax, 1
mov rbx, qword [rsp + 0x48]
mov rbp, qword [rsp + 0x50]
add rsp, 0x30
pop rsi
ret
cmp rbx, rsi
je 0x1800169e8
mov rcx, rbx
call fcn.1800162a0
mov rbx, qword [rsp + 0x48]
mov rbp, qword [rsp + 0x50]
xor eax, eax
add rsp, 0x30
pop rsi
ret
Function at 0x180016a00
Capabilities:
Delete registry key
Query or enumerate registry key

Disassembly:
mov r11, rsp
push rbp
push rsi
sub rsp, 0x68
xor eax, eax
mov esi, edx
xor r9d, r9d
mov qword [r11 - 0x20], rax
mov qword [r11 - 0x28], rax
mov qword [r11 - 0x30], rax
mov qword [r11 - 0x38], rax
mov qword [r11 - 0x40], rax
mov qword [r11 - 0x48], rax
lea rax, [r11 + 0x18]
xor r8d, r8d
xor edx, edx
mov qword [r11 - 0x50], rax
lea rax, [r11 + 0x20]
mov rbp, rcx
mov qword [r11 - 0x58], rax
call qword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyW]
test eax, eax
jne 0x180016b8c
mov qword [rsp + 0x80], rbx
mov qword [rsp + 0x60], rdi
cmp dword [rsp + 0x98], eax
je 0x180016b62
mov eax, dword [rsp + 0x90]
mov ecx, 0x104
cmp eax, ecx
cmovb eax, ecx
mov dword [rsp + 0x90], eax
lea ecx, [rax + 1]
mov eax, 2
mul rcx
mov rcx, 0xffffffffffffffff
cmovo rax, rcx
mov rcx, rax
call fcn.180019688
mov rbx, rax
test rax, rax
je 0x180016b88
nop word [rax + rax]
mov r8d, dword [rsp + 0x90]
xor edx, edx
mov rcx, rbx
inc r8d
add r8, r8
call fcn.18001ab30
mov r9d, dword [rsp + 0x90]
mov r8, rbx
xor edx, edx
mov rcx, rbp
inc r9d
call qword [sym.imp.ADVAPI32.dll_RegEnumKeyW]
test eax, eax
jne 0x180016b80
mov r8d, esi
mov rdx, rbx
mov rcx, rbp
or r8d, 0x2001f
call fcn.180016220
mov rdi, rax
test rax, rax
je 0x180016b80
mov edx, esi
mov rcx, rax
call fcn.180016a00
mov rcx, rdi
test eax, eax
je 0x180016b7b
call fcn.1800162a0
mov r11, qword [0x1800ae6d8]
test r11, r11
je 0x180016b3d
test esi, esi
je 0x180016b3d
xor r9d, r9d
mov r8d, esi
mov rdx, rbx
mov rcx, rbp
call r11
jmp 0x180016b49
mov rdx, rbx
mov rcx, rbp
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
test eax, eax
jne 0x180016b80
dec dword [rsp + 0x98]
jne 0x180016ab0
mov rcx, rbx
call fcn.1800190d0
mov eax, 1
mov rbx, qword [rsp + 0x80]
mov rdi, qword [rsp + 0x60]
add rsp, 0x68
pop rsi
pop rbp
ret
call fcn.1800162a0
mov rcx, rbx
call fcn.1800190d0
xor eax, eax
jmp 0x180016b67
xor eax, eax
add rsp, 0x68
pop rsi
pop rbp
ret
Function at 0x180016ba0
Capabilities:
Delete registry key
Delete registry 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, 0x20
mov esi, r9d
mov rbp, r8
mov r12, rdx
mov rdi, rcx
test rdx, rdx
je 0x180016bdf
mov r8d, r9d
or r8d, 0x2001f
call fcn.180016220
mov rbx, rax
jmp 0x180016be2
mov rbx, rcx
test rbx, rbx
je 0x180016c79
mov rcx, rbx
test rbp, rbp
je 0x180016c14
mov rdx, rbp
call qword [sym.imp.ADVAPI32.dll_RegDeleteValueW]
test eax, eax
jne 0x180016c6c
cmp rbx, rdi
je 0x180016c0d
mov rcx, rbx
call fcn.1800162a0
mov eax, 1
jmp 0x180016c7b
mov edx, esi
call fcn.180016a00
test eax, eax
je 0x180016c6c
cmp rbx, rdi
je 0x180016c2c
mov rcx, rbx
call fcn.1800162a0
mov rax, qword [0x1800ae6d8]
test rax, rax
je 0x180016c55
test esi, esi
je 0x180016c55
xor r9d, r9d
mov r8d, esi
mov rdx, r12
mov rcx, rdi
call rax
xor ecx, ecx
test eax, eax
sete cl
mov eax, ecx
jmp 0x180016c7b
mov rdx, r12
mov rcx, rdi
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
xor ecx, ecx
test eax, eax
sete cl
mov eax, ecx
jmp 0x180016c7b
cmp rbx, rdi
je 0x180016c79
mov rcx, rbx
call fcn.1800162a0
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 r12
ret
mov r9d, dword [rcx + 8]
mov rcx, qword [rcx]
jmp 0x180016ba0
mov r8, rdx
xor edx, edx
jmp 0x180016dc0

Function at 0x180016dd0
Capabilities:
Delete registry key
Delete registry 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, 0x20
mov esi, r9d
mov rbp, r8
mov r12, rdx
mov rdi, rcx
test rdx, rdx
je 0x180016bdf
mov r8d, r9d
or r8d, 0x2001f
call fcn.180016220
mov rbx, rax
jmp 0x180016be2
mov rbx, rcx
test rbx, rbx
je 0x180016c79
mov rcx, rbx
test rbp, rbp
je 0x180016c14
mov rdx, rbp
call qword [sym.imp.ADVAPI32.dll_RegDeleteValueW]
test eax, eax
jne 0x180016c6c
cmp rbx, rdi
je 0x180016c0d
mov rcx, rbx
call fcn.1800162a0
mov eax, 1
jmp 0x180016c7b
mov edx, esi
call fcn.180016a00
test eax, eax
je 0x180016c6c
cmp rbx, rdi
je 0x180016c2c
mov rcx, rbx
call fcn.1800162a0
mov rax, qword [0x1800ae6d8]
test rax, rax
je 0x180016c55
test esi, esi
je 0x180016c55
xor r9d, r9d
mov r8d, esi
mov rdx, r12
mov rcx, rdi
call rax
xor ecx, ecx
test eax, eax
sete cl
mov eax, ecx
jmp 0x180016c7b
mov rdx, r12
mov rcx, rdi
call qword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
xor ecx, ecx
test eax, eax
sete cl
mov eax, ecx
jmp 0x180016c7b
cmp rbx, rdi
je 0x180016c79
mov rcx, rbx
call fcn.1800162a0
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 r12
ret
mov r9d, dword [rcx + 8]
mov rcx, qword [rcx]
jmp 0x180016ba0
mov r8, rdx
xor edx, edx
jmp 0x180016dc0
Function at 0x180016de0
Capabilities:
Query or enumerate registry value

Disassembly:
mov qword [rsp + 0x18], rbp
push rsi
push rdi
push r12
sub rsp, 0x40
mov edi, r9d
mov r12, r8
mov rbp, rcx
test rdx, rdx
je 0x180016e13
mov r8d, dword [rcx + 8]
mov rcx, qword [rcx]
or r8d, 0x20019
call fcn.180016220
mov rsi, rax
jmp 0x180016e16
mov rsi, qword [rcx]
test rsi, rsi
je 0x180016eb2
lea rax, [rsp + 0x30]
mov qword [rsp + 0x60], rbx
lea r9, [rsp + 0x68]
mov qword [rsp + 0x28], rax
xor ebx, ebx
xor r8d, r8d
mov rdx, r12
mov rcx, rsi
mov qword [rsp + 0x20], rbx
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x180016e8f
test edi, edi
je 0x180016e8a
dec edi
je 0x180016e72
sub edi, 2
je 0x180016e68
dec edi
jne 0x180016e8f
cmp dword [rsp + 0x68], 4
sete bl
jmp 0x180016e8f
cmp dword [rsp + 0x68], 3
sete bl
jmp 0x180016e8f
mov eax, dword [rsp + 0x68]
cmp eax, 1
je 0x180016e8a
cmp eax, 2
je 0x180016e8a
cmp eax, 6
je 0x180016e8a
cmp eax, 7
jne 0x180016e8f
mov ebx, 1
cmp rsi, qword [rbp]
je 0x180016e9d
mov rcx, rsi
call fcn.1800162a0
mov eax, ebx
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x70]
add rsp, 0x40
pop r12
pop rdi
pop rsi
ret
xor eax, eax
mov rbp, qword [rsp + 0x70]
add rsp, 0x40
pop r12
pop rdi
pop rsi
ret
mov r9d, r8d
mov r8, rdx
xor edx, edx
jmp 0x180016de0

Function at 0x180016f20
Capabilities:
Query or enumerate registry value

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r13
push r14
sub rsp, 0x40
mov rbp, qword [rsp + 0x90]
mov r14, r8
mov rbx, rdx
mov r13, rcx
or r8d, 0xffffffff
xor edx, edx
mov rcx, rbp
mov edi, r9d
call fcn.1800148c0
test rbx, rbx
je 0x180016f70
or edi, 0x20019
mov rdx, rbx
mov rcx, r13
mov r8d, edi
call fcn.180016220
mov rsi, rax
jmp 0x180016f73
mov rsi, r13
mov qword [rsp + 0x70], r12
test rsi, rsi
je 0x18001707a
lea rax, [rsp + 0x78]
lea r9, [rsp + 0x30]
xor r8d, r8d
mov qword [rsp + 0x28], rax
mov rdx, r14
mov rcx, rsi
mov qword [rsp + 0x20], 0
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x18001706d
mov eax, dword [rsp + 0x30]
cmp eax, 1
je 0x180016fcc
cmp eax, 2
je 0x180016fcc
cmp eax, 6
je 0x180016fcc
cmp eax, 7
jne 0x18001706d
mov ecx, dword [rsp + 0x78]
add ecx, 2
call fcn.180019688
mov r8d, dword [rsp + 0x78]
xor edx, edx
add r8d, 2
mov rcx, rax
mov r12, rax
call fcn.18001ab30
lea rdx, [rsp + 0x78]
xor r9d, r9d
mov qword [rsp + 0x28], rdx
xor r8d, r8d
mov rcx, rsi
mov rdx, r14
mov qword [rsp + 0x20], r12
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x180017065
mov rbx, r12
cmp word [r12], ax
je 0x180017049
nop dword [rax]
mov edx, dword [rbp + 8]
mov r8, rbx
mov rcx, rbp
call fcn.180014a80
or rcx, 0xffffffffffffffff
xor eax, eax
mov rdi, rbx
repne scasw ax, word [rdi]
not rcx
and ecx, ecx
cmp word [rbx + rcx*2], ax
lea rbx, [rbx + rcx*2]
jne 0x180017020
cmp rsi, r13
je 0x180017056
mov rcx, rsi
call fcn.1800162a0
mov rcx, r12
call fcn.1800190d0
mov eax, 1
jmp 0x18001707c
mov rcx, r12
call fcn.1800190d0
cmp rsi, r13
je 0x18001707a
mov rcx, rsi
call fcn.1800162a0
xor eax, eax
mov r12, qword [rsp + 0x70]
mov rbx, qword [rsp + 0x80]
add rsp, 0x40
pop r14
pop r13
pop rdi
pop rsi
pop rbp
ret
Function at 0x1800170a0
Capabilities:
Set registry value

Disassembly:
mov qword [rsp + 0x18], r8
push rbx
push r14
sub rsp, 0x58
mov r14, rcx
test rdx, rdx
je 0x1800170c8
or r9d, 0x20006
mov r8d, r9d
call fcn.180016250
mov rbx, rax
jmp 0x1800170cb
mov rbx, rcx
mov qword [rsp + 0x70], rbp
mov qword [rsp + 0x50], rsi
mov qword [rsp + 0x48], rdi
mov qword [rsp + 0x40], r12
mov qword [rsp + 0x30], r15
test rbx, rbx
je 0x18001722b
mov rsi, qword [rsp + 0x90]
xor r12d, r12d
mov r15d, 2
mov edi, r12d
cmp dword [rsi + 8], r12d
jle 0x18001713c
nop word [rax + rax]
lea rdx, [rsp + 0x78]
mov r8d, edi
mov rcx, rsi
call fcn.180016f00
mov rcx, qword [rax]
mov eax, dword [rcx - 8]
lea rcx, [rsp + 0x78]
lea r15d, [r15 + rax*2 + 2]
call fcn.180013520
inc edi
cmp edi, dword [rsi + 8]
jl 0x180017110
mov ecx, r15d
mov edi, r15d
call fcn.180019688
mov rbp, rax
test rax, rax
je 0x18001722b
mov r8d, edi
xor edx, edx
mov rcx, rax
mov qword [rsp + 0x38], r13
call fcn.18001ab30
mov r13, rbp
cmp dword [rsi + 8], r12d
jle 0x1800171cd
nop
lea rdx, [rsp + 0x78]
mov r8d, r12d
mov rcx, rsi
call fcn.180016f00
mov rdx, r13
mov rcx, qword [rax]
nop word [rax + rax]
movzx eax, word [rcx]
add rdx, 2
add rcx, 2
mov word [rdx - 2], ax
test ax, ax
jne 0x180017190
lea rcx, [rsp + 0x78]
call fcn.180013520
or rcx, 0xffffffffffffffff
xor eax, eax
mov rdi, r13
inc r12d
repne scasw ax, word [rdi]
not rcx
and ecx, ecx
lea r13, [r13 + rcx*2]
cmp r12d, dword [rsi + 8]
jl 0x180017170
mov rdx, qword [rsp + 0x80]
mov r9d, 7
xor r8d, r8d
mov rcx, rbx
mov dword [rsp + 0x28], r15d
mov qword [rsp + 0x20], rbp
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov r13, qword [rsp + 0x38]
test eax, eax
jne 0x180017216
cmp rbx, r14
je 0x180017207
mov rcx, rbx
call fcn.1800162a0
mov rcx, rbp
call fcn.1800190d0
mov eax, 1
jmp 0x18001722d
mov rcx, rbp
call fcn.1800190d0
cmp rbx, r14
je 0x18001722b
mov rcx, rbx
call fcn.1800162a0
xor eax, eax
mov r15, qword [rsp + 0x30]
mov r12, qword [rsp + 0x40]
mov rdi, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x70]
add rsp, 0x58
pop r14
pop rbx
ret
Function at 0x180017250
Capabilities:
Query or enumerate registry key

Disassembly:
mov qword [rsp + 0x18], rbp
push rsi
push rdi
push r12
sub rsp, 0x70
mov rsi, r9
mov r12, rcx
test rdx, rdx
je 0x180017279
or r8d, 0x20019
call fcn.180016220
mov rdi, rax
jmp 0x18001727c
mov rdi, rcx
or rbp, 0xffffffffffffffff
xor edx, edx
mov rcx, rsi
mov r8d, ebp
mov qword [rsp + 0x90], rbx
call fcn.1800148c0
test rdi, rdi
je 0x1800173b4
xor ebx, ebx
lea rax, [rsp + 0x98]
xor r9d, r9d
mov qword [rsp + 0x58], rbx
mov qword [rsp + 0x50], rbx
mov qword [rsp + 0x48], rbx
mov qword [rsp + 0x40], rbx
mov qword [rsp + 0x38], rbx
mov qword [rsp + 0x30], rbx
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x60]
xor r8d, r8d
xor edx, edx
mov rcx, rdi
mov dword [rsp + 0x60], ebx
mov qword [rsp + 0x20], rax
mov dword [rsp + 0x98], ebx
call qword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyW]
test eax, eax
jne 0x1800173a7
cmp dword [rsp + 0x60], ebx
jbe 0x1800173a7
mov eax, dword [rsp + 0x98]
mov ecx, 0x104
cmp eax, ecx
cmovb eax, ecx
mov dword [rsp + 0x98], eax
lea ecx, [rax + 1]
mov eax, 2
mul rcx
cmovo rax, rbp
mov rcx, rax
call fcn.180019688
mov rbp, rax
test rax, rax
je 0x1800173a7
cmp dword [rsp + 0x60], ebx
jbe 0x18001738b
mov r8d, dword [rsp + 0x98]
xor edx, edx
mov rcx, rbp
inc r8d
add r8, r8
call fcn.18001ab30
mov r9d, dword [rsp + 0x98]
mov r8, rbp
mov edx, ebx
mov rcx, rdi
inc r9d
call qword [sym.imp.ADVAPI32.dll_RegEnumKeyW]
test eax, eax
jne 0x180017383
mov edx, dword [rsi + 8]
mov r8, rbp
mov rcx, rsi
call fcn.180014a80
inc ebx
cmp ebx, dword [rsp + 0x60]
jb 0x180017340
mov rcx, rbp
call fcn.1800190d0
cmp rdi, r12
je 0x1800173a0
mov rcx, rdi
call fcn.1800162a0
mov eax, 1
jmp 0x1800173b6
cmp rdi, r12
je 0x1800173b4
mov rcx, rdi
call fcn.1800162a0
xor eax, eax
mov rbx, qword [rsp + 0x90]
mov rbp, qword [rsp + 0xa0]
add rsp, 0x70
pop r12
pop rdi
pop rsi
ret
mov r9, r8
mov r8d, dword [rcx + 8]
mov rcx, qword [rcx]
jmp 0x180017250
mov r8, rdx
xor edx, edx
jmp 0x180017600
Function at 0x180017610
Capabilities:
Query or enumerate registry key

Disassembly:
mov qword [rsp + 0x18], rbp
push rsi
push rdi
push r12
sub rsp, 0x70
mov rsi, r9
mov r12, rcx
test rdx, rdx
je 0x180017279
or r8d, 0x20019
call fcn.180016220
mov rdi, rax
jmp 0x18001727c
mov rdi, rcx
or rbp, 0xffffffffffffffff
xor edx, edx
mov rcx, rsi
mov r8d, ebp
mov qword [rsp + 0x90], rbx
call fcn.1800148c0
test rdi, rdi
je 0x1800173b4
xor ebx, ebx
lea rax, [rsp + 0x98]
xor r9d, r9d
mov qword [rsp + 0x58], rbx
mov qword [rsp + 0x50], rbx
mov qword [rsp + 0x48], rbx
mov qword [rsp + 0x40], rbx
mov qword [rsp + 0x38], rbx
mov qword [rsp + 0x30], rbx
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x60]
xor r8d, r8d
xor edx, edx
mov rcx, rdi
mov dword [rsp + 0x60], ebx
mov qword [rsp + 0x20], rax
mov dword [rsp + 0x98], ebx
call qword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyW]
test eax, eax
jne 0x1800173a7
cmp dword [rsp + 0x60], ebx
jbe 0x1800173a7
mov eax, dword [rsp + 0x98]
mov ecx, 0x104
cmp eax, ecx
cmovb eax, ecx
mov dword [rsp + 0x98], eax
lea ecx, [rax + 1]
mov eax, 2
mul rcx
cmovo rax, rbp
mov rcx, rax
call fcn.180019688
mov rbp, rax
test rax, rax
je 0x1800173a7
cmp dword [rsp + 0x60], ebx
jbe 0x18001738b
mov r8d, dword [rsp + 0x98]
xor edx, edx
mov rcx, rbp
inc r8d
add r8, r8
call fcn.18001ab30
mov r9d, dword [rsp + 0x98]
mov r8, rbp
mov edx, ebx
mov rcx, rdi
inc r9d
call qword [sym.imp.ADVAPI32.dll_RegEnumKeyW]
test eax, eax
jne 0x180017383
mov edx, dword [rsi + 8]
mov r8, rbp
mov rcx, rsi
call fcn.180014a80
inc ebx
cmp ebx, dword [rsp + 0x60]
jb 0x180017340
mov rcx, rbp
call fcn.1800190d0
cmp rdi, r12
je 0x1800173a0
mov rcx, rdi
call fcn.1800162a0
mov eax, 1
jmp 0x1800173b6
cmp rdi, r12
je 0x1800173b4
mov rcx, rdi
call fcn.1800162a0
xor eax, eax
mov rbx, qword [rsp + 0x90]
mov rbp, qword [rsp + 0xa0]
add rsp, 0x70
pop r12
pop rdi
pop rsi
ret
mov r9, r8
mov r8d, dword [rcx + 8]
mov rcx, qword [rcx]
jmp 0x180017250
mov r8, rdx
xor edx, edx
jmp 0x180017600