joyce8/EMBER2024-capa huggingface dataset:
Function at 0x45cf9c
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
push ebx
mov ebx, ecx
cmp dword [ebx + 0x14], 0
jne 0x45cfb7
push 6
call fcn.00457a13
pop ecx
xor al, al
jmp 0x45d000
push esi
push edi
lea eax, [ebp - 4]
mov dword [ebp - 4], 0x20
push eax
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 8]
push eax
push 0
push dword [ebp + 8]
push dword [ebx + 0x14]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov ecx, dword [ebp - 4]
cmp ecx, 0x100000
ja 0x45cffc
sub eax, 0
je 0x45d052
dec eax
sub eax, 1
je 0x45cffc
sub eax, 0xe8
je 0x45d005
sub eax, 0x308
xor al, al
pop edi
pop esi
pop ebx
leave
ret 0xc
mov esi, dword [ebp + 0xc]
mov ecx, esi
call fcn.00469566
cmp dword [ebp - 4], 0
mov edi, eax
jle 0x45d0d7
push dword [ebp - 4]
mov ecx, edi
call fcn.004234b9
cmp dword [edi], 0
lea ecx, [ebp - 4]
push ecx
mov eax, 0x49ab60
cmovne eax, dword [edi]
push eax
push 0
push 0
push dword [ebp + 8]
push dword [ebx + 0x14]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
je 0x45d0ad
mov ecx, edi
call fcn.00425c1b
jmp 0x45cffc
mov eax, dword [ebp - 8]
test eax, eax
je 0x45cffc
cmp eax, 3
jbe 0x45d09c
cmp eax, 4
je 0x45d084
cmp eax, 7
je 0x45d09c
cmp eax, 0xb
jne 0x45cffc
cmp ecx, 8
jne 0x45cffc
push dword [ebp - 0x28]
mov esi, dword [ebp + 0xc]
mov ecx, esi
push dword [ebp - 0x2c]
call fcn.00469480
jmp 0x45d0ad
cmp ecx, 4
jne 0x45cffc
push dword [ebp - 0x2c]
mov esi, dword [ebp + 0xc]
mov ecx, esi
call fcn.004694a2
jmp 0x45d0ad
mov esi, dword [ebp + 0xc]
lea eax, [ebp - 0x2c]
shr ecx, 1
push ecx
push eax
mov ecx, esi
call fcn.0046952c
cmp dword [ebp - 8], 1
je 0x45d0b9
cmp dword [ebp - 8], 2
jne 0x45d0d7
test dword [ebp + 0x10], 0x2000
jne 0x45d0d7
mov ecx, esi
call fcn.00469240
push 2
push 0x4aff58
mov ecx, eax
call fcn.004265ce
mov al, 1
jmp 0x45cffe

Function at 0x45e121
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
test byte [ebp + 0x10], 8
push esi
push edi
mov edi, dword [ebp + 0xc]
mov esi, ecx
je 0x45e148
cmp dword [edi + 4], 0
jg 0x45e148
push dword [ebp + 8]
call fcn.0045c5d0
dec eax
neg eax
sbb al, al
inc al
jmp 0x45e1b9
test dword [ebp + 0x10], 0x8000
je 0x45e161
push dword [ebp + 8]
call fcn.0045e3d9
test al, al
je 0x45e161
mov al, 1
jmp 0x45e1b9
xor ecx, ecx
inc ecx
test byte [ebp + 0x10], 0x80
je 0x45e16f
push 3
pop ecx
jmp 0x45e17c
test dword [ebp + 0x10], 0x100
push 2
pop eax
cmovne ecx, eax
cmp dword [esi + 0x14], 0
jne 0x45e18d
push 6
call fcn.00457a13
xor al, al
jmp 0x45e1b8
push dword [edi + 4]
cmp dword [edi], 0
mov eax, 0x49ab64
cmovne eax, dword [edi]
push eax
push ecx
push 0
push dword [ebp + 8]
push dword [esi + 0x14]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov esi, eax
push esi
call fcn.00457a13
test esi, esi
sete al
pop ecx
pop edi
pop esi
pop ebp
ret 0xc
Function at 0x45f763
Capabilities:
Shutdown system

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
call fcn.00457a0a
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
and eax, 1
push 0x10
pop esi
push 4
mov dword [ebp - 4], eax
pop eax
cmovne esi, eax
test edi, edi
je 0x45f801
cmp edi, 1
je 0x45f7fc
push 2
pop ebx
cmp edi, ebx
je 0x45f7b2
cmp edi, 3
je 0x45f804
jle 0x45f7f5
cmp edi, 5
jle 0x45f7b6
cmp edi, 6
jne 0x45f7f5
call fcn.004567c3
push 0x40
test al, al
pop ecx
cmovne ebx, ecx
or esi, ebx
jmp 0x45f804
call fcn.0045f059
test al, al
jne 0x45f7c3
xor al, al
jmp 0x45f834
mov ecx, dword [0x4db928]
test ecx, ecx
jne 0x45f7d7
push 0x78
call fcn.00457a13
pop ecx
jmp 0x45f7bf
mov eax, dword [ebp + 0xc]
shr eax, 1
and eax, 1
push eax
push dword [ebp - 4]
xor eax, eax
cmp edi, 5
sete al
push eax
call ecx
test al, al
setne al
jmp 0x45f834
call fcn.00457a21
jmp 0x45f7bf
or esi, 8
jmp 0x45f804
or esi, 1
push 0
push 1
mov edi, str.SeShutdownPrivilege
push edi
call fcn.0045f092
add esp, 0xc
push dword [ebp + 0x10]
push esi
call dword [sym.imp.USER32.dll_ExitWindowsEx]
push 0
test eax, eax
push 0
push edi
setne bl
call fcn.0045f092
add esp, 0xc
mov al, bl
pop edi
pop esi
pop ebx
leave
ret

Function at 0x460c6a
Capabilities:
Write clipboard data

Disassembly:
push ebp
mov ebp, esp
push ecx
push ecx
cmp dword [ebp + 0xc], 0
je 0x460d26
mov eax, dword [ebp + 0x10]
and eax, 2
mov dword [ebp - 8], eax
jne 0x460c91
call fcn.00460c34
test al, al
je 0x460d26
mov eax, dword [ebp + 0xc]
push esi
mov esi, dword [ebp + 8]
push edi
mov esi, dword [esi + 4]
sub eax, 1
je 0x460cb0
sub eax, 6
je 0x460cb0
sub eax, 6
jne 0x460cb1
add esi, 2
jmp 0x460cb1
inc esi
and dword [ebp - 4], 0
push esi
call fcn.0045629d
mov edi, eax
pop ecx
test edi, edi
je 0x460d07
push edi
call fcn.004562fc
pop ecx
mov ecx, eax
mov dword [ebp - 4], ecx
test ecx, ecx
je 0x460d07
mov edx, dword [ebp + 8]
mov eax, 0x49ab60
push esi
cmp dword [edx], 0
cmovne eax, dword [edx]
push eax
push ecx
call fcn.0047e490
push edi
call fcn.00456337
add esp, 0x10
test byte [ebp + 0x10], 1
jne 0x460cfd
call dword [sym.imp.USER32.dll_EmptyClipboard]
push edi
push dword [ebp + 0xc]
call dword [sym.imp.USER32.dll_SetClipboardData]
cmp dword [ebp - 8], 0
jne 0x460d12
call sub.USER32.dll_CloseClipboard
test edi, edi
pop edi
pop esi
je 0x460d22
cmp dword [ebp - 4], 0
je 0x460d22
mov al, 1
leave
ret
xor eax, eax
leave
ret
xor al, al
leave
ret

Function at 0x46265d
Capabilities:
Get graphical window text

Disassembly:
push ebp
mov ebp, esp
mov ecx, dword [ebp + 8]
call fcn.004282a8
cmp dword [ebp + 0xc], 0
je 0x462696
push dword [ebp + 0xc]
call dword [sym.imp.USER32.dll_GetWindowTextLengthW]
mov ecx, eax
test ecx, ecx
jle 0x462696
lea eax, [ecx + 1]
add ecx, ecx
push eax
push ecx
mov ecx, dword [ebp + 8]
call fcn.004234b9
push eax
push dword [ebp + 0xc]
call dword [sym.imp.USER32.dll_GetWindowTextW]
mov eax, dword [ebp + 8]
pop ebp
ret
Function at 0x464017
Capabilities:
Get common file path

Disassembly:
mov eax, 0x498dcf
call fcn.0046a2a4
sub esp, 0x250
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
mov ebx, dword [ebp + 8]
mov ecx, dword [ebx + 0x14]
or ecx, 0x100000
mov dword [ebx + 0x14], ecx
or edi, 0xffffffff
mov dword [ebp - 0x18], edi
movzx eax, cx
sub eax, 1
je 0x46405c
sub eax, 1
je 0x464058
sub eax, 1
jne 0x464062
push 0x17
jmp 0x46405e
push 2
jmp 0x46405e
push 0x11
pop edi
mov dword [ebp - 0x18], edi
and dword [ebp - 0x20], 0
test edi, edi
js 0x46407a
lea eax, [ebp - 0x20]
push eax
push edi
push dword [ebx]
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
mov ecx, dword [ebx + 0x14]
test ecx, 0x80000
je 0x4640bd
push edi
lea eax, [ebp - 0x2c]
push eax
call fcn.00464c13
pop ecx
pop ecx
push 0
sub esp, 0xc
mov esi, esp
mov ecx, esi
call fcn.004282a8
lea eax, [ebp - 0x2c]
push eax
mov ecx, esi
call fcn.0042ef1d
lea esi, [ebx + 0x18]
push esi
call fcn.004450f3
add esp, 0x14
lea ecx, [ebp - 0x2c]
call fcn.00425c1b
jmp 0x4640c0
lea esi, [ebx + 0x18]
push esi
call fcn.00441683
push 0
push 0x20
lea eax, [ebp - 0x4c]
push eax
call fcn.00429b97
add esp, 0x10
mov eax, dword [ebx]
mov dword [ebp - 0x4c], eax
mov eax, 0x49ab64
cmp dword [ebx + 8], 0
cmovne eax, dword [ebx + 8]
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x38], 0x46077a
mov dword [ebp - 0x34], ebx
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x48], eax
push 0x41
pop eax
test dword [ebx + 0x14], 0x20000
mov ecx, 0x8041
cmove eax, ecx
mov dword [ebp - 0x3c], eax
test dword [ebx + 0x14], 0x40000
je 0x46411f
or eax, 0x10
mov dword [ebp - 0x3c], eax
and dword [ebp - 4], 0
lea eax, [ebp - 0x4c]
push eax
call dword [sym.imp.SHELL32.dll_SHBrowseForFolderW]
mov esi, eax
mov dword [ebp - 0x50], esi
test esi, esi
je 0x464205
lea eax, [ebp - 0x25c]
push eax
push esi
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
test eax, eax
setne byte [ebp - 0x11]
or dword [ebp - 4], 0xffffffff
mov dword [ebp - 4], 2
and dword [ebp - 0x1c], 0
lea eax, [ebp - 0x1c]
push eax
call dword [sym.imp.SHELL32.dll_SHGetMalloc]
test eax, eax
jne 0x464184
mov ecx, dword [ebp - 0x1c]
test ecx, ecx
je 0x464184
mov eax, dword [ecx]
push esi
push ecx
call dword [eax + 0x14]
mov eax, dword [ebp - 0x1c]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x46418b
push esi
call dword [sym.imp.ole32.dll_CoTaskMemFree]
or dword [ebp - 4], 0xffffffff
jmp 0x4641a1
cmp byte [ebp - 0x11], 0
je 0x464205
push closesocket
lea ecx, [ebp - 0x25c]
push ecx
lea ecx, [ebx + 0x24]
call fcn.0042f491
test dword [ebx + 0x14], 0x80000
je 0x4641f7
push edi
lea eax, [ebp - 0x2c]
push eax
call fcn.00464c13
push ecx
mov esi, esp
mov ecx, esi
call fcn.004282a8
lea eax, [ebp - 0x2c]
push eax
mov ecx, esi
call fcn.0042ef1d
lea eax, [ebx + 0x24]
push eax
call fcn.004446bc
add esp, 0x10
lea ecx, [ebp - 0x2c]
call fcn.00425c1b
mov al, 1
jmp 0x464207
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
leave
ret
Function at 0x46490b
Capabilities:
Create process on windows

Disassembly:
mov eax, 0x498de3
call fcn.0046a2a4
push ecx
push ecx
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
mov esi, dword [ebp + 8]
push esi
call fcn.004319c9
pop ecx
test al, al
je 0x46493a
push 0x7b
call fcn.00457a13
pop ecx
xor al, al
jmp 0x4649e3
call fcn.00457a0a
and dword [ebp - 4], 0
mov ebx, dword [ebp + 0x18]
push ebx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push esi
mov edi, dword [ebp + 0x14]
push edi
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
mov dword [ebp - 0x14], eax
or dword [ebp - 4], 0xffffffff
jmp 0x464980
cmp eax, 5
jne 0x4649d3
test edi, edi
je 0x46499a
push 0x49af30
push edi
call fcn.00431a8e
pop ecx
pop ecx
test al, al
je 0x464933
mov dword [ebp - 4], 2
push ebx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push esi
push str.runas
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
mov dword [ebp - 0x14], eax
or dword [ebp - 4], 0xffffffff
jmp 0x4649d3
cmp eax, 0x20
jle 0x464933
call fcn.00457a0a
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
leave
ret

Function at 0x46630a
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x218
xor eax, eax
mov word [ebp - 0x218], ax
lea eax, [ebp - 0x218]
push 0x104
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
cmp word [ebp - 0x218], 0
je 0x466356
mov ecx, dword [ebp + 8]
call fcn.004282a8
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x218]
push closesocket
push eax
call fcn.0042f491
jmp 0x46639c
call fcn.004567b6
test al, al
lea eax, [ebp - 0xc]
push eax
je 0x466371
call fcn.00457d02
mov dword [esp], str.System32
jmp 0x46637d
call fcn.00457d02
mov dword [esp], str.System
cmp dword [eax], 0
mov ecx, 0x49ab64
cmovne ecx, dword [eax]
push ecx
push dword [ebp + 8]
call fcn.004444c6
add esp, 0xc
lea ecx, [ebp - 0xc]
call fcn.00425c1b
mov eax, dword [ebp + 8]
leave
ret

Function at 0x466ae4
Capabilities:
Check mutex on windows

Disassembly:
push ebp
mov ebp, esp
push esi
push dword [ebp + 8]
mov esi, ecx
call fcn.00430653
pop ecx
test al, al
je 0x466b00
call fcn.00457a21
xor al, al
jmp 0x466b43
push ebx
mov ecx, esi
call fcn.00466c29
call fcn.00457a0a
push dword [ebp + 8]
mov bl, byte [ebp + 0xc]
movzx eax, bl
push eax
push 0
mov byte [esi + 4], 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [esi], eax
test eax, eax
je 0x466b40
test bl, bl
je 0x466b39
call sub.KERNEL32.dll_GetLastError
cmp eax, 0xb7
je 0x466b40
mov byte [esi + 4], bl
mov al, 1
jmp 0x466b42
xor al, al
pop ebx
pop esi
pop ebp
ret 8

Function at 0x467b68
Capabilities:
Terminate thread

Disassembly:
mov eax, 0x498e29
call fcn.0046a2a4
push ecx
push ecx
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
cmp dword [ebp + 8], 0
jne 0x467b84
xor al, al
jmp 0x467bb9
and dword [ebp - 4], 0
push 0
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_TerminateThread]
test eax, eax
setne bl
mov byte [ebp - 0x11], bl
push dword [ebp + 8]
call fcn.00467b02
pop ecx
or dword [ebp - 4], 0xffffffff
jmp 0x467bb7
mov al, bl
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
leave
ret
Function at 0x467c19
Capabilities:
Resume thread

Disassembly:
push ebp
mov ebp, esp
cmp dword [ebp + 8], 0
je 0x467c2b
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_ResumeThread]
pop ebp
ret

Function at 0x467c2d
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
push ecx
push esi
push edi
lea eax, [ebp - 4]
xor edi, edi
push eax
mov eax, dword [ebp + 0x14]
and eax, 1
mov dword [ebp - 4], edi
shl eax, 2
push eax
push dword [ebp + 0xc]
push dword [ebp + 8]
push edi
push edi
call fcn.0048c18f
mov esi, eax
add esp, 0x18
test esi, esi
je 0x467c7a
cmp dword [ebp + 0x10], 3
je 0x467c6d
push dword [ebp + 0x10]
push esi
call fcn.00467bc8
pop ecx
pop ecx
push edi
push dword [ebp - 4]
call fcn.00467aa7
pop ecx
pop ecx
mov eax, esi
pop edi
pop esi
leave
ret

Function at 0x469b6a
Capabilities:
Check http status code

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
push ebx
mov ebx, dword [ebp + 0x10]
test ebx, ebx
je 0x469b7f
mov ecx, ebx
call fcn.00425c1b
cmp dword [0x4dcb0c], 0
je 0x469d04
cmp dword [0x4dcb1c], 0
je 0x469d04
cmp dword [0x4dcb40], 0
je 0x469d04
cmp dword [0x4dcb44], 0
je 0x469d04
cmp dword [0x4dcb48], 0
je 0x469d04
call fcn.00457a0a
mov eax, dword [0x4dcb1c]
xor ecx, ecx
push ecx
push ecx
push 3
push ecx
push ecx
push dword [ebp + 0x28]
push dword [ebp + 8]
push dword [0x4dcb0c]
call eax
mov dword [ebp - 4], eax
test eax, eax
je 0x469d0c
push esi
push edi
push dword [ebp + 0x24]
call fcn.00430653
mov edx, dword [ebp + 0x14]
test al, al
mov eax, dword [ebp + 0x14]
mov edi, 0x49be80
cmove edi, dword [ebp + 0x24]
and edx, 0x10
or dword [ebp + 0x10], 0xffffffff
pop ecx
mov esi, dword [0x4dcb40]
shl edx, 0x16
or edx, 0x200
push 0
mov ecx, edx
or ecx, 0x80000100
and al, 8
cmove ecx, edx
push ecx
push 0x4d88b4
push 0
push str.HTTP_1.0
push dword [ebp + 0xc]
push edi
push dword [ebp - 4]
call esi
mov edi, eax
test edi, edi
je 0x469cdf
push dword [ebp + 0x20]
mov esi, dword [0x4dcb44]
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
call fcn.004309c0
pop ecx
push eax
push dword [ebp + 0x18]
push edi
call esi
test eax, eax
je 0x469cdf
mov eax, dword [0x4dcb48]
lea ecx, [ebp - 8]
push 0
push ecx
lea ecx, [ebp + 0x10]
mov dword [ebp - 8], 4
push ecx
push 0x20000013
push edi
call eax
test eax, eax
je 0x469cdf
cmp dword [ebp + 0x10], 0xc8
jne 0x469cdf
test byte [ebp + 0x14], 0x20
jne 0x469cdf
lea ecx, [ebp - 0x20]
call fcn.00401a6c
push dword [ebp + 0x2c]
call sub.KERNEL32.dll_GetTickCount
push eax
lea eax, [ebp - 0x20]
push eax
push edi
call fcn.00469d12
add esp, 0x10
test al, al
jne 0x469cc8
mov dword [ebp + 0x10], 0xfffffffe
jmp 0x469cd7
test ebx, ebx
je 0x469cd7
lea eax, [ebp - 0x14]
mov ecx, ebx
push eax
call fcn.00424f5b
lea ecx, [ebp - 0x14]
call fcn.00425c1b
call sub.KERNEL32.dll_GetLastError
push edi
mov esi, eax
call fcn.00469dd0
push dword [ebp - 4]
call fcn.00469dd0
push esi
call fcn.00457a13
mov eax, dword [ebp + 0x10]
add esp, 0xc
pop edi
pop esi
jmp 0x469d0f
push 0x78
call fcn.00457a13
pop ecx
or eax, 0xffffffff
pop ebx
leave
ret
Function at 0x46dc40
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
mov eax, dword [esp + 0xc]
push ebx
mov ebx, dword [esp + 8]
not eax
push esi
mov esi, dword [esp + 0x10]
push edi
cmp esi, 8
jbe 0x46dd16
test bl, 7
je 0x46dc79
nop
movzx ecx, byte [ebx]
dec esi
movzx edx, al
inc ebx
xor edx, ecx
shr eax, 8
xor eax, dword [edx*4 + 0x4b20c8]
test bl, 7
jne 0x46dc60
mov edi, esi
and esi, 7
and edi, 0xfffffff8
add edi, ebx
cmp ebx, edi
jae 0x46dd16
nop dword [eax + eax]
xor eax, dword [ebx]
add ebx, 4
mov dword [esp + 0x18], ebx
add dword [esp + 0x18], 4
mov ebx, dword [ebx]
mov ecx, ebx
shr ecx, 0x10
movzx edx, cl
mov ecx, ebx
shr ecx, 8
movzx ecx, cl
mov edx, dword [edx*4 + 0x4b24c8]
xor edx, dword [ecx*4 + 0x4b28c8]
mov ecx, eax
shr ecx, 0x10
movzx ecx, cl
xor edx, dword [ecx*4 + 0x4b34c8]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
xor edx, dword [ecx*4 + 0x4b38c8]
mov ecx, ebx
shr ecx, 0x18
xor edx, dword [ecx*4 + 0x4b20c8]
mov ecx, eax
shr ecx, 0x18
movzx eax, al
xor edx, dword [ecx*4 + 0x4b30c8]
movzx ecx, bl
mov ebx, dword [esp + 0x18]
xor edx, dword [ecx*4 + 0x4b2cc8]
xor edx, dword [eax*4 + 0x4b3cc8]
mov eax, edx
cmp ebx, edi
jb 0x46dc90
test esi, esi
je 0x46dd3a
nop word [eax + eax]
movzx ecx, byte [ebx]
lea ebx, [ebx + 1]
movzx edx, al
xor edx, ecx
shr eax, 8
xor eax, dword [edx*4 + 0x4b20c8]
sub esi, 1
jne 0x46dd20
pop edi
pop esi
not eax
pop ebx
ret

Function at 0x46dd40
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 0xc]
push ebx
mov ebx, dword [esp + 8]
not eax
push ebp
push esi
mov esi, dword [esp + 0x1c]
push edi
mov edi, dword [esp + 0x18]
not esi
cmp edi, 4
jbe 0x46de26
mov dword [esp + 0x1c], ebx
test bl, 3
je 0x46dd98
nop word [eax + eax]
movzx ecx, byte [ebx]
dec edi
movzx edx, al
inc ebx
shrd eax, esi, 8
xor edx, ecx
shr esi, 8
xor eax, dword [edx*8 + 0x4b40c8]
xor esi, dword [edx*8 + 0x4b40cc]
test bl, 3
jne 0x46dd70
mov dword [esp + 0x1c], ebx
mov ebp, edi
xor edx, edx
and ebp, 0xfffffffc
and edi, 3
mov dword [esp + 0x18], edi
lea ecx, [ebx + ebp]
shr ebp, 2
cmp ebx, ecx
cmova ebp, edx
test ebp, ebp
je 0x46de26
xor edi, edi
mov ebx, dword [ebx]
inc edi
xor ebx, eax
mov eax, ebx
shr eax, 0x10
movzx edx, al
mov eax, ebx
shr eax, 8
movzx ecx, al
mov eax, dword [edx*8 + 0x4b48c8]
mov edx, dword [edx*8 + 0x4b48cc]
xor eax, dword [ecx*8 + 0x4b50c8]
xor edx, dword [ecx*8 + 0x4b50cc]
mov ecx, ebx
shr ecx, 0x18
xor eax, dword [ecx*8 + 0x4b40c8]
xor edx, dword [ecx*8 + 0x4b40cc]
movzx ecx, bl
mov ebx, dword [esp + 0x1c]
add ebx, 4
mov dword [esp + 0x1c], ebx
xor eax, dword [ecx*8 + 0x4b58c8]
xor edx, dword [ecx*8 + 0x4b58cc]
xor eax, esi
xor edx, 0
mov esi, edx
cmp edi, ebp
jb 0x46ddb7
mov edi, dword [esp + 0x18]
test edi, edi
je 0x46de55
nop word [eax + eax]
movzx ecx, byte [ebx]
lea ebx, [ebx + 1]
movzx edx, al
shrd eax, esi, 8
xor edx, ecx
shr esi, 8
xor eax, dword [edx*8 + 0x4b40c8]
xor esi, dword [edx*8 + 0x4b40cc]
sub edi, 1
jne 0x46de30
not esi
not eax
pop edi
mov edx, esi
pop esi
pop ebp
pop ebx
ret
Function at 0x475390
Capabilities:
Encode data using xor

Disassembly:
mov edx, dword [esp + 8]
sub esp, 0x14
push ebx
mov ebx, dword [esp + 0x1c]
push edi
mov dword [ebx], 0x4000400
test edx, edx
je 0x4753d1
lea eax, [ebx + 0x104]
mov ecx, edx
nop
movaps xmm0, xmmword [0x4b1ef0]
lea eax, [eax + 0x10]
movups xmmword [eax - 0x110], xmm0
movaps xmm0, xmmword [0x4b1ef0]
movups xmmword [eax - 0x10], xmm0
sub ecx, 1
jne 0x4753b0
cmp byte [esp + 0x28], 0
lea edi, [ebx + 0x204]
mov ecx, 0x80
mov eax, 0x4000400
rep stosd dword es:[edi], eax
jne 0x47559c
push ebp
xor ebp, ebp
mov dword [esp + 0xc], ebp
test edx, edx
je 0x47559b
lea eax, [ebx + 0x404]
mov dword [esp + 0x2c], eax
lea eax, [ebx + 0x4808]
mov dword [esp + 0x10], eax
push esi
mov edi, dword [ebx + 0x4804]
xor esi, esi
mov dword [eax], edi
movzx ecx, word [ebx]
mov eax, ecx
mov dword [esp + 0x28], edi
shr eax, 4
xor ecx, 0x7f0
shr ecx, 4
movzx eax, byte [eax + 0x4b60c8]
movzx edx, byte [ecx + 0x4b60c8]
movzx ecx, word [ebx + 2]
mov dword [esp + 0x18], eax
mov eax, ecx
shr eax, 4
xor ecx, 0x7f0
shr ecx, 4
movzx eax, byte [eax + 0x4b60c8]
add eax, edx
mov dword [esp + 0x1c], eax
movzx eax, byte [ecx + 0x4b60c8]
add eax, edx
mov dword [esp + 0x20], eax
test edi, edi
je 0x475578
cmp esi, 8
jae 0x4754c6
xor edi, edi
lea edx, [esi + 8]
mov ecx, edx
shr edx, 1
and ecx, 1
neg ecx
shr ecx, 4
lea eax, [edx + ebp*8]
and ecx, 0x7f
movzx eax, word [ebx + eax*2 + 4]
shr eax, 4
xor eax, ecx
movzx eax, byte [eax + 0x4b60c8]
add edi, eax
cmp edx, 1
jne 0x475481
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x18]
add eax, edi
mov edi, dword [esp + 0x28]
mov dword [ecx + esi*4], eax
inc esi
cmp esi, edi
jb 0x475477
jmp 0x475578
cmp esi, edi
jae 0x475578
nop
cmp esi, 0x10
jae 0x475525
xor edi, edi
mov edx, esi
nop dword [eax]
mov ecx, edx
shr edx, 1
and ecx, 1
neg ecx
shr ecx, 4
lea eax, [edx + ebp*8]
and ecx, 0x7f
movzx eax, word [ebx + eax*2 + 0x104]
shr eax, 4
xor eax, ecx
movzx eax, byte [eax + 0x4b60c8]
add edi, eax
cmp edx, 1
jne 0x4754e0
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x1c]
add eax, edi
mov edi, dword [esp + 0x28]
mov dword [ecx + esi*4], eax
inc esi
cmp esi, edi
jb 0x4754d0
jmp 0x475578
cmp esi, edi
jae 0x475578
mov ebp, dword [esp + 0x28]
nop dword [eax]
xor edi, edi
lea eax, [esi + 0xf0]
mov edx, eax
shr eax, 1
and edx, 1
neg edx
shr edx, 4
movzx ecx, word [ebx + eax*2 + 0x204]
and edx, 0x7f
shr ecx, 4
xor ecx, edx
movzx ecx, byte [ecx + 0x4b60c8]
add edi, ecx
cmp eax, 1
jne 0x475538
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x20]
add eax, edi
mov dword [ecx + esi*4], eax
inc esi
cmp esi, ebp
jb 0x475530
mov ebp, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
inc ebp
add dword [esp + 0x30], 0x440
add eax, 4
mov dword [esp + 0x10], ebp
mov dword [esp + 0x14], eax
cmp ebp, dword [esp + 0x2c]
jb 0x475412
pop esi
pop ebp
pop edi
pop ebx
add esp, 0x14
ret
Function at 0x4755b0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x10
push ebx
mov ebx, dword [esp + 0x18]
push ebp
push esi
mov esi, dword [esp + 0x24]
mov ebp, dword [ebx + 0x4804]
mov dword [esp + 0xc], ebp
mov dword [ebx + esi*4 + 0x4808], ebp
movzx ecx, word [ebx]
mov eax, ecx
xor ecx, 0x7f0
shr eax, 4
shr ecx, 4
movzx eax, byte [eax + 0x4b60c8]
movzx edx, byte [ecx + 0x4b60c8]
movzx ecx, word [ebx + 2]
mov dword [esp + 0x10], eax
mov eax, ecx
shr eax, 4
xor ecx, 0x7f0
shr ecx, 4
movzx eax, byte [eax + 0x4b60c8]
add eax, edx
mov dword [esp + 0x14], eax
movzx eax, byte [ecx + 0x4b60c8]
add eax, edx
mov dword [esp + 0x18], eax
imul eax, esi, 0x440
xor esi, esi
add eax, 0x404
add eax, ebx
mov dword [esp + 0x20], eax
test ebp, ebp
je 0x475745
push edi
nop word [eax + eax]
cmp esi, 8
jae 0x475698
mov ebp, dword [esp + 0x28]
lea edx, [esi + 8]
xor edi, edi
nop
mov ecx, edx
shr edx, 1
and ecx, 1
neg ecx
shr ecx, 4
lea eax, [edx + ebp*8]
and ecx, 0x7f
movzx eax, word [ebx + eax*2 + 4]
shr eax, 4
xor eax, ecx
movzx eax, byte [eax + 0x4b60c8]
add edi, eax
cmp edx, 1
jne 0x475650
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x14]
mov ebp, dword [esp + 0x10]
add eax, edi
mov dword [ecx + esi*4], eax
inc esi
cmp esi, ebp
jb 0x475640
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
cmp esi, ebp
jae 0x475744
cmp esi, 0x10
jae 0x4756fb
mov ebp, dword [esp + 0x28]
xor edi, edi
mov edx, esi
nop dword [eax]
mov ecx, edx
shr edx, 1
and ecx, 1
neg ecx
shr ecx, 4
lea eax, [edx + ebp*8]
and ecx, 0x7f
movzx eax, word [ebx + eax*2 + 0x104]
shr eax, 4
xor eax, ecx
movzx eax, byte [eax + 0x4b60c8]
add edi, eax
cmp edx, 1
jne 0x4756b0
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x18]
mov ebp, dword [esp + 0x10]
add eax, edi
mov dword [ecx + esi*4], eax
inc esi
cmp esi, ebp
jb 0x4756a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
cmp esi, ebp
jae 0x475744
nop
xor edi, edi
lea eax, [esi + 0xf0]
mov edx, eax
shr eax, 1
and edx, 1
neg edx
shr edx, 4
movzx ecx, word [ebx + eax*2 + 0x204]
and edx, 0x7f
shr ecx, 4
xor ecx, edx
movzx ecx, byte [ecx + 0x4b60c8]
add edi, ecx
cmp eax, 1
jne 0x475708
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x1c]
add eax, edi
mov dword [ecx + esi*4], eax
inc esi
cmp esi, ebp
jb 0x475700
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret