joyce8/EMBER2024-capa huggingface dataset:
Function at 0x5c3de8
Capabilities:
Enumerate gui resources

Disassembly:
push ebx
push esi
add esp, 0xfffffff8
mov ebx, eax
mov eax, dword [ebx + 0x188]
test eax, eax
je 0x5c3e8a
cmp dword [ebx + 0xac], 0
jne 0x5c3e84
mov dword [esp], eax
mov byte [esp + 4], dl
mov eax, esp
push eax
push 0x5c3d24
call sub.user32.dll_EnumWindows
mov eax, dword [ebx + 0xa8]
cmp dword [eax + 8], 0
je 0x5c3e84
push 3
mov eax, dword [esp + 4]
push eax
call sub.user32.dll_GetWindow
mov esi, eax
mov dword [esp], esi
push 0xffffffffffffffec
push esi
call sub.user32.dll_GetWindowLongW
test al, 8
je 0x5c3e4a
mov dword [esp], 0xfffffffe
mov eax, dword [ebx + 0xa8]
mov esi, dword [eax + 8]
dec esi
cmp esi, 0
jl 0x5c3e84
push 0x213
push 0
push 0
push 0
push 0
mov eax, dword [esp + 0x14]
push eax
mov edx, esi
mov eax, dword [ebx + 0xa8]
call fcn.004ab398
push eax
call sub.user32.dll_SetWindowPos
dec esi
cmp esi, 0xffffffff
jne 0x5c3e59
inc dword [ebx + 0xac]
pop ecx
pop edx
pop esi
pop ebx
ret

Function at 0x5c40c8
Capabilities:
Enumerate gui resources
Hide graphical window

Disassembly:
push ebx
push esi
push edi
add esp, 0xfffffff8
mov ebx, edx
mov esi, eax
mov eax, dword [0x640734]
cmp dword [eax + 0x188], 0
je 0x5c4242
test bl, bl
jne 0x5c418d
cmp dword [esi + 0xb4], 0
jne 0x5c4182
mov eax, esi
call fcn.005c708c
push eax
push 0x5c3fbc
call sub.user32.dll_EnumWindows
cmp dword [esi + 0x58], 0
je 0x5c4153
mov eax, dword [0x640734]
cmp byte [eax + 0xeb], 0
je 0x5c4153
mov eax, dword [esi + 0xf0]
mov dword [esp], eax
mov eax, dword [esp]
test eax, eax
je 0x5c4134
sub eax, 4
mov eax, dword [eax]
mov edi, eax
dec edi
cmp edi, 0
jl 0x5c4153
push 0
mov eax, dword [esi + 0xf0]
mov eax, dword [eax + edi*4]
push eax
call sub.user32.dll_ShowWindow
dec edi
cmp edi, 0xffffffff
jne 0x5c413c
mov eax, dword [esi + 0xb0]
mov edi, dword [eax + 8]
dec edi
cmp edi, 0
jl 0x5c4182
cmp bl, 1
cmc
sbb eax, eax
push eax
mov edx, edi
mov eax, dword [esi + 0xb0]
call fcn.004ab398
push eax
call sub.user32.dll_ShowOwnedPopups
dec edi
cmp edi, 0xffffffff
jne 0x5c4162
inc dword [esi + 0xb4]
jmp 0x5c4242
cmp dword [esi + 0xb4], 0
jle 0x5c4242
dec dword [esi + 0xb4]
cmp dword [esi + 0xb4], 0
jne 0x5c4242
cmp dword [esi + 0x58], 0
je 0x5c41f7
mov eax, dword [0x640734]
cmp byte [eax + 0xeb], 0
je 0x5c41f7
mov eax, dword [esi + 0xf0]
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
test eax, eax
je 0x5c41d8
sub eax, 4
mov eax, dword [eax]
mov edi, eax
dec edi
cmp edi, 0
jl 0x5c41f7
push 5
mov eax, dword [esi + 0xf0]
mov eax, dword [eax + edi*4]
push eax
call sub.user32.dll_ShowWindow
dec edi
cmp edi, 0xffffffff
jne 0x5c41e0
mov eax, dword [esi + 0xb0]
mov edi, dword [eax + 8]
dec edi
cmp edi, 0
jl 0x5c4226
cmp bl, 1
cmc
sbb eax, eax
push eax
mov edx, edi
mov eax, dword [esi + 0xb0]
call fcn.004ab398
push eax
call sub.user32.dll_ShowOwnedPopups
dec edi
cmp edi, 0xffffffff
jne 0x5c4206
mov eax, dword [esi + 0xb0]
mov edx, dword [eax]
call dword [edx + 8]
lea eax, [esi + 0xf0]
mov edx, dword [0x5b55d8]
call fcn.0040c744
pop ecx
pop edx
pop edi
pop esi
pop ebx
ret
Function at 0x5c4e9c
Capabilities:
Get graphical window text

Disassembly:
push ebx
push esi
add esp, 0xfffffe00
mov esi, edx
mov ebx, eax
cmp byte [ebx + 0xc4], 0
je 0x5c4ef9
cmp byte [ebx + 0xeb], 0
jne 0x5c4ef9
push pe_nt_image_headers32
lea eax, [esp + 4]
push eax
mov eax, dword [ebx + 0x188]
push eax
call sub.user32.dll_GetWindowTextW
mov ecx, eax
mov edx, esp
mov eax, esi
call fcn.0040a42c
mov eax, dword [esi]
test eax, eax
je 0x5c4ee6
sub eax, 4
mov eax, dword [eax]
test eax, eax
jne 0x5c4f06
mov eax, esi
mov edx, dword [ebx + 0xa4]
call fcn.0040a684
jmp 0x5c4f06
mov eax, esi
mov edx, dword [ebx + 0xa4]
call fcn.0040a684
add esp, 0x200
pop esi
pop ebx
ret

Function at 0x5c67b8
Capabilities:
Hide graphical window

Disassembly:
push ebx
push esi
mov ebx, eax
mov esi, dword [ebx + 0x98]
test esi, esi
je 0x5c6829
mov eax, esi
call fcn.00530e34
test al, al
je 0x5c6829
mov eax, dword [ebx + 0x98]
call fcn.00530a64
push eax
call sub.user32.dll_IsWindowVisible
test eax, eax
je 0x5c6829
mov eax, dword [ebx + 0x98]
mov edx, dword [eax]
call dword [edx + 0x118]
test al, al
je 0x5c681a
push 0
mov eax, dword [ebx + 0x98]
call fcn.00530a64
push eax
call sub.user32.dll_ShowWindow
xor edx, edx
mov eax, dword [ebx + 0x98]
call fcn.005276a8
jmp 0x5c6829
mov cl, 1
mov edx, dword [ebx + 0x88]
mov eax, ebx
call fcn.005c65f0
pop esi
pop ebx
ret
Function at 0x5cd5dc
Capabilities:
Hide graphical window

Disassembly:
push ebx
push esi
mov ebx, eax
cmp dword [ebx + 0x8c], 0
jne 0x5cd656
mov eax, dword [ebx + 8]
call fcn.00530a64
mov ecx, eax
mov dl, 1
mov eax, dword [0x53d280]
call fcn.0052ad64
mov esi, eax
mov dword [ebx + 0x8c], esi
xor edx, edx
mov eax, esi
call fcn.005425b8
mov dword [esi + 0x2bc], ebx
mov dword [esi + 0x2b8], 0x5cceac
push 8
push 3
call sub.user32.dll_GetSystemMetrics
push eax
push 0
push 0
push 0
push 0
mov eax, dword [ebx + 0x8c]
call fcn.00530a64
push eax
call sub.user32.dll_SetWindowPos
push 0
mov eax, dword [ebx + 0x8c]
call fcn.00530a64
push eax
call sub.user32.dll_ShowWindow
cmp dword [ebx + 0x9c], 0
jne 0x5cd6cc
mov eax, dword [ebx + 8]
call fcn.00530a64
mov ecx, eax
mov dl, 1
mov eax, dword [0x53d280]
call fcn.0052ad64
mov esi, eax
mov dword [ebx + 0x9c], esi
mov dl, 1
mov eax, esi
call fcn.005425b8
mov dword [esi + 0x2bc], ebx
mov dword [esi + 0x2b8], 0x5ccef8
push 8
push 0
push 2
call sub.user32.dll_GetSystemMetrics
push eax
push 0
push 0
push 0
mov eax, dword [ebx + 0x9c]
call fcn.00530a64
push eax
call sub.user32.dll_SetWindowPos
push 0
mov eax, dword [ebx + 0x9c]
call fcn.00530a64
push eax
call sub.user32.dll_ShowWindow
cmp dword [ebx + 0x94], 0
jne 0x5cd738
mov eax, dword [ebx + 8]
call fcn.00530a64
mov ecx, eax
mov dl, 1
mov eax, dword [0x53dd00]
call fcn.0052ad64
mov esi, eax
mov dword [ebx + 0x94], esi
mov eax, esi
mov byte [eax + 0x290], 1
push 8
push 3
call sub.user32.dll_GetSystemMetrics
push eax
push 2
call sub.user32.dll_GetSystemMetrics
push eax
push 0
push 0
push 0
mov eax, dword [ebx + 0x94]
call fcn.00530a64
push eax
call sub.user32.dll_SetWindowPos
push 0
mov eax, dword [ebx + 0x94]
call fcn.00530a64
push eax
call sub.user32.dll_ShowWindow
pop esi
pop ebx
ret
Function at 0x5d9308
Capabilities:
Open clipboard
Write clipboard data

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff8
push ebx
push esi
push edi
mov dword [ebp - 4], edx
mov eax, dword [ebp - 4]
call fcn.0040a388
xor eax, eax
push ebp
push 0x5d9445
push dword fs:[eax]
mov dword fs:[eax], esp
push 0
call sub.user32.dll_OpenClipboard
test eax, eax
je 0x5d9418
xor edx, edx
push ebp
push 0x5d9411
push dword fs:[edx]
mov dword fs:[edx], esp
mov ebx, dword [ebp - 4]
mov eax, ebx
test eax, eax
je 0x5d9355
sub eax, 4
mov eax, dword [eax]
add eax, eax
add eax, 2
push eax
push 0x2002
call sub.kernel32.dll_GlobalAlloc
mov dword [ebp - 8], eax
xor eax, eax
push ebp
push 0x5d93e6
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_GlobalLock
mov esi, eax
xor eax, eax
push ebp
push 0x5d93d5
push dword fs:[eax]
mov dword fs:[eax], esp
test ebx, ebx
je 0x5d9398
sub ebx, 4
mov ebx, dword [ebx]
mov eax, dword [ebp - 4]
call fcn.0040b0b0
mov ecx, ebx
add ecx, ecx
add ecx, 2
mov edx, esi
call fcn.00406c60
call sub.user32.dll_EmptyClipboard
mov eax, dword [ebp - 8]
push eax
push 0xd
call sub.user32.dll_SetClipboardData
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5d93dc
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_GlobalUnlock
ret
mov ecx, dword [0x6399d0]
mov dl, 1
mov eax, dword [0x41b094]
call fcn.00428aac
call fcn.00409920
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5d944c
lea eax, [ebp - 4]
call fcn.0040a2a4
ret

Function at 0x5e2080
Capabilities:
Get session user name

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff8
push ebx
xor edx, edx
mov dword [ebp - 4], edx
mov ebx, eax
xor eax, eax
push ebp
push 0x5e20fa
push dword fs:[eax]
mov dword fs:[eax], esp
mov dword [ebp - 8], 0xff
lea eax, [ebp - 4]
mov edx, dword [ebp - 8]
call fcn.0040b22c
lea eax, [ebp - 8]
push eax
mov eax, dword [ebp - 4]
call fcn.0040b0b0
push eax
call sub.advapi32.dll_GetUserNameW
test eax, eax
je 0x5e20d8
push ebx
mov ecx, dword [ebp - 8]
dec ecx
mov edx, 1
mov eax, dword [ebp - 4]
call fcn.0040b474
jmp 0x5e20e4
mov eax, ebx
mov edx, 0x5e2114
call fcn.0040a684
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5e2101
lea eax, [ebp - 4]
call fcn.0040a2a4
ret
Function at 0x5edda4
Capabilities:
Allocate or change rwx memory

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffe8
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x18]
push eax
push 0x40
push 5
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_VirtualProtect
cmp eax, 1
sbb eax, eax
inc eax
test al, al
jne 0x5eddd6
call fcn.0042a80c
mov eax, dword [ebp - 0xc]
mov byte [eax], 0xe9
mov eax, dword [ebp - 8]
sub eax, dword [ebp - 4]
sub eax, 5
mov dword [ebp - 0x10], eax
mov al, byte [ebp - 0x10]
and al, 0xff
mov edx, dword [ebp - 0xc]
mov byte [edx + 1], al
mov eax, dword [ebp - 0x10]
shr eax, 8
and al, 0xff
mov edx, dword [ebp - 0xc]
mov byte [edx + 2], al
mov eax, dword [ebp - 0x10]
shr eax, 0x10
and al, 0xff
mov edx, dword [ebp - 0xc]
mov byte [edx + 3], al
mov eax, dword [ebp - 0x10]
shr eax, 0x18
and al, 0xff
mov edx, dword [ebp - 0xc]
mov byte [edx + 4], al
lea eax, [ebp - 0x14]
push eax
mov eax, dword [ebp - 0x18]
push eax
push 5
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_VirtualProtect
cmp eax, 1
sbb eax, eax
inc eax
test al, al
jne 0x5ede3f
call fcn.0042a80c
mov esp, ebp
pop ebp
ret

Function at 0x5ee72c
Capabilities:
Open clipboard
Write clipboard data

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffe8
push ebx
push esi
push edi
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 8]
call fcn.0040a388
xor eax, eax
push ebp
push 0x5ee870
push dword fs:[eax]
mov dword fs:[eax], esp
push 0
call sub.user32.dll_OpenClipboard
test eax, eax
je 0x5ee85a
xor eax, eax
push ebp
push 0x5ee853
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 8]
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0
je 0x5ee785
mov eax, dword [ebp - 0x14]
sub eax, 4
mov eax, dword [eax]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
inc eax
add eax, eax
push eax
push 0x2002
call sub.kernel32.dll_GlobalAlloc
mov dword [ebp - 0xc], eax
xor eax, eax
push ebp
push 0x5ee828
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_GlobalLock
mov dword [ebp - 0x10], eax
xor eax, eax
push ebp
push 0x5ee817
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 8]
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 0
je 0x5ee7d8
mov eax, dword [ebp - 0x18]
sub eax, 4
mov eax, dword [eax]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 8]
call fcn.0040b0b0
mov edx, dword [ebp - 0x18]
inc edx
mov ecx, edx
add ecx, ecx
mov edx, dword [ebp - 0x10]
call fcn.00406c60
call sub.user32.dll_EmptyClipboard
mov eax, dword [ebp - 0xc]
push eax
push 1
call sub.user32.dll_SetClipboardData
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5ee81e
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_GlobalUnlock
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5ee877
lea eax, [ebp - 8]
call fcn.0040a2a4
ret
Function at 0x60990c
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffee8
mov dword [ebp - 0x118], 0x114
lea eax, [ebp - 0x118]
push eax
call sub.kernel32.dll_GetVersionExW
cmp dword [ebp - 0x114], 6
setae byte [ebp - 1]
mov al, byte [ebp - 1]
mov esp, ebp
pop ebp
ret

Function at 0x615f7b
Capabilities:
Hash data with md5

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov eax, dword [ebp + 8]
mov dword [eax + 4], 0
mov eax, dword [ebp + 8]
mov eax, dword [eax + 4]
mov ecx, dword [ebp + 8]
mov dword [ecx], eax
mov eax, dword [ebp + 8]
mov dword [eax + 8], 0x67452301
mov eax, dword [ebp + 8]
mov dword [eax + 0xc], 0xefcdab89
mov eax, dword [ebp + 8]
mov dword [eax + 0x10], 0x98badcfe
mov eax, dword [ebp + 8]
mov dword [eax + 0x14], 0x10325476
jmp 0x615fc3
pop edi
pop esi
pop ebx
leave
ret

Function at 0x6172fa
Capabilities:
Link many functions at runtime

Disassembly:
mov esi, str.ProcessIdToSessionId
push esi
mov eax, dword [0x6294d8]
push eax
call sub.kernel32.dll_GetProcAddress_2
mov dword [0x6298fd], eax
mov dword [0x6291c5], 1
mov eax, 0x4000
push eax
mov eax, 0x629403
push eax
mov eax, str.utildll.dll
push eax
mov esi, 0x62969f
call dword [esi]
cmp eax, 0xffffffff
nop
nop
nop
jne 0x617349
nop
nop
nop
nop
mov dword [0x6291c5], 0
cmp dword [0x6291c5], 0
je 0x6173d3
mov eax, 0x4000
push eax
mov eax, 0x629403
push eax
mov eax, str.wtsapi32.dll
push eax
mov esi, 0x62969f
call dword [esi]
cmp eax, 0xffffffff
nop
nop
nop
je 0x6173d3
nop
nop
nop
nop
mov eax, str.wtsapi32.dll
push eax
call dword [0x6292c3]
mov dword [0x6291bd], eax
cmp eax, 0
je 0x6173d3
nop
nop
nop
nop
mov edx, str.WTSQuerySessionInformationA
push edx
push eax
call sub.kernel32.dll_GetProcAddress_2
cmp eax, 0
je 0x6173d3
nop
nop
nop
nop
mov dword [0x62921b], eax
mov eax, dword [0x6291bd]
mov edx, str.WTSFreeMemory
push edx
push eax
call sub.kernel32.dll_GetProcAddress_2
cmp eax, 0
je 0x6173d3
nop
nop
nop
nop
mov dword [0x62921f], eax
jmp 0x61745b
mov eax, 0x4000
push eax
mov eax, 0x629403
push eax
mov eax, str.wfapi.dll
push eax
mov esi, 0x62969f
call dword [esi]
cmp eax, 0xffffffff
nop
nop
nop
je 0x617450
nop
nop
nop
nop
mov eax, str.wfapi.dll
push eax
call dword [0x6292c3]
mov dword [0x6291c1], eax
cmp eax, 0
je 0x617450
nop
nop
nop
nop
mov edx, str.WFQuerySessionInformationA
push edx
push eax
call sub.kernel32.dll_GetProcAddress_2
cmp eax, 0
je 0x617450
nop
nop
nop
nop
mov dword [0x62921b], eax
mov eax, dword [0x6291c1]
mov edx, str.WFFreeMemory
push edx
push eax
call sub.kernel32.dll_GetProcAddress_2
cmp eax, 0
je 0x617450
nop
nop
nop
nop
mov dword [0x62921f], eax
jmp 0x617466
mov dword [0x629223], 0
ret
mov dword [0x629223], 1
ret
mov dword [0x629223], 2
ret

Function at 0x61779f
Capabilities:
Packed with generic packer

Disassembly:
pushal
push eax
push ecx
push edx
test ax, 1
je 0x6177c7
nop
nop
nop
nop
push ecx
push edx
call dword [0x629833]
cmp eax, 0
je 0x6177c7
nop
nop
nop
nop
pop edx
pop ecx
pop eax
stc
jmp 0x6177ed
pop edx
pop ecx
pop eax
test ax, 2
je 0x6177ec
nop
nop
nop
nop
push ecx
push edx
call dword [0x629845]
cmp ax, 0
je 0x6177ec
nop
nop
nop
nop
stc
jmp 0x6177ed
clc
popal
ret
Function at 0x6187ad
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 8]
push ebx
push ebp
push esi
mov ecx, dword [eax]
push edi
mov edi, dword [esp + 0x14]
lea ebp, [eax + 8]
mov dword [esp + 0x14], 0xc
mov edx, dword [edi + 4]
add edx, ecx
mov ecx, dword [edi]
mov dword [edi + 4], edx
mov edx, dword [eax + 4]
add ecx, edx
mov dword [edi], ecx
mov ebx, dword [edi]
mov ecx, dword [edi + 4]
mov esi, ebx
mov edx, ebx
shr esi, 4
xor edx, ecx
and esi, 0x1f
mov ecx, 0x20
mov eax, edx
sub ecx, esi
add ebp, 8
shr eax, cl
mov ecx, esi
shl edx, cl
mov ecx, 0x20
or eax, edx
mov edx, dword [ebp - 8]
sub eax, edx
mov edx, eax
mov dword [edi + 4], eax
shr edx, 7
and edx, 0x1f
xor eax, ebx
sub ecx, edx
mov esi, eax
shr esi, cl
mov ecx, edx
mov edx, dword [ebp - 4]
shl eax, cl
or esi, eax
mov eax, dword [esp + 0x14]
add esi, edx
dec eax
mov dword [edi], esi
mov dword [esp + 0x14], eax
jne 0x6187d7
pop edi
pop esi
pop ebp
pop ebx
ret

Function at 0x618836
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 8]
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x14]
lea ebp, [eax + 0x60]
mov dword [esp + 0x14], 0xc
mov ebx, dword [edi + 4]
mov edx, dword [edi]
mov ecx, dword [ebp + 4]
mov esi, ebx
shr esi, 7
sub edx, ecx
and esi, 0x1f
mov ecx, 0x20
mov eax, edx
sub ecx, esi
sub ebp, 8
shl eax, cl
mov ecx, esi
shr edx, cl
or eax, edx
xor eax, ebx
mov dword [edi], eax
mov ecx, dword [ebp + 8]
mov edx, eax
shr edx, 4
lea esi, [ecx + ebx]
and edx, 0x1f
mov ecx, 0x20
mov ebx, esi
sub ecx, edx
shl ebx, cl
mov ecx, edx
shr esi, cl
or ebx, esi
xor ebx, eax
mov eax, dword [esp + 0x14]
dec eax
mov dword [edi + 4], ebx
mov dword [esp + 0x14], eax
jne 0x61884d
mov eax, dword [esp + 0x18]
mov esi, dword [edi]
mov ecx, ebx
mov edx, dword [eax + 4]
sub esi, edx
mov dword [edi], esi
mov eax, dword [eax]
sub ecx, eax
mov dword [edi + 4], ecx
pop edi
pop esi
pop ebp
pop ebx
ret
Function at 0x6188c1
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x88
mov eax, dword [esp + 0x90]
push ebx
push esi
mov esi, dword [esp + 0x94]
lea ebx, [eax + 7]
shr ebx, 3
and eax, 7
mov dword [esp + 0x18], ebx
mov dword [esp + 0x10], eax
jne 0x6188f2
mov dword [esp + 0x10], 8
push ebp
push edi
lea eax, [ebx - 1]
xor edx, edx
xor ecx, ecx
xor edi, edi
test eax, eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x1c], edi
jbe 0x6189c2
mov ebp, dword [esi]
xor ebp, ecx
mov ecx, dword [esi + 4]
xor ecx, edx
mov dword [esi], ebp
test edi, edi
mov dword [esi + 4], ecx
jne 0x618994
cmp ebx, 2
push edi
jbe 0x618987
lea eax, [esp + 0x2c]
push eax
push esi
call fcn.00618d13
mov edi, dword [esp + 0x34]
add esp, 0xc
mov dword [esp + 0x30], edi
lea eax, [esp + 0x30]
mov ebx, 0x19
mov ecx, dword [eax]
mov edx, dword [esp + 0x2c]
add ecx, edx
mov ebp, edi
mov dword [eax + 4], ecx
mov edx, dword [eax]
and edx, 0x1f
mov ecx, 0x20
sub ecx, edx
add eax, 4
shl ebp, cl
mov ecx, edx
mov edx, ebp
mov ebp, edi
shr ebp, cl
or edx, ebp
mov ebp, dword [esp + 0x34]
xor ebp, edx
dec ebx
mov dword [esp + 0x34], ebp
jne 0x618948
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x1c]
jmp 0x6189a2
push 0
push esi
call fcn.00618d13
add esp, 0xc
jmp 0x6189a2
lea eax, [esp + 0x30]
push eax
push esi
call fcn.006187ad
add esp, 8
mov ecx, dword [esi]
mov edx, dword [esi + 4]
add esi, 8
inc edi
lea eax, [ebx - 1]
mov dword [esp + 0x10], ecx
cmp edi, eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x1c], edi
jb 0x618911
mov eax, dword [esp + 0x18]
xor edi, edi
test eax, eax
jbe 0x6189ec
mov ebp, esi
lea ecx, [esp + 0x10]
sub ebp, ecx
mov cl, byte [esp + edi + 0x10]
lea eax, [esp + edi + 0x10]
mov dl, byte [eax + ebp]
xor cl, dl
inc edi
mov byte [eax], cl
mov eax, dword [esp + 0x18]
cmp edi, eax
jb 0x6189d4
pop edi
cmp ebx, 2
pop ebp
jbe 0x618a07
lea eax, [esp + 0x28]
lea ecx, [esp + 8]
push eax
push ecx
call fcn.006187ad
add esp, 8
jmp 0x618a2a
cmp ebx, 1
jne 0x618a19
mov edx, dword [esi]
mov eax, dword [esi + 4]
mov dword [esp + 8], edx
mov dword [esp + 0xc], eax
push 0
lea ecx, [esp + 0xc]
push 0
push ecx
call fcn.00618d13
add esp, 0xc
cmp ebx, 1
jbe 0x618a5e
mov ecx, dword [esp + 0x10]
xor eax, eax
test ecx, ecx
jbe 0x618a45
mov dl, byte [eax + esi - 8]
mov byte [eax + esi], dl
inc eax
cmp eax, ecx
jb 0x618a39
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov dword [esi - 8], eax
mov dword [esi - 4], ecx
pop esi
xor eax, eax
pop ebx
add esp, 0x88
ret
mov edx, dword [esp + 8]
mov eax, dword [esp + 0xc]
mov dword [esi], edx
mov dword [esi + 4], eax
pop esi
xor eax, eax
pop ebx
add esp, 0x88
ret
Function at 0x618a76
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x90
mov eax, dword [esp + 0x98]
push ebx
mov ebx, dword [esp + 0x98]
push ebp
lea ebp, [eax + 7]
push esi
shr ebp, 3
and eax, 7
push edi
mov dword [esp + 0x28], ebp
mov dword [esp + 0x20], eax
jne 0x618aa9
mov dword [esp + 0x20], 8
xor edx, edx
cmp ebp, 1
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], edx
jbe 0x618b92
lea eax, [ebp - 2]
xor esi, esi
cmp eax, edx
mov dword [esp + 0x24], esi
jbe 0x618b92
jmp 0x618ad9
xor edx, edx
mov eax, dword [ebx]
mov ecx, dword [ebx + 4]
cmp esi, edx
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
jne 0x618b49
push edx
lea edx, [esp + 0x34]
push edx
push ebx
call fcn.00618d13
mov esi, dword [esp + 0x3c]
add esp, 0xc
mov dword [esp + 0x38], esi
lea eax, [esp + 0x38]
mov edi, 0x19
mov ecx, dword [eax]
mov edx, dword [esp + 0x34]
add ecx, edx
mov ebp, esi
mov dword [eax + 4], ecx
mov edx, dword [eax]
and edx, 0x1f
mov ecx, 0x20
sub ecx, edx
add eax, 4
shl ebp, cl
mov ecx, edx
mov edx, ebp
mov ebp, esi
shr ebp, cl
or edx, ebp
mov ebp, dword [esp + 0x3c]
xor ebp, edx
dec edi
mov dword [esp + 0x3c], ebp
jne 0x618b0a
mov ebp, dword [esp + 0x28]
mov esi, dword [esp + 0x24]
jmp 0x618b57
lea eax, [esp + 0x38]
push eax
push ebx
call fcn.00618836
add esp, 8
mov ecx, dword [esp + 0x10]
mov edx, dword [ebx]
mov eax, dword [ebx + 4]
xor edx, ecx
mov dword [ebx], edx
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
xor eax, edx
mov dword [ebx + 4], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x10], eax
add ebx, 8
inc esi
lea eax, [ebp - 2]
cmp esi, eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x24], esi
jb 0x618ad7
xor edx, edx
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x10], edx
cmp ecx, edx
mov dword [esp + 0x14], edx
jbe 0x618bb7
mov eax, ecx
lea esi, [ebx + 8]
lea edi, [esp + 0x10]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp ebp, 1
jne 0x618bcc
push edx
push edx
push ebx
call fcn.00618d13
add esp, 0xc
jmp 0x618c54
cmp ebp, 2
jne 0x618bde
push edx
push edx
push ebx
call fcn.00618d13
add esp, 0xc
jmp 0x618bf1
lea ecx, [esp + 0x38]
push ecx
push ebx
call fcn.00618836
add esp, 8
cmp ebp, 1
jbe 0x618c54
mov edx, dword [ebx]
mov esi, dword [esp + 0x10]
mov eax, dword [ebx + 4]
mov edi, dword [esp + 0x20]
xor esi, edx
mov edx, dword [esp + 0x14]
xor edx, eax
xor eax, eax
test edi, edi
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], edx
jbe 0x618c32
mov ecx, ebx
lea edx, [esp + 0x10]
sub ecx, edx
mov dl, byte [ebx + eax + 8]
lea esi, [esp + eax + 0x10]
inc eax
mov byte [ecx + esi], dl
mov dl, byte [esi]
mov byte [ebx + eax + 7], dl
cmp eax, edi
jb 0x618c1c
cmp ebp, 2
jne 0x618c46
push 0
push 0
push ebx
call fcn.00618d13
add esp, 0xc
jmp 0x618c54
lea eax, [esp + 0x38]
push eax
push ebx
call fcn.00618836
add esp, 8
mov ecx, dword [esp + 0x18]
mov edx, dword [ebx]
mov eax, dword [ebx + 4]
xor edx, ecx
mov dword [ebx], edx
mov edx, dword [esp + 0x1c]
xor eax, edx
pop edi
pop esi
mov dword [ebx + 4], eax
pop ebp
xor eax, eax
pop ebx
add esp, 0x90
ret