joyce8/EMBER2024-capa huggingface dataset:
Function at 0x4da7c0
Capabilities:
Access peb ldr_data
Check for peb beingdebugged flag
Copy file
Get common file path
Get file version info
Get process heap flags
Get process heap force flags
Impersonate file version information

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
lea ebx, [ebp - 0x11c]
sub esp, 0x14c
mov dword [ebp - 0x130], edx
mov dword [ebp - 0x12c], eax
mov dword [ebp - 0x134], ecx
mov dword [esp + 4], 0x104
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_GetSystemDirectoryA]
mov edx, ebx
sub esp, 8
mov ecx, dword [edx]
add edx, 4
lea eax, [ecx - 0x1010101]
not ecx
and eax, ecx
and eax, 0x80808080
je 0x4da7fa
mov ecx, eax
shr ecx, 0x10
test eax, 0x8080
cmove eax, ecx
lea ecx, [edx + 2]
cmove edx, ecx
mov ecx, eax
add cl, al
mov eax, dword [ebp - 0x12c]
sbb edx, 3
mov dword [edx], 0x7265765c
mov dword [edx + 4], 0x6e6f6973
mov dword [edx + 8], 0x6c6c642e
mov byte [edx + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], eax
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_CopyFileA]
lea eax, [ebp - 0x120]
sub esp, 0xc
mov dword [esp + 4], eax
mov dword [esp], ebx
call sub.version.dll_GetFileVersionInfoSizeA
sub esp, 8
mov esi, eax
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
sub esp, 0xc
mov edi, eax
mov dword [esp + 0xc], eax
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov dword [esp], ebx
call sub.version.dll_GetFileVersionInfoA
lea ecx, [edi + 6]
sub esp, 0x10
cmp word [edi + 6], 0
je 0x4da9a0
mov eax, ecx
lea esi, [esi]
nop
add eax, 2
cmp word [eax], 0
jne 0x4da8d0
sub eax, ecx
sar eax, 1
lea eax, [eax + eax + 8]
add eax, 3
mov ebx, dword [ebp - 0x130]
mov edx, dword [ebp - 0x134]
and eax, 0xfffffffc
add eax, edi
mov dword [eax + 8], ebx
mov dword [eax + 0x10], ebx
mov dword [eax + 0xc], edx
mov dword [eax + 0x14], edx
mov eax, dword [ebp - 0x12c]
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_BeginUpdateResourceA]
sub esp, 8
mov ebx, eax
test eax, eax
je 0x4da951
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov dword [esp + 4], 0x10
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_UpdateResourceA]
sub esp, 0x18
test eax, eax
jne 0x4da981
xor ebx, ebx
mov dword [esp + 8], edi
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
mov eax, ebx
sub esp, 0xc
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp], ebx
xor ebx, ebx
mov dword [esp + 4], 0
call dword [sym.imp.kernel32.dll_EndUpdateResourceA]
sub esp, 8
test eax, eax
setne bl
jmp 0x4da953
mov eax, 8
jmp 0x4da8e1
Function at 0x4da9b0
Capabilities:
Check if file exists
Get disk information
Get file attributes

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
mov esi, eax
push ebx
xor ebx, ebx
sub esp, 0x2c
mov dword [ebp - 0x24], edx
mov dword [esp], edx
call dword [sym.imp.msvcrt.dll_strlen]
mov dword [ebp - 0x20], eax
call dword [sym.imp.kernel32.dll_GetLogicalDrives]
mov dword [esi], 0x5c3a41
mov dword [ebp - 0x1c], eax
jmp 0x4da9ef
add ebx, 1
mov byte [esi], 0
cmp ebx, 0x1a
je 0x4daa70
mov eax, 1
mov ecx, ebx
shl eax, cl
test dword [ebp - 0x1c], eax
je 0x4da9e0
lea eax, [ebx + 0x41]
mov dword [esp], esi
mov byte [esi], al
call dword [sym.imp.kernel32.dll_GetDriveTypeA]
sub esp, 4
cmp eax, 3
jne 0x4da9e0
mov ecx, dword [ebp - 0x20]
lea edx, [esi + 3]
test ecx, ecx
je 0x4daa45
mov edi, dword [ebp - 0x24]
movzx ecx, byte [edi]
test cl, cl
je 0x4daa45
lea eax, [edi + 1]
add edi, dword [ebp - 0x20]
jmp 0x4daa3b
add eax, 1
movzx ecx, byte [eax - 1]
test cl, cl
je 0x4daa45
add edx, 1
mov byte [edx - 1], cl
cmp edi, eax
jne 0x4daa30
mov byte [edx], 0
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_GetFileAttributesA]
sub esp, 4
cmp eax, 0xffffffff
je 0x4daa5d
test al, 0x10
jne 0x4daa78
add ebx, 1
mov byte [esi + 3], 0
mov byte [esi], 0
cmp ebx, 0x1a
jne 0x4da9ef
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [ebp - 0x20]
cmp byte [esi + eax + 2], 0x5c
je 0x4daa70
mov dword [esp], esi
call sub.msvcrt.dll_strlen
mov edx, 0x5c
mov word [esi + eax], dx
jmp 0x4daa70
Function at 0x4dbe60
Capabilities:
Access peb ldr_data
Get ntdll base address
Get process heap flags
Get process heap force flags

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
mov esi, eax
sub esp, 0x10
mov eax, dword [0x58b7a8]
test eax, eax
je 0x4dbea4
mov edx, dword [0x58b7a4]
mov ecx, dword [0x58b7a0]
cmp edx, ecx
je 0x4dbef0
lea ecx, [edx + 1]
imul edx, edx, 0x1ac
mov dword [0x58b7a4], ecx
mov ecx, 0x6b
add edx, eax
mov edi, edx
rep movsd dword es:[edi], dword [esi]
lea esp, [ebp - 8]
pop esi
pop edi
pop ebp
ret
mov dword [esp + 8], 0x10b8
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov dword [0x58b7a0], 0xa
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
mov ecx, dword [0x58b7a0]
sub esp, 0xc
mov dword [0x58b7a8], eax
cmp dword [0x58b7a4], ecx
jne 0x4dbf2c
lea esi, [esi]
add ecx, ecx
mov dword [esp + 8], eax
mov dword [0x58b7a0], ecx
imul ecx, ecx, 0x1ac
mov dword [esp + 4], 0
mov edx, dword fs:[0x18]
mov dword [esp + 0xc], ecx
mov eax, dword [edx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapReAlloc]
mov dword [0x58b7a8], eax
sub esp, 0x10
test eax, eax
jne 0x4dbf52
mov dword [esp + 8], 0x226d
mov dword [esp + 4], str..._wine_dlls_msi_tests_package.c
mov dword [esp], str.sequence
call dword [sym.imp.msvcrt.dll__assert]
mov eax, dword [0x58b7a8]
mov edx, dword [0x58b7a4]
jmp 0x4dbe83
Function at 0x4deca0
Capabilities:
Access peb ldr_data
Check for peb beingdebugged flag
Get process heap flags
Get process heap force flags

Disassembly:
push ebp
mov ebp, esp
push edi
mov edi, eax
push esi
push ebx
sub esp, 0x2c
mov eax, dword [ebp + 8]
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x20], ecx
mov dword [esp], eax
call dword [sym.imp.msvcrt.dll_strlen]
mov ebx, dword [ebp + 0xc]
mov ecx, dword [ebx]
add ebx, 4
lea edx, [ecx - 0x1010101]
not ecx
and edx, ecx
and edx, 0x80808080
je 0x4decc0
mov ecx, edx
mov dword [esp + 4], 0
shr ecx, 0x10
test edx, 0x8080
cmove edx, ecx
lea ecx, [ebx + 2]
cmove ebx, ecx
mov ecx, edx
add cl, dl
sbb ebx, 3
sub ebx, dword [ebp + 0xc]
lea eax, [ebx + eax + 1]
mov ecx, dword fs:[0x18]
mov dword [esp + 8], eax
mov eax, dword [ecx + 0x30]
mov dword [ebp - 0x24], ecx
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
mov esi, eax
mov eax, dword [ebp + 8]
sub esp, 0xc
mov dword [esp], esi
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
call fcn.004d3c10
mov eax, dword [ebp - 0x20]
mov edx, esi
call fcn.004d35b0
mov ecx, dword [ebp - 0x24]
mov dword [esp + 8], esi
mov ebx, eax
mov dword [esp + 4], 0
mov eax, dword [ecx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
sub esp, 0xc
mov dword [esp + 4], edi
mov dword [esp], str..._wine_dlls_msi_tests_package.c
call fcn.0052ae70
mov eax, dword [ebp - 0x1c]
mov dword [esp + 0xc], ebx
mov dword [esp + 4], str.failed_to_insert_into__s_table:__u_n
mov dword [esp + 8], eax
xor eax, eax
test ebx, ebx
sete al
mov dword [esp], eax
call fcn.0052b0e0
lea esp, [ebp - 0xc]
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
Function at 0x50c8d0
Capabilities:
Delete directory
Delete file

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
lea edi, [ebp - 0x11c]
mov esi, eax
push ebx
mov ebx, edx
sub esp, 0x12c
mov dword [esp + 4], 0x58bb40
mov dword [esp], edi
call dword [sym.imp.msvcrt.dll_strcpy]
mov eax, edi
mov ecx, dword [eax]
add eax, 4
lea edx, [ecx - 0x1010101]
not ecx
and edx, ecx
and edx, 0x80808080
je 0x50c8f9
mov ecx, edx
shr ecx, 0x10
test edx, 0x8080
cmove edx, ecx
lea ecx, [eax + 2]
cmove eax, ecx
mov ecx, edx
add cl, dl
sbb eax, 3
sub eax, edi
mov byte [edi + eax], 0x5c
lea eax, [edi + eax + 1]
mov dword [esp + 4], esi
mov dword [esp], eax
call sub.msvcrt.dll_strcpy
mov dword [esp], edi
test ebx, ebx
je 0x50c960
call dword [sym.imp.kernel32.dll_DeleteFileA]
sub esp, 4
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
call dword [sym.imp.kernel32.dll_RemoveDirectoryA]
sub esp, 4
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
Function at 0x50cd80
Capabilities:
Get file size

Disassembly:
push ebp
mov ebp, esp
push esi
mov esi, eax
push ebx
lea ebx, [ebp - 0x10c]
sub esp, 0x130
mov dword [esp + 4], 0x58bb40
mov dword [esp], ebx
call dword [sym.imp.msvcrt.dll_strcpy]
mov eax, ebx
mov ecx, dword [eax]
add eax, 4
lea edx, [ecx - 0x1010101]
not ecx
and edx, ecx
and edx, 0x80808080
je 0x50cda6
mov ecx, edx
shr ecx, 0x10
test edx, 0x8080
cmove edx, ecx
lea ecx, [eax + 2]
cmove eax, ecx
mov ecx, edx
add cl, dl
sbb eax, 3
sub eax, ebx
mov byte [ebx + eax], 0x5c
lea eax, [ebx + eax + 1]
mov dword [esp + 4], esi
mov dword [esp], eax
call sub.msvcrt.dll_strcpy
mov dword [esp], ebx
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov dword [esp + 4], 0x80000000
call dword [sym.imp.kernel32.dll_CreateFileA]
sub esp, 0x1c
mov ebx, eax
cmp eax, 0xffffffff
je 0x50ce60
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_GetFileSize]
sub esp, 8
mov esi, eax
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_CloseHandle]
mov eax, esi
sub esp, 4
lea esp, [ebp - 8]
pop ebx
pop esi
pop ebp
ret
lea esp, [ebp - 8]
mov esi, 0xffffffff
mov eax, esi
pop ebx
pop esi
pop ebp
ret
Function at 0x50d000
Capabilities:
Reference sql statements

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
mov esi, edx
lea edx, [ebp - 0x24]
lea edi, [ebp - 0x20]
push ebx
sub esp, 0x2c
mov byte [0x58b900], 0
mov dword [esp + 8], edx
mov dword [esp + 4], str.SELECT__FROM__Media__WHERE__Source__IS_NOT_NULL
mov dword [esp], eax
call sub.msi.dll_MsiDatabaseOpenViewA
sub esp, 0xc
mov ebx, eax
mov dword [esp + 4], 0x422
mov dword [esp], str..._wine_dlls_msi_tests_patch.c
call fcn.0052ae70
xor eax, eax
test ebx, ebx
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.expected_ERROR_SUCCESS__got__u_n
mov dword [esp], eax
call fcn.0052b0e0
mov eax, dword [ebp - 0x24]
mov dword [esp + 4], 0
mov dword [esp], eax
call sub.msi.dll_MsiViewExecute
sub esp, 8
mov ebx, eax
mov dword [esp + 4], 0x425
mov dword [esp], str..._wine_dlls_msi_tests_patch.c
call fcn.0052ae70
xor eax, eax
test ebx, ebx
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.expected_ERROR_SUCCESS__got__u_n
mov dword [esp], eax
call fcn.0052b0e0
mov eax, dword [ebp - 0x24]
mov dword [esp + 4], edi
mov dword [esp], eax
call sub.msi.dll_MsiViewFetch
sub esp, 8
mov ebx, eax
mov dword [esp + 4], 0x428
mov dword [esp], str..._wine_dlls_msi_tests_patch.c
call fcn.0052ae70
xor eax, eax
test ebx, ebx
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.expected_ERROR_SUCCESS__got__u_n
mov dword [esp], eax
call fcn.0052b0e0
test ebx, ebx
je 0x50d120
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
call sub.msi.dll_MsiViewClose
mov eax, dword [ebp - 0x24]
sub esp, 4
mov dword [esp], eax
call sub.msi.dll_MsiCloseHandle
mov eax, 0x58b900
sub esp, 4
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
lea eax, [ebp - 0x1c]
mov dword [esp + 4], esi
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x20]
mov dword [esp + 8], 0x58b900
mov dword [esp], eax
mov dword [ebp - 0x1c], 0x104
call sub.msi.dll_MsiRecordGetStringA
sub esp, 0x10
mov ebx, eax
mov dword [esp + 4], 0x42d
mov dword [esp], str..._wine_dlls_msi_tests_patch.c
call fcn.0052ae70
xor eax, eax
test ebx, ebx
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.expected_ERROR_SUCCESS__got__u_n
mov dword [esp], eax
call fcn.0052b0e0
mov eax, dword [ebp - 0x20]
mov dword [esp], eax
call sub.msi.dll_MsiCloseHandle
mov eax, dword [ebp - 0x24]
sub esp, 4
mov dword [esp + 4], edi
mov dword [esp], eax
call sub.msi.dll_MsiViewFetch
sub esp, 8
mov ebx, eax
mov dword [esp + 4], 0x431
mov dword [esp], str..._wine_dlls_msi_tests_patch.c
call fcn.0052ae70
xor eax, eax
cmp ebx, 0x103
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.expected_ERROR_NO_MORE_ITEMS__got__u_n
mov dword [esp], eax
call fcn.0052b0e0
jmp 0x50d0ee
Function at 0x50d880
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push ebx
sub esp, 0x34
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 2
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x40000000
mov dword [esp], str.msitestpatch.txt
call dword [sym.imp.kernel32.dll_CreateFileA]
sub esp, 0x1c
cmp eax, 0xffffffff
je 0x50d935
mov ebx, eax
lea eax, [ebp - 0xc]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x11
mov dword [esp + 4], str.msitestpatch.txt
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_WriteFile]
sub esp, 0x14
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x3e8
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_SetFilePointer]
sub esp, 0x10
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_SetEndOfFile]
sub esp, 4
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_CloseHandle]
sub esp, 4
mov ebx, dword [ebp - 4]
leave
ret

Function at 0x50d940
Capabilities:
Reference sql statements

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x10
lea eax, [ebp + 0x10]
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 8]
mov dword [esp + 8], str.SELECT__FROM___s__WHERE__Name____s
mov dword [esp + 4], 0x7fffffff
mov dword [esp], eax
call dword [sym.imp.msvcrt.dll__vsnprintf]
leave
ret

Function at 0x50d970
Capabilities:
Reference sql statements

Disassembly:
push ebp
mov ebp, esp
push esi
mov esi, eax
push ebx
lea ebx, [ebp - 0x108]
sub esp, 0x120
mov dword [esp + 0xc], ecx
mov dword [esp + 8], edx
mov dword [esp], ebx
mov dword [esp + 4], str.SELECT__FROM___s__WHERE__Name____s
call fcn.0050d940
lea eax, [ebp - 0x110]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov dword [esp + 8], eax
call sub.msi.dll_MsiDatabaseOpenViewA
sub esp, 0xc
mov ebx, eax
mov dword [esp + 4], 0x3dc
mov dword [esp], str..._wine_dlls_msi_tests_patch.c
call fcn.0052ae70
xor eax, eax
test ebx, ebx
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.expected_ERROR_SUCCESS__got__u_n
mov dword [esp], eax
call fcn.0052b0e0
mov eax, dword [ebp - 0x110]
mov dword [esp + 4], 0
mov dword [esp], eax
call sub.msi.dll_MsiViewExecute
sub esp, 8
mov ebx, eax
mov dword [esp + 4], 0x3df
mov dword [esp], str..._wine_dlls_msi_tests_patch.c
call fcn.0052ae70
xor eax, eax
test ebx, ebx
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.expected_ERROR_SUCCESS__got__u_n
mov dword [esp], eax
call fcn.0052b0e0
lea eax, [ebp - 0x10c]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x110]
mov dword [esp], eax
call sub.msi.dll_MsiViewFetch
mov ebx, eax
mov eax, dword [ebp - 0x110]
sub esp, 8
mov dword [esp], eax
call sub.msi.dll_MsiViewClose
mov eax, dword [ebp - 0x110]
sub esp, 4
mov dword [esp], eax
call sub.msi.dll_MsiCloseHandle
mov eax, dword [ebp - 0x10c]
sub esp, 4
mov dword [esp], eax
call sub.msi.dll_MsiCloseHandle
mov eax, ebx
sub esp, 4
lea esp, [ebp - 8]
pop ebx
pop esi
pop ebp
ret
Function at 0x514a20
Capabilities:
Access peb ldr_data
Get process heap flags

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
lea eax, [ebp - 0x24]
lea edi, [ebp - 0x20]
push ebx
mov esi, dword fs:[0x18]
sub esp, 0x3c
mov dword [ebp - 0x20], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 8
mov dword [esp], 0xffffffff
mov dword [ebp - 0x1c], 0
call sub.advapi32.dll_OpenProcessToken
mov eax, dword [ebp - 0x20]
sub esp, 0xc
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x24]
mov dword [esp + 0x10], edi
mov dword [esp + 8], 0
mov dword [esp + 4], 1
mov dword [esp], eax
call sub.advapi32.dll_GetTokenInformation
mov eax, dword [ebp - 0x20]
sub esp, 0x14
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
mov ebx, eax
mov eax, dword [ebp - 0x20]
sub esp, 0xc
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x24]
mov dword [esp + 8], ebx
mov dword [esp + 4], 1
mov dword [esp], eax
call sub.advapi32.dll_GetTokenInformation
lea eax, [ebp - 0x1c]
sub esp, 0x14
mov dword [esp + 4], eax
mov eax, dword [ebx]
mov dword [esp], eax
call sub.advapi32.dll_ConvertSidToStringSidA
sub esp, 8
mov dword [esp + 8], ebx
mov dword [esp + 4], 0
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
mov eax, dword [ebp - 0x24]
sub esp, 0xc
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CloseHandle]
mov eax, dword [ebp - 0x1c]
sub esp, 4
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
Function at 0x517330
Capabilities:
Delete registry key

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
mov ecx, dword [0x58bda4]
test ecx, ecx
je 0x517360
mov dword [esp + 0xc], 0
mov dword [esp + 8], edx
mov dword [esp + 4], 0x5886c6
mov dword [esp], eax
call ecx
sub esp, 0x10
leave
ret
mov dword [esp + 4], 0x5886c6
mov dword [esp], eax
call sub.advapi32.dll_RegDeleteKeyA
sub esp, 8
leave
ret
Function at 0x5209e0
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push esi
mov esi, ecx
push ebx
lea ecx, [ebp - 0x114]
lea ebx, [ebp - 0x10c]
sub esp, 0x130
mov byte [ebp - 0x10c], 0
mov dword [esp + 0x14], ecx
lea ecx, [ebp - 0x110]
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], ecx
mov dword [esp + 8], 0
mov dword [esp + 4], edx
mov dword [esp], eax
mov dword [ebp - 0x114], 0x104
call sub.advapi32.dll_RegQueryValueExA
sub esp, 0x18
test eax, eax
jne 0x520a90
mov eax, dword [ebp - 0x110]
sub eax, 1
cmp eax, 1
ja 0x520a90
mov eax, dword [ebp + 8]
mov dword [esp], str..._wine_dlls_msi_tests_source.c
mov dword [esp + 4], eax
call fcn.0052ae70
mov dword [esp + 4], esi
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_lstrcmpA]
sub esp, 8
test eax, eax
sete al
mov dword [esp + 0xc], ebx
movzx eax, al
mov dword [esp + 8], esi
mov dword [esp + 4], str.Expected__s__got__s_n
mov dword [esp], eax
call fcn.0052b0e0
lea esp, [ebp - 8]
pop ebx
pop esi
pop ebp
ret
mov eax, dword [ebp + 8]
mov dword [esp], str..._wine_dlls_msi_tests_source.c
mov dword [esp + 4], eax
call fcn.0052ae70
mov dword [esp + 4], str.Key_doesnt_exist_or_wrong_type_n
mov dword [esp], 0
call fcn.0052b0e0
lea esp, [ebp - 8]
pop ebx
pop esi
pop ebp
ret
Function at 0x52abf0
Capabilities:
Terminate process

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
mov dword [esp], 1
call dword [0x52d118]
mov dword [esp], eax
call dword [sym.imp.msvcrt.dll_fflush]
mov dword [esp], 1
call dword [sym.imp.kernel32.dll_ExitProcess]

Function at 0x52ba40
Capabilities:
Access peb ldr_data

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x30
lea eax, [esp + 0x2c]
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], eax
lea eax, [esp + 0x28]
mov dword [esp + 8], eax
lea eax, [esp + 0x24]
mov dword [esp + 4], eax
lea eax, [esp + 0x20]
mov dword [esp], eax
mov dword [esp + 0x2c], 0
call sub.msvcrt.dll___getmainargs
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 8]
mov edx, dword [eax + 0x3c]
cmp word [eax + edx + 0x5c], 2
sete al
movzx eax, al
add eax, 1
mov dword [esp], eax
call sub.msvcrt.dll___set_app_type
mov eax, dword [esp + 0x28]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x20]
mov dword [esp], eax
call fcn.0052c400
mov dword [esp], eax
call sub.msvcrt.dll_exit
nop
nop
nop
nop
nop
nop
nop
nop
nop
push ebp
mov ebp, esp
and esp, 0xfffffff0
call sub.msvcrt.dll___iob_func
mov edx, dword [ebp + 8]
leave
shl edx, 5
add eax, edx
ret
Function at 0x412bdb
Capabilities:
Read file on windows

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
pop ebp
jmp fcn.00412a5a

Function at 0x416f3f
Capabilities:
Set environment variable

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
pop ebp
jmp fcn.004168ad

Function at 0x416f4a
Capabilities:
Set environment variable

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
pop ebp
jmp fcn.00416ae8

Function at 0x407e15
Capabilities:
Terminate process

Disassembly:
cmp ecx, dword [0x42e180]
jne 0x407e1f
repz ret
jmp fcn.0040bc0c

Function at 0x414176
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
pushal
call 0x414185
pop dword [ebp - 0x18]
mov eax, 0x414185
sub dword [ebp - 0x18], eax
mov dword [ebp - 0x28], 0xc3bacf64
add dword [ebp - 0x28], 0x8a9775e7
mov dword [ebp - 0x24], 0x5eb4ca04
sub dword [ebp - 0x24], 0x2c817dbf
mov dword [ebp - 0x20], 0x1cff029f
sub dword [ebp - 0x20], 0xd0b2be71
mov dword [ebp - 0x1c], 0x91d72379
sub dword [ebp - 0x1c], 0x91d72379
lea eax, [ebp - 0x28]
push eax
mov eax, 0x93c96d0b
add eax, 0x6c78c369
add eax, dword [ebp - 0x18]
call dword [eax]
mov dword [ebp - 0x28], 0x90d76b60
add dword [ebp - 0x28], 0xe39afdf6
mov dword [ebp - 0x24], 0x8291473e
add dword [ebp - 0x24], 0xbedb1a37
mov dword [ebp - 0x20], 0xe6c1f1ea
sub dword [ebp - 0x20], 0x8352857e
mov dword [ebp - 0x1c], 0xaa572104
add dword [ebp - 0x1c], 0x55a8defc
lea ebx, [ebp - 0x28]
push ebx
push eax
mov eax, 0x4cb440c7
sub eax, 0x4c720fa3
add eax, dword [ebp - 0x18]
call dword [eax]
push 0x40
push 0x1000
push 0x3dcac
push 0
call eax
mov ecx, 0x4c57aa88
add ecx, 0xb3a89c88
mov esi, eax
mov edi, 0xf7c7bbcf
sub edi, 0xf78477cf
add edi, dword [ebp - 0x18]
mov edx, 0x4e1a18fb
add edx, 0x1a0e5551
xor dword [ebp - 4], edx
mov ebx, dword [edi]
sub dword [ebp - 8], 0xd96548f9
sub ebx, edx
add dword [ebp - 0x14], 0x7cd8f880
mov dword [esi], ebx
xor dword [ebp - 0x14], eax
add esi, 0xc4ca4754
sub esi, 0xc4ca4750
add edi, 0xa6ade0d
sub edi, 0xa6ade09
loop 0x4142a2
add eax, 0x7ff99ea0
sub eax, 0x7ff88f8d
mov ebx, eax
add eax, 0x9488f486
add eax, 0x6b770b7f
mov ecx, 0x6c6fc8d5
add ecx, 0x93d0372b
add ecx, dword [ebp - 0x18]
call ebx
leave
ret
Function at 0x10015217
Capabilities:
Enumerate processes

Disassembly:
push 0x238
mov eax, 0x1002d711
call fcn.10017005
mov ebx, dword [ebp + 8]
test ebx, ebx
jne 0x10015234
xor eax, eax
jmp 0x10015311
xor edi, edi
push edi
push 2
call sub.kernel32.dll_CreateToolhelp32Snapshot
mov esi, eax
test esi, esi
je 0x1001530f
lea eax, [ebp - 0x23c]
mov dword [ebp - 0x23c], 0x22c
push eax
push esi
call sub.kernel32.dll_Process32FirstW
jmp 0x100152e5
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x244]
call fcn.1000128b
push ebx
lea ecx, [ebp - 0x240]
mov dword [ebp - 4], edi
call fcn.1000128b
lea ecx, [ebp - 0x244]
mov byte [ebp - 4], 1
call fcn.10001cc6
lea ecx, [ebp - 0x240]
call fcn.10001cc6
lea eax, [ebp - 0x244]
push eax
lea eax, [ebp - 0x240]
push eax
call fcn.1001969c
pop ecx
pop ecx
mov ecx, dword [ebp - 0x240]
lea ecx, [ecx - 0x10]
test al, al
jne 0x100152ef
call fcn.10001eb4
mov ecx, dword [ebp - 0x244]
or dword [ebp - 4], 0xffffffff
lea ecx, [ecx - 0x10]
call fcn.10001eb4
lea eax, [ebp - 0x23c]
push eax
push esi
call sub.kernel32.dll_Process32NextW
test eax, eax
jne 0x10015264
jmp 0x10015308
mov edi, dword [ebp - 0x234]
call fcn.10001eb4
mov ecx, dword [ebp - 0x244]
add ecx, 0xfffffff0
call fcn.10001eb4
push esi
call dword [sym.imp.kernel32.dll_CloseHandle]
mov eax, edi
call fcn.10016faf
ret

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

Disassembly:
mov eax, dword [esp + 4]
push ebx
xor ebx, ebx
cmp eax, ebx
je 0x100144b
push esi
lea ecx, [eax + 8]
call dword [sym.imp.ulib.dll_public:_class_WSTRING____thiscall_PATH::QueryFullPathString_void_const]
mov esi, eax
cmp esi, ebx
je 0x100144a
mov eax, dword [esi + 8]
cmp eax, ebx
je 0x1001442
cmp word [eax], bx
je 0x1001442
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x1001442
test ah, 0x10
je 0x1001442
mov bl, 1
mov eax, dword [esi]
push 1
mov ecx, esi
call dword [eax]
pop esi
mov al, bl
pop ebx
ret 4