Function at 0x4d40d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x90
mov ecx, dword [esp + 0xa4]
mov edx, dword [esp + 0xa8]
lea ebp, [ecx + 3]
and ebp, 0xfffffffc
mov ebx, ebp
sub ebx, ecx
cmp ebx, edx
ja 0x4d4135
cmp ebx, 4
ja 0x4d4135
mov edi, edx
sub edi, ebx
cmp edi, 4
jb 0x4d4135
lea eax, [ecx + ebx]
xor esi, esi
mov dword [esp + 4], eax
mov eax, edi
and eax, 3
cmp ebp, ecx
mov ebp, 0
je 0x4d4281
xor ebp, ebp
cmp ebx, 8
jae 0x4d41e6
mov ebx, dword [esp + 4]
mov edx, ecx
jmp 0x4d4270
xor eax, eax
test edx, edx
je 0x4d466c
cmp edx, 8
mov esi, ecx
jb 0x4d41cb
movdqa xmm2, xmmword [0x565360]
movdqa xmm3, xmmword [0x564650]
mov edi, edx
lea eax, [ecx + 4]
pxor xmm0, xmm0
pxor xmm1, xmm1
and edi, 0xfffffff8
lea esi, [ecx + edi]
mov ebx, edi
nop
movd xmm5, dword [eax - 4]
movd xmm4, dword [eax]
add eax, 8
add ebx, 0xfffffff8
pcmpgtb xmm5, xmm2
pcmpgtb xmm4, xmm2
punpcklbw xmm5, xmm5
punpcklwd xmm5, xmm5
pand xmm5, xmm3
paddd xmm0, xmm5
punpcklbw xmm4, xmm4
punpcklwd xmm4, xmm4
pand xmm4, xmm3
paddd xmm1, xmm4
jne 0x4d4170
paddd xmm1, xmm0
cmp edi, edx
pshufd xmm0, xmm1, 0xee
paddd xmm0, xmm1
pshufd xmm1, xmm0, 0x55
paddd xmm1, xmm0
movd eax, xmm1
je 0x4d466c
add ecx, edx
nop dword [eax]
xor edx, edx
cmp byte [esi], 0xc0
lea esi, [esi + 1]
setge dl
add eax, edx
cmp esi, ecx
jne 0x4d41d0
jmp 0x4d466c
movdqa xmm2, xmmword [0x565360]
movdqa xmm3, xmmword [0x564650]
mov ebp, ebx
pxor xmm0, xmm0
pxor xmm1, xmm1
and ebp, 0xfffffff8
lea edx, [ecx + ebp]
add ecx, 4
mov dword [esp + 0x20], ebp
nop dword [eax]
movd xmm5, dword [ecx - 4]
movd xmm4, dword [ecx]
add ecx, 8
add ebp, 0xfffffff8
pcmpgtb xmm5, xmm2
pcmpgtb xmm4, xmm2
punpcklbw xmm5, xmm5
punpcklwd xmm5, xmm5
pand xmm5, xmm3
paddd xmm0, xmm5
punpcklbw xmm4, xmm4
punpcklwd xmm4, xmm4
pand xmm4, xmm3
paddd xmm1, xmm4
jne 0x4d4210
paddd xmm1, xmm0
cmp ebx, dword [esp + 0x20]
mov ebx, dword [esp + 4]
pshufd xmm0, xmm1, 0xee
paddd xmm0, xmm1
pshufd xmm1, xmm0, 0x55
paddd xmm1, xmm0
movd ebp, xmm1
je 0x4d4281
nop dword [eax]
xor ecx, ecx
cmp byte [edx], 0xc0
lea edx, [edx + 1]
setge cl
add ebp, ecx
cmp edx, ebx
jne 0x4d4270
test eax, eax
je 0x4d42a0
mov ecx, edi
xor esi, esi
and ecx, 0xfffffffc
add ecx, dword [esp + 4]
xor edx, edx
cmp byte [ecx], 0xc0
lea ecx, [ecx + 1]
setge dl
add esi, edx
dec eax
jne 0x4d4290
movdqa xmm3, xmmword [0x565370]
mov edx, dword [esp + 4]
add esi, ebp
shr edi, 2
pcmpeqd xmm2, xmm2
jmp 0x4d42f8
xor ecx, ecx
mov edx, ecx
shr ecx, 8
mov edi, ebx
and edx, 0xff00ff
and ecx, 0xff00ff
add ecx, edx
mov esi, ecx
shl esi, 0x10
add esi, ecx
mov ecx, dword [esp + 0x1c]
shr esi, 0x10
add esi, eax
mov eax, dword [esp]
sub edi, ecx
test cl, 3
lea edx, [eax + ecx*4]
jne 0x4d4612
mov eax, esi
test edi, edi
je 0x4d466c
cmp edi, 0xc0
mov esi, 0xc0
mov ebx, edi
mov dword [esp], edx
cmovb esi, edi
mov ecx, esi
mov dword [esp + 0x1c], esi
and ecx, 0xfc
mov dword [esp + 0x18], ecx
je 0x4d42c0
shr esi, 2
xor ecx, ecx
mov edi, edx
lea ebp, [esi - 1]
and ebp, 0xfffffff
cmp ebp, 7
jb 0x4d45c5
mov ecx, dword [esp]
inc ebp
mov dword [esp + 0x14], ebx
pxor xmm3, xmm3
pxor xmm2, xmm2
mov ebx, ebp
and ebp, 0xfffffff8
mov edi, ebp
shl edi, 4
add edi, ecx
lea edx, [ecx + 0x40]
xor ecx, ecx
nop word cs:[eax + eax]
nop dword [eax + eax]
movdqu xmm5, xmmword [edx - 0x20]
movdqu xmmword [esp + 0x70], xmm2
movdqu xmm1, xmmword [edx - 0x40]
movdqu xmm2, xmmword [edx - 0x10]
movdqu xmmword [esp + 0x80], xmm3
movdqu xmm3, xmmword [edx - 0x30]
movdqu xmm7, xmmword [edx + 0x10]
movdqu xmm4, xmmword [edx + 0x30]
add ecx, 8
movdqa xmm0, xmm5
movdqu xmmword [esp + 0x30], xmm2
movdqu xmmword [esp + 0x50], xmm3
movdqu xmmword [esp + 4], xmm1
movdqu xmmword [esp + 0x40], xmm7
punpckldq xmm0, xmm2
movdqa xmm2, xmm1
movdqu xmm1, xmmword [edx + 0x20]
punpckldq xmm2, xmm3
movdqu xmm3, xmmword [edx]
sub edx, 0xffffff80
cmp ebp, ecx
movdqa xmm6, xmm2
punpckhqdq xmm2, xmm0
movdqu xmmword [esp + 0x60], xmm2
punpcklqdq xmm6, xmm0
movdqa xmm0, xmm1
punpckhdq xmm1, xmm4
movdqa xmm2, xmm3
punpckldq xmm0, xmm4
movdqu xmm4, xmmword [esp + 0x40]
punpckldq xmm2, xmm7
movdqa xmm7, xmm2
punpckhqdq xmm2, xmm0
punpcklqdq xmm7, xmm0
movdqu xmm0, xmmword [esp + 0x30]
movdqu xmmword [esp + 0x20], xmm7
movdqu xmm7, xmmword [esp + 0x50]
punpckhdq xmm3, xmm4
punpckhdq xmm5, xmm0
movdqu xmm0, xmmword [esp + 4]
punpckhdq xmm0, xmm7
movdqu xmm7, xmmword [esp + 0x60]
movdqa xmm4, xmm0
punpckhqdq xmm0, xmm5
punpcklqdq xmm4, xmm5
movdqa xmm5, xmm3
punpckhqdq xmm3, xmm1
movdqu xmmword [esp + 4], xmm0
movdqa xmm0, xmm6
psrld xmm6, 6
movdqu xmmword [esp + 0x30], xmm3
movdqu xmm3, xmmword [esp + 0x20]
punpcklqdq xmm5, xmm1
pcmpeqd xmm1, xmm1
pxor xmm0, xmm1
psrld xmm0, 7
por xmm6, xmm0
movdqa xmm0, xmm3
psrld xmm3, 6
pxor xmm0, xmm1
movdqa xmm1, xmmword [0x565370]
psrld xmm0, 7
por xmm3, xmm0
movdqu xmm0, xmmword [esp + 0x80]
pand xmm6, xmm1
pand xmm3, xmm1
paddd xmm6, xmm0
movdqu xmm0, xmmword [esp + 0x70]
paddd xmm3, xmm0
movdqa xmm0, xmm7
psrld xmm7, 6
movdqu xmmword [esp + 0x20], xmm3
pcmpeqd xmm3, xmm3
pxor xmm0, xmm3
psrld xmm0, 7
por xmm7, xmm0
movdqa xmm0, xmm2
psrld xmm2, 6
pxor xmm0, xmm3
pand xmm7, xmm1
psrld xmm0, 7
por xmm2, xmm0
movdqa xmm0, xmm4
psrld xmm4, 6
pxor xmm0, xmm3
pand xmm2, xmm1
psrld xmm0, 7
por xmm4, xmm0
movdqa xmm0, xmm5
psrld xmm5, 6
pxor xmm0, xmm3
movdqu xmm3, xmmword [esp + 0x20]
pand xmm4, xmm1
psrld xmm0, 7
paddd xmm4, xmm7
por xmm5, xmm0
paddd xmm4, xmm6
pcmpeqd xmm6, xmm6
pand xmm5, xmm1
paddd xmm5, xmm2
paddd xmm5, xmm3
movdqu xmm3, xmmword [esp + 4]
movdqa xmm2, xmm3
psrld xmm3, 6
pxor xmm2, xmm6
psrld xmm2, 7
por xmm3, xmm2
movdqu xmm2, xmmword [esp + 0x30]
pand xmm3, xmm1
paddd xmm3, xmm4
movdqa xmm7, xmm2
psrld xmm2, 6
pxor xmm7, xmm6
psrld xmm7, 7
por xmm2, xmm7
pand xmm2, xmm1
paddd xmm2, xmm5
jne 0x4d4370
paddd xmm2, xmm3
cmp ebx, ebp
movdqa xmm3, xmmword [0x565370]
mov ebx, dword [esp + 0x14]
pshufd xmm0, xmm2, 0xee
paddd xmm0, xmm2
pcmpeqd xmm2, xmm2
pshufd xmm1, xmm0, 0x55
paddd xmm1, xmm0
movd ecx, xmm1
je 0x4d42c2
shl esi, 4
add esi, dword [esp]
nop dword [eax + eax]
movdqu xmm0, xmmword [edi]
add edi, 0x10
movdqa xmm1, xmm0
psrld xmm0, 6
pxor xmm1, xmm2
psrld xmm1, 7
por xmm0, xmm1
pand xmm0, xmm3
pshufd xmm1, xmm0, 0xee
paddd xmm1, xmm0
pshufd xmm0, xmm1, 0x55
paddd xmm0, xmm1
movd edx, xmm0
add ecx, edx
cmp edi, esi
jne 0x4d45d0
jmp 0x4d42c2
mov ecx, dword [esp + 0x18]
cmp ebx, 0xc0
mov edx, 0xc0
cmovb edx, ebx
and edx, 3
shl edx, 2
lea eax, [eax + ecx*4]
xor ecx, ecx
nop
mov edi, dword [eax]
add eax, 4
mov ebx, edi
shr edi, 6
not ebx
shr ebx, 7
or edi, ebx
and edi, 0x1010101
add ecx, edi
add edx, 0xfffffffc
jne 0x4d4630
mov eax, ecx
shr ecx, 8
and eax, 0xff00ff
and ecx, 0xff00ff
add ecx, eax
mov eax, ecx
shl eax, 0x10
add eax, ecx
shr eax, 0x10
add eax, esi
add esp, 0x90
pop esi
pop edi
pop ebx
pop ebp
ret