joyce8/EMBER2024-capa huggingface dataset:
Function at 0x14000c43c
Capabilities:
Terminate process

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], rdi
mov qword [rax + 0x20], r14
push r15
sub rsp, 0xb0
xor r14d, r14d
mov dword [rsp + 0x20], r14d
lea rcx, [rax - 0x78]
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_GetStartupInfoW]
nop
mov rax, qword gs:[0x30]
mov rbx, qword [rax + 8]
mov esi, r14d
xor eax, eax
lock cmpxchg qword [0x140014c60], rbx
je 0x14000c4a3
cmp rax, rbx
jne 0x14000c496
mov ebx, 1
mov esi, ebx
jmp 0x14000c4a8
mov ecx, 0x3e8
call qword [sym.imp.api_ms_win_core_synch_l1_2_0.dll_Sleep]
jmp 0x14000c47b
mov ebx, 1
mov eax, dword [0x140014c68]
cmp eax, ebx
jne 0x14000c4c0
mov edi, 0x1f
mov ecx, edi
call sub.msvcrt.dll__amsg_exit
jmp 0x14000c52c
mov eax, dword [0x140014c68]
test eax, eax
jne 0x14000c521
mov dword [0x140014c68], ebx
lea r15, [0x14000eba0]
lea rdi, [0x14000eb88]
mov qword [rsp + 0x30], rdi
mov eax, r14d
mov dword [rsp + 0x24], eax
cmp rdi, r15
jae 0x14000c513
test eax, eax
jne 0x14000c517
cmp qword [rdi], r14
je 0x14000c508
mov rax, qword [rdi]
mov rcx, qword [0x14000eb40]
call rcx
mov dword [rsp + 0x24], eax
add rdi, 8
mov qword [rsp + 0x30], rdi
jmp 0x14000c4ea
test eax, eax
je 0x14000c527
mov eax, 0xff
jmp 0x14000c682
mov dword [0x1400143e4], ebx
mov edi, 0x1f
mov eax, dword [0x140014c68]
cmp eax, ebx
jne 0x14000c553
lea rdx, [0x14000eb80]
lea rcx, [0x14000eb48]
call sub.msvcrt.dll__initterm
mov dword [0x140014c68], 2
test esi, esi
jne 0x14000c561
mov rax, r14
xchg qword [0x140014c60], rax
cmp qword [0x140014c80], r14
je 0x14000c594
lea rcx, [0x140014c80]
call fcn.14000ca70
test eax, eax
je 0x14000c594
xor r8d, r8d
lea edx, [r8 + 2]
xor ecx, ecx
mov rax, qword [0x140014c80]
mov r9, qword [0x14000eb40]
call r9
mov rax, qword [sym.imp.msvcrt.dll__wcmdln]
mov rcx, qword [rax]
test rcx, rcx
jne 0x14000c5ad
mov eax, 0xff
jmp 0x14000c682
mov qword [rsp + 0x28], rcx
mov edx, dword [rsp + 0x20]
movzx eax, word [rcx]
cmp ax, 0x20
ja 0x14000c633
test ax, ax
je 0x14000c5c8
test edx, edx
jne 0x14000c633
sub ax, bx
cmp ax, di
ja 0x14000c5de
add rcx, 2
mov qword [rsp + 0x28], rcx
movzx eax, word [rcx]
jmp 0x14000c5c8
test byte [rsp + 0x7c], bl
movzx eax, word [rsp + 0x80]
mov r9d, 0xa
cmovne r9d, eax
mov r8, rcx
xor edx, edx
lea rcx, [0x140000000]
call fcn.140001878
mov dword [0x1400143e0], eax
cmp dword [0x140014400], r14d
jne 0x14000c61c
mov ecx, eax
call qword [sym.imp.msvcrt.dll_exit]
cmp dword [0x1400143e4], r14d
jne 0x14000c631
call qword [sym.imp.msvcrt.dll__cexit]
mov eax, dword [0x1400143e0]
jmp 0x14000c682
cmp ax, 0x22
jne 0x14000c647
mov eax, r14d
test edx, edx
sete al
mov edx, eax
mov dword [rsp + 0x20], eax
add rcx, 2
mov qword [rsp + 0x28], rcx
jmp 0x14000c5b6
lea r11, [rsp + 0xb0]
mov rbx, qword [r11 + 0x10]
mov rsi, qword [r11 + 0x18]
mov rdi, qword [r11 + 0x20]
mov r14, qword [r11 + 0x28]
mov rsp, r11
pop r15
ret
sub rsp, 0x28
call fcn.140176000
add rsp, 0x28
jmp 0x14000c43c
Function at 0x140002520
Capabilities:
Check os version

Disassembly:
mov qword [rsp + 0x18], rsi
push rdi
sub rsp, 0x150
mov rax, qword [0x140121c38]
xor rax, rsp
mov qword [rsp + 0x140], rax
xor edi, edi
mov rsi, rcx
test rcx, rcx
je 0x1400025bd
lea eax, [rdx - 1]
test eax, eax
jne 0x1400025bd
cmp edx, 1
jne 0x1400025b8
xor edx, edx
mov qword [rsp + 0x168], rbx
mov r8d, VarUI4FromDisp
lea rcx, [rsp + 0x24]
call fcn.140085ae0
lea rcx, [rsp + 0x20]
mov dword [rsp + 0x20], VarUI4FromDisp
mov ebx, edi
call qword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
je 0x14000259c
cmp dword [rsp + 0x24], 6
ja 0x140002597
jne 0x14000259c
cmp dword [rsp + 0x28], ebx
jbe 0x14000259c
mov ebx, 1
shl ebx, 0xb
xor edx, edx
mov r8d, ebx
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov rbx, qword [rsp + 0x168]
mov rdi, rax
mov rax, rdi
jmp 0x1400025ca
mov ecx, 0x57
call qword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
mov rcx, qword [rsp + 0x140]
xor rcx, rsp
call fcn.140056c90
mov rsi, qword [rsp + 0x170]
add rsp, 0x150
pop rdi
ret

Function at 0x140002990
Capabilities:
Query or enumerate registry value

Disassembly:
sub rsp, 0x48
xor eax, eax
mov r9d, 0x101
mov qword [rsp + 0x30], rax
xor r8d, r8d
mov dword [rsp + 0x60], eax
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x140002a1c
mov rcx, qword [rsp + 0x30]
lea rax, [rsp + 0x68]
mov qword [rsp + 0x28], rax
lea rdx, str.EulaAccepted
lea rax, [rsp + 0x60]
mov qword [rsp + 0x40], rbx
xor r9d, r9d
mov qword [rsp + 0x20], rax
xor r8d, r8d
mov dword [rsp + 0x68], 4
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov rcx, qword [rsp + 0x30]
mov ebx, eax
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
test ebx, ebx
mov rbx, qword [rsp + 0x40]
jne 0x140002a1c
cmp dword [rsp + 0x60], 0
je 0x140002a1c
mov eax, 1
add rsp, 0x48
ret
xor eax, eax
add rsp, 0x48
ret
Function at 0x140002a30
Capabilities:
Query or enumerate registry value

Disassembly:
sub rsp, 0x268
mov rax, qword [0x140121c38]
xor rax, rsp
mov qword [rsp + 0x250], rax
mov qword [rsp + 0x20], rcx
lea r9, str.SoftwareSysinternals
lea rcx, [rsp + 0x40]
mov edx, 0x104
lea r8, str._s_s
call fcn.140003a40
lea rdx, str.SoftwareSysinternals
mov rcx, 0xffffffff80000002
call fcn.140002990
test eax, eax
jne 0x140002b4b
lea rdx, str.SoftwareSysinternals
mov rcx, 0xffffffff80000001
call fcn.140002990
test eax, eax
jne 0x140002b4b
xor eax, eax
lea rdx, [rsp + 0x40]
mov qword [rsp + 0x38], rax
mov r9d, 0x101
mov dword [rsp + 0x30], eax
xor r8d, r8d
lea rax, [rsp + 0x38]
mov rcx, 0xffffffff80000001
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x140002b31
mov rcx, qword [rsp + 0x38]
lea rax, [rsp + 0x34]
mov qword [rsp + 0x28], rax
lea rdx, str.EulaAccepted
lea rax, [rsp + 0x30]
mov qword [rsp + 0x260], rbx
xor r9d, r9d
mov qword [rsp + 0x20], rax
xor r8d, r8d
mov dword [rsp + 0x34], 4
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov rcx, qword [rsp + 0x38]
mov ebx, eax
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
test ebx, ebx
mov rbx, qword [rsp + 0x260]
jne 0x140002b31
cmp dword [rsp + 0x30], 0
jne 0x140002b4b
xor eax, eax
mov rcx, qword [rsp + 0x250]
xor rcx, rsp
call fcn.140056c90
add rsp, 0x268
ret
mov eax, 1
mov rcx, qword [rsp + 0x250]
xor rcx, rsp
call fcn.140056c90
add rsp, 0x268
ret
Function at 0x140003030
Capabilities:
Accept command line arguments

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
mov qword [rsp + 0x20], rsi
mov qword [rsp + 8], rcx
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x20
xor esi, esi
mov r12, r8
mov r14, rdx
mov ebp, esi
test rdx, rdx
je 0x14000310c
test r8, r8
je 0x14000310c
mov ebx, esi
lea r13d, [rsi + 1]
cmp dword [rdx], ebx
jle 0x1400030ed
mov r15d, esi
nop word [rax + rax]
mov rcx, qword [r12 + r15*8]
lea rdi, [r12 + r15*8]
lea rdx, [0x1400ed178]
call fcn.140095220
test eax, eax
je 0x1400030b9
mov rcx, qword [rdi]
lea rdx, str._accepteula
call fcn.140095220
test eax, eax
je 0x1400030b9
inc ebx
inc r15
mov ebp, esi
cmp ebx, dword [r14]
jl 0x140003080
jmp 0x1400030ed
mov ecx, dword [r14]
mov ebp, r13d
lea eax, [rcx - 1]
cmp ebx, eax
jge 0x1400030e7
nop word [rax + rax]
mov rax, qword [rdi + 8]
inc ebx
mov qword [rdi], rax
lea rdi, [rdi + 8]
mov ecx, dword [r14]
lea eax, [rcx - 1]
cmp ebx, eax
jl 0x1400030d0
lea eax, [rcx - 1]
mov dword [r14], eax
mov rcx, qword [rsp + 0x50]
mov edx, ebp
call fcn.1400032d0
test eax, eax
cmovne ebp, r13d
test ebp, ebp
setne sil
mov eax, esi
jmp 0x1400031e8
mov r13d, 1
lea rcx, str.Shell32.dll
mov edx, r13d
mov r14d, esi
call fcn.140002520
mov rcx, rax
lea rdx, str.CommandLineToArgvW
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rbx, rax
test rax, rax
je 0x1400031d2
call qword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov rcx, rax
lea rdx, [0x140126dd0]
call rbx
mov ebx, esi
mov r15, rax
cmp dword [0x140126dd0], ebx
jle 0x1400031d2
nop
mov rcx, qword [r15 + rbp*8]
lea rdi, [r15 + rbp*8]
lea rdx, [0x1400ed178]
call fcn.140095220
test eax, eax
je 0x14000319d
mov rcx, qword [rdi]
lea rdx, str._accepteula
call fcn.140095220
test eax, eax
je 0x14000319d
inc ebx
inc rbp
cmp ebx, dword [0x140126dd0]
mov r14d, esi
jl 0x140003160
jmp 0x1400031d2
mov ecx, dword [0x140126dd0]
mov r14d, r13d
lea eax, [rcx - 1]
cmp ebx, eax
jge 0x1400031ca
nop dword [rax]
mov rax, qword [rdi + 8]
inc ebx
mov qword [rdi], rax
lea rdi, [rdi + 8]
mov ecx, dword [0x140126dd0]
lea eax, [rcx - 1]
cmp ebx, eax
jl 0x1400031b0
dec ecx
mov dword [0x140126dd0], ecx
mov rcx, qword [rsp + 0x50]
mov edx, r14d
call fcn.1400032d0
test eax, eax
cmovne r14d, r13d
mov eax, r14d
mov rbx, qword [rsp + 0x58]
mov rbp, qword [rsp + 0x60]
mov rsi, qword [rsp + 0x68]
add rsp, 0x20
pop r15
pop r14
pop r13
pop r12
pop rdi
ret
Function at 0x140003b60
Capabilities:
Open clipboard
Write clipboard data

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
sub rsp, 0x20
mov rbx, rdx
call qword [sym.imp.USER32.dll_OpenClipboard]
test eax, eax
je 0x140003c0b
call qword [sym.imp.USER32.dll_EmptyClipboard]
mov rax, 0xffffffffffffffff
cmp word [rbx + rax*2 + 2], 0
lea rax, [rax + 1]
jne 0x140003b92
lea rbp, [rax*2 + 2]
mov ecx, 2
mov rdx, rbp
call qword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov rdi, rax
test rax, rax
je 0x140003bfc
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GlobalLock]
mov rsi, rax
test rax, rax
je 0x140003bfc
mov r8, rbp
mov rdx, rbx
mov rcx, rax
call fcn.140085ca0
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GlobalUnlock]
mov rdx, rdi
mov ecx, 0xd
call qword [sym.imp.USER32.dll_SetClipboardData]
call qword [sym.imp.USER32.dll_CloseClipboard]
mov al, 1
jmp 0x140003c0d
call qword [sym.imp.USER32.dll_CloseClipboard]
test rdi, rdi
je 0x140003c0b
mov al, 1
jmp 0x140003c0d
xor al, al
mov rbx, qword [rsp + 0x30]
mov rbp, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
ret

Function at 0x140007280
Capabilities:
Check if file exists
Get file attributes

Disassembly:
sub rsp, 0x28
mov rcx, qword [rcx]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
setne al
add rsp, 0x28
ret

Function at 0x1400079e0
Capabilities:
Read .ini file

Disassembly:
push rbx
sub rsp, 0x30
mov rax, qword [rcx]
mov r10, r9
mov r9d, dword [rsp + 0x60]
mov r11, r8
mov rbx, rdx
mov qword [rsp + 0x20], rax
mov r8, r10
mov rdx, r11
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetPrivateProfileStructW]
test eax, eax
setne al
add rsp, 0x30
pop rbx
ret

Function at 0x140007a20
Capabilities:
Read .ini file

Disassembly:
push rbx
sub rsp, 0x20
mov rax, r8
mov r10, rdx
movzx ebx, r9b
mov rdx, rax
mov r9, qword [rcx]
mov r8d, 0xffffffff
mov rcx, r10
call qword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
cmp eax, 0xffffffff
jne 0x140007a53
movzx eax, bl
add rsp, 0x20
pop rbx
ret
test eax, eax
setne al
add rsp, 0x20
pop rbx
ret
Function at 0x140007d10
Capabilities:
Read .ini file

Disassembly:
push rbx
sub rsp, 0x30
mov rax, qword [rcx]
mov r10, r9
mov r11, r8
mov qword [rsp + 0x20], rax
mov rbx, rdx
mov r8, r10
mov rdx, r11
mov rcx, rbx
mov r9d, 0x5c
call qword [sym.imp.KERNEL32.dll_GetPrivateProfileStructW]
test eax, eax
setne al
add rsp, 0x30
pop rbx
ret

Function at 0x1400080d0
Capabilities:
Read .ini file

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rdi
push r14
sub rsp, 0x30
mov rbp, r9
mov r14, r8
mov rbx, rdx
mov rdi, rcx
call fcn.140007150
mov rcx, rax
test rax, rax
je 0x1400081c8
mov rax, qword [rax]
mov qword [rsp + 0x50], rsi
call qword [rax + 0x18]
mov esi, 1
mov ecx, esi
lea r9, [rax + 0x18]
mov qword [rbx], r9
mov eax, dword [r9 - 0xc]
sub ecx, dword [r9 - 8]
add eax, 0xffffff80
or ecx, eax
mov rdi, qword [rdi]
jge 0x140008133
lea edx, [rsi + 0x7f]
mov rcx, rbx
call fcn.140007980
mov r9, qword [rbx]
cmp dword [r9 - 0xc], 0x80
mov qword [rsp + 0x58], r15
jl 0x1400081d3
mov r8, qword [rsp + 0x70]
xor r15d, r15d
mov dword [r9 - 0x10], 0x80
mov rdx, rbp
mov rax, qword [rbx]
mov rcx, r14
mov qword [rsp + 0x28], rdi
mov dword [rsp + 0x20], 0x80
mov word [rax + 0x100], r15w
call qword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
movsxd rdi, eax
test eax, eax
js 0x1400081d3
mov rdx, qword [rbx]
mov ecx, dword [rdx - 0xc]
sub esi, dword [rdx - 8]
sub ecx, edi
or esi, ecx
jge 0x14000819d
mov edx, edi
mov rcx, rbx
call fcn.140007980
mov rdx, qword [rbx]
cmp edi, dword [rdx - 0xc]
jg 0x1400081d3
mov rsi, qword [rsp + 0x50]
mov dword [rdx - 0x10], edi
mov rax, qword [rbx]
mov word [rax + rdi*2], r15w
mov rax, rbx
mov rbx, qword [rsp + 0x60]
mov r15, qword [rsp + 0x58]
add rsp, 0x30
pop r14
pop rdi
pop rbp
ret
mov ecx, 0x80004005
call fcn.140006d80
int3
mov ecx, 0x80070057
call fcn.140006d80
int3

Function at 0x140008940
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 edi, r8d
mov rsi, rdx
mov rbp, rcx
call qword [sym.imp.KERNEL32.dll_LoadResource]
test rax, rax
je 0x1400089b5
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_LockResource]
mov rbx, rax
test rax, rax
je 0x1400089b5
mov rdx, rsi
mov rcx, rbp
call qword [sym.imp.KERNEL32.dll_SizeofResource]
mov ecx, eax
add rcx, rbx
and edi, 0xf
jbe 0x1400089a5
nop
cmp rbx, rcx
jae 0x1400089b5
movzx eax, word [rbx]
lea rbx, [rbx + rax*2]
add rbx, 2
add edi, 0xffffffff
jne 0x140008990
cmp rbx, rcx
jae 0x1400089b5
cmp word [rbx], 0
je 0x1400089b5
mov rax, rbx
jmp 0x1400089b7
xor eax, eax
mov rbx, qword [rsp + 0x30]
mov rbp, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
ret
Function at 0x140010f50
Capabilities:
Get graphical window text

Disassembly:
mov qword [rsp + 0x10], rbx
push rsi
sub rsp, 0x20
mov rbx, rdx
mov rsi, rcx
call fcn.140007150
mov rcx, rax
test rax, rax
je 0x14001100d
mov rax, qword [rax]
mov qword [rsp + 0x30], rdi
call qword [rax + 0x18]
add rax, 0x18
mov qword [rbx], rax
mov rcx, qword [rsi - 0x40]
call qword [sym.imp.USER32.dll_GetWindowTextLengthW]
lea edi, [rax + 1]
test edi, edi
js 0x140011018
mov rdx, qword [rbx]
mov ecx, 1
mov eax, dword [rdx - 0xc]
sub ecx, dword [rdx - 8]
sub eax, edi
or ecx, eax
jge 0x140010fb9
mov edx, edi
mov rcx, rbx
call fcn.140007980
mov rdx, qword [rbx]
mov rcx, qword [rsi - 0x40]
mov r8d, edi
call qword [sym.imp.USER32.dll_GetWindowTextW]
xor edi, edi
cmp eax, 0xffffffff
jne 0x140010fe2
mov rcx, qword [rbx]
test rcx, rcx
jne 0x140010fd9
mov eax, edi
jmp 0x140010fe6
movsxd rdx, dword [rcx - 0xc]
call fcn.1400b9bc4
test eax, eax
js 0x140011018
mov rcx, qword [rbx]
cmp eax, dword [rcx - 0xc]
jg 0x140011018
mov dword [rcx - 0x10], eax
mov ecx, eax
mov rax, qword [rbx]
mov word [rax + rcx*2], di
mov rax, rbx
mov rbx, qword [rsp + 0x38]
mov rdi, qword [rsp + 0x30]
add rsp, 0x20
pop rsi
ret
mov ecx, 0x80004005
call fcn.140006d80
int3
mov ecx, 0x80070057
call fcn.140006d80
int3
Function at 0x140012bc0
Capabilities:
Hash data using fnv

Disassembly:
movzx r9d, byte [r8]
mov r10, rcx
movabs rcx, 0x100000001b3
movabs rax, 0xcbf29ce484222325
xor r9, rax
mov r11, rdx
movzx eax, byte [r8 + 1]
mov rdx, qword [r10 + 0x30]
imul r9, rcx
xor r9, rax
movzx eax, byte [r8 + 2]
imul r9, rcx
xor r9, rax
movzx eax, byte [r8 + 3]
imul r9, rcx
xor r9, rax
movzx eax, byte [r8 + 4]
imul r9, rcx
xor r9, rax
movzx eax, byte [r8 + 5]
imul r9, rcx
xor r9, rax
movzx eax, byte [r8 + 6]
imul r9, rcx
xor r9, rax
movzx eax, byte [r8 + 7]
imul r9, rcx
xor r9, rax
imul r9, rcx
and rdx, r9
mov r9, qword [r10 + 8]
shl rdx, 4
add rdx, qword [r10 + 0x18]
mov rax, qword [rdx + 8]
cmp rax, r9
je 0x140012c7e
mov rcx, qword [r8]
mov rdx, qword [rdx]
cmp rcx, qword [rax + 0x10]
je 0x140012c80
cmp rax, rdx
je 0x140012c7e
mov rax, qword [rax + 8]
cmp rcx, qword [rax + 0x10]
jne 0x140012c61
test rax, rax
cmove rax, r9
mov qword [r11], rax
mov rax, r11
ret
xor eax, eax
test rax, rax
cmove rax, r9
mov qword [r11], rax
mov rax, r11
ret

Function at 0x1400150a0
Capabilities:
Get graphical window text

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rsi
push rdi
sub rsp, 0x20
mov rsi, rcx
mov rbx, rdx
mov rcx, qword [rcx]
call qword [sym.imp.USER32.dll_GetWindowTextLengthW]
lea edi, [rax + 1]
test edi, edi
js 0x14001513d
mov rdx, qword [rbx]
mov r8d, 1
mov eax, dword [rdx - 0xc]
sub r8d, dword [rdx - 8]
sub eax, edi
or r8d, eax
jge 0x1400150e9
mov edx, edi
mov rcx, rbx
call fcn.140007980
mov rdx, qword [rbx]
mov rcx, qword [rsi]
mov r8d, edi
call qword [sym.imp.USER32.dll_GetWindowTextW]
xor esi, esi
mov edi, eax
cmp eax, 0xffffffff
jne 0x140015113
mov rcx, qword [rbx]
test rcx, rcx
jne 0x14001510a
mov eax, esi
jmp 0x140015117
movsxd rdx, dword [rcx - 0xc]
call fcn.1400b9bc4
test eax, eax
js 0x14001513d
mov rcx, qword [rbx]
cmp eax, dword [rcx - 0xc]
jg 0x14001513d
mov dword [rcx - 0x10], eax
mov ecx, eax
mov rax, qword [rbx]
mov rbx, qword [rsp + 0x30]
mov word [rax + rcx*2], si
mov eax, edi
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
mov ecx, 0x80070057
call fcn.140006d80
int3
Function at 0x1400167d0
Capabilities:
Extract resource via kernel32 functions
Get common file path
Write file on windows

Disassembly:
mov qword [rsp + 0x20], rbx
push rbp
push rsi
push rdi
push r14
push r15
sub rsp, 0x270
mov rax, qword [0x140121c38]
xor rax, rsp
mov qword [rsp + 0x260], rax
mov rbx, r8
mov rdi, rcx
mov rcx, rbx
lea r8, [0x1400ee3a8]
call qword [sym.imp.KERNEL32.dll_FindResourceW]
mov rsi, rax
test rax, rax
je 0x140016a28
mov rdx, rax
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_SizeofResource]
lea rdx, [rsp + 0x50]
mov ecx, 0x104
mov r14d, eax
call qword [sym.imp.KERNEL32.dll_GetTempPathW]
lea r8, str.theme.ini
mov edx, 0x104
lea rcx, [rsp + 0x50]
call fcn.1400b9e24
xor r15d, r15d
lea rcx, [rsp + 0x50]
mov qword [rsp + 0x30], r15
xor r9d, r9d
mov dword [rsp + 0x28], r15d
xor r8d, r8d
mov edx, 0x40000000
mov dword [rsp + 0x20], 2
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov rbp, rax
cmp rax, 0xffffffffffffffff
je 0x140016a28
mov rdx, rsi
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_LoadResource]
test rax, rax
je 0x140016a28
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_LockResource]
test rax, rax
je 0x140016a28
lea r9, [rsp + 0x48]
mov qword [rsp + 0x20], r15
mov r8d, r14d
mov rdx, rax
mov rcx, rbp
call qword [sym.imp.KERNEL32.dll_WriteFile]
mov rcx, rbp
mov ebx, eax
call qword [sym.imp.KERNEL32.dll_CloseHandle]
test ebx, ebx
je 0x140016a23
lea rcx, [rsp + 0x40]
call fcn.140012c90
mov rbx, qword [rsp + 0x40]
lea rdx, [rsp + 0x50]
mov rcx, rbx
call fcn.140011c50
test al, al
jne 0x140016916
test rbx, rbx
je 0x140016909
mov rdx, rbx
lea rcx, [rsp + 0x40]
call fcn.140013260
mov ebx, r15d
test ebx, ebx
setne al
jmp 0x140016a2a
lea rcx, [rdi + 8]
mov byte [rdi + 0x90], r15b
lea rax, [rsp + 0x40]
cmp rcx, rax
je 0x14001694e
mov rdx, qword [rcx]
mov qword [rcx], rbx
test rdx, rdx
je 0x140016a1c
call fcn.140013260
mov ebx, 1
test ebx, ebx
setne al
jmp 0x140016a2a
test rbx, rbx
je 0x140016a1c
mov esi, 0x1f
lea rdi, [rbx + 0x190]
nop dword [rax]
nop word [rax + rax]
mov rcx, qword [rdi - 8]
lea rdi, [rdi - 8]
dec rsi
test rcx, rcx
je 0x14001698d
call qword [sym.imp.GDI32.dll_DeleteObject]
test eax, eax
je 0x14001698d
mov qword [rdi], r15
test rsi, rsi
jne 0x140016970
mov rcx, qword [rbx + 0x90]
test rcx, rcx
je 0x1400169af
call qword [sym.imp.GDI32.dll_DeleteObject]
test eax, eax
je 0x1400169af
mov qword [rbx + 0x90], r15
mov rcx, qword [rbx + 0x88]
test rcx, rcx
je 0x1400169cc
call qword [sym.imp.GDI32.dll_DeleteObject]
test eax, eax
je 0x1400169cc
mov qword [rbx + 0x88], r15
mov rdx, qword [rbx + 8]
mov ebx, 0xffffffff
mov eax, ebx
sub rdx, 0x18
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x1400169ee
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
mov rax, qword [rsp + 0x40]
mov rdx, qword [rax]
sub rdx, 0x18
lock xadd dword [rdx + 0x10], ebx
sub ebx, 1
jg 0x140016a0d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
mov rcx, qword [rsp + 0x40]
mov edx, 0x210
call fcn.140057064
mov ebx, 1
test ebx, ebx
setne al
jmp 0x140016a2a
xor al, al
mov rcx, qword [rsp + 0x260]
xor rcx, rsp
call fcn.140056c90
mov rbx, qword [rsp + 0x2b8]
add rsp, 0x270
pop r15
pop r14
pop rdi
pop rsi
pop rbp
ret
Function at 0x14001c020
Capabilities:
Hash data using fnv

Disassembly:
mov qword [rsp + 8], rbx
push rdi
sub rsp, 0x20
mov r10, rcx
movzx r9d, dl
movabs rbx, 0x100000001b3
movabs rdi, 0xcbf29ce484222325
xor r9, rdi
mov rax, rdx
shr rax, 8
mov r11, qword [r10 + 0x40]
movzx r8d, al
mov rax, rdx
imul r9, rbx
shr rax, 0x10
xor r9, r8
movzx ecx, al
mov r8, qword [r10 + 0x18]
mov rax, rdx
imul r9, rbx
shr rax, 0x18
xor r9, rcx
movzx ecx, al
imul r9, rbx
mov rax, rdx
xor r9, rcx
shr rax, 0x20
movzx ecx, al
mov rax, rdx
imul r9, rbx
shr rax, 0x28
xor r9, rcx
movzx ecx, al
imul r9, rbx
mov rax, rdx
xor r9, rcx
shr rax, 0x30
movzx ecx, al
mov rax, rdx
imul r9, rbx
shr rax, 0x38
xor r9, rcx
imul r9, rbx
xor r9, rax
mov rax, r11
imul r9, rbx
and rax, r9
mov r9, qword [r10 + 0x28]
add rax, rax
mov rcx, qword [r9 + rax*8 + 8]
cmp rcx, r8
je 0x14001c1d0
mov rax, qword [r9 + rax*8]
cmp rdx, qword [rcx + 0x10]
je 0x14001c103
nop
cmp rcx, rax
je 0x14001c1d0
mov rcx, qword [rcx + 8]
cmp rdx, qword [rcx + 0x10]
jne 0x14001c0f0
test rcx, rcx
cmove rcx, r8
cmp rcx, r8
je 0x14001c1d0
movzx eax, byte [rcx + 0x11]
movzx edx, byte [rcx + 0x10]
xor rdx, rdi
imul rdx, rbx
xor rdx, rax
movzx eax, byte [rcx + 0x12]
imul rdx, rbx
xor rdx, rax
movzx eax, byte [rcx + 0x13]
imul rdx, rbx
xor rdx, rax
movzx eax, byte [rcx + 0x14]
imul rdx, rbx
xor rdx, rax
movzx eax, byte [rcx + 0x15]
imul rdx, rbx
xor rdx, rax
movzx eax, byte [rcx + 0x16]
imul rdx, rbx
xor rdx, rax
movzx eax, byte [rcx + 0x17]
imul rdx, rbx
xor rdx, rax
imul rdx, rbx
and r11, rdx
add r11, r11
mov rax, qword [r9 + r11*8]
cmp qword [r9 + r11*8 + 8], rcx
jne 0x14001c197
cmp rax, rcx
jne 0x14001c18c
mov qword [r9 + r11*8], r8
mov qword [r9 + r11*8 + 8], r8
jmp 0x14001c1a3
mov r8, qword [rcx + 8]
mov qword [r9 + r11*8 + 8], r8
jmp 0x14001c1a3
cmp rax, rcx
jne 0x14001c1a3
mov rax, qword [rcx]
mov qword [r9 + r11*8], rax
mov rdx, qword [rcx]
dec qword [r10 + 0x20]
mov rax, qword [rcx + 8]
mov qword [rax], rdx
mov rax, qword [rcx + 8]
mov qword [rdx + 8], rax
mov edx, 0x18
call fcn.140057064
mov al, 1
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
mov rbx, qword [rsp + 0x30]
xor al, al
add rsp, 0x20
pop rdi
ret