Function at 0x416320
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
and esp, 0xffffffe0
sub esp, 0xc0
mov ecx, dword [ebp + 0x10]
test ecx, ecx
jle 0x4169da
lea eax, [ecx - 1]
mov edi, eax
shr edi, 3
cmp eax, 0xf7
mov eax, dword [ebp + 0xc]
lea esi, [edi + 1]
jbe 0x4169e2
vmovdqa ymm7, ymmword [0x6ad660]
mov ebx, esi
mov edx, dword [ebp + 8]
shr ebx, 5
shl ebx, 8
add ebx, eax
lea esi, [esi]
nop
vmovdqu ymm6, ymmword [eax]
vpand ymm2, ymm7, ymmword [eax]
add eax, 0x100
add edx, 0x20
vpand ymm0, ymm7, ymmword [eax - 0xe0]
vpackuswb ymm2, ymm2, ymm0
vpsrlw ymm0, ymm6, 8
vmovdqu ymm6, ymmword [eax - 0xe0]
vpermq ymm2, ymm2, 0xd8
vpsrlw ymm1, ymm6, 8
vmovdqu ymm6, ymmword [eax - 0xc0]
vpackuswb ymm0, ymm0, ymm1
vpermq ymm4, ymm0, 0xd8
vpand ymm0, ymm7, ymmword [eax - 0xa0]
vmovdqa ymmword [esp + 0x60], ymm4
vpand ymm4, ymm7, ymmword [eax - 0xc0]
vpackuswb ymm4, ymm4, ymm0
vpsrlw ymm0, ymm6, 8
vmovdqu ymm6, ymmword [eax - 0xa0]
vpermq ymm4, ymm4, 0xd8
vpsrlw ymm1, ymm6, 8
vmovdqu ymm6, ymmword [eax - 0x80]
vpackuswb ymm0, ymm0, ymm1
vpand ymm1, ymm7, ymmword [eax - 0x60]
vpermq ymm5, ymm0, 0xd8
vpand ymm0, ymm7, ymmword [eax - 0x80]
vmovdqa ymmword [esp + 0x40], ymm5
vmovdqu ymm5, ymmword [eax - 0x20]
vpackuswb ymm0, ymm0, ymm1
vpsrlw ymm1, ymm6, 8
vmovdqu ymm6, ymmword [eax - 0x60]
vpermq ymm0, ymm0, 0xd8
vpsrlw ymm5, ymm5, 8
vmovdqa ymmword [esp + 0x80], ymm0
vpsrlw ymm3, ymm6, 8
vpand ymm0, ymm7, ymm4
vpackuswb ymm1, ymm1, ymm3
vpsrlw ymm4, ymm4, 8
vpand ymm3, ymm7, ymmword [eax - 0x40]
vpermq ymm6, ymm1, 0xd8
vpand ymm1, ymm7, ymmword [eax - 0x20]
vpackuswb ymm3, ymm3, ymm1
vmovdqu ymm1, ymmword [eax - 0x40]
vpermq ymm3, ymm3, 0xd8
vpsrlw ymm1, ymm1, 8
vpackuswb ymm1, ymm1, ymm5
vpand ymm5, ymm7, ymm2
vpsrlw ymm2, ymm2, 8
vpackuswb ymm5, ymm5, ymm0
vpermq ymm1, ymm1, 0xd8
vmovdqa ymm0, ymmword [esp + 0x80]
vpackuswb ymm2, ymm2, ymm4
vpermq ymm5, ymm5, 0xd8
vpand ymm4, ymm7, ymm3
vpermq ymm2, ymm2, 0xd8
vpsrlw ymm3, ymm3, 8
vmovdqa ymmword [esp + 0xa0], ymm5
vmovdqa ymm5, ymmword [esp + 0x40]
vmovdqa ymmword [esp + 0x20], ymm2
vpand ymm2, ymm7, ymm0
vpsrlw ymm0, ymm0, 8
vpackuswb ymm2, ymm2, ymm4
vmovdqa ymm4, ymmword [esp + 0x60]
vpackuswb ymm0, ymm0, ymm3
vpermq ymm2, ymm2, 0xd8
vpermq ymm0, ymm0, 0xd8
vmovdqa ymmword [esp + 0x80], ymm2
vpand ymm3, ymm7, ymm4
vpand ymm2, ymm7, ymm5
vpackuswb ymm3, ymm3, ymm2
vpsrlw ymm2, ymm4, 8
vpsrlw ymm4, ymm5, 8
vpand ymm5, ymm7, ymm1
vpermq ymm3, ymm3, 0xd8
vpackuswb ymm2, ymm2, ymm4
vpsrlw ymm1, ymm1, 8
vpand ymm4, ymm7, ymm6
vpackuswb ymm4, ymm4, ymm5
vpsrlw ymm5, ymm6, 8
vpermq ymm2, ymm2, 0xd8
vmovdqa ymm6, ymmword [esp + 0x80]
vpackuswb ymm5, ymm5, ymm1
vpermq ymm4, ymm4, 0xd8
vmovdqa ymm1, ymmword [esp + 0xa0]
vpsrlw ymm6, ymm6, 8
vpermq ymm5, ymm5, 0xd8
vpsrlw ymm1, ymm1, 8
vpackuswb ymm1, ymm1, ymm6
vpand ymm6, ymm7, ymm4
vpermq ymm1, ymm1, 0xd8
vpsrlw ymm4, ymm4, 8
vmovdqa ymmword [esp + 0x60], ymm1
vpand ymm1, ymm7, ymm3
vpsrlw ymm3, ymm3, 8
vpackuswb ymm1, ymm1, ymm6
vpackuswb ymm3, ymm3, ymm4
vmovdqa ymm6, ymmword [esp + 0x20]
vpand ymm4, ymm7, ymm0
vpermq ymm3, ymm3, 0xd8
vpsrlw ymm0, ymm0, 8
vpermq ymm1, ymm1, 0xd8
vmovdqa ymmword [esp + 0x40], ymm3
vpand ymm3, ymm7, ymm6
vpackuswb ymm3, ymm3, ymm4
vpsrlw ymm4, ymm6, 8
vpackuswb ymm4, ymm4, ymm0
vpand ymm0, ymm7, ymm2
vpermq ymm3, ymm3, 0xd8
vpermq ymm6, ymm4, 0xd8
vpsrlw ymm2, ymm2, 8
vpand ymm4, ymm7, ymm5
vpsrlw ymm5, ymm5, 8
vpackuswb ymm0, ymm0, ymm4
vpand ymm4, ymm7, ymmword [esp + 0xa0]
vpackuswb ymm2, ymm2, ymm5
vpermq ymm0, ymm0, 0xd8
vpand ymm5, ymm7, ymmword [esp + 0x80]
vpermq ymm2, ymm2, 0xd8
vpackuswb ymm4, ymm4, ymm5
vpxor xmm5, xmm5, xmm5
vpcmpgtb ymm1, ymm5, ymm1
vpcmpgtb ymm3, ymm5, ymm3
vpermq ymm4, ymm4, 0xd8
vpcmpgtb ymm4, ymm5, ymm4
vpcmpgtb ymm0, ymm5, ymm0
vpand ymm4, ymm4, ymmword [0x6ad680]
vpand ymm0, ymm0, ymmword [0x6ad6e0]
vpcmpgtb ymm2, ymm5, ymm2
vpand ymm1, ymm1, ymmword [str.________________________________]
vpand ymm3, ymm3, ymmword [0x6ad6c0]
vpand ymm2, ymm2, ymmword [0x6ad760]
vpor ymm1, ymm4, ymm1
vpor ymm3, ymm3, ymm0
vpor ymm0, ymm3, ymm1
vpcmpgtb ymm1, ymm5, ymmword [esp + 0x60]
vpand ymm1, ymm1, ymmword [str._b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b]
vpcmpgtb ymm3, ymm5, ymmword [esp + 0x40]
vpand ymm3, ymm3, ymmword [0x6ad720]
vpor ymm1, ymm1, ymm3
vpor ymm1, ymm1, ymm0
vpcmpgtb ymm0, ymm5, ymm6
vpand ymm0, ymm0, ymmword [0x6ad740]
vpor ymm0, ymm0, ymm2
vpor ymm0, ymm0, ymm1
vmovdqu ymmword [edx - 0x20], ymm0
cmp ebx, eax
jne 0x416370
mov eax, dword [ebp + 0xc]
mov ebx, esi
mov edx, dword [ebp + 8]
and ebx, 0xffffffe0
lea eax, [eax + ebx*8]
add edx, ebx
mov dword [esp + 0xa0], eax
mov eax, ebx
neg eax
lea ecx, [ecx + eax*8]
cmp esi, ebx
je 0x4169f3
vzeroupper
sub edi, ebx
mov esi, edi
lea edi, [edi + 1]
cmp esi, 0xe
jbe 0x41695d
mov esi, dword [ebp + 0xc]
lea esi, [esi + ebx*8]
vmovdqu xmm0, xmmword [esi + 0x70]
vmovdqu xmm5, xmmword [esi]
vmovdqu xmm4, xmmword [esi + 0x10]
vmovdqu xmm1, xmmword [esi + 0x40]
vmovdqa xmmword [esp], xmm0
vmovdqu xmm6, xmmword [esi + 0x60]
vmovdqu xmm3, xmmword [esi + 0x20]
vmovdqa xmm0, xmmword [0x6ad660]
vmovdqu xmm2, xmmword [esi + 0x30]
vmovdqa xmmword [esp + 0x80], xmm1
vmovdqa xmmword [esp + 0x60], xmm6
vmovdqu xmm7, xmmword [esi + 0x50]
vpand xmm1, xmm0, xmm4
vpsrlw xmm4, xmm4, 8
vpand xmm6, xmm0, xmm5
vpsrlw xmm5, xmm5, 8
vpackuswb xmm6, xmm6, xmm1
vmovdqa xmm1, xmmword [esp + 0x80]
vpackuswb xmm4, xmm5, xmm4
vpand xmm5, xmm0, xmm3
vmovdqa xmmword [esp + 0x40], xmm4
vpsrlw xmm3, xmm3, 8
vpand xmm4, xmm0, xmm2
vpsrlw xmm2, xmm2, 8
vpackuswb xmm4, xmm5, xmm4
vmovdqa xmm5, xmmword [esp + 0x60]
vpackuswb xmm2, xmm3, xmm2
vpand xmm3, xmm0, xmm1
vmovdqa xmmword [esp + 0x20], xmm2
vpand xmm2, xmm0, xmm7
vpsrlw xmm1, xmm1, 8
vpackuswb xmm2, xmm3, xmm2
vpsrlw xmm3, xmm7, 8
vpackuswb xmm7, xmm1, xmm3
vpand xmm3, xmm0, xmm5
vmovdqa xmmword [esp + 0x10], xmm7
vmovdqa xmm7, xmmword [esp]
vpand xmm1, xmm0, xmm7
vpackuswb xmm3, xmm3, xmm1
vpsrlw xmm1, xmm5, 8
vpsrlw xmm5, xmm7, 8
vpand xmm7, xmm0, xmm4
vpackuswb xmm1, xmm1, xmm5
vpsrlw xmm4, xmm4, 8
vpand xmm5, xmm0, xmm6
vpackuswb xmm5, xmm5, xmm7
vmovdqa xmm7, xmmword [esp + 0x10]
vmovdqa xmmword [esp + 0x80], xmm5
vpsrlw xmm5, xmm6, 8
vpackuswb xmm6, xmm5, xmm4
vpand xmm5, xmm0, xmm2
vpand xmm4, xmm0, xmm3
vmovdqa xmmword [esp], xmm6
vpackuswb xmm4, xmm5, xmm4
vmovdqa xmm6, xmmword [esp + 0x40]
vmovdqa xmm5, xmmword [esp + 0x20]
vpsrlw xmm3, xmm3, 8
vpsrlw xmm2, xmm2, 8
vmovdqa xmmword [esp + 0x60], xmm4
vpackuswb xmm2, xmm2, xmm3
vpand xmm4, xmm0, xmm5
vpand xmm3, xmm0, xmm6
vpackuswb xmm3, xmm3, xmm4
vpsrlw xmm5, xmm5, 8
vpsrlw xmm4, xmm6, 8
vpand xmm6, xmm0, xmm1
vpackuswb xmm4, xmm4, xmm5
vpsrlw xmm1, xmm1, 8
vpand xmm5, xmm0, xmm7
vpackuswb xmm5, xmm5, xmm6
vpsrlw xmm6, xmm7, 8
vpackuswb xmm6, xmm6, xmm1
vmovdqa xmm1, xmmword [esp + 0x80]
vpsrlw xmm7, xmm1, 8
vmovdqa xmm1, xmmword [esp + 0x60]
vpsrlw xmm1, xmm1, 8
vpackuswb xmm1, xmm7, xmm1
vpand xmm7, xmm0, xmm3
vmovdqa xmmword [esp + 0x40], xmm1
vpand xmm1, xmm0, xmm5
vpsrlw xmm3, xmm3, 8
vpackuswb xmm1, xmm7, xmm1
vpsrlw xmm5, xmm5, 8
vmovdqa xmm7, xmmword [esp]
vpackuswb xmm3, xmm3, xmm5
vpand xmm5, xmm0, xmm2
vmovdqa xmmword [esp + 0x20], xmm3
vpand xmm3, xmm0, xmm7
vpsrlw xmm2, xmm2, 8
vpackuswb xmm3, xmm3, xmm5
vpsrlw xmm5, xmm7, 8
vpand xmm7, xmm0, xmm4
vpackuswb xmm2, xmm5, xmm2
vpsrlw xmm4, xmm4, 8
vpand xmm5, xmm0, xmm6
vpsrlw xmm6, xmm6, 8
vpackuswb xmm5, xmm7, xmm5
vpackuswb xmm6, xmm4, xmm6
vpand xmm4, xmm0, xmmword [esp + 0x80]
vpand xmm0, xmm0, xmmword [esp + 0x60]
vpackuswb xmm0, xmm4, xmm0
vpxor xmm4, xmm4, xmm4
vpcmpgtb xmm0, xmm4, xmm0
vpcmpgtb xmm1, xmm4, xmm1
vpand xmm0, xmm0, xmmword [0x6ad680]
mov esi, dword [ebp + 8]
vpand xmm1, xmm1, xmmword [str.________________________________]
vpcmpgtb xmm5, xmm4, xmm5
vpand xmm5, xmm5, xmmword [0x6ad6e0]
mov eax, dword [esp + 0xa0]
vpor xmm1, xmm0, xmm1
vpcmpgtb xmm0, xmm4, xmm3
vpand xmm0, xmm0, xmmword [0x6ad6c0]
vpcmpgtb xmm3, xmm4, xmmword [esp + 0x20]
vpand xmm3, xmm3, xmmword [0x6ad720]
vpor xmm0, xmm0, xmm5
vpor xmm0, xmm0, xmm1
vpcmpgtb xmm1, xmm4, xmmword [esp + 0x40]
vpand xmm1, xmm1, xmmword [str._b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b]
vpor xmm1, xmm1, xmm3
vpor xmm1, xmm1, xmm0
vpcmpgtb xmm0, xmm4, xmm2
vpand xmm0, xmm0, xmmword [0x6ad740]
vpcmpgtb xmm4, xmm4, xmm6
vpand xmm4, xmm4, xmmword [0x6ad760]
vpor xmm0, xmm0, xmm4
vpor xmm0, xmm0, xmm1
vmovdqu xmmword [esi + ebx], xmm0
mov ebx, edi
and ebx, 0xfffffff0
mov esi, ebx
lea eax, [eax + ebx*8]
add edx, ebx
neg esi
mov dword [esp + 0xa0], eax
lea ecx, [ecx + esi*8]
cmp edi, ebx
je 0x4169da
mov eax, dword [esp + 0xa0]
lea ebx, [eax + ecx]
mov edi, ebx
lea esi, [esi]
movsx esi, byte [eax + 1]
movzx ecx, byte [eax]
add eax, 8
inc edx
movzx ebx, byte [eax - 1]
shr esi, 0x1f
and ecx, 0x80
shl esi, 6
shr bl, 7
or ecx, esi
mov esi, ebx
mov ebx, edi
or ecx, esi
movsx esi, byte [eax - 6]
shr esi, 0x1f
shl esi, 5
or ecx, esi
movsx esi, byte [eax - 5]
shr esi, 0x1f
shl esi, 4
or ecx, esi
movsx esi, byte [eax - 4]
shr esi, 0x1f
shl esi, 3
or ecx, esi
movsx esi, byte [eax - 3]
shr esi, 0x1f
shl esi, 2
or ecx, esi
movsx esi, byte [eax - 2]
sub ebx, eax
shr esi, 0x1f
add esi, esi
or ecx, esi
mov byte [edx - 1], cl
test ebx, ebx
jg 0x416970
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0xa0], eax
mov edx, dword [ebp + 8]
xor ebx, ebx
jmp 0x4166aa
vzeroupper
jmp 0x4169da