joyce8/EMBER2024-capa huggingface dataset:
Function at 0x140009770
Capabilities:
Extract resource via kernel32 functions

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
push rsi
push rdi
push r12
sub rsp, 0x40
mov eax, r8d
mov rsi, rdx
mov ebx, r8d
shr eax, 4
mov rbp, rcx
mov r8d, 6
add ax, 1
mov rcx, rsi
movzx edx, ax
call qword [sym.imp.KERNEL32.dll_FindResourceW]
test rax, rax
mov r12, rax
je 0x1400098d9
mov rdx, rax
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_LoadResource]
test rax, rax
je 0x1400098d9
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_LockResource]
test rax, rax
mov rdi, rax
je 0x1400098d9
mov rdx, r12
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_SizeofResource]
mov r11d, eax
add r11, rdi
and ebx, 0xf
jbe 0x14000980a
cmp rdi, r11
jae 0x1400098d9
add ebx, 0xffffffff
movzx eax, word [rdi]
lea rdi, [rdi + rax*2 + 2]
jne 0x1400097f4
cmp rdi, r11
jae 0x1400098d9
movzx eax, word [rdi]
test ax, ax
je 0x1400098d9
mov qword [rsp + 0x60], r13
movzx ebx, ax
call qword [0x14009a4a0]
xor r13d, r13d
lea r12, [rdi + 2]
mov r9d, ebx
mov qword [rsp + 0x38], r13
mov qword [rsp + 0x30], r13
mov ecx, eax
mov r8, r12
xor edx, edx
mov dword [rsp + 0x28], r13d
mov qword [rsp + 0x20], r13
call qword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov rcx, qword [rbp]
mov edx, 1
movsxd rsi, eax
sub edx, dword [rcx - 8]
mov ecx, dword [rcx - 0xc]
sub ecx, esi
or edx, ecx
jge 0x14000987a
mov edx, esi
mov rcx, rbp
call fcn.1400098f0
mov rbx, qword [rbp]
movzx edi, word [rdi]
call qword [0x14009a4a0]
mov qword [rsp + 0x38], r13
mov qword [rsp + 0x30], r13
mov ecx, eax
mov r9d, edi
mov r8, r12
xor edx, edx
mov dword [rsp + 0x28], esi
mov qword [rsp + 0x20], rbx
call qword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
test esi, esi
mov r13, qword [rsp + 0x60]
js 0x1400098ce
mov rcx, qword [rbp]
cmp esi, dword [rcx - 0xc]
jg 0x1400098ce
mov dword [rcx - 0x10], esi
mov rcx, qword [rbp]
mov eax, 1
mov byte [rsi + rcx], 0
jmp 0x1400098db
mov ecx, 0x80070057
call fcn.140003280
int3
xor eax, eax
mov rbx, qword [rsp + 0x68]
mov rbp, qword [rsp + 0x70]
add rsp, 0x40
pop r12
pop rdi
pop rsi
ret
Function at 0x14000bbf0
Capabilities:
Set registry value

Disassembly:
mov rax, rsp
mov qword [rax + 0x20], r9
mov qword [rax + 0x18], r8
mov qword [rax + 0x10], rdx
push rbp
push rsi
push rdi
push r12
push r13
sub rsp, 0x80
mov qword [rsp + 0x70], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov rdi, r9
mov rsi, r8
mov rbp, rdx
xor r13d, r13d
mov dword [rax - 0x58], r13d
lea r9, [rax - 0x58]
mov r8, qword [rdi]
mov rdx, qword [rsi]
mov rcx, 0xffffffff80000001
call fcn.14000dbc0
test eax, eax
je 0x14000bcf8
mov r12, qword [rdi]
mov rbx, qword [rbp]
mov eax, dword [rsp + 0x50]
mov dword [rsp + 0x58], eax
mov qword [rsp + 0x68], r13
call fcn.14000de80
mov r8d, r13d
mov edx, 0x100
cmp eax, 1
cmove r8d, edx
or r8d, 0x20006
lea rax, [rsp + 0x60]
mov qword [rsp + 0x40], rax
lea rax, [rsp + 0x68]
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x30], r13
mov dword [rsp + 0x28], r8d
mov dword [rsp + 0x20], r13d
xor r9d, r9d
xor r8d, r8d
mov rdx, rbx
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x14000bcf8
mov dword [rsp + 0x28], 4
lea rax, [rsp + 0x58]
mov qword [rsp + 0x20], rax
lea r9d, [r13 + 4]
xor r8d, r8d
mov rdx, r12
mov rcx, qword [rsp + 0x68]
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov ebx, eax
mov rcx, qword [rsp + 0x68]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
test ebx, ebx
jne 0x14000bcf8
mov rdx, qword [rdi]
mov rcx, qword [rsi]
call fcn.14000dd60
nop
mov rdx, qword [rbp]
sub rdx, 0x18
or ebx, 0xffffffff
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
add eax, ebx
test eax, eax
jg 0x14000bd1a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsi]
sub rdx, 0x18
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14000bd39
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rdi]
sub rdx, 0x18
lock xadd dword [rdx + 0x10], ebx
add ebx, 0xffffffff
test ebx, ebx
jg 0x14000bd55
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rbx, qword [rsp + 0xb0]
add rsp, 0x80
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
Function at 0x14000d580
Capabilities:
Set registry value

Disassembly:
mov rax, rsp
push r12
sub rsp, 0x70
mov qword [rsp + 0x68], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
mov rsi, r9
mov rbp, r8
mov r12, rdx
call fcn.1400280cc
mov rdx, rax
xor ecx, ecx
test rax, rax
setne cl
test ecx, ecx
jne 0x14000d5ca
mov ecx, 0x80004005
call fcn.140003280
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
lea rdi, [rax + 0x18]
mov qword [rsp + 0x58], rdi
or rbx, 0xffffffffffffffff
test rsi, rsi
je 0x14000d628
test rsi, 0xffffffffffff0000
jne 0x14000d614
movzx esi, si
mov ecx, esi
call fcn.1400280b8
test rax, rax
je 0x14000d63f
mov r8d, esi
mov rdx, rax
lea rcx, [rsp + 0x58]
call fcn.140003060
mov rdi, qword [rsp + 0x58]
jmp 0x14000d63f
xor eax, eax
mov rcx, rbx
mov rdi, rsi
repne scasw ax, word [rdi]
not rcx
sub rcx, 1
jmp 0x14000d62a
xor ecx, ecx
mov r8d, ecx
mov rdx, rsi
lea rcx, [rsp + 0x58]
call fcn.1400036f0
mov rdi, qword [rsp + 0x58]
mov eax, dword [rdi - 0x10]
lea esi, [rax + rax]
mov qword [rsp + 0x60], 0
call fcn.14000de80
xor ecx, ecx
mov edx, 0x100
cmp eax, 1
cmove ecx, edx
or ecx, 0x20006
lea rax, [rsp + 0x50]
mov qword [rsp + 0x40], rax
lea rax, [rsp + 0x60]
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], ecx
mov dword [rsp + 0x20], 0
xor r9d, r9d
xor r8d, r8d
mov rdx, r12
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x14000d6d6
mov dword [rsp + 0x28], esi
mov qword [rsp + 0x20], rdi
lea r9d, [rax + 1]
xor r8d, r8d
mov rdx, rbp
mov rcx, qword [rsp + 0x60]
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov esi, eax
mov rcx, qword [rsp + 0x60]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x14000d6d8
mov esi, ebx
lea rdx, [rdi - 0x18]
lock xadd dword [rdx + 0x10], ebx
add ebx, 0xffffffff
test ebx, ebx
jg 0x14000d6f1
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, esi
lea r11, [rsp + 0x70]
mov rbx, qword [r11 + 0x10]
mov rbp, qword [r11 + 0x18]
mov rsi, qword [r11 + 0x20]
mov rdi, qword [r11 + 0x28]
mov rsp, r11
pop r12
ret
Function at 0x14000d750
Capabilities:
Set registry value

Disassembly:
mov qword [rsp + 8], rbx
mov dword [rsp + 0x20], r9d
push rdi
sub rsp, 0x60
mov rdi, r8
mov rbx, rdx
mov qword [rsp + 0x58], 0
call fcn.14000de80
xor ecx, ecx
mov edx, 0x100
cmp eax, 1
lea rax, [rsp + 0x50]
mov qword [rsp + 0x40], rax
cmove ecx, edx
lea rax, [rsp + 0x58]
mov qword [rsp + 0x38], rax
or ecx, 0x20006
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], ecx
xor r9d, r9d
xor r8d, r8d
mov rcx, 0xffffffff80000001
mov rdx, rbx
mov dword [rsp + 0x20], 0
call qword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x14000d80f
mov rcx, qword [rsp + 0x58]
lea rax, [rsp + 0x88]
mov r9d, 4
xor r8d, r8d
mov rdx, rdi
mov dword [rsp + 0x28], 4
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov rcx, qword [rsp + 0x58]
mov ebx, eax
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, ebx
mov rbx, qword [rsp + 0x70]
add rsp, 0x60
pop rdi
ret
or eax, 0xffffffff
mov rbx, qword [rsp + 0x70]
add rsp, 0x60
pop rdi
ret
Function at 0x14000dbc0
Capabilities:
Query or enumerate registry value

Disassembly:
mov rax, rsp
push r12
sub rsp, 0x60
mov qword [rsp + 0x48], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
mov rsi, r9
mov rbp, r8
mov r12, rdx
xor edi, edi
mov dword [rax - 0x38], edi
mov dword [rax - 0x34], edi
mov dword [rax - 0x30], edi
call fcn.1400280cc
mov rcx, rax
mov eax, edi
test rcx, rcx
setne al
test eax, eax
jne 0x14000dc15
mov ecx, 0x80004005
call fcn.140003280
int3
mov rax, qword [rcx]
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x50], rbx
call fcn.14000de80
mov r9d, edi
mov ecx, 0x100
cmp eax, 1
cmove r9d, ecx
or r9d, 0x20019
lea rax, [rsp + 0x40]
mov qword [rsp + 0x20], rax
xor r8d, r8d
mov rdx, r12
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x14000dd05
test eax, eax
jne 0x14000dd05
lea rax, [rsp + 0x30]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rdi
lea r9, [rsp + 0x34]
xor r8d, r8d
mov rdx, rbp
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x14000dcd8
cmp dword [rsp + 0x30], eax
je 0x14000dcd8
lea rax, [rsp + 0x30]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x38]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x34]
xor r8d, r8d
mov rdx, rbp
mov rcx, qword [rsp + 0x40]
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov r11d, dword [rsp + 0x38]
test r11d, r11d
je 0x14000dcd8
mov dword [rsi], r11d
mov edi, 1
mov rcx, qword [rsp + 0x40]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
nop
lea rdx, [rbx - 0x18]
or ecx, 0xffffffff
lock xadd dword [rdx + 0x10], ecx
add ecx, 0xffffffff
test ecx, ecx
jg 0x14000dd01
mov rcx, qword [rdx]
mov r8, qword [rcx]
call qword [rreloc.OLEAUT32.dll_VariantClear + 8]
mov eax, edi
jmp 0x14000dd25
mov dword [rsi], edi
lea rdx, [rbx - 0x18]
or ecx, 0xffffffff
lock xadd dword [rdx + 0x10], ecx
add ecx, 0xffffffff
test ecx, ecx
jg 0x14000dd23
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
lea r11, [rsp + 0x60]
mov rbx, qword [r11 + 0x10]
mov rbp, qword [r11 + 0x18]
mov rsi, qword [r11 + 0x20]
mov rdi, qword [r11 + 0x28]
mov rsp, r11
pop r12
ret
Function at 0x14000dd60
Capabilities:
Delete registry value

Disassembly:
push rbp
push rsi
push rdi
sub rsp, 0x40
mov qword [rsp + 0x30], 0xfffffffffffffffe
mov qword [rsp + 0x60], rbx
mov rsi, rdx
mov rbp, rcx
call fcn.1400280cc
mov rcx, rax
xor edi, edi
mov r8d, edi
test rax, rax
setne r8b
test r8d, r8d
jne 0x14000dda0
mov ecx, 0x80004005
call fcn.140003280
int3
mov rax, qword [rax]
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x78], rbx
call fcn.14000de80
mov ecx, 0x100
cmp eax, 1
cmove edi, ecx
or edi, 0x20006
lea rax, [rsp + 0x70]
mov qword [rsp + 0x20], rax
mov r9d, edi
xor r8d, r8d
mov rdx, rbp
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x14000de2b
mov rcx, qword [rsp + 0x70]
test rcx, rcx
je 0x14000de2b
mov rdx, rsi
call qword [sym.imp.ADVAPI32.dll_RegDeleteValueW]
mov edi, eax
mov rcx, qword [rsp + 0x70]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
nop
lea rdx, [rbx - 0x18]
or ebx, 0xffffffff
lock xadd dword [rdx + 0x10], ebx
add ebx, 0xffffffff
test ebx, ebx
jg 0x14000de27
mov rcx, qword [rdx]
mov r8, qword [rcx]
call qword [rreloc.OLEAUT32.dll_VariantClear + 8]
mov eax, edi
jmp 0x14000de4b
lea rdx, [rbx - 0x18]
or ebx, 0xffffffff
mov ecx, ebx
lock xadd dword [rdx + 0x10], ecx
add ecx, ebx
test ecx, ecx
jg 0x14000de49
mov rcx, qword [rdx]
mov r8, qword [rcx]
call qword [rreloc.OLEAUT32.dll_VariantClear + 8]
mov eax, ebx
mov rbx, qword [rsp + 0x60]
add rsp, 0x40
pop rdi
pop rsi
pop rbp
ret
Function at 0x140015310
Capabilities:
Set registry value

Disassembly:
mov rax, rsp
push rdi
push r12
push r13
sub rsp, 0x70
mov qword [rsp + 0x68], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rsi
mov rbp, r9
mov r12, r8
mov r13, rcx
call fcn.1400280cc
mov rcx, rax
xor edx, edx
test rax, rax
setne dl
test edx, edx
jne 0x140015359
mov ecx, 0x80004005
call fcn.140003280
int3
mov rax, qword [rax]
call qword [rax + 0x18]
lea rdi, [rax + 0x18]
mov qword [rsp + 0x58], rdi
or rbx, 0xffffffffffffffff
mov rdx, qword [rsp + 0xb0]
test rdx, rdx
je 0x1400153bc
test rdx, 0xffffffffffff0000
jne 0x1400153a8
movzx esi, dx
mov ecx, esi
call fcn.1400280b8
test rax, rax
je 0x1400153d0
mov r8d, esi
mov rdx, rax
lea rcx, [rsp + 0x58]
call fcn.140003060
mov rdi, qword [rsp + 0x58]
jmp 0x1400153d0
xor eax, eax
mov rcx, rbx
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
sub rcx, 1
jmp 0x1400153be
xor ecx, ecx
mov r8d, ecx
lea rcx, [rsp + 0x58]
call fcn.1400036f0
mov rdi, qword [rsp + 0x58]
mov eax, dword [rdi - 0x10]
lea esi, [rax + rax]
mov qword [rsp + 0x60], 0
mov rcx, r13
call fcn.140017f80
xor ecx, ecx
mov edx, 0x100
cmp eax, 1
cmove ecx, edx
or ecx, 0x20006
lea rax, [rsp + 0x50]
mov qword [rsp + 0x40], rax
lea rax, [rsp + 0x60]
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], ecx
mov dword [rsp + 0x20], 0
xor r9d, r9d
xor r8d, r8d
mov rdx, r12
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x14001546a
mov dword [rsp + 0x28], esi
mov qword [rsp + 0x20], rdi
lea r9d, [rax + 1]
xor r8d, r8d
mov rdx, rbp
mov rcx, qword [rsp + 0x60]
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov esi, eax
mov rcx, qword [rsp + 0x60]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x14001546c
mov esi, ebx
lea rdx, [rdi - 0x18]
lock xadd dword [rdx + 0x10], ebx
add ebx, 0xffffffff
test ebx, ebx
jg 0x140015485
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, esi
lea r11, [rsp + 0x70]
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 0x1400154f0
Capabilities:
Set registry value

Disassembly:
mov qword [rsp + 8], rbx
push rdi
sub rsp, 0x60
mov rdi, r9
mov rbx, r8
mov qword [rsp + 0x58], 0
call fcn.140017f80
xor ecx, ecx
mov edx, 0x100
cmp eax, 1
lea rax, [rsp + 0x50]
mov qword [rsp + 0x40], rax
cmove ecx, edx
lea rax, [rsp + 0x58]
mov qword [rsp + 0x38], rax
or ecx, 0x20006
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], ecx
xor r9d, r9d
xor r8d, r8d
mov rcx, 0xffffffff80000001
mov rdx, rbx
mov dword [rsp + 0x20], 0
call qword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x1400155aa
mov rcx, qword [rsp + 0x58]
lea rax, [rsp + 0x90]
mov r9d, 4
xor r8d, r8d
mov rdx, rdi
mov dword [rsp + 0x28], 4
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov rcx, qword [rsp + 0x58]
mov ebx, eax
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, ebx
mov rbx, qword [rsp + 0x70]
add rsp, 0x60
pop rdi
ret
or eax, 0xffffffff
mov rbx, qword [rsp + 0x70]
add rsp, 0x60
pop rdi
ret
Function at 0x1400158e0
Capabilities:
Query or enumerate registry value

Disassembly:
mov rax, rsp
push r12
sub rsp, 0x60
mov qword [rsp + 0x48], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
mov rdi, r9
mov rsi, r8
mov rbp, rcx
xor r12d, r12d
mov dword [rax - 0x38], r12d
mov dword [rax - 0x34], r12d
mov dword [rax - 0x30], r12d
call fcn.1400280cc
mov rcx, rax
mov edx, r12d
test rax, rax
setne dl
test edx, edx
jne 0x14001593a
mov ecx, 0x80004005
call fcn.140003280
int3
mov rax, qword [rax]
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x50], rbx
mov rcx, rbp
call fcn.140017f80
mov r9d, r12d
mov ecx, 0x100
cmp eax, 1
cmove r9d, ecx
or r9d, 0x20019
lea rax, [rsp + 0x40]
mov qword [rsp + 0x20], rax
xor r8d, r8d
mov rdx, rsi
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x140015a2d
test eax, eax
jne 0x140015a2d
lea rax, [rsp + 0x30]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], r12
lea r9, [rsp + 0x34]
xor r8d, r8d
mov rdx, rdi
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x140015a03
cmp dword [rsp + 0x30], eax
je 0x140015a03
lea rax, [rsp + 0x30]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x38]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x34]
xor r8d, r8d
mov rdx, rdi
mov rcx, qword [rsp + 0x40]
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov r11d, dword [rsp + 0x38]
test r11d, r11d
je 0x140015a03
mov rax, qword [rsp + 0x90]
mov dword [rax], r11d
mov rcx, qword [rsp + 0x40]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
nop
lea rdx, [rbx - 0x18]
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140015a54
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
jmp 0x140015a54
mov rax, qword [rsp + 0x90]
mov dword [rax], r12d
lea rdx, [rbx - 0x18]
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140015a54
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea r11, [rsp + 0x60]
mov rbx, qword [r11 + 0x10]
mov rbp, qword [r11 + 0x18]
mov rsi, qword [r11 + 0x20]
mov rdi, qword [r11 + 0x28]
mov rsp, r11
pop r12
ret
Function at 0x140022470
Capabilities:
Get common file path

Disassembly:
mov qword [rsp + 0x18], rbx
push rdi
sub rsp, 0x20
xor ebx, ebx
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
test rax, rax
mov rdi, rax
je 0x1400224be
xor edx, edx
mov r8d, 0x82
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
test rax, rax
mov rbx, rax
je 0x1400224be
mov r8, rax
xor edx, edx
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_HeapSize]
xor edx, edx
mov rcx, rbx
mov r8, rax
call fcn.140056260
test rbx, rbx
je 0x1400225b7
mov edx, 0x40
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
test eax, eax
mov edi, eax
jne 0x140022501
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
test rax, rax
je 0x1400224f4
mov r8, rbx
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
xor eax, eax
mov rbx, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
ret
cmp eax, 0x40
jb 0x1400225b7
add eax, 1
mov qword [rsp + 0x38], rsi
movsxd rsi, eax
add rsi, rsi
je 0x140022592
mov qword [rsp + 0x30], rbp
xor ebx, ebx
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
test rax, rax
mov rbp, rax
je 0x140022560
mov r8, rsi
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
test rax, rax
mov rbx, rax
je 0x140022560
mov r8, rax
xor edx, edx
mov rcx, rbp
call qword [sym.imp.KERNEL32.dll_HeapSize]
xor edx, edx
mov rcx, rbx
mov r8, rax
call fcn.140056260
test rbx, rbx
mov rbp, qword [rsp + 0x30]
je 0x1400225a4
mov edx, edi
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
test eax, eax
jne 0x1400225a4
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
test rax, rax
je 0x140022592
mov r8, rbx
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
xor eax, eax
mov rsi, qword [rsp + 0x38]
mov rbx, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
ret
mov rax, rbx
mov rsi, qword [rsp + 0x38]
mov rbx, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
ret
mov rax, rbx
mov rbx, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
ret
Function at 0x140023300
Capabilities:
Link many functions at runtime

Disassembly:
mov qword [rsp + 8], rbx
push rdi
sub rsp, 0x20
test rdx, rdx
mov rbx, rdx
mov rdi, rcx
jne 0x140023322
xor eax, eax
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
lea rdx, str.EBInitialize
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
mov qword [rdi + 0x80], rax
je 0x140023315
lea rdx, str.EBRelease
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
mov qword [rdi + 0x88], rax
je 0x140023315
lea rdx, str.EBGetDeviceID
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
mov qword [rdi + 0x90], rax
je 0x140023315
lea rdx, str.EBGetAvailableChannel
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
mov qword [rdi + 0x98], rax
je 0x140023315
lea rdx, str.EBOpenChannel
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
mov qword [rdi + 0xa0], rax
je 0x140023315
lea rdx, str.EBCloseChannel
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
mov qword [rdi + 0xa8], rax
je 0x140023315
lea rdx, str.EBSend
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
mov qword [rdi + 0xb0], rax
je 0x140023315
lea rdx, str.EBReceive
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
mov qword [rdi + 0xb8], rax
je 0x140023315
lea rdx, str.EBGetStatus
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
mov qword [rdi + 0xc0], rax
je 0x140023315
lea rdx, str.EBReceiveCancel
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rbx, qword [rsp + 0x30]
xor ecx, ecx
test rax, rax
mov qword [rdi + 0xc8], rax
setne cl
mov eax, ecx
add rsp, 0x20
pop rdi
ret
Function at 0x140027a20
Capabilities:
Identify system language via api

Disassembly:
push rsi
push rdi
push r12
push r13
push r14
sub rsp, 0x30
mov qword [rsp + 0x28], 0xfffffffffffffffe
mov qword [rsp + 0x60], rbx
mov qword [rsp + 0x68], rbp
mov rsi, rdx
mov r13, rcx
call fcn.1400280cc
mov rcx, rax
xor eax, eax
test rcx, rcx
setne al
test eax, eax
jne 0x140027a65
mov ecx, 0x80004005
call fcn.140003280
int3
mov rax, qword [rcx]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
movzx r14d, ax
call qword [sym.imp.KERNEL32.dll_GetUserDefaultLCID]
movzx r8d, r14w
lea rdx, [rsp + 0x70]
mov rcx, r13
call fcn.140027910
nop
mov rdx, qword [rax]
lea rdi, [rdx - 0x18]
mov rbp, qword [rsi]
sub rbp, 0x18
or rbx, 0xffffffffffffffff
cmp rdi, rbp
je 0x140027b5a
cmp dword [rbp + 0x10], 0
jl 0x140027b4d
mov rcx, qword [rdi]
cmp rcx, qword [rbp]
jne 0x140027b4d
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
cmp dword [rdi + 0x10], 0
jl 0x140027ae6
cmp rax, qword [rdi]
jne 0x140027ae6
mov r12, rdi
lock add dword [rdi + 0x10], 1
jmp 0x140027b28
mov rax, qword [rax]
mov r8d, 2
mov edx, dword [rdi + 8]
call qword [rax]
mov r12, rax
test rax, rax
jne 0x140027b02
call fcn.140003050
int3
mov eax, dword [rdi + 8]
mov dword [r12 + 8], eax
mov eax, dword [rdi + 8]
add eax, 1
movsxd rdx, eax
lea r9, [rdx + rdx]
lea r8, [rdi + 0x18]
add rdx, rdx
lea rcx, [r12 + 0x18]
call fcn.1400525a0
mov eax, ebx
lock xadd dword [rbp + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140027b43
mov rcx, qword [rbp]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [r12 + 0x18]
mov qword [rsi], rax
jmp 0x140027b5a
mov r8d, dword [rdx - 0x10]
mov rcx, rsi
call fcn.1400036f0
nop
mov rdx, qword [rsp + 0x70]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140027b7a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rsi]
cmp dword [rax - 0x10], 0
jne 0x140027bf6
and r14w, 0x3ff
movzx r8d, r14w
lea rdx, [rsp + 0x78]
mov rcx, r13
call fcn.140027910
nop
mov rdx, rax
mov rcx, rsi
call fcn.140003600
nop
mov rdx, qword [rsp + 0x78]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140027bc7
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rsi]
cmp dword [rax - 0x10], 0
jne 0x140027bf6
xor eax, eax
mov rcx, rbx
lea rdi, str.0809
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, str.0809
mov rcx, rsi
call fcn.1400036f0
nop
mov rdx, qword [rsp + 0x20]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebx
add ebx, 0xffffffff
test ebx, ebx
jg 0x140027c14
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
add rsp, 0x30
pop r14
pop r13
pop r12
pop rdi
pop rsi
ret