Function at 0x490750
Capabilities:
Encode data using xor
Encrypt data using salsa20 or chacha

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x68
mov ecx, dword [ebp + 0x14]
push ebx
mov ebx, dword [ebp + 0x10]
mov eax, ebx
or eax, ecx
mov dword [ebp - 4], ebx
mov dword [ebp - 0x18], ecx
je 0x4909a7
mov eax, dword [ebp + 0x18]
mov edx, dword [ebp + 0x1c]
push esi
push edi
movq xmm0, qword [eax]
movq qword [ebp - 0x28], xmm0
xorps xmm0, xmm0
movq qword [ebp - 0x20], xmm0
test ecx, ecx
jne 0x49079d
cmp ebx, 0x40
jae 0x49079d
mov esi, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
mov dword [ebp + 0x14], esi
jmp 0x4908e5
mov esi, dword [ebp + 8]
lea ecx, [ebp - 0x68]
mov edi, dword [ebp + 0xc]
mov eax, esi
sub eax, ecx
mov dword [ebp + 0x14], esi
mov dword [ebp - 8], eax
mov eax, edi
sub eax, ecx
mov dword [ebp - 0x14], eax
lea eax, [edi + 0x3f]
mov dword [ebp - 0xc], eax
mov eax, ecx
sub eax, edi
mov dword [ebp - 0x10], eax
push 0x49f9b0
push edx
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x68]
push eax
call fcn.004921f0
lea eax, [ebp - 0x29]
add esp, 0x10
xor edx, edx
cmp esi, eax
ja 0x4907ed
lea eax, [esi + 0x3f]
lea ecx, [ebp - 0x68]
cmp eax, ecx
jae 0x4907f9
cmp esi, dword [ebp - 0xc]
ja 0x490818
lea eax, [esi + 0x3f]
cmp eax, edi
jb 0x490818
mov ebx, dword [ebp - 8]
mov esi, dword [ebp - 0x14]
nop
lea ecx, [ebp - 0x68]
add ecx, edx
inc edx
mov al, byte [esi + ecx]
xor al, byte [ecx]
mov byte [ebx + ecx], al
cmp edx, 0x40
jl 0x490800
mov esi, dword [ebp + 0x14]
jmp 0x49084b
mov ebx, dword [ebp - 0x10]
mov edx, esi
mov eax, edi
sub edx, edi
mov ecx, 4
jmp 0x490830
lea eax, [eax + 0x10]
movdqu xmm0, xmmword [eax - 0x10]
movdqu xmm1, xmmword [eax + ebx - 0x10]
pxor xmm1, xmm0
movdqu xmmword [edx + eax - 0x10], xmm1
dec ecx
jne 0x490830
movzx ecx, byte [ebp - 0x20]
movzx eax, byte [ebp - 0x1f]
inc ecx
mov byte [ebp - 0x20], cl
shr ecx, 8
add ecx, eax
mov ebx, dword [ebp - 4]
movzx eax, byte [ebp - 0x1e]
mov byte [ebp - 0x1f], cl
shr ecx, 8
add ecx, eax
mov edx, dword [ebp + 0x1c]
movzx eax, byte [ebp - 0x1d]
mov byte [ebp - 0x1e], cl
shr ecx, 8
add ecx, eax
movzx eax, byte [ebp - 0x1c]
mov byte [ebp - 0x1d], cl
shr ecx, 8
add ecx, eax
movzx eax, byte [ebp - 0x1b]
mov byte [ebp - 0x1c], cl
shr ecx, 8
add ecx, eax
movzx eax, byte [ebp - 0x1a]
mov byte [ebp - 0x1b], cl
shr ecx, 8
add ecx, eax
mov byte [ebp - 0x1a], cl
shr ecx, 8
add byte [ebp - 0x19], cl
add ebx, 0xffffffc0
mov ecx, dword [ebp - 0x18]
adc ecx, 0xffffffff
mov dword [ebp - 4], ebx
add dword [ebp - 8], 0x40
add esi, 0x40
add dword [ebp - 0xc], 0x40
add edi, 0x40
sub dword [ebp - 0x10], 0x40
add dword [ebp - 0x14], 0x40
mov dword [ebp - 0x18], ecx
mov dword [ebp + 0x14], esi
test ecx, ecx
ja 0x4907c4
jb 0x4908e2
cmp ebx, 0x40
jae 0x4907c4
mov edx, dword [ebp + 0x1c]
mov eax, ebx
mov dword [ebp - 0x18], edi
or eax, ecx
je 0x4909a5
push 0x49f9b0
push edx
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x68]
push eax
call fcn.004921f0
add esp, 0x10
xor edx, edx
test ebx, ebx
jle 0x4909a5
cmp ebx, 0x10
jb 0x490988
lea ecx, [esi - 1]
lea eax, [ebp + ebx - 0x69]
add ecx, ebx
cmp esi, eax
ja 0x49092b
lea eax, [ebp - 0x68]
cmp ecx, eax
jae 0x490988
lea eax, [edi - 1]
add eax, ebx
cmp esi, eax
ja 0x490938
cmp ecx, edi
jae 0x490988
mov eax, ebx
and eax, reloc.WS2_32.dll_ntohs
jns 0x490946
dec eax
or eax, 0xfffffff0
inc eax
mov ecx, ebx
mov ebx, esi
sub ebx, edi
sub ecx, eax
mov dword [ebp - 0x14], ebx
mov eax, edi
mov esi, dword [ebp - 0x14]
lea ebx, [ebp - 0x68]
sub ebx, edi
mov dword [ebp - 0x10], ebx
mov ebx, dword [ebp - 4]
mov edi, dword [ebp - 0x10]
movdqu xmm0, xmmword [eax]
add edx, 0x10
lea eax, [eax + 0x10]
movdqu xmm1, xmmword [edi + eax - 0x10]
pxor xmm1, xmm0
movdqu xmmword [esi + eax - 0x10], xmm1
cmp edx, ecx
jl 0x490964
mov esi, dword [ebp + 0x14]
mov edi, dword [ebp - 0x18]
cmp edx, ebx
jge 0x4909a5
lea eax, [ebp - 0x68]
sub edi, eax
sub esi, eax
lea ecx, [ebp - 0x68]
add ecx, edx
inc edx
mov al, byte [edi + ecx]
xor al, byte [ecx]
mov byte [esi + ecx], al
cmp edx, ebx
jl 0x490993
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret