joyce8/EMBER2024-capa huggingface dataset:
Function at 0x1400025e0
Capabilities:
Write file on windows

Disassembly:
mov qword [rsp + 0x20], rbx
push rdi
sub rsp, 0x80
mov rax, qword [0x140009040]
xor rax, rsp
mov qword [rsp + 0x78], rax
mov edi, edx
mov rbx, rcx
cmp edx, 0xffffffff
jne 0x14000260d
xor eax, eax
jmp 0x140002779
mov rax, qword [rcx + 0x40]
mov rdx, qword [rax]
test rdx, rdx
je 0x140002647
mov rax, qword [rcx + 0x58]
movsxd r8, dword [rax]
lea rcx, [rdx + r8]
cmp rdx, rcx
jae 0x140002647
lea ecx, [r8 - 1]
mov dword [rax], ecx
mov eax, edi
mov rdx, qword [rbx + 0x40]
mov r8, qword [rdx]
lea rcx, [r8 + 1]
mov qword [rdx], rcx
mov byte [r8], dil
jmp 0x140002779
cmp qword [rbx + 0x80], 0
mov qword [rsp + 0xa0], rsi
je 0x14000276c
mov r8, qword [rbx + 0x18]
lea rax, [rbx + 0x70]
cmp qword [r8], rax
jne 0x14000268a
mov rcx, qword [rbx + 0x88]
mov rdx, qword [rbx + 0x90]
mov qword [r8], rcx
sub edx, ecx
mov rax, qword [rbx + 0x38]
mov qword [rax], rcx
mov rax, qword [rbx + 0x50]
mov dword [rax], edx
mov rcx, qword [rbx + 0x68]
test rcx, rcx
jne 0x1400026b5
mov rdx, qword [rbx + 0x80]
movsx ecx, dil
call qword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fputc]
mov ecx, 0xffffffff
cmp eax, ecx
cmovne ecx, edi
mov eax, ecx
jmp 0x140002771
lea rax, [rsp + 0x40]
mov byte [rsp + 0x50], dil
mov qword [rsp + 0x38], rax
lea rdx, [rbx + 0x74]
lea rax, [rsp + 0x78]
mov qword [rsp + 0x30], rax
lea r9, [rsp + 0x51]
lea rax, [rsp + 0x58]
mov qword [rsp + 0x28], rax
lea r8, [rsp + 0x50]
lea rax, [rsp + 0x48]
mov qword [rsp + 0x20], rax
call qword [sym.imp.MSVCP140.dll_public:_int___cdecl_std::codecvt_char__char__struct__Mbstatet_::out_struct__Mbstatet____ptr64__char_const____ptr64__char_const____ptr64__char_const____ptr64____ptr64__char____ptr64__char____ptr64__char____ptr64____ptr64_const___ptr64]
test eax, eax
je 0x140002724
sub eax, 1
je 0x140002724
cmp eax, 2
jne 0x14000276c
movsx ecx, byte [rsp + 0x50]
mov rdx, qword [rbx + 0x80]
call qword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fputc]
mov ecx, 0xffffffff
cmp eax, ecx
cmovne ecx, edi
mov eax, ecx
jmp 0x140002771
mov rsi, qword [rsp + 0x40]
lea rax, [rsp + 0x58]
sub rsi, rax
je 0x140002752
mov r9, qword [rbx + 0x80]
lea rcx, [rsp + 0x58]
mov r8, rsi
mov edx, 1
call qword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fwrite]
cmp rsi, rax
jne 0x14000276c
lea rax, [rsp + 0x50]
mov byte [rbx + 0x71], 1
cmp qword [rsp + 0x48], rax
mov ecx, 0xffffffff
cmovne ecx, edi
mov eax, ecx
jmp 0x140002771
mov eax, 0xffffffff
mov rsi, qword [rsp + 0xa0]
mov rcx, qword [rsp + 0x78]
xor rcx, rsp
call fcn.140003900
mov rbx, qword [rsp + 0xa8]
add rsp, 0x80
pop rdi
ret
Function at 0x140002a00
Capabilities:
Write file on windows

Disassembly:
push rbx
sub rsp, 0x60
mov rax, qword [0x140009040]
xor rax, rsp
mov qword [rsp + 0x58], rax
cmp qword [rcx + 0x68], 0
mov rbx, rcx
je 0x140002ad3
cmp byte [rcx + 0x71], 0
je 0x140002ad3
mov rax, qword [rcx]
mov edx, 0xffffffff
mov qword [rsp + 0x78], rdi
call qword [rax + 0x18]
cmp eax, 0xffffffff
je 0x140002acf
mov rcx, qword [rbx + 0x68]
lea rax, [rsp + 0x30]
lea rdx, [rbx + 0x74]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x58]
lea r8, [rsp + 0x38]
call qword [sym.imp.MSVCP140.dll_public:_int___cdecl_std::codecvt_char__char__struct__Mbstatet_::unshift_struct__Mbstatet____ptr64__char____ptr64__char____ptr64__char____ptr64____ptr64_const___ptr64]
test eax, eax
je 0x140002a94
sub eax, 1
je 0x140002a98
cmp eax, 2
jne 0x140002acf
mov byte [rbx + 0x71], 0
mov al, 1
mov rdi, qword [rsp + 0x78]
mov rcx, qword [rsp + 0x58]
xor rcx, rsp
call fcn.140003900
add rsp, 0x60
pop rbx
ret
mov byte [rbx + 0x71], 0
mov rdi, qword [rsp + 0x30]
lea rax, [rsp + 0x38]
sub rdi, rax
je 0x140002ac6
mov r9, qword [rbx + 0x80]
lea rcx, [rsp + 0x38]
mov r8, rdi
mov edx, 1
call qword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fwrite]
cmp rdi, rax
jne 0x140002acf
cmp byte [rbx + 0x71], 0
sete al
jmp 0x140002a7c
xor al, al
jmp 0x140002a7c
mov al, 1
mov rcx, qword [rsp + 0x58]
xor rcx, rsp
call fcn.140003900
add rsp, 0x60
pop rbx
ret
Function at 0x140004288
Capabilities:
Parse pe header

Disassembly:
sub rsp, 0x28
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test rax, rax
je 0x1400042d2
mov ecx, 0x5a4d
cmp word [rax], cx
jne 0x1400042d2
movsxd rcx, dword [rax + 0x3c]
add rcx, rax
cmp dword [rcx], 0x4550
jne 0x1400042d2
mov eax, 0x20b
cmp word [rcx + 0x18], ax
jne 0x1400042d2
cmp dword [rcx + 0x84], 0xe
jbe 0x1400042d2
cmp dword [rcx + 0xf8], 0
setne al
jmp 0x1400042d4
xor al, al
add rsp, 0x28
ret
Function at 0x14000f110
Capabilities:
Check mutex on windows

Disassembly:
mov qword [rsp + 0x10], rbx
push rdi
sub rsp, 0x20
mov rdi, rcx
lea r8, str.AllowMultipleInstances
lea rdx, [rsp + 0x30]
add rcx, 0x1a0
call fcn.140053520
mov r8, qword [rax]
movzx eax, word [reloc.msi.dll_MsiGetFeatureCostA]
movzx edx, word [r8]
sub edx, eax
jne 0x14000f155
movzx edx, word [r8 + 2]
movzx eax, word [0x1402964f6]
sub edx, eax
test edx, edx
mov rdx, qword [rsp + 0x30]
sete bl
add rdx, 0xffffffffffffffe8
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
dec eax
jg 0x14000f178
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test bl, bl
je 0x14000f189
xor al, al
mov rbx, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
lea r8, str.GlobalSETUPRUNNING_MUTEX_NAME_BB2A5A67_F70A_4606_8A1D_AD930562E1EE
xor edx, edx
xor ecx, ecx
xor bl, bl
call qword [sym.imp.KERNEL32.dll_CreateMutexW]
mov qword [rdi + 0x178], rax
test rax, rax
je 0x14000f1b5
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x14000f1b7
mov bl, 1
movzx eax, bl
mov rbx, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret

Function at 0x1400108d0
Capabilities:
Shutdown system

Disassembly:
push rdi
sub rsp, 0x50
mov rax, qword [0x1402fcb80]
xor rax, rsp
mov qword [rsp + 0x48], rax
xor edi, edi
mov qword [rsp + 0x30], rdi
call qword [sym.imp.KERNEL32.dll_GetCurrentProcess]
lea r8, [rsp + 0x30]
lea edx, [rdi + 0x28]
mov rcx, rax
call qword [sym.imp.ADVAPI32.dll_OpenProcessToken]
test eax, eax
jne 0x14001091c
xor al, al
mov rcx, qword [rsp + 0x48]
xor rcx, rsp
call fcn.1401f3080
add rsp, 0x50
pop rdi
ret
lea r8, [rsp + 0x3c]
lea rdx, str.SeShutdownPrivilege
xor ecx, ecx
call qword [sym.imp.ADVAPI32.dll_LookupPrivilegeValueW]
mov rcx, qword [rsp + 0x30]
lea r8, [rsp + 0x38]
xor r9d, r9d
xor edx, edx
mov qword [rsp + 0x28], rdi
mov dword [rsp + 0x38], 1
mov dword [rsp + 0x44], 2
mov qword [rsp + 0x20], rdi
call qword [sym.imp.ADVAPI32.dll_AdjustTokenPrivileges]
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x140010907
xor r9d, r9d
xor r8d, r8d
xor edx, edx
xor ecx, ecx
mov qword [rsp + 0x60], rbx
mov dword [rsp + 0x20], 1
mov bl, 1
call qword [sym.imp.ADVAPI32.dll_InitiateSystemShutdownW]
mov rcx, qword [rsp + 0x30]
test eax, eax
movzx ebx, bl
lea r8, [rsp + 0x38]
cmove ebx, edi
xor r9d, r9d
xor edx, edx
mov qword [rsp + 0x28], rdi
mov dword [rsp + 0x44], edi
mov qword [rsp + 0x20], rdi
call qword [sym.imp.ADVAPI32.dll_AdjustTokenPrivileges]
movzx eax, bl
mov rbx, qword [rsp + 0x60]
mov rcx, qword [rsp + 0x48]
xor rcx, rsp
call fcn.1401f3080
add rsp, 0x50
pop rdi
ret
Function at 0x140011790
Capabilities:
Extract resource via kernel32 functions

Disassembly:
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
jne 0x1400117c3
mov rbp, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
ret
mov rcx, rax
mov qword [rsp + 0x30], rbx
call qword [sym.imp.KERNEL32.dll_LockResource]
mov rbx, rax
test rax, rax
je 0x140011809
mov rdx, rsi
mov rcx, rbp
call qword [sym.imp.KERNEL32.dll_SizeofResource]
mov ecx, eax
add rcx, rbx
and edi, 0xf
jbe 0x140011804
nop
cmp rbx, rcx
jae 0x140011809
movzx eax, word [rbx]
lea rbx, [rbx + rax*2]
add rbx, 2
dec edi
jne 0x1400117f0
cmp rbx, rcx
jb 0x14001180d
xor eax, eax
jmp 0x140011819
xor eax, eax
cmp word [rbx], ax
cmove rbx, rax
mov rax, rbx
mov rbx, qword [rsp + 0x30]
mov rbp, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
ret

Function at 0x1400163c0
Capabilities:
Resume thread

Disassembly:
mov dword [rsp + 0x10], edx
push rbx
sub rsp, 0x20
cmp qword [rcx + 0x120], 0
mov rbx, rcx
jne 0x1400163e1
mov eax, 2
add rsp, 0x20
pop rbx
ret
mov rcx, qword [rcx + 0x40]
call qword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x1400163f9
xor edx, edx
mov rcx, rbx
call fcn.14006e3ac
mov rcx, qword [rbx + 0x40]
xor r9d, r9d
mov r8d, 0x1f4
lea edx, [r9 + 1]
call qword [sym.imp.USER32.dll_SetTimer]
xor ecx, ecx
mov dword [rsp + 0x38], 0x103
mov qword [rbx + 0x130], rax
call qword [sym.imp.KERNEL32.dll_Sleep]
mov rcx, qword [rbx + 0x120]
lea rdx, [rsp + 0x38]
call qword [sym.imp.KERNEL32.dll_GetExitCodeThread]
mov eax, dword [rsp + 0x38]
mov dword [rbx + 0x12c], eax
cmp eax, 0x103
jne 0x140016466
mov rcx, qword [rbx + 0x120]
call qword [sym.imp.KERNEL32.dll_ResumeThread]
xor edx, edx
mov rcx, rbx
add rsp, 0x20
pop rbx
jmp fcn.1400783ac
mov eax, 1
add rsp, 0x20
pop rbx
ret
Function at 0x14001abe0
Capabilities:
Check if file exists

Disassembly:
mov qword [rsp + 8], rcx
push rbx
push rsi
push rdi
sub rsp, 0xc0
mov qword [rsp + 0x20], 0xfffffffffffffffe
xor ebx, ebx
lea r8, str.PatchSearchFile
lea rdx, [rsp + 0xe0]
lea rcx, [0x140313370]
call fcn.140053520
nop
mov rax, qword [rsp + 0xe0]
movzx ecx, word [rax]
cmp cx, word [0x140296e0c]
jne 0x14001ac2e
mov eax, ebx
jmp 0x14001ac33
sbb eax, eax
or eax, 1
test eax, eax
jne 0x14001ac4f
lea r8d, [rax + 9]
lea rdx, [0x140296568]
lea rcx, [rsp + 0xe0]
call fcn.140011b80
lea r8, [0x140296b88]
lea rdx, [rsp + 0xe8]
lea rcx, [0x140313370]
call fcn.140053520
nop
mov rsi, qword [rax]
call fcn.140069614
mov rdx, rax
mov ecx, ebx
test rax, rax
setne cl
test ecx, ecx
jne 0x14001ac8d
mov ecx, 0x80004005
call fcn.140011b60
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x38], rax
lea rax, vtable.CUtlCommonPath.0
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x40], ebx
or rdi, 0xffffffffffffffff
test rsi, rsi
jne 0x14001acbc
mov eax, ebx
jmp 0x14001acca
mov rax, rdi
nop
inc rax
cmp word [rsi + rax*2], 0
jne 0x14001acc0
mov r8d, eax
mov rdx, rsi
lea rcx, [rsp + 0x38]
call fcn.140011b80
nop
mov rdx, qword [rsp + 0xe8]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14001acf7
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [0x140296e0c]
mov rdx, qword [rsp + 0x38]
cmp rax, rdx
jne 0x14001ad12
mov esi, 3
jmp 0x14001ada6
mov rdx, qword [rsp + 0xe0]
lea rcx, [rsp + 0x30]
call fcn.14003c240
lea rcx, [rsp + 0x80]
call fcn.140070fe4
nop
lea rdx, [rsp + 0xf0]
lea rcx, [rsp + 0x30]
call fcn.14003c0d0
nop
xor r8d, r8d
mov rdx, qword [rax]
lea rcx, [rsp + 0x80]
call fcn.140071200
test eax, eax
sete sil
mov rdx, qword [rsp + 0xf0]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14001ad7a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test sil, sil
je 0x14001ad92
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
mov esi, 3
cmp eax, 2
cmove ebx, esi
mov esi, ebx
lea rcx, [rsp + 0x80]
call fcn.14007112c
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14001adbb
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0xe0]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14001add8
mov rcx, qword [rdx]
mov r8, qword [rcx]
call qword [rreloc.OLEAUT32.dll_VariantClear + 8]
mov eax, esi
add rsp, 0xc0
pop rdi
pop rsi
pop rbx
ret
Function at 0x140021350
Capabilities:
Get disk size

Disassembly:
mov qword [rsp + 8], rcx
push rbx
push rbp
push r14
push r15
sub rsp, 0x28
movsxd rbx, edx
xor r14d, r14d
lea r15, [0x1403137b0]
shl rbx, 5
mov qword [rsp + 0x50], r14
mov qword [rsp + 0x68], r14
mov rdx, qword [rbx + r15]
mov rbp, qword [rbx + r15 + 0x18]
mov qword [rsp + 0x60], r14
call fcn.1400214c0
add rbp, rax
test rbp, rbp
jle 0x1400214a9
movzx eax, word [0x140296e0c]
mov qword [rsp + 0x58], rsi
lea rsi, [rbx + r15]
lea rbx, [0x1403150f8]
mov r11d, r14d
lea r10, [0x1403150b0]
nop word [rax + rax]
mov r9, qword [r10]
cmp word [r9], ax
je 0x140021436
test r9, r9
je 0x1400214b4
mov rcx, qword [rsi + 8]
sub r9, rcx
nop dword [rax]
movzx r8d, word [rcx]
movzx edx, word [rcx + r9]
sub r8d, edx
jne 0x1400213f6
add rcx, 2
test edx, edx
jne 0x1400213e0
test r8d, r8d
je 0x140021417
add r10, 0x18
inc r11d
cmp r10, rbx
jl 0x1400213c0
mov rsi, qword [rsp + 0x58]
add rsp, 0x28
pop r15
pop r14
pop rbp
pop rbx
ret
mov rsi, qword [rsp + 0x58]
movsxd rax, r11d
lea rcx, [rax + rax*2]
add qword [r15 + rcx*8 + 0x1910], rbp
add rsp, 0x28
pop r15
pop r14
pop rbp
pop rbx
ret
movsxd rbx, r11d
mov qword [rsp + 0x20], rdi
lea rdx, [rsi + 8]
lea rax, [rbx + rbx*2]
lea rdi, [r15 + rax*8]
lea rcx, [rdi + 0x1900]
call fcn.1400114e0
mov rcx, qword [rsi + 8]
lea r9, [rsp + 0x60]
lea r8, [rsp + 0x68]
lea rdx, [rsp + 0x50]
call qword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExW]
mov rcx, qword [rsp + 0x50]
mov rsi, qword [rsp + 0x58]
test eax, eax
mov qword [rdi + 0x1910], rbp
mov rdi, qword [rsp + 0x20]
cmove rcx, r14
mov rax, rcx
lea rcx, [rbx + rbx*2]
cqo
and edx, 0x3ff
add rax, rdx
sar rax, 0xa
mov qword [r15 + rcx*8 + 0x1908], rax
add rsp, 0x28
pop r15
pop r14
pop rbp
pop rbx
ret
mov ecx, 0x80004005
call fcn.140011b60
int3

Function at 0x140022180
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rsi
push rdi
sub rsp, 0x20
cmp byte [0x140312398], 0
mov rbx, rdx
mov rdi, rcx
jne 0x14002224d
mov eax, dword [rdx + 8]
sub eax, 0x100
test eax, 0xfffffffa
jne 0x1400221fa
mov rax, qword [rdx + 0x10]
lea rdx, [rax - 0x70]
cmp rdx, 0xb
ja 0x1400221ca
mov ecx, 0xff7
bt rcx, rdx
jb 0x1400221e5
cmp rax, 0x2f
je 0x1400221e5
cmp rax, 0x1b
je 0x1400221e5
cmp byte [rdi + 0x4b0], 0
jne 0x1400221fa
cmp rax, 8
jne 0x1400221fa
mov eax, 1
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
mov ecx, reloc.msi.dll_MsiDatabaseExportA
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov esi, 0x8000
test si, ax
je 0x14002222d
mov rax, qword [rbx + 0x10]
add rax, 0xffffffffffffffdb
cmp rax, 0x2b
ja 0x14002222d
movabs rcx, 0xa0080000005
bt rcx, rax
jb 0x1400221e5
mov ecx, reloc.OLEAUT32.dll_SafeArrayGetUBound
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test si, ax
je 0x14002224d
mov rax, qword [rbx + 0x10]
sub rax, 0x25
test rax, 0xfffffffffffffffd
je 0x1400221e5
mov rdx, rbx
mov rcx, rdi
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
jmp fcn.14006d290
Function at 0x140055090
Capabilities:
Delete file

Disassembly:
mov rax, rsp
push r14
sub rsp, 0xa0
mov qword [rax - 0x78], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
mov rax, qword [0x1402fcb80]
xor rax, rsp
mov qword [rsp + 0x90], rax
mov rdi, rcx
call fcn.1400552c0
mov rcx, rdi
call fcn.1400555e0
mov rcx, rdi
call fcn.140055890
test al, al
je 0x140055286
mov rcx, qword [rdi]
call qword [sym.imp.KERNEL32.dll_DeleteFileW]
mov rbx, qword [rdi]
call fcn.140069614
mov rdx, rax
xor ebp, ebp
mov ecx, ebp
test rax, rax
setne cl
test ecx, ecx
jne 0x140055113
mov ecx, 0x80004005
call fcn.140011b60
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x48], rax
lea rax, vtable.CUtlCommonPath.0
mov qword [rsp + 0x40], rax
mov dword [rsp + 0x50], ebp
or rsi, 0xffffffffffffffff
test rbx, rbx
jne 0x140055142
mov eax, ebp
jmp 0x14005514f
mov rax, rsi
inc rax
cmp word [rbx + rax*2], 0
jne 0x140055145
mov r8d, eax
mov rdx, rbx
lea rcx, [rsp + 0x48]
call fcn.140011b80
nop
lea rcx, [rsp + 0x40]
call fcn.14003c9d0
lea rdx, [0x140296e0c]
lea rcx, [rsp + 0x40]
call fcn.14003cd40
call fcn.140069614
mov rcx, rax
test rax, rax
setne bpl
test ebp, ebp
jne 0x140055199
mov ecx, 0x80004005
call fcn.140011b60
int3
mov rax, qword [rax]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x20], rax
lea rdx, str._A___B__d___Y_____I:_M__p
lea rcx, [rsp + 0x38]
call fcn.140011c70
mov rdx, rax
lea rcx, [rsp + 0x28]
call fcn.14003f790
nop
mov r8, qword [rax]
lea rdx, str._Logging_Started__s_
lea rcx, [rsp + 0x20]
call fcn.140011640
nop
mov rdx, qword [rsp + 0x28]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x1400551f5
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rdi + 0x18]
xor r9d, r9d
mov r8d, 0x3041
mov rdx, qword [rdi]
lea rcx, [rdi + 0x18]
call qword [rax + MsiGetSummaryInformationW]
mov rbx, qword [rsp + 0x20]
test eax, eax
jle 0x14005522e
mov rdx, rbx
lea rcx, [rdi + 0x18]
call fcn.140067fe0
test al, al
je 0x14005522e
mov rax, qword [0x140239ae8]
jmp 0x140055239
mov rax, qword [0x140239ae8]
mov qword [rdi + 0x20], rax
mov r8d, 1
cmp qword [rdi + 0x20], rax
je 0x14005524d
mov rdx, qword [rdi]
mov ecx, dword [rdi + 0x10]
jmp 0x140055251
xor edx, edx
xor ecx, ecx
call qword [sym.imp.msi.dll_MsiGetComponentPathW]
nop
lea rdx, [rbx - 0x18]
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14005526d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x48]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x140055286
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rcx, qword [rsp + 0x90]
xor rcx, rsp
call fcn.1401f3080
lea r11, [rsp + 0xa0]
mov rbx, qword [r11 + 0x10]
mov rbp, qword [r11 + 0x18]
mov rsi, qword [r11 + 0x20]
mov rdi, qword [r11 + 0x28]
mov rsp, r11
pop r14
ret
Function at 0x140057ef0
Capabilities:
Check if file exists

Disassembly:
push rdi
sub rsp, 0x50
mov qword [rsp + 0x20], 0xfffffffffffffffe
mov qword [rsp + 0x60], rbx
mov rbx, rdx
mov rdi, rcx
test rdx, rdx
jne 0x140057f19
mov eax, 0xc9
jmp 0x140057f9e
test rcx, rcx
je 0x140057f99
mov rcx, rdx
call qword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x140057f92
mov qword [rsp + 0x40], 7
xor r8d, r8d
mov qword [rsp + 0x38], r8
mov word [rsp + 0x28], r8w
cmp word [rbx], r8w
je 0x140057f5b
or r8, 0xffffffffffffffff
nop dword [rax]
inc r8
cmp word [rbx + r8*2], 0
jne 0x140057f50
mov rdx, rbx
lea rcx, [rsp + 0x28]
call fcn.1400268f0
nop
mov rcx, qword [rdi + 0x18]
add rcx, 0x10
lea rdx, [rsp + 0x28]
call fcn.140062de0
nop
cmp qword [rsp + 0x40], 8
jb 0x140057f8e
mov rcx, qword [rsp + 0x28]
call fcn.1400681d4
xor eax, eax
jmp 0x140057f9e
mov eax, 0xca
jmp 0x140057f9e
mov eax, 0xc8
mov rbx, qword [rsp + 0x60]
add rsp, 0x50
pop rdi
ret

Function at 0x14005a3c0
Capabilities:
Check if file exists
Create directory

Disassembly:
push rbx
sub rsp, 0x280
mov rax, qword [0x1402fcb80]
xor rax, rsp
mov qword [rsp + 0x270], rax
cmp qword [rcx + 0x18], 8
mov rbx, rcx
jb 0x14005a3e8
mov rcx, qword [rcx]
call qword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x14005a4ed
mov qword [rsp + 0x298], rdi
call qword [sym.imp.KERNEL32.dll_GetTickCount]
lea rdx, [0x14029fe3c]
lea rcx, [rsp + 0x20]
mov r8d, eax
mov edi, eax
call fcn.14005be50
mov rcx, rbx
call fcn.140058620
lea r8, [rsp + 0x20]
lea rcx, [rsp + 0x60]
mov rdx, rax
call qword [sym.imp.SHLWAPI.dll_PathCombineW]
lea rcx, [rsp + 0x60]
call qword [sym.imp.SHLWAPI.dll_PathAddBackslashW]
lea rcx, [rsp + 0x60]
call qword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x14005a49b
nop
inc edi
lea rdx, [0x14029fe3c]
lea rcx, [rsp + 0x20]
mov r8d, edi
call fcn.14005be50
mov rcx, rbx
call fcn.140058620
lea r8, [rsp + 0x20]
lea rcx, [rsp + 0x60]
mov rdx, rax
call qword [sym.imp.SHLWAPI.dll_PathCombineW]
lea rcx, [rsp + 0x60]
call qword [sym.imp.SHLWAPI.dll_PathAddBackslashW]
lea rcx, [rsp + 0x60]
call qword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x14005a450
lea rcx, [rsp + 0x60]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_CreateDirectoryW]
cmp word [rsp + 0x60], 0
mov rdi, qword [rsp + 0x298]
jne 0x14005a4bd
xor r8d, r8d
jmp 0x14005a4db
lea rax, [rsp + 0x60]
or r8, 0xffffffffffffffff
nop word [rax + rax]
inc r8
cmp word [rax + r8*2], 0
jne 0x14005a4d0
lea rdx, [rsp + 0x60]
mov rcx, rbx
call fcn.1400268f0
mov eax, 1
mov rcx, qword [rsp + 0x270]
xor rcx, rsp
call fcn.1401f3080
add rsp, 0x280
pop rbx
ret
Function at 0x14005a510
Capabilities:
Get common file path

Disassembly:
push rbx
sub rsp, 0x650
mov rax, qword [0x1402fcb80]
xor rax, rsp
mov qword [rsp + 0x640], rax
mov rbx, rcx
lea rdx, [rsp + 0x20]
mov ecx, 0x104
call qword [sym.imp.KERNEL32.dll_GetTempPathW]
cmp eax, 0x103
jb 0x14005a54c
xor eax, eax
jmp 0x14005a5ed
lea rcx, [rsp + 0x20]
call qword [sym.imp.SHLWAPI.dll_PathAddBackslashW]
lea rdx, [rsp + 0x230]
lea rcx, [rsp + 0x20]
mov r8d, 0x208
call qword [sym.imp.KERNEL32.dll_GetLongPathNameW]
test eax, eax
je 0x14005a5b5
cmp word [rsp + 0x230], 0
jne 0x14005a58c
xor r8d, r8d
lea rdx, [rsp + 0x230]
jmp 0x14005a5e0
lea rax, [rsp + 0x230]
or r8, 0xffffffffffffffff
nop dword [rax + rax]
inc r8
cmp word [rax + r8*2], 0
jne 0x14005a5a0
lea rdx, [rsp + 0x230]
jmp 0x14005a5e0
cmp word [rsp + 0x20], 0
jne 0x14005a5c2
xor r8d, r8d
jmp 0x14005a5db
lea rax, [rsp + 0x20]
or r8, 0xffffffffffffffff
nop dword [rax + rax]
inc r8
cmp word [rax + r8*2], 0
jne 0x14005a5d0
lea rdx, [rsp + 0x20]
mov rcx, rbx
call fcn.1400268f0
mov eax, 1
mov rcx, qword [rsp + 0x640]
xor rcx, rsp
call fcn.1401f3080
add rsp, 0x650
pop rbx
ret
Function at 0x14005a610
Capabilities:
Delete directory
Delete file
Enumerate files on windows
Enumerate files recursively

Disassembly:
mov rax, rsp
push rbp
lea rbp, [rax - 0x5d8]
sub rsp, 0x6d0
mov qword [rsp + 0x40], 0xfffffffffffffffe
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
mov rax, qword [0x1402fcb80]
xor rax, rsp
mov qword [rbp + 0x5c0], rax
mov rdi, rcx
xor ebx, ebx
mov word [rbp + 0x3b0], bx
xor edx, edx
mov r8d, 0x206
lea rcx, [rbp + 0x3b2]
call fcn.1401f7750
cmp qword [rdi + 0x18], 8
jb 0x14005a674
mov rdx, qword [rdi]
jmp 0x14005a677
mov rdx, rdi
lea r8, [0x1402986f4]
lea rcx, [rbp + 0x3b0]
call qword [sym.imp.SHLWAPI.dll_PathCombineW]
lea rdx, [rsp + 0x50]
lea rcx, [rbp + 0x3b0]
call qword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov rsi, rax
cmp rax, 0xffffffffffffffff
je 0x14005a7e8
nop word [rax + rax]
mov word [rbp + 0x1a0], bx
xor edx, edx
mov r8d, 0x206
lea rcx, [rbp + 0x1a2]
call fcn.1401f7750
test byte [rsp + 0x50], 0x10
je 0x14005a79f
movzx ecx, word [rsp + 0x7c]
movzx eax, word [rsp + 0x7e]
cmp cx, word [0x140299a90]
jne 0x14005a6f6
cmp ax, word [0x140299a92]
je 0x14005a7c9
cmp cx, word [0x14029fc40]
jne 0x14005a719
cmp ax, word [0x14029fc42]
jne 0x14005a719
movzx eax, word [rbp - 0x80]
cmp ax, word [0x14029fc44]
je 0x14005a7c9
mov rcx, rdi
call fcn.140058620
mov rdx, rax
lea r8, [rsp + 0x7c]
lea rcx, [rbp + 0x1a0]
call qword [sym.imp.SHLWAPI.dll_PathCombineW]
mov qword [rsp + 0x38], 7
mov qword [rsp + 0x30], rbx
mov word [rsp + 0x20], bx
cmp word [rbp + 0x1a0], 0
jne 0x14005a758
mov r8, rbx
jmp 0x14005a76e
lea rax, [rbp + 0x1a0]
or r8, 0xffffffffffffffff
inc r8
cmp word [rax + r8*2], 0
jne 0x14005a763
lea rdx, [rbp + 0x1a0]
lea rcx, [rsp + 0x20]
call fcn.1400268f0
nop
lea rcx, [rsp + 0x20]
call fcn.14005a610
nop
cmp qword [rsp + 0x38], 8
jb 0x14005a7c9
mov rcx, qword [rsp + 0x20]
call fcn.1400681d4
jmp 0x14005a7c9
mov rcx, rdi
call fcn.140058620
mov rdx, rax
lea r8, [rsp + 0x7c]
lea rcx, [rbp + 0x1a0]
call qword [sym.imp.SHLWAPI.dll_PathCombineW]
lea rcx, [rbp + 0x1a0]
call qword [sym.imp.KERNEL32.dll_DeleteFileW]
lea rdx, [rsp + 0x50]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x14005a6b0
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_FindClose]
cmp qword [rdi + 0x18], 8
jb 0x14005a7f2
mov rdi, qword [rdi]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
test eax, eax
setne al
mov rcx, qword [rbp + 0x5c0]
xor rcx, rsp
call fcn.1401f3080
lea r11, [rsp + 0x6d0]
mov rbx, qword [r11 + 0x18]
mov rsi, qword [r11 + 0x20]
mov rdi, qword [r11 + 0x28]
mov rsp, r11
pop rbp
ret