Function at 0x6c5db0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x140
mov edx, dword [ebp + 8]
mov eax, dword [0x7a8498]
xor eax, ebp
mov dword [esp + 0x138], eax
xor esi, esi
cmp dword [edx + 0x18], 0
jne 0x6c5ead
mov edi, dword [ebp + 0x18]
cmp edi, 0x1fffffff
ja 0x6c5ead
lea ecx, [edi*8]
mov eax, dword [edx + 0x14]
add ecx, eax
jb 0x6c5ead
mov ecx, dword [edx + 0x5c]
lea esi, [ecx + edi]
add esi, 0x48
pxor xmm1, xmm1
movdqa xmmword [esp + 0x120], xmm1
movdqa xmmword [esp + 0x110], xmm1
movdqa xmmword [esp + 0x100], xmm1
pxor xmm0, xmm0
movdqa xmmword [esp + 0x20], xmm0
movdqa xmmword [esp + 0xf0], xmm1
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], esi
cmp esi, 0x40
jae 0x6c5ec5
movaps xmm0, xmmword [esp + 0x20]
movss dword [esp], xmm0
call fcn.006d7f05
mov esi, dword [ebp + 0xc]
mov dword [esi], eax
pshufd xmm0, xmmword [esp + 0x20], 0x55
movd dword [esp], xmm0
call fcn.006d7f05
mov dword [esi + 4], eax
pshufd xmm0, xmmword [esp + 0x20], 0xee
movd dword [esp], xmm0
call fcn.006d7f05
mov dword [esi + 8], eax
pshufd xmm0, xmmword [esp + 0x20], 0xff
movd dword [esp], xmm0
call fcn.006d7f05
mov dword [esi + 0xc], eax
mov eax, dword [esp + 0x10]
mov dword [esp], eax
call fcn.006d7f05
mov dword [esi + 0x10], eax
mov esi, 1
mov ecx, dword [esp + 0x138]
xor ecx, ebp
call fcn.006c9121
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov esi, dword [ebp + 0x14]
add ecx, esi
add ecx, 0x48
shr ecx, 6
lea eax, [eax + esi*8]
mov esi, eax
shr esi, 0x18
mov dword [esp + 0x50], esi
mov esi, eax
shr esi, 0x10
mov dword [esp + 0x4c], esi
mov dword [esp + 0x54], eax
shr eax, 8
mov dword [esp + 0x48], eax
shr dword [esp + 0x14], 6
lea eax, [ecx - 1]
mov dword [esp + 0x44], eax
neg ecx
mov dword [esp + 0x58], ecx
pxor xmm0, xmm0
movdqa xmmword [esp + 0x20], xmm0
lea eax, [edx + 0x1c]
mov dword [esp + 0x38], eax
mov dword [esp + 0x10], 0
xor eax, eax
xor edi, edi
jmp 0x6c5fd3
mov edi, dword [esp + 0x1c]
xor edi, dword [esp + 0x44]
add edi, 0xffffffff
and edi, dword [esp + 0x58]
mov esi, edi
sar esi, 0x1f
mov eax, dword [esp + 0x50]
and eax, esi
or byte [esp + 0x12c], al
mov eax, dword [esp + 0x4c]
and eax, esi
or byte [esp + 0x12d], al
mov eax, dword [esp + 0x48]
and eax, esi
or byte [esp + 0x12e], al
mov eax, dword [esp + 0x54]
and eax, esi
or byte [esp + 0x12f], al
lea eax, [esp + 0xf0]
mov dword [esp + 4], eax
mov ebx, dword [ebp + 8]
mov dword [esp], ebx
call fcn.0055fc00
mov eax, dword [esp + 0x1c]
movd xmm0, edi
and esi, dword [ebx + 0x10]
or dword [esp + 0x10], esi
movdqu xmm1, xmmword [ebx]
pshufd xmm0, xmm0, 0
psrad xmm0, 0x1f
pand xmm0, xmm1
movdqa xmm1, xmmword [esp + 0x20]
por xmm1, xmm0
movdqa xmmword [esp + 0x20], xmm1
mov edi, dword [esp + 0x18]
add edi, 0x40
add eax, 1
cmp eax, dword [esp + 0x14]
je 0x6c5e49
mov ebx, 0
mov dword [esp + 0x1c], eax
test eax, eax
jne 0x6c600c
mov eax, dword [ebp + 8]
mov esi, dword [eax + 0x5c]
mov ebx, 0
test esi, esi
je 0x6c600c
mov dword [esp + 8], esi
mov eax, dword [esp + 0x38]
mov dword [esp + 4], eax
lea eax, [esp + 0xf0]
mov dword [esp], eax
call fcn.006cca40
mov ebx, esi
mov eax, dword [ebp + 0x18]
cmp edi, eax
jae 0x6c6043
mov ecx, 0x40
sub ecx, ebx
sub eax, edi
cmp ecx, eax
cmovbe eax, ecx
test eax, eax
je 0x6c6043
lea ecx, [esp + ebx]
add ecx, 0xf0
mov edx, dword [ebp + 0x10]
add edx, edi
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov dword [esp], ecx
call fcn.006cca40
mov eax, edi
sub eax, ebx
mov dword [esp + 0x18], eax
cmp ebx, 0x3f
ja 0x6c5f30
mov eax, dword [ebp + 0x14]
mov ecx, 0x40
sub ecx, ebx
mov edx, ebx
cmp ecx, 0x10
jb 0x6c62ca
mov dword [esp + 0x3c], ecx
mov edx, ecx
and edx, 0xfffffff0
lea ecx, [ebx + edx]
mov dword [esp + 0x40], ecx
movd xmm0, ebx
pshufd xmm1, xmm0, 0
movdqa xmm7, xmm1
paddd xmm7, xmmword [0x7882d0]
movdqa xmm2, xmm1
paddd xmm2, xmmword [str._b_t_n_v]
movdqa xmm4, xmm1
paddd xmm4, xmmword [0x7882f0]
paddd xmm1, xmmword [0x7882a0]
movd xmm0, dword [esp + 0x18]
pshufd xmm0, xmm0, 0
movdqa xmmword [esp + 0x80], xmm0
movd xmm0, eax
pshufd xmm0, xmm0, 0
movdqa xmmword [esp + 0x70], xmm0
lea ecx, [esp + ebx]
add ecx, 0xf0
xor esi, esi
nop dword [eax]
movdqa xmmword [esp + 0xb0], xmm4
movdqa xmmword [esp + 0xc0], xmm2
movdqa xmmword [esp + 0xd0], xmm7
movdqa xmmword [esp + 0xe0], xmm1
movdqa xmm0, xmmword [esp + 0x80]
movdqa xmm3, xmm0
paddd xmm3, xmm2
movdqa xmmword [esp + 0xa0], xmm3
movdqa xmm2, xmm0
paddd xmm2, xmm7
movdqa xmm3, xmm0
paddd xmm3, xmm1
movdqa xmm1, xmm0
paddd xmm1, xmm4
movdqa xmm7, xmmword [esp + 0x70]
movdqa xmm0, xmm7
pxor xmm0, xmm1
movdqa xmmword [esp + 0x60], xmm0
movdqa xmm6, xmm7
pxor xmm6, xmm3
movdqa xmm4, xmm7
pxor xmm4, xmm2
movdqa xmm5, xmm4
movdqa xmmword [esp + 0x90], xmm4
movdqa xmm4, xmm1
psubd xmm4, xmm7
pxor xmm4, xmm1
por xmm4, xmm0
pxor xmm4, xmm1
movdqa xmm1, xmm3
psubd xmm1, xmm7
pxor xmm1, xmm3
por xmm1, xmm6
pxor xmm1, xmm3
movdqa xmm3, xmm2
psubd xmm3, xmm7
pxor xmm3, xmm2
por xmm3, xmm5
pxor xmm3, xmm2
movdqa xmm5, xmm7
movdqa xmm2, xmmword [esp + 0xa0]
pxor xmm5, xmm2
movdqa xmm0, xmm2
psubd xmm0, xmm7
pxor xmm0, xmm2
por xmm0, xmm5
pxor xmm0, xmm2
psrad xmm0, 0x1f
psrad xmm3, 0x1f
packssdw xmm0, xmm3
movdqa xmm7, xmmword [esp + 0xd0]
psrad xmm1, 0x1f
psrad xmm4, 0x1f
packssdw xmm1, xmm4
movdqa xmm4, xmmword [esp + 0xb0]
packsswb xmm1, xmm0
movdqa xmm3, xmmword [esp + 0x60]
movdqa xmm0, xmm3
pcmpeqd xmm2, xmm2
paddd xmm0, xmm2
pandn xmm3, xmm0
movdqa xmmword [esp + 0x60], xmm3
movdqa xmm0, xmm6
paddd xmm0, xmm2
pcmpeqd xmm3, xmm3
pandn xmm6, xmm0
movdqa xmm2, xmmword [esp + 0x90]
movdqa xmm0, xmm2
paddd xmm0, xmm3
pandn xmm2, xmm0
movdqa xmm0, xmm5
paddd xmm0, xmm3
pandn xmm5, xmm0
psrld xmm5, 0x18
psrld xmm2, 0x18
packuswb xmm5, xmm2
psrld xmm6, 0x18
movdqa xmm0, xmmword [esp + 0x60]
psrld xmm0, 0x18
packuswb xmm6, xmm0
packuswb xmm6, xmm5
movdqa xmm2, xmmword [esp + 0xc0]
movdqu xmm0, xmmword [ecx + esi]
pand xmm0, xmm1
movdqa xmm1, xmmword [esp + 0xe0]
pand xmm6, xmmword [0x6fc010]
por xmm0, xmm6
movdqu xmmword [ecx + esi], xmm0
add esi, 0x10
movdqa xmm0, xmmword [0x788300]
paddd xmm1, xmm0
paddd xmm4, xmm0
paddd xmm2, xmm0
paddd xmm7, xmm0
cmp edx, esi
jne 0x6c60e0
cmp dword [esp + 0x3c], edx
mov edx, dword [esp + 0x40]
je 0x6c5f30
lea ecx, [edx - 0x40]
add edi, edx
add edx, esp
add edx, 0xf0
sub edi, ebx
mov esi, eax
neg esi
mov dword [esp + 0x60], esi
mov dword [esp + 0x5c], eax
nop word cs:[eax + eax]
nop
mov ebx, eax
xor ebx, edi
mov eax, dword [esp + 0x60]
add eax, edi
xor eax, edi
or eax, ebx
mov esi, ebx
not esi
add ebx, 0xffffffff
and ebx, esi
xor eax, edi
sar eax, 0x1f
shr ebx, 0x18
and al, byte [edx]
and bl, 0x80
or bl, al
mov eax, dword [esp + 0x5c]
mov byte [edx], bl
add edx, 1
add edi, 1
inc ecx
jne 0x6c62f0
jmp 0x6c5f30