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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x4c
mov esi, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
cmp byte [0x72dce4], 0
je 0x5770a2
mov ecx, dword [0x72dd28]
call dword [section..00cfg]
push 5
call ecx
add esp, 4
mov edi, eax
test eax, eax
sete dl
je 0x5770b5
mov ecx, dword [0x72dd30]
call dword [section..00cfg]
push edi
call ecx
add esp, 4
test ebx, ebx
jle 0x577093
test esi, esi
je 0x577093
xor edx, edx
cmp dword [0x73ee20], 0
je 0x576fd5
mov al, byte [0x73eea0]
movzx eax, al
cmp eax, ebx
jb 0x576ca3
sub eax, ebx
lea eax, [eax + 0x73ee60]
cmp ebx, 4
jne 0x5770d3
mov eax, dword [eax]
mov dword [esi], eax
sub byte [0x73eea0], bl
test dl, dl
jne 0x5770cb
mov ecx, dword [0x72dd38]
call dword [section..00cfg]
push edi
call ecx
add esp, 0x50
pop esi
pop edi
pop ebx
pop ebp
ret
test eax, eax
sete cl
mov dword [ebp - 0x50], edi
mov dword [ebp - 0x3c], edx
test cl, 1
je 0x5770e7
mov dword [ebp - 0x48], esi
mov dword [ebp - 0x4c], ebx
mov eax, dword [0x73ee50]
inc eax
mov dword [ebp - 0x10], eax
mov dword [0x73ee50], eax
mov eax, dword [0x73ee20]
mov dword [ebp - 0x18], eax
mov eax, dword [0x73ee24]
mov dword [ebp - 0x1c], eax
mov eax, dword [0x73ee28]
mov dword [ebp - 0x20], eax
mov eax, dword [0x73ee2c]
mov dword [ebp - 0x24], eax
mov ecx, dword [0x73ee30]
mov eax, dword [0x73ee34]
mov dword [ebp - 0x40], eax
mov eax, dword [0x73ee38]
mov ebx, dword [0x73ee3c]
mov edx, dword [0x73ee40]
mov dword [ebp - 0x28], edx
mov edx, dword [0x73ee44]
mov dword [ebp - 0x2c], edx
mov edx, dword [0x73ee48]
mov dword [ebp - 0x30], edx
mov edx, dword [0x73ee4c]
mov dword [ebp - 0x34], edx
mov edx, dword [0x73ee54]
mov dword [ebp - 0x14], edx
mov edx, dword [0x73ee58]
mov dword [ebp - 0x38], edx
mov dword [ebp - 0x54], 0xa
mov edx, dword [0x73ee5c]
mov dword [ebp - 0x44], edx
mov edi, dword [ebp - 0x18]
add edi, ecx
mov edx, dword [ebp - 0x10]
xor edx, edi
rol edx, 0x10
mov esi, edx
mov edx, dword [ebp - 0x28]
add edx, esi
xor ecx, edx
rol ecx, 0xc
add edi, ecx
mov dword [ebp - 0x18], edi
xor esi, edi
rol esi, 8
mov dword [ebp - 0x10], esi
add edx, esi
mov dword [ebp - 0x28], edx
xor ecx, edx
rol ecx, 7
mov dword [ebp - 0x58], ecx
mov edx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x40]
add edx, esi
mov edi, dword [ebp - 0x14]
xor edi, edx
mov ecx, edx
rol edi, 0x10
mov edx, dword [ebp - 0x2c]
add edx, edi
xor esi, edx
rol esi, 0xc
add ecx, esi
mov dword [ebp - 0x1c], ecx
xor edi, ecx
rol edi, 8
mov dword [ebp - 0x14], edi
add edx, edi
mov dword [ebp - 0x2c], edx
xor esi, edx
rol esi, 7
mov edx, dword [ebp - 0x20]
add edx, eax
mov ecx, dword [ebp - 0x38]
xor ecx, edx
rol ecx, 0x10
mov edi, dword [ebp - 0x30]
add edi, ecx
xor eax, edi
rol eax, 0xc
add edx, eax
mov dword [ebp - 0x20], edx
xor ecx, edx
rol ecx, 8
mov dword [ebp - 0x38], ecx
add edi, ecx
mov dword [ebp - 0x30], edi
xor eax, edi
rol eax, 7
mov ecx, dword [ebp - 0x24]
add ecx, ebx
mov edx, dword [ebp - 0x44]
xor edx, ecx
rol edx, 0x10
mov edi, dword [ebp - 0x34]
add edi, edx
xor ebx, edi
rol ebx, 0xc
add ecx, ebx
mov dword [ebp - 0x24], ecx
xor edx, ecx
rol edx, 8
add edi, edx
mov dword [ebp - 0x34], edi
xor ebx, edi
rol ebx, 7
mov ecx, dword [ebp - 0x18]
add ecx, esi
xor edx, ecx
rol edx, 0x10
mov edi, dword [ebp - 0x30]
add edi, edx
xor esi, edi
rol esi, 0xc
add ecx, esi
mov dword [ebp - 0x18], ecx
xor edx, ecx
rol edx, 8
mov dword [ebp - 0x44], edx
add edi, edx
mov dword [ebp - 0x30], edi
xor esi, edi
rol esi, 7
mov dword [ebp - 0x40], esi
mov esi, dword [ebp - 0x1c]
add esi, eax
mov edx, dword [ebp - 0x10]
xor edx, esi
rol edx, 0x10
mov edi, dword [ebp - 0x34]
add edi, edx
xor eax, edi
rol eax, 0xc
add esi, eax
mov dword [ebp - 0x1c], esi
xor edx, esi
rol edx, 8
mov dword [ebp - 0x10], edx
add edi, edx
mov dword [ebp - 0x34], edi
xor eax, edi
rol eax, 7
mov ecx, dword [ebp - 0x20]
add ecx, ebx
mov edi, dword [ebp - 0x14]
xor edi, ecx
rol edi, 0x10
mov edx, dword [ebp - 0x28]
add edx, edi
xor ebx, edx
rol ebx, 0xc
add ecx, ebx
mov dword [ebp - 0x20], ecx
xor edi, ecx
rol edi, 8
mov dword [ebp - 0x14], edi
add edx, edi
mov dword [ebp - 0x28], edx
xor ebx, edx
rol ebx, 7
mov edx, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x58]
add edx, ecx
mov edi, dword [ebp - 0x38]
xor edi, edx
mov esi, edx
rol edi, 0x10
mov edx, dword [ebp - 0x2c]
add edx, edi
xor ecx, edx
rol ecx, 0xc
add esi, ecx
mov dword [ebp - 0x24], esi
xor edi, esi
rol edi, 8
mov dword [ebp - 0x38], edi
add edx, edi
mov dword [ebp - 0x2c], edx
xor ecx, edx
rol ecx, 7
dec dword [ebp - 0x54]
jne 0x576d4a
mov edx, dword [ebp - 0x18]
add edx, dword [0x73ee20]
mov dword [0x73ee60], edx
mov edx, dword [ebp - 0x1c]
add edx, dword [0x73ee24]
mov dword [0x73ee64], edx
mov edx, dword [ebp - 0x20]
add edx, dword [0x73ee28]
mov dword [0x73ee68], edx
mov edx, dword [ebp - 0x24]
add edx, dword [0x73ee2c]
mov dword [0x73ee6c], edx
add ecx, dword [0x73ee30]
mov dword [0x73ee70], ecx
mov ecx, dword [ebp - 0x40]
add ecx, dword [0x73ee34]
mov dword [0x73ee74], ecx
add eax, dword [0x73ee38]
mov dword [0x73ee78], eax
add ebx, dword [0x73ee3c]
mov dword [0x73ee7c], ebx
mov eax, dword [ebp - 0x28]
add eax, dword [0x73ee40]
mov dword [0x73ee80], eax
mov eax, dword [ebp - 0x2c]
add eax, dword [0x73ee44]
mov dword [0x73ee84], eax
mov eax, dword [ebp - 0x30]
add eax, dword [0x73ee48]
mov dword [0x73ee88], eax
mov eax, dword [ebp - 0x34]
add eax, dword [0x73ee4c]
mov dword [0x73ee8c], eax
mov eax, dword [ebp - 0x10]
add eax, dword [0x73ee50]
mov dword [0x73ee90], eax
mov eax, dword [ebp - 0x14]
add eax, dword [0x73ee54]
mov dword [0x73ee94], eax
mov eax, dword [ebp - 0x38]
add eax, dword [0x73ee58]
mov dword [0x73ee98], eax
mov eax, dword [ebp - 0x44]
add eax, dword [0x73ee5c]
mov dword [0x73ee9c], eax
mov byte [0x73eea0], 0x40
mov eax, 0x40
xor ecx, ecx
mov ebx, dword [ebp - 0x4c]
cmp ebx, 0x40
mov edi, dword [ebp - 0x50]
mov esi, dword [ebp - 0x48]
mov edx, dword [ebp - 0x3c]
jle 0x576c69
jmp 0x576cae
mov dword [ebp - 0x3c], edx
cmp byte [0x72dce4], 0
je 0x57710c
mov ecx, dword [0x72dd28]
call dword [section..00cfg]
push 2
call ecx
add esp, 4
test eax, eax
je 0x57710c
mov esi, eax
mov ecx, dword [0x72dd30]
call dword [section..00cfg]
push esi
call ecx
add esp, 4
mov dword [ebp - 0x10], esi
mov esi, dword [0x73edf8]
mov ecx, dword [0x72dd38]
call dword [section..00cfg]
push dword [ebp - 0x10]
call ecx
add esp, 4
movups xmm0, xmmword [str.expand_32_byte_k]
movups xmmword [0x73ee20], xmm0
test esi, esi
je 0x577117
mov ecx, dword [0x72ddf4]
test ecx, ecx
jne 0x577136
mov ecx, dword [esi + 0x38]
call dword [section..00cfg]
push 0x73ee30
push 0x2c
push esi
call ecx
add esp, 0xc
mov eax, dword [0x73ee50]
mov dword [0x73ee5c], eax
mov dword [0x73ee50], 0
mov byte [0x73eea0], 0
xor eax, eax
mov esi, dword [ebp + 0xc]
mov edx, dword [ebp - 0x3c]
jmp 0x576c62
mov dword [0x73ee20], 0
jmp 0x576c8c
test ebx, ebx
jle 0x5770c1
test esi, esi
je 0x5770c1
mov eax, ebx
xor edi, edi
mov dl, 1
jmp 0x576c50
test ebx, ebx
jle 0x5770c1
test esi, esi
jne 0x576c50
mov dword [0x73ee20], 0
add esp, 0x4c
jmp 0x576c9e
push ebx
push eax
push esi
mov esi, edx
call fcn.00670ee0
mov edx, esi
add esp, 0xc
jmp 0x576c7e
push eax
push 0x73ee60
push esi
call fcn.00670ee0
add esp, 0xc
movzx eax, byte [0x73eea0]
sub ebx, eax
mov dword [ebp - 0x4c], ebx
add esi, eax
mov dword [ebp - 0x48], esi
jmp 0x576cbd
mov esi, dword [0x73edf8]
jmp 0x577031
xorps xmm0, xmm0
movups xmmword [0x73ee4c], xmm0
movups xmmword [0x73ee40], xmm0
movups xmmword [0x73ee30], xmm0
xor eax, eax
jmp 0x577070
xor eax, eax
mov dword [0x73ee58], eax
mov dword [0x73ee54], eax
xorps xmm0, xmm0
movups xmmword [0x73ee44], xmm0
movups xmmword [0x73ee34], xmm0
mov dword [0x73ee30], ecx
jmp 0x577070