joyce8/EMBER2024-capa huggingface dataset:
Function at 0x100058c3
Capabilities:
Contain obfuscated stackstrings

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x114
push esi
push edi
lea eax, [ebp - 0x114]
push 0x103
push eax
push 0
call dword [sym.imp.KERNEL32.DLL_GetModuleFileNameA]
lea eax, [ebp - 0x114]
push 0x5c
push eax
call dword [sym.imp.MSVCRT.DLL_strrchr]
mov edi, eax
pop ecx
test edi, edi
pop ecx
je 0x100058fc
inc edi
jmp 0x10005902
lea edi, [ebp - 0x114]
push 0x10007d98
call fcn.10001e46
test eax, eax
pop ecx
je 0x1000591b
call fcn.10001e94
jmp 0x100059ac
mov esi, 0x10007b6c
push dword [esi]
call fcn.10001e46
test eax, eax
pop ecx
jne 0x1000595c
add esi, 4
cmp esi, 0x10007b7c
jb 0x10005920
push 0x10007c44
call fcn.10001e46
test eax, eax
pop ecx
je 0x1000596b
push 0x10007d90
call fcn.100025ed
test eax, eax
pop ecx
je 0x100059ac
call fcn.10001ab9
jmp 0x100059ac
call dword [sym.imp.KERNEL32.DLL_GetCurrentProcessId]
push eax
call fcn.10005bf3
pop ecx
jmp 0x100059ac
lea eax, [ebp - 0x10]
mov dword [ebp - 0x10], 0x6e696863
push eax
mov dword [ebp - 0xc], 0x6f6c5f61
mov dword [ebp - 8], 0x2e6e6967
mov dword [ebp - 4], 0x72706d
call fcn.10001e46
test eax, eax
pop ecx
je 0x100059a7
push edi
call fcn.100025ed
test eax, eax
pop ecx
je 0x100059ac
call fcn.10005711
jmp 0x100059ac
call fcn.10005754
pop edi
pop esi
leave
ret

Function at 0x100059f2
Capabilities:
Allocate or change rwx memory
Execute shellcode via indirect call

Disassembly:
push ebp
mov ebp, esp
push ecx
lea eax, [ebp - 4]
push esi
push eax
push pe_nt_image_headers32
push dword [ebp + 0x14]
mov esi, dword [sym.imp.KERNEL32.DLL_VirtualProtectEx]
push dword [ebp + 0xc]
push dword [ebp + 8]
call esi
test eax, eax
je 0x10005a3e
push edi
push 0
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.DLL_ReadProcessMemory]
mov edi, eax
lea eax, [ebp - 4]
push eax
push dword [ebp - 4]
push dword [ebp + 0x14]
push dword [ebp + 0xc]
push dword [ebp + 8]
call esi
mov eax, edi
pop edi
pop esi
leave
ret

Function at 0x10005a41
Capabilities:
Allocate or change rwx memory
Execute shellcode via indirect call

Disassembly:
push ebp
mov ebp, esp
push ecx
lea eax, [ebp - 4]
push esi
push eax
push pe_nt_image_headers32
push dword [ebp + 0x14]
mov esi, dword [sym.imp.KERNEL32.DLL_VirtualProtectEx]
push dword [ebp + 0xc]
push dword [ebp + 8]
call esi
test eax, eax
je 0x10005a8d
push edi
push 0
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.DLL_WriteProcessMemory]
mov edi, eax
lea eax, [ebp - 4]
push eax
push dword [ebp - 4]
push dword [ebp + 0x14]
push dword [ebp + 0xc]
push dword [ebp + 8]
call esi
mov eax, edi
pop edi
pop esi
leave
ret
Function at 0x10005a90
Capabilities:
Create http request
Read data from internet
Receive data

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x408
push ebx
xor ebx, ebx
push ebx
push ebx
push ebx
push ebx
push 0x10007da8
mov byte [ebp - 1], bl
call dword [sym.imp.WININET.DLL_InternetOpenA]
cmp eax, ebx
mov dword [ebp - 8], eax
je 0x10005b77
push esi
push edi
push ebx
push 0x84000000
push ebx
push ebx
push dword [ebp + 8]
push eax
call dword [sym.imp.WININET.DLL_InternetOpenUrlA]
mov esi, dword [sym.imp.WININET.DLL_InternetCloseHandle]
mov edi, eax
cmp edi, ebx
je 0x10005b70
push 0x400
lea eax, [ebp - 0x408]
push ebx
push eax
call sub.MSVCRT.DLL_memset
add esp, 0xc
lea eax, [ebp + 8]
push eax
lea eax, [ebp - 0x408]
push 0x3ff
push eax
push edi
call dword [sym.imp.WININET.DLL_InternetReadFile]
test eax, eax
je 0x10005b6d
lea eax, [ebp - 0x408]
push eax
call dword [sym.imp.MSVCRT.DLL__strlwr]
mov ax, word [ebp - 0x408]
pop ecx
cmp ax, 0x6b6f
je 0x10005b4a
cmp ax, 0x6461
je 0x10005b4a
cmp ax, 0x7075
je 0x10005b4a
cmp ax, 0x6f6e
je 0x10005b4a
cmp ax, 0x7274
je 0x10005b4a
cmp ax, 0x6166
je 0x10005b4a
cmp al, 0x5b
jne 0x10005b4e
mov byte [ebp - 1], 1
cmp dword [ebp + 0xc], ebx
je 0x10005b6d
cmp dword [ebp + 0x10], ebx
je 0x10005b6d
push dword [ebp + 0x10]
lea eax, [ebp - 0x408]
push eax
push dword [ebp + 0xc]
call sub.MSVCRT.DLL_memcpy
add esp, 0xc
push edi
call esi
push dword [ebp - 8]
call esi
pop edi
pop esi
nop
movzx eax, byte [ebp - 1]
pop ebx
leave
ret

Function at 0x10005b7f
Capabilities:
Enumerate processes

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x128
cmp dword [ebp + 8], 0
push esi
je 0x10005bf0
push 0
push 2
call sub.KERNEL32.DLL_CreateToolhelp32Snapshot
mov esi, eax
cmp esi, 0xffffffff
je 0x10005bf0
push edi
push 0x49
pop ecx
xor eax, eax
lea edi, [ebp - 0x124]
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x128]
mov dword [ebp - 0x128], 0x128
push eax
push esi
call sub.KERNEL32.DLL_Process32First
pop edi
test eax, eax
je 0x10005be9
push dword [ebp + 0xc]
lea eax, [ebp - 0x128]
push eax
call dword [ebp + 8]
test eax, eax
je 0x10005be9
lea eax, [ebp - 0x128]
push eax
push esi
call sub.KERNEL32.DLL_Process32Next
jmp 0x10005bc5
push esi
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
pop esi
leave
ret

Function at 0x10005bf3
Capabilities:
Terminate process

Disassembly:
push esi
push dword [esp + 8]
push 0
push 1
call dword [sym.imp.KERNEL32.DLL_OpenProcess]
mov esi, eax
test esi, esi
jne 0x10005c0a
pop esi
ret
push 0
push esi
call dword [sym.imp.KERNEL32.DLL_TerminateProcess]
push esi
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
push 1
pop eax
pop esi
ret

Function at 0x10005c1f
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
push edi
pushal
mov esi, dword [ebp + 8]
mov edi, dword [ebp + 0x10]
mov ebx, dword [ebp + 0xc]
shr ebx, 2
mov ecx, dword [ebp + 0x14]
xor edx, edx
mov eax, dword [esi + edx*4]
inc ecx
and ecx, 0x1f
rol eax, cl
xor eax, edi
mov dword [esi + edx*4], eax
inc edx
cmp edx, ebx
jne 0x10005c37
popal
pop edi
pop esi
pop ebx
pop ebp
ret
Function at 0x10005cda
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
push edi
pushal
mov esi, dword [ebp + 8]
mov edi, dword [ebp + 0x10]
mov ebx, dword [ebp + 0xc]
shr ebx, 2
mov ecx, dword [ebp + 0x14]
xor edx, edx
mov eax, dword [esi + edx*4]
xor eax, edi
inc ecx
and ecx, 0x1f
ror eax, cl
mov dword [esi + edx*4], eax
inc edx
cmp edx, ebx
jne 0x10005cf2
popal
pop edi
pop esi
pop ebx
pop ebp
ret
Function at 0x412082
Capabilities:
Allocate thread local storage
Get thread local storage value
Set thread local storage value

Disassembly:
cmp dword [0x418680], 0
push ebx
push esi
mov esi, 0x418688
jne 0x4120ae
call dword [sym.imp.KERNEL32.dll_TlsAlloc]
push esi
mov dword [0x4186a0], eax
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
mov dword [0x418680], 1
push dword [0x4186a0]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebx, eax
test ebx, ebx
jne 0x41214b
push 0x14
push 8
push dword [0x418010]
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov ebx, eax
test ebx, ebx
je 0x412175
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [0x418684]
test eax, eax
je 0x4120f0
mov dword [eax], ebx
push edi
push esi
mov dword [ebx + 4], eax
mov dword [0x418684], ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov esi, dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
lea edi, [ebx + 0x10]
push 0
push 0
push 0x100000
push edi
call esi
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThread]
push eax
call esi
push eax
call dword [sym.imp.KERNEL32.dll_DuplicateHandle]
push 8
push 0xffffffffffffffff
push ebx
push 0x41217a
push dword [edi]
lea eax, [ebx + 0xc]
push eax
call dword [sym.imp.KERNEL32.dll_RegisterWaitForSingleObject]
push ebx
push dword [0x4186a0]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
pop edi
push 0xc
push 0
push dword [0x418010]
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
test eax, eax
je 0x412175
mov ecx, dword [esp + 0xc]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x10]
mov dword [eax + 8], ecx
mov ecx, dword [ebx + 8]
mov dword [eax], ecx
mov dword [ebx + 8], eax
pop esi
pop ebx
ret 8

Function at 0x40cfc4
Capabilities:
Encode data using xor

Disassembly:
je 0x40cfe9
dec eax
jne 0x10474e28
mov eax, dword [esi + 8]
push esi
adc al, ch
xor ebp, ecx
sti
inc dword [ecx]
add byte [eax], al
add byte [ebx + 0x5210067e], ah
call 0xff7f1649
je 0x40cfd3
leave
ret
fld qword [esi]
jne 0x249dad9f
or al, ch
push esi
add byte [eax], al
mov ecx, 0xebf559e8
ljmp 0x8be5
Function at 0x4ca011
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1a4
mov edx, dword [ebp + 8]
xor ecx, ecx
mov eax, 0x4d43f0
cmp edx, dword [eax]
je 0x4ca033
add eax, 8
inc ecx
cmp eax, 0x4d4480
jl 0x4ca024
push esi
mov esi, ecx
shl esi, 3
cmp edx, dword [esi + 0x4d43f0]
jne 0x4ca161
mov eax, dword [0x4d9e20]
cmp eax, 1
je 0x4ca13b
test eax, eax
jne 0x4ca064
cmp dword [0x4d431c], 1
je 0x4ca13b
cmp edx, 0xfc
je 0x4ca161
lea eax, [ebp - 0x1a4]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
jne 0x4ca09b
lea eax, [ebp - 0x1a4]
push 0x4cfe28
push eax
call fcn.004ca9f0
pop ecx
pop ecx
lea eax, [ebp - 0x1a4]
push edi
push eax
lea edi, [ebp - 0x1a4]
call fcn.004cae80
inc eax
pop ecx
cmp eax, 0x3c
jbe 0x4ca0de
lea eax, [ebp - 0x1a4]
push eax
call fcn.004cae80
mov edi, eax
lea eax, [ebp - 0x1a4]
sub eax, 0x3b
push 3
add edi, eax
push 0x4cfe24
push edi
call fcn.004ccd50
add esp, 0x10
lea eax, [ebp - 0xa0]
push 0x4cfe08
push eax
call fcn.004ca9f0
lea eax, [ebp - 0xa0]
push edi
push eax
call fcn.004caa00
lea eax, [ebp - 0xa0]
push 0x4cfe04
push eax
call fcn.004caa00
push dword [esi + 0x4d43f4]
lea eax, [ebp - 0xa0]
push eax
call fcn.004caa00
push 0x12010
lea eax, [ebp - 0xa0]
push 0x4cfddc
push eax
call fcn.004cccc4
add esp, 0x2c
pop edi
jmp 0x4ca161
lea eax, [ebp + 8]
lea esi, [esi + 0x4d43f4]
push 0
push eax
push dword [esi]
call fcn.004cae80
pop ecx
push eax
push dword [esi]
push 0xfffffffffffffff4
call dword [sym.imp.KERNEL32.dll_GetStdHandle]
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
pop esi
leave
ret
Function at 0x40ff4a
Capabilities:
Set registry value

Disassembly:
push ebx
push esi
mov esi, dword [esp + 0x10]
push edi
mov ebx, ecx
xor edi, edi
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
inc eax
add esi, eax
add edi, eax
cmp eax, 1
jne 0x40ff55
push edi
push dword [esp + 0x18]
push 7
push 0
push dword [esp + 0x20]
push dword [ebx]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
pop edi
pop esi
pop ebx
ret 8

Function at 0x414f1b
Capabilities:
Query or enumerate registry key
Query or enumerate registry value

Disassembly:
push ebp
lea ebp, [esp - 0x7b8]
sub esp, 0x838
mov eax, dword [0x45752c]
push esi
mov dword [ebp + 0x7b4], eax
lea eax, [ebp - 0x50]
push eax
push 0x20019
push 0
mov esi, ecx
push dword [esi + 0x100]
mov dword [ebp - 0x60], 0x800
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x41500d
lea eax, [ebp - 0x80]
push eax
lea eax, [ebp - 0x74]
push eax
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x78]
push eax
lea eax, [ebp - 0x70]
push eax
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x6c]
push eax
push 0
lea eax, [ebp - 0x60]
push eax
lea eax, [ebp - 0x4c]
push eax
push dword [ebp - 0x50]
call dword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyA]
test eax, eax
jne 0x415004
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x5c], eax
inc eax
push edi
push eax
call fcn.00433072
pop ecx
mov edi, eax
lea eax, [ebp - 0x5c]
push eax
push edi
lea eax, [ebp - 0x58]
push eax
push 0
push str.cdgfilename
push dword [ebp - 0x50]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x414ffc
cmp dword [ebp - 0x58], 1
jne 0x414ffc
push dword [esi + 0xfc]
call fcn.00432126
and dword [esi + 0xfc], 0
push edi
call fcn.00432170
inc eax
push eax
call fcn.00433072
push edi
push eax
mov dword [esi + 0xfc], eax
call fcn.00432210
add esp, 0x14
push edi
call fcn.0043306d
pop ecx
pop edi
push dword [ebp - 0x50]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [esi + 0xfc]
mov ecx, dword [ebp + 0x7b4]
pop esi
call fcn.0043215c
add ebp, 0x7b8
leave
ret
Function at 0x43553f
Capabilities:
Accept command line arguments
Parse pe header
Terminate process

Disassembly:
push 0x60
push 0x44f318
call fcn.00433928
mov edi, 0x94
mov eax, edi
call fcn.004335f0
mov dword [ebp - 0x18], esp
mov esi, esp
mov dword [esi], edi
push esi
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
mov ecx, dword [esi + 0x10]
mov dword [0x45bbf4], ecx
mov eax, dword [esi + 4]
mov dword [0x45bc00], eax
mov edx, dword [esi + 8]
mov dword [0x45bc04], edx
mov esi, dword [esi + 0xc]
and esi, 0x7fff
mov dword [0x45bbf8], esi
cmp ecx, 2
je 0x43559f
or esi, 0x8000
mov dword [0x45bbf8], esi
shl eax, 8
add eax, edx
mov dword [0x45bbfc], eax
xor esi, esi
push esi
mov edi, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call edi
cmp word [eax], 0x5a4d
jne 0x4355da
mov ecx, dword [eax + 0x3c]
add ecx, eax
cmp dword [ecx], 0x4550
jne 0x4355da
movzx eax, word [ecx + 0x18]
cmp eax, 0x10b
je 0x4355f2
cmp eax, 0x20b
je 0x4355df
mov dword [ebp - 0x1c], esi
jmp 0x435606
cmp dword [ecx + 0x84], 0xe
jbe 0x4355da
xor eax, eax
cmp dword [ecx + 0xf8], esi
jmp 0x435600
cmp dword [ecx + 0x74], 0xe
jbe 0x4355da
xor eax, eax
cmp dword [ecx + 0xe8], esi
setne al
mov dword [ebp - 0x1c], eax
push 1
call fcn.004399a5
pop ecx
test eax, eax
jne 0x43561a
push 0x1c
call fcn.0043551b
pop ecx
call fcn.00437a76
test eax, eax
jne 0x43562b
push 0x10
call fcn.0043551b
pop ecx
call fcn.0043af25
mov dword [ebp - 4], esi
call fcn.0043c129
test eax, eax
jge 0x435644
push 0x1b
call fcn.004354f6
pop ecx
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
mov dword [0x45d74c], eax
call fcn.0043c007
mov dword [0x45bc3c], eax
call fcn.0043bf65
test eax, eax
jge 0x43566a
push 8
call fcn.004354f6
pop ecx
call fcn.0043bd32
test eax, eax
jge 0x43567b
push 9
call fcn.004354f6
pop ecx
push 1
call fcn.004346bc
pop ecx
mov dword [ebp - 0x28], eax
cmp eax, esi
je 0x435691
push eax
call fcn.004354f6
pop ecx
mov dword [ebp - 0x44], esi
lea eax, [ebp - 0x70]
push eax
call dword [sym.imp.KERNEL32.dll_GetStartupInfoA]
call fcn.0043bcd5
mov dword [ebp - 0x20], eax
test byte [ebp - 0x44], 1
je 0x4356b2
movzx eax, word [ebp - 0x40]
jmp 0x4356b5
push 0xa
pop eax
push eax
push dword [ebp - 0x20]
push esi
push esi
call edi
push eax
call fcn.00411403
mov edi, eax
mov dword [ebp - 0x2c], edi
cmp dword [ebp - 0x1c], esi
jne 0x4356d3
push edi
call fcn.004347e9
call fcn.0043480b
jmp 0x435705
or dword [ebp - 4], 0xffffffff
mov eax, edi
lea esp, [ebp - 0x7c]
call fcn.00433963
ret
Function at 0xd3e0b0
Capabilities:
Decompress data using aplib

Disassembly:
call 0xd3e200
push ebx
mov ebx, esp
push ebx
mov esi, dword [ebx + 8]
mov edi, dword [ebx + 0x10]
cld
mov dl, 0x80
mov al, byte [esi]
inc esi
mov byte [edi], al
inc edi
mov ebx, 2
add dl, dl
jne 0xd3e0d6
mov dl, byte [esi]
inc esi
adc dl, dl
jae 0xd3e0c2
add dl, dl
jne 0xd3e0e1
mov dl, byte [esi]
inc esi
adc dl, dl
jae 0xd3e134
xor eax, eax
add dl, dl
jne 0xd3e0ee
mov dl, byte [esi]
inc esi
adc dl, dl
jae 0xd3e1d5
add dl, dl
jne 0xd3e0fd
mov dl, byte [esi]
inc esi
adc dl, dl
adc eax, eax
add dl, dl
jne 0xd3e108
mov dl, byte [esi]
inc esi
adc dl, dl
adc eax, eax
add dl, dl
jne 0xd3e113
mov dl, byte [esi]
inc esi
adc dl, dl
adc eax, eax
add dl, dl
jne 0xd3e11e
mov dl, byte [esi]
inc esi
adc dl, dl
adc eax, eax
je 0xd3e12a
push edi
mov eax, eax
sub edi, eax
mov al, byte [edi]
pop edi
mov byte [edi], al
inc edi
mov ebx, 2
jmp 0xd3e0cd
mov eax, 1
add dl, dl
jne 0xd3e142
mov dl, byte [esi]
inc esi
adc dl, dl
adc eax, eax
add dl, dl
jne 0xd3e14d
mov dl, byte [esi]
inc esi
adc dl, dl
jb 0xd3e139
sub eax, ebx
mov ebx, 1
jne 0xd3e180
mov ecx, 1
add dl, dl
jne 0xd3e166
mov dl, byte [esi]
inc esi
adc dl, dl
adc ecx, ecx
add dl, dl
jne 0xd3e171
mov dl, byte [esi]
inc esi
adc dl, dl
jb 0xd3e15d
push esi
mov esi, edi
sub esi, ebp
rep movsb byte es:[edi], byte [esi]
pop esi
jmp 0xd3e0cd
dec eax
shl eax, 8
mov al, byte [esi]
inc esi
mov ebp, eax
mov ecx, 1
add dl, dl
jne 0xd3e197
mov dl, byte [esi]
inc esi
adc dl, dl
adc ecx, ecx
add dl, dl
jne 0xd3e1a2
mov dl, byte [esi]
inc esi
adc dl, dl
jb 0xd3e18e
cmp eax, 0x7d00
jae 0xd3e1c5
cmp eax, 0x500
jb 0xd3e1c0
inc ecx
push esi
mov esi, edi
sub esi, eax
rep movsb byte es:[edi], byte [esi]
pop esi
jmp 0xd3e0cd
cmp eax, 0x7f
ja 0xd3e1c8
add ecx, 2
push esi
mov esi, edi
sub esi, eax
rep movsb byte es:[edi], byte [esi]
pop esi
jmp 0xd3e0cd
mov al, byte [esi]
inc esi
xor ecx, ecx
shr al, 1
je 0xd3e1f6
adc ecx, 2
mov ebp, eax
push esi
mov esi, edi
sub esi, eax
rep movsb byte es:[edi], byte [esi]
pop esi
mov ebx, 1
jmp 0xd3e0cd
pop ebx
sub edi, dword [ebx + 0x10]
mov eax, edi
pop ebx
ret 0x10
Function at 0x1254a50
Capabilities:
Packed with generic packer

Disassembly:
pushal
mov esi, section.UPX1
lea edi, [esi - 0xadb000]
push edi
or ebp, 0xffffffff
jmp 0x1254a72
mov al, byte [esi]
inc esi
mov byte [edi], al
inc edi
add ebx, ebx
jne 0x1254a79
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jb 0x1254a68
mov eax, 1
add ebx, ebx
jne 0x1254a8b
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc eax, eax
add ebx, ebx
jae 0x1254a9c
jne 0x1254abb
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jb 0x1254abb
dec eax
add ebx, ebx
jne 0x1254aa8
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc eax, eax
jmp 0x1254a80
add ebx, ebx
jne 0x1254ab7
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc ecx, ecx
jmp 0x1254b0d
xor ecx, ecx
sub eax, 3
jb 0x1254ad3
shl eax, 8
mov al, byte [esi]
inc esi
xor eax, 0xffffffff
je 0x1254b42
sar eax, 1
mov ebp, eax
jmp 0x1254ade
add ebx, ebx
jne 0x1254ade
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jb 0x1254aac
inc ecx
add ebx, ebx
jne 0x1254aec
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jb 0x1254aac
add ebx, ebx
jne 0x1254af9
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc ecx, ecx
add ebx, ebx
jae 0x1254aee
jne 0x1254b0a
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jae 0x1254aee
add ecx, 2
cmp ebp, 0xfffffb00
adc ecx, 2
lea edx, [edi + ebp]
cmp ebp, 0xfffffffc
jbe 0x1254b2c
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
dec ecx
jne 0x1254b1e
jmp 0x1254a6e
mov eax, dword [edx]
add edx, 4
mov dword [edi], eax
add edi, 4
sub ecx, 4
ja 0x1254b2c
add edi, ecx
jmp 0x1254a6e
pop esi
mov edi, esi
mov ecx, 0xc9e7
mov al, byte [edi]
inc edi
sub al, 0xe8
cmp al, 1
ja 0x1254b4a
cmp byte [edi], 0x6e
jne 0x1254b4a
mov eax, dword [edi]
mov bl, byte [edi + 4]
shr ax, 8
rol eax, 0x10
xchg ah, al
sub eax, edi
sub bl, 0xe8
add eax, esi
mov dword [edi], eax
add edi, 5
mov al, bl
loop 0x1254b4f
lea edi, [esi + 0xe50000]
mov eax, dword [edi]
or eax, eax
je 0x1254bbe
mov ebx, dword [edi + 4]
lea eax, [eax + esi + 0xeafb74]
add ebx, esi
push eax
add edi, 8
call dword [esi + 0xeafce8]
xchg ebp, eax
mov al, byte [edi]
inc edi
or al, al
je 0x1254b7c
mov ecx, edi
push edi
dec eax
repne scasb al, byte es:[edi]
push ebp
call dword [esi + 0xeafcf0]
or eax, eax
je 0x1254bb8
mov dword [ebx], eax
add ebx, 4
jmp 0x1254b99
call dword [esi + 0xeafcec]
mov ebp, dword [esi + 0xeafcf4]
lea edi, [esi - 0x1000]
mov ebx, 0x1000
push eax
push esp
push 4
push ebx
push edi
call ebp
lea eax, [edi + 0x21f]
and byte [eax], 0x7f
and byte [eax + 0x28], 0x7f
pop eax
push eax
push esp
push eax
push ebx
push edi
call ebp
pop eax
popal
lea eax, [esp - 0x80]
push 0
cmp esp, eax
jne 0x1254bf2
sub esp, 0xffffff80
jmp 0x6a9d9c
Function at 0x4051c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x30
mov eax, dword [0x5000b0]
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
movzx eax, byte [eax]
cmp al, 1
jne 0x4051e8
call fcn.00405550
jmp 0x4053bf
mov eax, dword [edx + 8]
movdqu xmm0, xmmword [ecx + 0x30]
test eax, eax
je 0x4053ba
movdqu xmm7, xmmword [ecx]
mov esi, dword [edx]
movdqu xmm5, xmmword [ecx + 0x10]
movdqu xmm3, xmmword [ecx + 0x20]
mov edx, dword [edx + 4]
xor edi, edi
movdqa xmmword [esp], xmm7
nop word cs:[eax + eax]
nop dword [eax]
mov ebx, 0xa
movdqa xmm4, xmm5
movdqa xmm6, xmm0
movdqa xmm2, xmm3
nop word cs:[eax + eax]
nop dword [eax + eax]
paddd xmm7, xmm5
dec ebx
pxor xmm6, xmm7
movdqa xmm1, xmm6
pslld xmm6, 0x10
psrld xmm1, 0x10
por xmm6, xmm1
paddd xmm3, xmm6
pxor xmm5, xmm3
movdqa xmm1, xmm5
pslld xmm5, 0xc
psrld xmm1, 0x14
por xmm5, xmm1
paddd xmm7, xmm5
pxor xmm6, xmm7
pshufd xmm7, xmm7, 0x93
movdqa xmm1, xmm6
pslld xmm6, 8
psrld xmm1, 0x18
por xmm6, xmm1
paddd xmm3, xmm6
pshufd xmm6, xmm6, 0x4e
pxor xmm5, xmm3
pshufd xmm3, xmm3, 0x39
movdqa xmm1, xmm5
pslld xmm5, 7
psrld xmm1, 0x19
por xmm5, xmm1
paddd xmm7, xmm5
pxor xmm6, xmm7
movdqa xmm1, xmm6
pslld xmm6, 0x10
psrld xmm1, 0x10
por xmm6, xmm1
paddd xmm3, xmm6
pxor xmm5, xmm3
movdqa xmm1, xmm5
pslld xmm5, 0xc
psrld xmm1, 0x14
por xmm5, xmm1
paddd xmm7, xmm5
pxor xmm6, xmm7
pshufd xmm7, xmm7, 0x39
movdqa xmm1, xmm6
pslld xmm6, 8
psrld xmm1, 0x18
por xmm6, xmm1
paddd xmm3, xmm6
pshufd xmm6, xmm6, 0x4e
pxor xmm5, xmm3
pshufd xmm3, xmm3, 0x93
movdqa xmm1, xmm5
pslld xmm5, 7
psrld xmm1, 0x19
por xmm5, xmm1
jne 0x405240
mov ebx, edi
paddd xmm6, xmm0
paddd xmm3, xmm2
movdqa xmmword [esp + 0x10], xmm0
movdqa xmm0, xmm2
movdqa xmm2, xmmword [esp]
paddd xmm5, xmm4
inc edi
shl ebx, 6
cmp eax, edi
movdqu xmm1, xmmword [esi + ebx + 0x30]
paddd xmm7, xmm2
pxor xmm6, xmm1
movdqu xmm1, xmmword [esi + ebx + 0x20]
pxor xmm3, xmm1
movdqu xmm1, xmmword [esi + ebx + 0x10]
pxor xmm5, xmm1
movdqu xmm1, xmmword [esi + ebx]
pxor xmm7, xmm1
movdqu xmmword [edx + ebx], xmm7
movdqu xmmword [edx + ebx + 0x10], xmm5
movdqu xmmword [edx + ebx + 0x20], xmm3
movdqa xmm3, xmm0
movdqa xmm0, xmmword [esp + 0x10]
movdqa xmm7, xmm2
movdqa xmm5, xmm4
movdqu xmmword [edx + ebx + 0x30], xmm6
paddd xmm0, xmmword [0x57a4a0]
jne 0x405220
movd dword [ecx + 0x30], xmm0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret