joyce8/EMBER2024-capa huggingface dataset:
Function at 0x4045a0
Capabilities:
Delete directory
Delete file
Enumerate files on windows

Disassembly:
push rbx
push rdi
mov eax, 0x4178
call fcn.0040d260
sub rsp, rax
mov rax, qword [0x00413830]
mov qword [rsp + 0x4160], rax
lea rdx, [0x0040ecfc]
mov r8d, 1
mov rbx, rcx
call qword [sym.imp.msvcrt.dll_strncmp]
test eax, eax
je 0x404760
mov rcx, rbx
call sub.msvcrt.dll_strlen
test rax, rax
je 0x404760
lea rcx, str.emptying__s
mov rdx, rbx
call fcn.0040a860
mov rcx, rbx
call sub.msvcrt.dll_strlen
test rax, rax
je 0x404760
lea rcx, [rsp + 0x2160]
mov rdx, rbx
call sub.msvcrt.dll_strcpy
lea rcx, [rsp + 0x2160]
call sub.msvcrt.dll_strlen
cmp byte [rsp + rax + 0x2160], 0x5c
je 0x404649
lea rdx, [0x0040ece8]
lea rcx, [rsp + 0x2160]
call sub.msvcrt.dll_strcat
lea rdx, [0x0040ece4]
lea rcx, [rsp + 0x2160]
call sub.msvcrt.dll_strcat
lea rdx, [rsp + 0x20]
lea rcx, [rsp + 0x2160]
call qword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp rax, 0xffffffffffffffff
mov rdi, rax
je 0x404760
lea rdx, [0x0040ecfc]
lea rcx, [rsp + 0x4c]
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x404741
lea rdx, [0x0040ece0]
lea rcx, [rsp + 0x4c]
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x404741
lea rcx, [rsp + 0x160]
mov rdx, rbx
call sub.msvcrt.dll_strcpy
lea rcx, [rsp + 0x160]
call sub.msvcrt.dll_strlen
cmp byte [rsp + rax + 0x160], 0x5c
je 0x4046ea
lea rdx, [0x0040ece8]
lea rcx, [rsp + 0x160]
call sub.msvcrt.dll_strcat
lea rdx, [rsp + 0x4c]
lea rcx, [rsp + 0x160]
call sub.msvcrt.dll_strcat
test byte [rsp + 0x20], 0x10
lea rdx, [rsp + 0x160]
jbe 0x404727
lea rcx, str.attempting_to_remove__s
call fcn.0040a860
lea rcx, [rsp + 0x160]
call qword [sym.imp.KERNEL32.dll_RemoveDirectoryA]
jmp 0x404741
lea rcx, str.attempting_to_delete__s
call fcn.0040a860
lea rcx, [rsp + 0x160]
call qword [sym.imp.KERNEL32.dll_DeleteFileA]
lea rdx, [rsp + 0x20]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x40467d
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_FindClose]
mov rcx, qword [rsp + 0x4160]
call fcn.0040d230
add rsp, 0x4178
pop rdi
pop rbx
ret

Function at 0x404868
Capabilities:
Read file on windows

Disassembly:
sub rsp, 0x38
lea r9, [rsp + 0x48]
lea rdx, [rsp + 0x50]
mov r8d, 8
mov qword [rsp + 0x20], 0
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x404896
cmp dword [rsp + 0x48], 8
jae 0x4048b6
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.error__d_n
mov edx, eax
call fcn.0040a860
lea rcx, str.Internal_Error:_readLong
call fcn.00404564
mov rax, qword [rsp + 0x50]
add rsp, 0x38
ret

Function at 0x4048c0
Capabilities:
Read file on windows

Disassembly:
sub rsp, 0x38
lea r9, [rsp + 0x48]
lea rdx, [rsp + 0x50]
mov r8d, 4
mov qword [rsp + 0x20], 0
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x4048ee
cmp dword [rsp + 0x48], 4
jae 0x404913
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8d, dword [rsp + 0x48]
lea rcx, str.error__d__d_n
mov edx, eax
call fcn.0040a860
lea rcx, str.Internal_Error:_readInt
call fcn.00404564
mov eax, dword [rsp + 0x50]
add rsp, 0x38
ret
Function at 0x40491c
Capabilities:
Read file on windows

Disassembly:
sub rsp, 0x38
lea r9, [rsp + 0x50]
lea rdx, [rsp + 0x48]
mov r8d, 2
mov qword [rsp + 0x20], 0
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x40494a
cmp dword [rsp + 0x50], 2
jae 0x40496a
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.error__d_n
mov edx, eax
call fcn.0040a860
lea rcx, str.Internal_Error:_readShort
call fcn.00404564
mov ax, word [rsp + 0x48]
add rsp, 0x38
ret

Function at 0x404974
Capabilities:
Read file on windows

Disassembly:
push rbx
push rsi
push rdi
sub rsp, 0x30
mov rbx, rcx
call fcn.004048c0
movsxd rdi, eax
lea edx, [rdi + 1]
movsxd rcx, edx
call sub.msvcrt.dll_void____ptr64___cdecl_operator_new_unsigned_long_long_unsigned___int64__
lea r9, [rsp + 0x58]
mov r8d, edi
mov rcx, rbx
mov rdx, rax
mov qword [rsp + 0x20], 0
mov rsi, rax
mov byte [rdi + rax], 0
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x4049c0
cmp dword [rsp + 0x58], edi
jae 0x4049cc
lea rcx, str.Internal_Error:_readString
call fcn.00404564
mov rax, rsi
add rsp, 0x30
pop rdi
pop rsi
pop rbx
ret

Function at 0x4049d8
Capabilities:
Read file on windows

Disassembly:
push rbx
push rbp
push rsi
push rdi
sub rsp, 0x38
mov rdi, rcx
call fcn.004048c0
mov ebp, eax
cdq
sub eax, edx
sar eax, 1
movsxd rbx, eax
lea edx, [rbx + 1]
movsxd rcx, edx
add rcx, rcx
call sub.msvcrt.dll_void____ptr64___cdecl_operator_new_unsigned_long_long_unsigned___int64__
lea r9, [rsp + 0x68]
mov r8d, ebp
mov rcx, rdi
mov rdx, rax
mov qword [rsp + 0x20], 0
mov rsi, rax
mov word [rax + rbx*2], 0
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x404a31
cmp dword [rsp + 0x68], ebp
jae 0x404a3d
lea rcx, str.Internal_Error:_readWString
call fcn.00404564
mov rax, rsi
add rsp, 0x38
pop rdi
pop rsi
pop rbp
pop rbx
ret

Function at 0x40506c
Capabilities:
Create directory
Delete directory

Disassembly:
mov eax, 0x2038
call fcn.0040d260
sub rsp, rax
mov rax, qword [0x00413830]
mov qword [rsp + 0x2020], rax
mov r8, rcx
lea rdx, str._se4j_w_testdir
lea rcx, [rsp + 0x20]
call qword [sym.imp.msvcrt.dll_sprintf]
lea rcx, [rsp + 0x20]
call qword [sym.imp.msvcrt.dll__rmdir]
lea rcx, [rsp + 0x20]
call qword [sym.imp.msvcrt.dll__mkdir]
test eax, eax
jne 0x4050da
lea rcx, [rsp + 0x20]
call fcn.00404c8c
lea rcx, [rsp + 0x20]
test al, al
je 0x4050d4
call qword [sym.imp.msvcrt.dll__rmdir]
mov al, 1
jmp 0x4050dc
call qword [sym.imp.msvcrt.dll__rmdir]
xor al, al
mov rcx, qword [rsp + 0x2020]
call fcn.0040d230
add rsp, 0x2038
ret
Function at 0x4050f4
Capabilities:
Create directory
Get common file path
Query environment variable

Disassembly:
push rbx
push rsi
push rdi
mov eax, 0x4030
call fcn.0040d260
sub rsp, rax
mov rax, qword [0x00413830]
mov qword [rsp + 0x4020], rax
mov rdi, rcx
mov rdx, rcx
mov esi, 0x2000
mov ecx, esi
call qword [sym.imp.KERNEL32.dll_GetTempPathA]
mov ebx, eax
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.GetTempPath_returned__d__last_error__d_
mov r8d, eax
mov edx, ebx
call fcn.0040a860
mov rcx, rdi
call sub.msvcrt.dll_strlen
test rax, rax
jne 0x405198
lea rcx, str.HOMEDRIVE
mov r8d, esi
mov rdx, rdi
call qword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
mov rcx, rdi
call sub.msvcrt.dll_strlen
mov rcx, rdi
lea ebx, [rsi + rax]
call sub.msvcrt.dll_strlen
lea rcx, str.HOMEPATH
lea rdx, [rdi + rax]
mov r8d, ebx
call qword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
lea rcx, str.No_temp_dir_defined._Using_home__s
mov rdx, rdi
call fcn.0040a860
jmp 0x4051b3
test ebx, ebx
jle 0x4051b3
mov rcx, rdi
call qword [sym.imp.msvcrt.dll__mkdir]
lea rcx, str.make_dir_returned__d
mov edx, eax
call fcn.0040a860
lea rdx, [rsp + 0x2020]
mov r8d, esi
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_GetLongPathNameA]
lea rcx, [rsp + 0x2020]
mov edx, 0x3f
call qword [sym.imp.msvcrt.dll_strchr]
test rax, rax
je 0x4052af
lea rcx, [rsp + 0x20]
mov edx, esi
call qword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
lea r8, [rsp + 0x20]
lea rdx, str._s_temp
mov rcx, rdi
call qword [sym.imp.msvcrt.dll_sprintf]
mov rcx, rdi
call fcn.0040506c
test al, al
jne 0x4052af
lea rdx, str.c:_temp
mov rcx, rdi
call sub.msvcrt.dll_strcpy
mov rcx, rdi
call fcn.0040506c
test al, al
jne 0x4052af
lea rdx, str.c:_tmp
mov rcx, rdi
call sub.msvcrt.dll_strcpy
mov rcx, rdi
call fcn.0040506c
test al, al
jne 0x4052af
lea rdx, [rsp + 0x20]
mov rcx, rdi
call sub.msvcrt.dll_strcpy
mov rcx, rdi
call fcn.0040506c
test al, al
jne 0x4052af
lea rdx, [0x0040ee14]
mov rcx, rdi
call sub.msvcrt.dll_strcpy
mov rcx, rdi
call fcn.0040506c
test al, al
je 0x4052a3
lea rdx, str.c:_tmp
mov rcx, rdi
call sub.msvcrt.dll_strcpy
mov rcx, rdi
call qword [sym.imp.msvcrt.dll__mkdir]
mov rcx, rdi
call fcn.0040506c
test al, al
jne 0x4052af
xor edx, edx
mov ecx, 0x3f7
call fcn.0040457c
mov rcx, qword [rsp + 0x4020]
call fcn.0040d230
add rsp, 0x4030
pop rdi
pop rsi
pop rbx
ret
Function at 0x4052c8
Capabilities:
Get common file path

Disassembly:
push rbx
mov eax, 0x2030
call fcn.0040d260
sub rsp, rax
mov rax, qword [0x00413830]
mov qword [rsp + 0x2020], rax
mov rbx, rcx
lea rcx, [rsp + 0x20]
call fcn.004050f4
lea rdx, [rsp + 0x20]
lea rcx, str.tempPath_is__s
call fcn.0040a860
lea rdx, [0x0040eef8]
lea rcx, [rsp + 0x20]
mov r9, rbx
xor r8d, r8d
call qword [sym.imp.KERNEL32.dll_GetTempFileNameA]
test eax, eax
jne 0x405363
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.GetTempFileName_failed__last_error__d_
mov edx, eax
call fcn.0040a860
xor ecx, ecx
call qword [sym.imp.msvcrt.dll_time]
mov rcx, rax
call qword [sym.imp.msvcrt.dll_srand]
call qword [sym.imp.msvcrt.dll_rand]
lea r8, [rsp + 0x20]
lea rdx, str._se4j_d
mov r9d, eax
mov rcx, rbx
call qword [sym.imp.msvcrt.dll_sprintf]
lea rcx, str.tempFile_is__s
mov rdx, rbx
call fcn.0040a860
mov rcx, qword [rsp + 0x2020]
call fcn.0040d230
add rsp, 0x2030
pop rbx
ret
Function at 0x405504
Capabilities:
Enumerate files on windows

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
mov eax, 0x2198
call fcn.0040d260
sub rsp, rax
mov qword [rsp + 0x38], 0xfffffffffffffffe
mov rax, qword [0x00413830]
mov qword [rsp + 0x2180], rax
mov r12, r8
mov rbx, rdx
mov rdx, rcx
lea rcx, [rsp + 0x180]
call sub.msvcrt.dll_strcpy
lea rdx, [0x0040ef40]
lea rcx, [rsp + 0x180]
call sub.msvcrt.dll_strcat
cmp byte [rbx], 0x2e
je 0x405575
lea rdx, [0x0040ecfc]
lea rcx, [rsp + 0x180]
call sub.msvcrt.dll_strcat
mov rdx, rbx
lea rcx, [rsp + 0x180]
call sub.msvcrt.dll_strcat
lea rdx, [rsp + 0x40]
lea rcx, [rsp + 0x180]
call qword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov rbp, rax
cmp rax, 0xffffffffffffffff
jne 0x4055a8
xor eax, eax
jmp 0x4056c7
mov ecx, 0x18
call sub.msvcrt.dll_void____ptr64___cdecl_operator_new_unsigned_long_long_unsigned___int64__
mov rdi, rax
mov qword [rax], rax
mov qword [rax + 8], rax
mov qword [rsp + 0x28], rax
xor esi, esi
mov qword [rsp + 0x30], rsi
mov ecx, 0x2000
call qword [sym.imp.msvcrt.dll_malloc]
mov r13, rax
lea rdx, [rsp + 0x6c]
mov rcx, rax
call sub.msvcrt.dll_strcpy
mov rbx, qword [rdi + 8]
mov ecx, 0x18
call sub.msvcrt.dll_void____ptr64___cdecl_operator_new_unsigned_long_long_unsigned___int64__
mov qword [rax], rdi
mov rcx, rax
test rbx, rbx
cmovne rcx, rbx
mov qword [rax + 8], rcx
mov qword [rdi + 8], rax
mov rcx, qword [rax + 8]
mov qword [rcx], rax
add rax, 0x10
je 0x405616
mov qword [rax], r13
inc rsi
mov qword [rsp + 0x30], rsi
lea rdx, [rsp + 0x40]
mov rcx, rbp
call qword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
sete al
test al, al
je 0x4055c8
mov rcx, rbp
call qword [sym.imp.KERNEL32.dll_FindClose]
mov ebp, esi
movsxd rcx, esi
shl rcx, 0xd
call qword [sym.imp.msvcrt.dll_malloc]
mov qword [r12], rax
test rsi, rsi
je 0x40568d
xor ebx, ebx
mov rax, qword [rdi]
mov rdx, qword [r12]
mov rcx, qword [rax + 0x10]
mov qword [rbx + rdx], rcx
mov rcx, qword [rdi]
mov rdx, qword [rcx + 8]
mov rax, qword [rcx]
mov qword [rdx], rax
mov rdx, qword [rcx]
mov rax, qword [rcx + 8]
mov qword [rdx + 8], rax
call fcn.0040cec0
add rbx, 8
dec rsi
jne 0x405658
mov rbx, qword [rdi]
cmp rbx, rdi
je 0x4056bd
mov rcx, rbx
mov rbx, qword [rbx]
mov r8, qword [rcx + 8]
mov rdx, qword [rcx]
mov qword [r8], rdx
mov r8, qword [rcx]
mov rdx, qword [rcx + 8]
mov qword [r8 + 8], rdx
call fcn.0040cec0
dec rsi
cmp rbx, rdi
jne 0x405695
mov rcx, rdi
call fcn.0040cec0
mov eax, ebp
mov rcx, qword [rsp + 0x2180]
call fcn.0040d230
add rsp, 0x2198
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret
Function at 0x406080
Capabilities:
Query environment variable

Disassembly:
push rbx
push rbp
push rsi
push rdi
mov eax, 0x6038
call fcn.0040d260
sub rsp, rax
mov rax, qword [0x00413830]
mov qword [rsp + 0x6020], rax
mov rbp, rcx
lea rdx, [0x0040f46f]
lea rcx, [rsp + 0x2020]
xor r8d, r8d
call fcn.00404f1c
lea r8, [rsp + 0x2020]
lea rdx, str._EXE4J_EXEDIR_
mov rcx, rbp
call fcn.00405fd4
lea r8, [rsp + 0x2020]
lea rdx, str._INSTALL4J_EXEDIR_
mov rcx, rbp
call fcn.00405fd4
lea rsi, [0x0041d9f0]
lea rdx, str._EXE4J_TEMPDIR_
mov r8, rsi
mov rcx, rbp
call fcn.00405fd4
lea rdx, str._INSTALL4J_TEMPDIR_
mov r8, rsi
mov rcx, rbp
call fcn.00405fd4
lea rdi, [0x0040ec58]
lea rdx, str._EXE4J_PATHLIST_SEPARATOR_
mov r8, rdi
mov rcx, rbp
call fcn.00405fd4
lea rdx, str._INSTALL4J_PATHLIST_SEPARATOR_
mov r8, rdi
mov rcx, rbp
call fcn.00405fd4
lea rbx, [0x00417900]
lea rdx, str._EXE4J_JVM_HOME_
mov r8, rbx
mov rcx, rbp
call fcn.00405fd4
lea rdx, str._INSTALL4J_JVM_HOME_
mov r8, rbx
mov rcx, rbp
call fcn.00405fd4
lea r8, [rsp + 0x2020]
lea rdx, str._EXE4J_EXEDIR
mov rcx, rbp
call fcn.00405fd4
lea r8, [rsp + 0x2020]
lea rdx, str._INSTALL4J_EXEDIR
mov rcx, rbp
call fcn.00405fd4
lea rdx, str._EXE4J_TEMPDIR
mov r8, rsi
mov rcx, rbp
call fcn.00405fd4
lea rdx, str._INSTALL4J_TEMPDIR
mov r8, rsi
mov rcx, rbp
call fcn.00405fd4
lea rdx, str._EXE4J_PATHLIST_SEPARATOR
mov r8, rdi
mov rcx, rbp
call fcn.00405fd4
lea rdx, str._INSTALL4J_PATHLIST_SEPARATOR
mov r8, rdi
mov rcx, rbp
call fcn.00405fd4
lea rdx, str._EXE4J_JVM_HOME
mov r8, rbx
mov rcx, rbp
call fcn.00405fd4
lea rdx, str._INSTALL4J_JVM_HOME
mov r8, rbx
mov rcx, rbp
call fcn.00405fd4
lea r8, [rsp + 0x2020]
lea rdx, str._launcher:sys.launcherDirectory
mov rcx, rbp
call fcn.00405fd4
lea rdx, str._launcher:sys.launcherTempDirectory
mov r8, rsi
mov rcx, rbp
call fcn.00405fd4
mov r8, rdi
lea rdx, str._launcher:sys.pathlistSeparator
mov rcx, rbp
call fcn.00405fd4
lea rdx, str._launcher:sys.jvmHome
mov r8, rbx
mov rcx, rbp
call fcn.00405fd4
call qword [sym.imp.KERNEL32.dll_GetEnvironmentStrings]
test rax, rax
mov rsi, rax
je 0x4062fa
cmp byte [rax], 0
mov rdi, rax
je 0x4062fa
lea rcx, [rsp + 0x4020]
mov rdx, rdi
call sub.msvcrt.dll_strcpy
lea rcx, [rsp + 0x4020]
mov edx, 0x3d
call qword [sym.imp.msvcrt.dll_strchr]
test rax, rax
mov rbx, rax
je 0x4062e4
lea r8, [rsp + 0x4020]
lea rdx, str.__s
lea rcx, [rsp + 0x20]
mov byte [rax], 0
call qword [sym.imp.msvcrt.dll_sprintf]
lea r8, [rbx + 1]
lea rdx, [rsp + 0x20]
mov rcx, rbp
call fcn.00405fd4
lea rcx, [rsp + 0x20]
call qword [sym.imp.msvcrt.dll__strupr]
lea r8, [rbx + 1]
lea rdx, [rsp + 0x20]
mov rcx, rbp
call fcn.00405fd4
mov rcx, rdi
call sub.msvcrt.dll_strlen
lea rdi, [rdi + rax + 1]
cmp byte [rdi], 0
jne 0x40626f
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_FreeEnvironmentStringsA]
mov rcx, qword [rsp + 0x6020]
call fcn.0040d230
add rsp, 0x6038
pop rdi
pop rsi
pop rbp
pop rbx
ret
Function at 0x407b94
Capabilities:
Set registry value

Disassembly:
mov qword [rsp + 0x10], rdx
push rbx
mov eax, 0x2070
call fcn.0040d260
sub rsp, rax
mov rax, qword [0x00413830]
mov qword [rsp + 0x2060], rax
mov rbx, r8
mov rdx, rcx
lea r8, str.SOFTWAREej_technologiesexe4jjvms_
lea rcx, [rsp + 0x60]
call fcn.00407b38
mov qword [rsp + 0x40], 0
lea rax, [rsp + 0x50]
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x30], 0
lea rdx, [rsp + 0x60]
xor r9d, r9d
xor r8d, r8d
mov rcx, 0xffffffff80000001
mov dword [rsp + 0x28], 0xf003f
mov dword [rsp + 0x20], 0
call qword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
jne 0x407c7c
mov rcx, qword [rsp + 0x50]
lea rax, [rsp + 0x2088]
lea rdx, str.LastWriteTime
mov r9d, 3
xor r8d, r8d
mov dword [rsp + 0x28], 8
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov rcx, rbx
call sub.msvcrt.dll_strlen
mov rcx, qword [rsp + 0x50]
lea rdx, str.Version
mov dword [rsp + 0x28], eax
mov r9d, 1
xor r8d, r8d
mov qword [rsp + 0x20], rbx
call qword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov rcx, qword [rsp + 0x50]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov rcx, qword [rsp + 0x2060]
call fcn.0040d230
add rsp, 0x2070
pop rbx
ret

Function at 0x407c94
Capabilities:
Query or enumerate registry value

Disassembly:
mov qword [rsp + 0x10], rdx
push rbx
push rdi
mov eax, 0x2068
call fcn.0040d260
sub rsp, rax
mov rax, qword [0x00413830]
mov qword [rsp + 0x2050], rax
mov rdi, r8
mov rdx, rcx
lea r8, str.SOFTWAREej_technologiesexe4jjvms_
lea rcx, [rsp + 0x50]
call fcn.00407b38
lea r11, [rsp + 0x38]
lea rdx, [rsp + 0x50]
mov r9d, 0x20019
xor r8d, r8d
mov rcx, 0xffffffff80000001
mov qword [rsp + 0x20], r11
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
xor ebx, ebx
cmp eax, ebx
jne 0x407d9b
mov rcx, qword [rsp + 0x38]
lea rax, [rsp + 0x30]
lea r9, [rsp + 0x40]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x48]
lea rdx, str.LastWriteTime
xor r8d, r8d
mov dword [rsp + 0x30], 8
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
cmp eax, ebx
jne 0x407d90
cmp dword [rsp + 0x30], 8
jne 0x407d90
lea r8d, [rbx + 8]
lea rdx, [rsp + 0x2088]
lea rcx, [rsp + 0x48]
call sub.msvcrt.dll_memcmp
cmp eax, ebx
jne 0x407d90
mov rcx, qword [rsp + 0x38]
lea rax, [rsp + 0x30]
lea r9, [rsp + 0x40]
mov qword [rsp + 0x28], rax
lea rdx, str.Version
xor r8d, r8d
mov qword [rsp + 0x20], rdi
mov dword [rsp + 0x30], 0x2000
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
cmp eax, ebx
sete al
jmp 0x407d9d
mov rcx, qword [rsp + 0x38]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor al, al
mov rcx, qword [rsp + 0x2050]
call fcn.0040d230
add rsp, 0x2068
pop rdi
pop rbx
ret
Function at 0x408250
Capabilities:
Query or enumerate registry value

Disassembly:
push rbx
push rsi
push rdi
sub rsp, 0x40
lea rax, [rsp + 0x38]
mov rdi, r9
mov rsi, r8
mov r9d, 0x20019
xor r8d, r8d
xor ebx, ebx
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
cmp eax, ebx
jne 0x4082b5
mov rax, qword [rsp + 0x80]
mov rcx, qword [rsp + 0x38]
lea r9, [rsp + 0x30]
mov qword [rsp + 0x28], rax
xor r8d, r8d
mov rdx, rsi
mov qword [rsp + 0x20], rdi
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov rcx, qword [rsp + 0x38]
cmp eax, ebx
sete bl
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov al, bl
add rsp, 0x40
pop rdi
pop rsi
pop rbx
ret
Function at 0x408368
Capabilities:
Query environment variable
Set environment variable

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
sub rsp, 0x108
mov rax, qword [0x00413830]
mov qword [rsp + 0xf0], rax
mov rdi, rcx
mov ecx, 0x7d0
call sub.msvcrt.dll_void____ptr64___cdecl_operator_new_unsigned_long_long_unsigned___int64__
lea rsi, str.javaw.exe
mov rcx, rsi
mov r13, rax
call sub.msvcrt.dll_strlen
mov rbx, rdi
mov rcx, rdi
sub rbx, rax
call sub.msvcrt.dll_strlen
mov rdx, rsi
lea rcx, [rbx + rax]
call sub.msvcrt.dll_strcmp
mov rcx, rsi
test eax, eax
je 0x4083ce
lea rcx, str.java.exe
call sub.msvcrt.dll_strlen
mov ebx, 0xffffffff
mov rcx, rdi
sub ebx, eax
call sub.msvcrt.dll_strlen
mov rdx, rdi
add eax, ebx
mov rcx, r13
movsxd rbx, eax
mov r8, rbx
call qword [sym.imp.msvcrt.dll_strncpy]
mov byte [rbx + r13], 0
mov ebx, 0x4000
mov rcx, rbx
call sub.msvcrt.dll_void____ptr64___cdecl_operator_new_unsigned_long_long_unsigned___int64__
mov rcx, rbx
mov r12, rax
call sub.msvcrt.dll_void____ptr64___cdecl_operator_new_unsigned_long_long_unsigned___int64__
lea rcx, str.PATH
mov rdx, rax
mov r8d, ebx
mov rdi, rax
call qword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
mov rdx, rdi
mov rcx, r12
call sub.msvcrt.dll_strcpy
lea rdx, [0x0040ec58]
mov rcx, r12
call sub.msvcrt.dll_strcat
mov rdx, r13
mov rcx, r12
call sub.msvcrt.dll_strcat
lea rcx, str.PATH
mov rdx, r12
call qword [sym.imp.KERNEL32.dll_SetEnvironmentVariableA]
test eax, eax
je 0x408473
lea rcx, str.Setting_PATH__s
mov rdx, r12
call fcn.0040a860
jmp 0x40848b
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.Setting_PATH__s_failed_with_error__d
mov rdx, r12
mov r8d, eax
call fcn.0040a860
mov rcx, rbx
call sub.msvcrt.dll_void____ptr64___cdecl_operator_new_unsigned_long_long_unsigned___int64__
lea rdx, str.PATH_s
mov r8, r12
mov rcx, rax
mov rbp, rax
call qword [sym.imp.msvcrt.dll_sprintf]
mov rcx, rbp
call qword [sym.imp.msvcrt.dll__putenv]
mov r8d, 0xc8
lea rdx, [rsp + 0x20]
lea ecx, [r8 - 0x30]
xor ebx, ebx
call fcn.00403e40
lea rcx, [rsp + 0x20]
call sub.msvcrt.dll_strlen
test rax, rax
je 0x4084e7
lea rdx, [rsp + 0x20]
mov rcx, r13
call fcn.004082c0
mov rbx, rax
lea rsi, str.hotspot
test rbx, rbx
jne 0x40856f
mov rdx, qword [rsi]
mov rcx, r13
call fcn.004082c0
add rsi, 8
mov rbx, rax
lea rax, str.jrockit
cmp rsi, rax
jl 0x4084ee
test rbx, rbx
jne 0x40856f
lea rcx, str.PATH
mov rdx, rdi
call qword [sym.imp.KERNEL32.dll_SetEnvironmentVariableA]
test eax, eax
je 0x40853b
lea rcx, str.Setting_PATH__s
mov rdx, rdi
call fcn.0040a860
jmp 0x408553
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.Setting_PATH__s_failed_with_error__d
mov rdx, rdi
mov r8d, eax
call fcn.0040a860
lea rdx, str.PATH_s
mov r8, rdi
mov rcx, rbp
call qword [sym.imp.msvcrt.dll_sprintf]
mov rcx, rbp
call qword [sym.imp.msvcrt.dll__putenv]
mov rcx, r12
call fcn.0040cec0
mov rcx, rdi
call fcn.0040cec0
mov rcx, rbp
call fcn.0040cec0
mov rcx, r13
call fcn.0040cec0
mov rax, rbx
mov rcx, qword [rsp + 0xf0]
call fcn.0040d230
add rsp, 0x108
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret
Function at 0x408cec
Capabilities:
Query or enumerate registry key

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
mov eax, 0x8078
call fcn.0040d260
sub rsp, rax
mov rax, qword [0x00413830]
mov qword [rsp + 0x8060], rax
mov r13, qword [rsp + 0x80d0]
mov rbp, rdx
lea rax, [rsp + 0x48]
mov r12, r9
mov rdi, r8
xor bl, bl
mov byte [r8], bl
lea rdx, str.SOFTWAREej_technologiesexe4jlocatedjvms_
xor r8d, r8d
mov r9d, 0x20019
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x408e76
lea rax, [rsp + 0x50]
xor esi, esi
xor edx, edx
mov qword [rsp + 0x38], rax
lea rax, [rsp + 0x44]
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x6060]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rsi
jmp 0x408e38
lea rcx, [rsp + 0x4060]
call sub.msvcrt.dll_strlen
xor ecx, ecx
inc eax
test eax, eax
movsxd rdx, eax
jle 0x408db9
movzx eax, byte [rsp + rcx + 0x4060]
mov r8d, 0x5c
cmp al, 0x2f
cmove eax, r8d
inc rcx
cmp rcx, rdx
mov byte [rsp + rcx + 0x205f], al
jl 0x408d96
lea rdx, [rsp + 0x60]
lea rcx, [rsp + 0x2060]
mov r9, r13
mov r8, r12
mov byte [rsp + 0x20], 1
call fcn.00408980
test al, al
je 0x408e0a
lea rcx, [rsp + 0x60]
mov rdx, rdi
call sub.msvcrt.dll_strcmp
test eax, eax
jle 0x408e0a
lea rdx, [rsp + 0x60]
mov rcx, rdi
call sub.msvcrt.dll_strcpy
lea rdx, [rsp + 0x2060]
mov rcx, rbp
call sub.msvcrt.dll_strcpy
mov bl, 1
lea rax, [rsp + 0x50]
inc esi
mov qword [rsp + 0x38], rax
lea rax, [rsp + 0x44]
mov edx, esi
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x6060]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], 0
mov rcx, qword [rsp + 0x48]
lea r9, [rsp + 0x40]
lea r8, [rsp + 0x4060]
mov dword [rsp + 0x44], 0x2000
mov dword [rsp + 0x40], 0x2000
call qword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
cmp eax, 0x103
jne 0x408d7e
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov al, bl
mov rcx, qword [rsp + 0x8060]
call fcn.0040d230
add rsp, 0x8078
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret