Function at 0x407630
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xa0
mov ebx, ecx
add ecx, 3
xor esi, esi
and ecx, 0xfffffffc
mov eax, ecx
mov dword [esp + 0x20], ecx
sub eax, ebx
sub edx, eax
mov eax, 0
mov edi, edx
mov dword [esp + 0xc], edx
and edi, 3
cmp ecx, ebx
je 0x40767e
mov ecx, ebx
xor eax, eax
sub ecx, dword [esp + 0x20]
nop dword [eax]
xor edx, edx
cmp byte [ebx], 0xc0
setge dl
inc ebx
add eax, edx
inc ecx
jne 0x407670
mov ebx, dword [esp + 0x20]
test edi, edi
je 0x4076ae
mov ecx, dword [esp + 0xc]
xor esi, esi
and ecx, 0xfffffffc
add ecx, ebx
nop word cs:[eax + eax]
nop dword [eax + eax]
xor edx, edx
cmp byte [ecx], 0xc0
setge dl
inc ecx
add esi, edx
dec edi
jne 0x4076a0
mov edx, dword [esp + 0xc]
movdqa xmm3, xmmword [0x463080]
add esi, eax
pcmpeqd xmm2, xmm2
shr edx, 2
jmp 0x407706
xor edi, edi
mov eax, edi
shr edi, 8
sub edx, ecx
and eax, 0xff00ff
and edi, 0xff00ff
add edi, eax
mov eax, dword [esp + 0x10]
mov esi, edi
shl esi, 0x10
add esi, edi
shr esi, 0x10
lea ebx, [eax + ecx*4]
and ecx, 3
add esi, dword [esp + 0x1c]
test ecx, ecx
jne 0x407a02
mov eax, esi
test edx, edx
mov dword [esp + 0x10], ebx
je 0x407a4d
cmp edx, 0xc0
mov ecx, 0xc0
mov dword [esp + 0x1c], eax
cmovb ecx, edx
mov esi, ecx
and esi, 0xfc
mov dword [esp + 0x18], esi
je 0x4076d0
mov ebx, ecx
mov eax, dword [esp + 0x10]
mov dword [esp + 0xc], edx
xor edi, edi
shr ebx, 2
lea edx, [ebx - 1]
and edx, 0xfffffff
cmp edx, 7
mov esi, eax
jb 0x4079af
inc edx
add eax, 0x40
xorps xmm0, xmm0
pxor xmm2, xmm2
mov dword [esp + 0x14], edx
and edx, 0xfffffff8
mov esi, edx
mov edi, edx
shl esi, 4
movdqu xmm5, xmmword [eax - 0x20]
movdqa xmmword [esp + 0x80], xmm2
movdqu xmm1, xmmword [eax - 0x40]
movdqu xmm2, xmmword [eax - 0x10]
movdqu xmm3, xmmword [eax - 0x30]
movaps xmmword [esp + 0x30], xmm0
movdqu xmm7, xmmword [eax + 0x10]
movdqu xmm4, xmmword [eax + 0x30]
movdqa xmm0, xmm5
movdqa xmmword [esp + 0x40], xmm2
movdqa xmmword [esp + 0x60], xmm3
movdqa xmmword [esp + 0x20], xmm1
movdqa xmmword [esp + 0x50], xmm7
punpckldq xmm0, xmm2
movdqa xmm2, xmm1
movdqu xmm1, xmmword [eax + 0x20]
punpckhdq xmm5, xmmword [esp + 0x40]
punpckldq xmm2, xmm3
movdqu xmm3, xmmword [eax]
sub eax, 0xffffff80
add edi, 0xfffffff8
movdqa xmm6, xmm2
punpckhqdq xmm2, xmm0
movdqa xmmword [esp + 0x70], xmm2
punpcklqdq xmm6, xmm0
movdqa xmm0, xmm1
punpckhdq xmm1, xmm4
movdqa xmm2, xmm3
punpckldq xmm0, xmm4
punpckhdq xmm3, xmmword [esp + 0x50]
punpckldq xmm2, xmm7
movdqa xmm7, xmm2
punpckhqdq xmm2, xmm0
punpcklqdq xmm7, xmm0
movdqa xmm0, xmmword [esp + 0x20]
punpckhdq xmm0, xmmword [esp + 0x60]
movdqa xmm4, xmm0
punpckhqdq xmm0, xmm5
punpcklqdq xmm4, xmm5
movdqa xmm5, xmm3
movdqa xmmword [esp + 0x20], xmm0
punpckhqdq xmm3, xmm1
movdqa xmm0, xmm6
psrld xmm6, 6
punpcklqdq xmm5, xmm1
pcmpeqd xmm1, xmm1
movdqa xmmword [esp + 0x40], xmm3
pcmpeqd xmm3, xmm3
pxor xmm0, xmm1
psrld xmm0, 7
por xmm6, xmm0
movdqa xmm0, xmm7
psrld xmm7, 6
pxor xmm0, xmm1
movdqa xmm1, xmmword [0x463080]
psrld xmm0, 7
por xmm7, xmm0
pand xmm7, xmm1
pand xmm6, xmm1
paddd xmm7, xmmword [esp + 0x80]
paddd xmm6, xmmword [esp + 0x30]
movdqa xmmword [esp + 0x30], xmm7
movdqa xmm7, xmmword [esp + 0x70]
movdqa xmm0, xmm7
psrld xmm7, 6
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
movdqa 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
movdqa xmm2, xmmword [esp + 0x40]
movdqa xmm0, xmm3
psrld xmm3, 6
pxor xmm0, xmm6
paddd xmm5, xmmword [esp + 0x30]
psrld xmm0, 7
por xmm3, xmm0
movdqa xmm0, xmm2
psrld xmm2, 6
pand xmm3, xmm1
pxor xmm0, xmm6
psrld xmm0, 7
por xmm2, xmm0
movdqa xmm0, xmm3
pand xmm2, xmm1
paddd xmm0, xmm4
paddd xmm2, xmm5
jne 0x407770
paddd xmm2, xmm0
movdqa xmm3, xmmword [0x463080]
cmp dword [esp + 0x14], edx
pshufd xmm0, xmm2, 0xee
paddd xmm0, xmm2
pshufd xmm1, xmm0, 0x55
paddd xmm1, xmm0
movd edi, xmm1
jne 0x4079a5
mov edx, dword [esp + 0xc]
pcmpeqd xmm2, xmm2
jmp 0x4076d2
mov eax, dword [esp + 0x10]
pcmpeqd xmm2, xmm2
add esi, eax
mov edx, dword [esp + 0xc]
shl ebx, 4
add ebx, eax
nop dword [eax + eax]
movdqu xmm0, xmmword [esi]
add esi, 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 eax, xmm0
add edi, eax
cmp esi, ebx
jne 0x4079c0
jmp 0x4076d2
mov edx, dword [esp + 0x18]
shl ecx, 2
lea eax, [eax + edx*4]
xor edx, edx
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 edx, edi
add ecx, 0xfffffffc
jne 0x407a10
mov ecx, edx
shr edx, 8
and ecx, 0xff00ff
and edx, 0xff00ff
add edx, ecx
mov eax, edx
shl eax, 0x10
add eax, edx
shr eax, 0x10
add eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret