Function at 0x4e7d60
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x20
mov ebx, dword [ebp + 8]
mov ecx, dword [ebx + 0x38]
xor eax, eax
or ecx, dword [ebx + 0x3c]
jne 0x4e8127
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebx + 0x34]
mov esi, dword [ebx + 0x30]
add esi, ecx
adc edx, 0
mov edi, esi
neg edi
mov edi, 0x20000000
sbb edi, edx
jb 0x4e8127
mov edi, dword [ebp + 0xc]
mov dword [ebx + 0x30], esi
mov dword [ebx + 0x34], edx
mov eax, dword [ebx + 0x174]
test eax, eax
mov esi, ebx
je 0x4e7e6c
test ecx, ecx
je 0x4e811c
nop dword [eax]
movzx edx, byte [edi]
xor byte [esi + eax + 0x40], dl
add edi, 1
lea ebx, [ecx - 1]
add eax, 1
and eax, 0xf
je 0x4e7ddc
cmp ecx, 1
mov ecx, ebx
jne 0x4e7dc0
test eax, eax
jne 0x4e811c
lea edx, [esi + 0x60]
movdqu xmm0, xmmword [esi + 0x40]
pxor xmm2, xmm2
movdqa xmm1, xmm0
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 + 8], xmm0
lea ecx, [esp + 8]
call fcn.004ea130
movdqu xmm0, xmmword [esp + 8]
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 [esi + 0x40], xmm0
jmp 0x4e7e6e
mov ebx, ecx
mov eax, ebx
and eax, 0xfffffff0
je 0x4e7f84
lea edx, [esi + 0x60]
movdqu xmm0, xmmword [esi + 0x40]
movdqu xmm1, xmmword [edi]
pxor xmm1, xmm0
pxor xmm2, xmm2
movdqa xmm0, xmm1
punpcklbw xmm0, xmm2
pshufd xmm0, xmm0, 0x4e
pshuflw xmm0, xmm0, 0x1b
pshufhw xmm0, xmm0, 0x1b
punpckhbw xmm1, xmm2
pshufd xmm1, xmm1, 0x4e
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm1, xmm1, 0x1b
packuswb xmm1, xmm0
movdqu xmmword [esp + 8], xmm1
lea ecx, [esp + 8]
mov dword [esp + 0x18], edx
mov dword [esp + 4], eax
call fcn.004ea130
mov eax, dword [esp + 4]
cmp eax, 0x10
je 0x4e7f3f
mov esi, 0x10
movdqu xmm0, xmmword [esp + 8]
movdqu xmm1, xmmword [edi + esi]
movdqa xmm2, xmm1
pxor xmm3, xmm3
punpcklbw xmm2, xmm3
pshufd xmm2, xmm2, 0x4e
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
punpckhbw xmm1, xmm3
pshufd xmm1, xmm1, 0x4e
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm1, xmm1, 0x1b
packuswb xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [esp + 8], xmm1
lea ecx, [esp + 8]
mov edx, dword [esp + 0x18]
call fcn.004ea130
mov eax, dword [esp + 4]
add esi, 0x10
cmp eax, esi
jne 0x4e7ee0
movdqu xmm0, xmmword [esp + 8]
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
mov esi, dword [ebp + 8]
movdqu xmmword [esi + 0x40], xmm0
add edi, eax
and ebx, 0xf
xor eax, eax
test ebx, ebx
je 0x4e811c
cmp ebx, 8
jb 0x4e80a0
lea ecx, [esi + 0x40]
lea edx, [edi + ebx]
cmp edx, ecx
jbe 0x4e7faf
lea ecx, [esi + ebx]
add ecx, 0x40
cmp edi, ecx
jb 0x4e80a0
xor eax, eax
cmp ebx, 0x20
jb 0x4e8071
mov eax, ebx
and eax, 0xffffffe0
lea ecx, [eax - 0x20]
mov edx, ecx
shr edx, 5
add edx, 1
test ecx, ecx
mov dword [esp + 4], edx
je 0x4e8030
and edx, 0xfffffffe
xor ecx, ecx
movups xmm0, xmmword [edi + ecx]
movups xmm1, xmmword [edi + ecx + 0x10]
movups xmm2, xmmword [esi + ecx + 0x40]
xorps xmm2, xmm0
movups xmm0, xmmword [esi + ecx + 0x50]
xorps xmm0, xmm1
movups xmmword [esi + ecx + 0x40], xmm2
movups xmmword [esi + ecx + 0x50], xmm0
movdqu xmm0, xmmword [edi + ecx + 0x20]
movdqu xmm1, xmmword [edi + ecx + 0x30]
movdqu xmm2, xmmword [esi + ecx + 0x60]
pxor xmm2, xmm0
movdqu xmm0, xmmword [esi + ecx + 0x70]
pxor xmm0, xmm1
movdqu xmmword [esi + ecx + 0x60], xmm2
movdqu xmmword [esi + ecx + 0x70], xmm0
add ecx, 0x40
add edx, 0xfffffffe
jne 0x4e7fd7
jmp 0x4e8032
xor ecx, ecx
test byte [esp + 4], 1
je 0x4e8064
movdqu xmm0, xmmword [edi + ecx]
movdqu xmm1, xmmword [edi + ecx + 0x10]
movdqu xmm2, xmmword [esi + ecx + 0x40]
pxor xmm2, xmm0
movdqu xmm0, xmmword [esi + ecx + 0x50]
pxor xmm0, xmm1
movdqu xmmword [esi + ecx + 0x40], xmm2
movdqu xmmword [esi + ecx + 0x50], xmm0
cmp ebx, eax
je 0x4e811a
test bl, 0x18
je 0x4e80a0
mov ecx, eax
mov eax, ebx
and eax, 0xfffffff8
nop dword [eax + eax]
movq xmm0, qword [edi + ecx]
movq xmm1, qword [esi + ecx + 0x40]
pxor xmm1, xmm0
movq qword [esi + ecx + 0x40], xmm1
add ecx, 8
cmp eax, ecx
jne 0x4e8080
cmp ebx, eax
je 0x4e811a
mov ecx, eax
not ecx
add ecx, ebx
mov dword [esp + 4], ecx
mov edx, ebx
and edx, 3
je 0x4e80d0
mov esi, dword [ebp + 8]
nop word cs:[eax + eax]
nop
movzx ecx, byte [edi + eax]
xor byte [esi + eax + 0x40], cl
add eax, 1
add edx, 0xffffffff
jne 0x4e80c0
cmp dword [esp + 4], 3
jae 0x4e80de
mov eax, ebx
mov esi, dword [ebp + 8]
jmp 0x4e811c
mov esi, dword [ebp + 8]
nop word cs:[eax + eax]
nop dword [eax + eax]
movzx ecx, byte [edi + eax]
xor byte [esi + eax + 0x40], cl
movzx ecx, byte [edi + eax + 1]
xor byte [esi + eax + 0x41], cl
movzx ecx, byte [edi + eax + 2]
xor byte [esi + eax + 0x42], cl
movzx ecx, byte [edi + eax + 3]
xor byte [esi + eax + 0x43], cl
add eax, 4
cmp ebx, eax
jne 0x4e80f0
mov eax, ebx
mov dword [esi + 0x174], eax
mov eax, 1
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret