Function at 0x4e7810
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x40
mov edi, dword [ebp + 0x14]
mov esi, dword [ebp + 0x10]
mov ecx, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
mov dword [ebx + 0x174], 0
mov dword [ebx + 0x170], 0
pxor xmm0, xmm0
movdqa xmmword [ebx], xmm0
movdqa xmmword [ebx + 0x30], xmm0
movdqa xmmword [ebx + 0x40], xmm0
cmp edi, 0xc
jne 0x4e786f
mov eax, dword [esi + 8]
mov dword [ebx + 8], eax
movq xmm0, qword [esi]
movq qword [ebx], xmm0
mov byte [ebx + 0xf], 1
mov esi, 2
jmp 0x4e7d36
lea eax, [ebx + 0x60]
cmp edi, 0x10
mov dword [esp + 0x20], eax
jb 0x4e7a40
xor ebx, ebx
mov ah, bl
mov al, bl
mov dword [esp], eax
mov dh, bl
mov dl, bl
mov ch, bl
mov cl, bl
mov ah, bl
mov dword [esp + 4], 0
mov al, bl
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
xor ebx, ebx
mov dword [esp + 0x24], 0
nop word cs:[eax + eax]
nop dword [eax]
xor al, byte [esi]
mov edi, dword [ebp + 8]
mov byte [edi], al
xor ah, byte [esi + 1]
mov byte [edi + 1], ah
mov eax, dword [esp + 0x24]
xor al, byte [esi + 2]
mov byte [edi + 2], al
xor bl, byte [esi + 3]
mov byte [edi + 3], bl
xor cl, byte [esi + 4]
mov byte [edi + 4], cl
xor ch, byte [esi + 5]
mov byte [edi + 5], ch
mov eax, dword [esp + 0x34]
xor al, byte [esi + 6]
mov byte [edi + 6], al
mov eax, dword [esp + 0x30]
xor al, byte [esi + 7]
mov byte [edi + 7], al
xor dl, byte [esi + 8]
mov byte [edi + 8], dl
xor dh, byte [esi + 9]
mov byte [edi + 9], dh
mov eax, dword [esp + 0x2c]
xor al, byte [esi + 0xa]
mov byte [edi + 0xa], al
mov eax, dword [esp + 0x28]
xor al, byte [esi + 0xb]
mov byte [edi + 0xb], al
mov eax, dword [esp]
xor al, byte [esi + 0xc]
mov byte [edi + 0xc], al
xor ah, byte [esi + 0xd]
mov byte [edi + 0xd], ah
mov eax, dword [esp + 0xc]
xor al, byte [esi + 0xe]
mov byte [edi + 0xe], al
mov eax, dword [esp + 4]
xor al, byte [esi + 0xf]
mov byte [edi + 0xf], al
movdqu xmm0, xmmword [edi]
movdqa xmm1, xmm0
pxor xmm2, xmm2
punpcklbw xmm1, xmm2
pshufd xmm1, xmm1, 0x4e
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm1, xmm1, 0x1b
punpckhbw xmm0, xmm2
pshufd xmm0, xmm0, 0x4e
pshuflw xmm0, xmm0, 0x1b
pshufhw xmm0, xmm0, 0x1b
packuswb xmm0, xmm1
movdqu xmmword [esp + 0x10], xmm0
lea ecx, [esp + 0x10]
mov edx, dword [esp + 0x20]
call fcn.004ea130
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
bswap eax
bswap ecx
mov dword [edi + 4], ecx
mov dword [edi], eax
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
bswap ebx
mov dword [esp], ebx
bswap edx
mov dword [edi + 8], edx
mov dword [edi + 0xc], ebx
add esi, 0x10
mov dword [esp + 0x38], esi
add dword [esp + 8], 0xfffffff0
mov edi, ecx
shr edi, 0x10
mov dword [esp + 0x34], edi
mov edi, eax
shr edi, 0x10
mov dword [esp + 0x24], edi
mov edi, ecx
shr edi, 0x18
mov dword [esp + 0x30], edi
mov ebx, eax
shr ebx, 0x18
mov esi, dword [esp]
mov edi, esi
shr edi, 0x10
mov dword [esp + 0xc], edi
mov edi, edx
shr edi, 0x10
mov dword [esp + 0x2c], edi
shr esi, 0x18
mov dword [esp + 4], esi
mov edi, edx
shr edi, 0x18
mov dword [esp + 0x28], edi
cmp dword [esp + 8], 0xf
mov esi, dword [esp + 0x38]
ja 0x4e78e0
mov dword [esp + 0xc], edx
mov dword [esp + 4], eax
mov edi, dword [ebp + 0x14]
mov edx, dword [esp + 8]
jmp 0x4e7a5d
mov dword [esp + 4], 0
xor ecx, ecx
mov dword [esp + 0xc], 0
mov dword [esp], 0
mov edx, edi
xor eax, eax
test edx, edx
mov ebx, dword [ebp + 8]
je 0x4e7c9f
xor al, byte [esi]
mov byte [ebx], al
cmp edx, 1
je 0x4e7c2b
mov edi, edx
lea eax, [edx - 1]
mov edx, 1
cmp eax, 8
mov dword [esp + 8], edi
jb 0x4e7bc1
mov dword [esp], eax
mov eax, dword [ebp + 8]
lea ecx, [eax + 1]
lea ebx, [esi + edi]
cmp ecx, ebx
jae 0x4e7aaa
lea ecx, [eax + edi]
lea ebx, [esi + 1]
cmp ebx, ecx
jb 0x4e7bc1
xor ecx, ecx
mov eax, dword [esp]
cmp eax, 0x20
jb 0x4e7b86
mov ecx, eax
and ecx, 0xffffffe0
lea edx, [ecx - 0x20]
mov ebx, edx
shr ebx, 5
add ebx, 1
test edx, edx
mov dword [esp + 4], ebx
je 0x4e7b39
and ebx, 0xfffffffe
mov edx, 1
mov edi, dword [ebp + 8]
nop dword [eax + eax]
movups xmm0, xmmword [edi + edx]
movups xmm1, xmmword [edi + edx + 0x10]
mov eax, esi
movups xmm2, xmmword [esi + edx]
xorps xmm2, xmm0
movups xmm0, xmmword [esi + edx + 0x10]
xorps xmm0, xmm1
movups xmmword [edi + edx], xmm2
movups xmmword [edi + edx + 0x10], xmm0
movdqu xmm0, xmmword [edi + edx + 0x20]
movdqu xmm1, xmmword [edi + edx + 0x30]
movdqu xmm2, xmmword [esi + edx + 0x20]
pxor xmm2, xmm0
movdqu xmm0, xmmword [esi + edx + 0x30]
pxor xmm0, xmm1
movdqu xmmword [edi + edx + 0x20], xmm2
movdqu xmmword [edi + edx + 0x30], xmm0
add edx, 0x40
add ebx, 0xfffffffe
jne 0x4e7ae0
jmp 0x4e7b3e
mov edx, 1
test byte [esp + 4], 1
je 0x4e7b73
mov eax, dword [ebp + 8]
movdqu xmm0, xmmword [eax + edx]
movdqu xmm1, xmmword [eax + edx + 0x10]
mov edi, esi
movdqu xmm2, xmmword [esi + edx]
pxor xmm2, xmm0
movdqu xmm0, xmmword [esi + edx + 0x10]
pxor xmm0, xmm1
movdqu xmmword [eax + edx], xmm2
movdqu xmmword [eax + edx + 0x10], xmm0
cmp dword [esp], ecx
mov ebx, dword [ebp + 8]
je 0x4e7c2b
mov eax, dword [esp]
test al, 0x18
je 0x4e7bb8
and eax, 0xfffffff8
lea edx, [eax + 1]
mov ebx, dword [ebp + 8]
nop
movq xmm0, qword [ebx + ecx + 1]
movq xmm1, qword [esi + ecx + 1]
pxor xmm1, xmm0
movq qword [ebx + ecx + 1], xmm1
add ecx, 8
cmp eax, ecx
jne 0x4e7b90
cmp dword [esp], eax
mov edi, dword [esp + 8]
jne 0x4e7bc1
jmp 0x4e7c2b
or ecx, 1
mov edx, ecx
mov edi, dword [esp + 8]
mov ecx, edi
sub ecx, edx
mov eax, edx
not eax
add eax, edi
mov edi, dword [ebp + 8]
and ecx, 3
je 0x4e7bef
nop word cs:[eax + eax]
nop dword [eax]
movzx ebx, byte [esi + edx]
xor byte [edi + edx], bl
add edx, 1
add ecx, 0xffffffff
jne 0x4e7be0
cmp eax, 3
mov ecx, dword [esp + 8]
mov ebx, edi
jb 0x4e7c2b
nop word [eax + eax]
mov edi, esi
movzx eax, byte [esi + edx]
xor byte [ebx + edx], al
movzx eax, byte [esi + edx + 1]
xor byte [ebx + edx + 1], al
movzx eax, byte [esi + edx + 2]
xor byte [ebx + edx + 2], al
movzx eax, byte [esi + edx + 3]
xor byte [ebx + edx + 3], al
add edx, 4
cmp ecx, edx
jne 0x4e7c00
movdqu xmm0, xmmword [ebx]
pxor xmm1, xmm1
movdqa xmm2, xmm0
punpcklbw xmm2, xmm1
pshufd xmm2, xmm2, 0x4e
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
punpckhbw xmm0, xmm1
pshufd xmm0, xmm0, 0x4e
pshuflw xmm0, xmm0, 0x1b
pshufhw xmm0, xmm0, 0x1b
packuswb xmm0, xmm2
movdqu xmmword [esp + 0x10], xmm0
lea ecx, [esp + 0x10]
mov edx, dword [esp + 0x20]
call fcn.004ea130
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
bswap eax
bswap ecx
mov dword [ebx + 4], ecx
mov dword [esp + 4], eax
mov dword [ebx], eax
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
bswap eax
mov dword [esp], eax
bswap edx
mov dword [esp + 0xc], edx
mov edi, dword [ebp + 0x14]
mov eax, edi
shl edi, 3
bswap edi
xor edi, dword [esp]
shr eax, 0x1d
bswap eax
xor eax, dword [esp + 0xc]
mov dword [ebx + 0xc], edi
mov dword [ebx + 8], eax
bswap eax
mov dword [esp + 0x14], eax
bswap edi
mov dword [esp + 0x10], edi
mov eax, dword [esp + 4]
bswap eax
mov dword [esp + 0x1c], eax
bswap ecx
mov dword [esp + 0x18], ecx
lea ecx, [esp + 0x10]
mov edx, dword [esp + 0x20]
call fcn.004ea130
pxor xmm0, xmm0
movdqu xmm1, xmmword [esp + 0x10]
movdqa xmm2, xmm1
punpckhbw xmm2, xmm0
pshufd xmm2, xmm2, 0x4e
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
punpcklbw xmm1, xmm0
pshufd xmm0, xmm1, 0x4e
pshuflw xmm0, xmm0, 0x1b
pshufhw xmm0, xmm0, 0x1b
movdqa xmm1, xmm0
packuswb xmm1, xmm2
packuswb xmm2, xmm0
movdqu xmmword [ebx], xmm2
pshufd xmm0, xmm1, 0x55
movd esi, xmm0
bswap esi
add esi, 1
mov ecx, dword [ebp + 0xc]
lea eax, [ebx + 0x20]
push ecx
push eax
push ebx
call dword [ebx + 0x168]
add esp, 0xc
bswap esi
mov dword [ebx + 0xc], esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret