Function at 0x628d20
Capabilities:
Encode data using xor

Disassembly:
push ecx
push ebx
push ebp
mov ebp, dword [ecx + 8]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 8], ebp
push esi
movd xmm0, ebp
pshufd xmm7, xmm0, 0
push edi
test ecx, ecx
je 0x628da4
xor ebx, ebx
cmp dword [esp + 0x20], ebx
jle 0x628fa9
mov esi, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
sub eax, esi
mov dword [esp + 0x18], eax
movzx edi, byte [ebx + ecx]
test edi, edi
je 0x628d92
push ebp
push dword [esi]
push dword [eax + esi]
call fcn.00628680
add esp, 0xc
cmp edi, 0xff
jae 0x628d88
mov ecx, edi
shr ecx, 7
add ecx, edi
push ecx
push dword [esi]
push eax
call fcn.00628680
add esp, 0xc
mov ecx, dword [esp + 0x24]
mov dword [esi], eax
mov eax, dword [esp + 0x18]
inc ebx
add esi, 4
cmp ebx, dword [esp + 0x20]
jl 0x628d57
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret 0x10
mov ecx, dword [esp + 0x20]
xor esi, esi
mov dword [esp + 0x20], ecx
test ecx, ecx
jle 0x628fa9
mov edx, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
cmp ecx, 8
jb 0x628f10
cmp dword [0x748bc8], 2
jl 0x628f10
lea eax, [ecx - 1]
lea eax, [edx + eax*4]
lea ebx, [ecx - 1]
lea ebx, [edi + ebx*4]
cmp edi, eax
ja 0x628dec
cmp ebx, edx
jae 0x628f10
mov eax, ecx
and eax, reloc.OLEAUT32.dll_VariantInit
jns 0x628dfa
dec eax
or eax, 0xfffffff8
inc eax
movdqa xmm5, xmmword [0x6d1840]
mov ebx, ecx
movdqa xmm4, xmmword [0x6cde10]
sub ebx, eax
mov eax, 8
mov ebp, edx
sub ebp, edi
psubd xmm5, xmm7
mov dword [esp + 0x24], ebp
mov ecx, edx
mov ebp, dword [esp + 0x10]
movd xmm6, eax
lea eax, [edi + 0x10]
mov edi, dword [esp + 0x24]
movdqu xmm1, xmmword [eax - 0x10]
add esi, 8
lea ecx, [ecx + 0x20]
lea eax, [eax + 0x20]
movdqa xmm3, xmm1
pand xmm1, xmm4
movdqu xmm2, xmmword [ecx - 0x20]
psrld xmm3, xmm6
movdqa xmm0, xmm2
pand xmm2, xmm4
pand xmm3, xmm4
psrld xmm0, xmm6
pmulld xmm3, xmm5
pand xmm0, xmm4
pmulld xmm0, xmm7
paddd xmm3, xmm0
movdqa xmm0, xmm5
pand xmm3, xmmword [0x6d1510]
pmulld xmm0, xmm1
pmulld xmm2, xmm7
paddd xmm0, xmm2
psrld xmm0, xmm6
pand xmm0, xmm4
por xmm3, xmm0
movdqu xmmword [eax - 0x30], xmm3
movdqu xmm1, xmmword [eax - 0x20]
movdqu xmm2, xmmword [eax + edi - 0x20]
movdqa xmm3, xmm1
pand xmm1, xmm4
movdqa xmm0, xmm2
pand xmm2, xmm4
psrld xmm0, xmm6
psrld xmm3, xmm6
pand xmm0, xmm4
pand xmm3, xmm4
pmulld xmm0, xmm7
pmulld xmm3, xmm5
paddd xmm3, xmm0
movdqa xmm0, xmm5
pand xmm3, xmmword [0x6d1510]
pmulld xmm0, xmm1
pmulld xmm2, xmm7
paddd xmm0, xmm2
psrld xmm0, xmm6
pand xmm0, xmm4
por xmm3, xmm0
movdqu xmmword [eax - 0x20], xmm3
cmp esi, ebx
jl 0x628e30
mov ecx, dword [esp + 0x20]
mov edi, dword [esp + 0x18]
cmp esi, ecx
jge 0x628fa9
mov eax, 0x100
lea ebx, [edi + esi*4]
sub eax, ebp
sub edx, edi
sub ecx, esi
mov dword [esp + 0x18], eax
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], ecx
mov edi, dword [ebx]
lea ebx, [ebx + 4]
mov edx, dword [ebx + edx - 4]
mov esi, edi
shr esi, 8
mov ecx, edi
and esi, 0xffff00ff
shr edi, 8
imul esi, eax
and ecx, 0xff00ff
imul ecx, dword [esp + 0x18]
mov eax, edx
shr eax, 8
and edi, 0xff00ff
and eax, 0xffff00ff
imul eax, ebp
add esi, eax
mov eax, edx
and eax, 0xff00ff
shr edx, 8
imul eax, ebp
and edx, 0xff00ff
imul edx, ebp
add ecx, eax
mov eax, dword [esp + 0x18]
imul edi, eax
shr ecx, 8
xor esi, ecx
and esi, 0xff00ff
add edi, edx
mov edx, dword [esp + 0x24]
xor esi, edi
dec dword [esp + 0x20]
mov dword [ebx - 4], esi
jne 0x628f32
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret 0x10