Function at 0x5f22f0
Capabilities:
Encrypt data using salsa20 or chacha

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
mov dword [ebp - 8], ecx
mov eax, dword [ebp + 0xc]
movzx ecx, byte [eax]
mov edx, dword [ebp + 0xc]
movzx eax, byte [edx + 1]
shl eax, 8
or ecx, eax
mov edx, dword [ebp + 0xc]
movzx eax, byte [edx + 2]
shl eax, 0x10
or ecx, eax
mov edx, dword [ebp + 0xc]
movzx eax, byte [edx + 3]
shl eax, 0x18
or ecx, eax
mov edx, dword [ebp + 8]
mov dword [edx + 0x454], ecx
mov eax, dword [ebp + 0xc]
movzx ecx, byte [eax + 4]
mov edx, dword [ebp + 0xc]
movzx eax, byte [edx + 5]
shl eax, 8
or ecx, eax
mov edx, dword [ebp + 0xc]
movzx eax, byte [edx + 6]
shl eax, 0x10
or ecx, eax
mov edx, dword [ebp + 0xc]
movzx eax, byte [edx + 7]
shl eax, 0x18
or ecx, eax
mov edx, dword [ebp + 8]
mov dword [edx + 0x458], ecx
mov eax, dword [ebp + 0xc]
movzx ecx, byte [eax + 8]
mov edx, dword [ebp + 0xc]
movzx eax, byte [edx + 9]
shl eax, 8
or ecx, eax
mov edx, dword [ebp + 0xc]
movzx eax, byte [edx + 0xa]
shl eax, 0x10
or ecx, eax
mov edx, dword [ebp + 0xc]
movzx eax, byte [edx + 0xb]
shl eax, 0x18
or ecx, eax
mov edx, dword [ebp + 8]
mov dword [edx + 0x45c], ecx
mov eax, dword [ebp + 0xc]
movzx ecx, byte [eax + 0xc]
mov edx, dword [ebp + 0xc]
movzx eax, byte [edx + 0xd]
shl eax, 8
or ecx, eax
mov edx, dword [ebp + 0xc]
movzx eax, byte [edx + 0xe]
shl eax, 0x10
or ecx, eax
mov edx, dword [ebp + 0xc]
movzx eax, byte [edx + 0xf]
shl eax, 0x18
or ecx, eax
mov edx, dword [ebp + 8]
mov dword [edx + 0x460], ecx
cmp dword [ebp + 0x10], 0x100
jne 0x5f23e3
mov eax, dword [ebp + 0xc]
add eax, 0x10
mov dword [ebp + 0xc], eax
mov dword [ebp - 4], str.expand_32_byte_k
jmp 0x5f23ea
mov dword [ebp - 4], str.expand_16_byte_k
mov ecx, dword [ebp + 0xc]
movzx edx, byte [ecx]
mov eax, dword [ebp + 0xc]
movzx ecx, byte [eax + 1]
shl ecx, 8
or edx, ecx
mov eax, dword [ebp + 0xc]
movzx ecx, byte [eax + 2]
shl ecx, 0x10
or edx, ecx
mov eax, dword [ebp + 0xc]
movzx ecx, byte [eax + 3]
shl ecx, 0x18
or edx, ecx
mov eax, dword [ebp + 8]
mov dword [eax + 0x464], edx
mov ecx, dword [ebp + 0xc]
movzx edx, byte [ecx + 4]
mov eax, dword [ebp + 0xc]
movzx ecx, byte [eax + 5]
shl ecx, 8
or edx, ecx
mov eax, dword [ebp + 0xc]
movzx ecx, byte [eax + 6]
shl ecx, 0x10
or edx, ecx
mov eax, dword [ebp + 0xc]
movzx ecx, byte [eax + 7]
shl ecx, 0x18
or edx, ecx
mov eax, dword [ebp + 8]
mov dword [eax + 0x468], edx
mov ecx, dword [ebp + 0xc]
movzx edx, byte [ecx + 8]
mov eax, dword [ebp + 0xc]
movzx ecx, byte [eax + 9]
shl ecx, 8
or edx, ecx
mov eax, dword [ebp + 0xc]
movzx ecx, byte [eax + 0xa]
shl ecx, 0x10
or edx, ecx
mov eax, dword [ebp + 0xc]
movzx ecx, byte [eax + 0xb]
shl ecx, 0x18
or edx, ecx
mov eax, dword [ebp + 8]
mov dword [eax + 0x46c], edx
mov ecx, dword [ebp + 0xc]
movzx edx, byte [ecx + 0xc]
mov eax, dword [ebp + 0xc]
movzx ecx, byte [eax + 0xd]
shl ecx, 8
or edx, ecx
mov eax, dword [ebp + 0xc]
movzx ecx, byte [eax + 0xe]
shl ecx, 0x10
or edx, ecx
mov eax, dword [ebp + 0xc]
movzx ecx, byte [eax + 0xf]
shl ecx, 0x18
or edx, ecx
mov eax, dword [ebp + 8]
mov dword [eax + 0x470], edx
mov ecx, dword [ebp - 4]
movsx edx, byte [ecx]
mov eax, dword [ebp - 4]
movsx ecx, byte [eax + 1]
shl ecx, 8
or edx, ecx
mov eax, dword [ebp - 4]
movsx ecx, byte [eax + 2]
shl ecx, 0x10
or edx, ecx
mov eax, dword [ebp - 4]
movsx ecx, byte [eax + 3]
shl ecx, 0x18
or edx, ecx
mov eax, dword [ebp + 8]
mov dword [eax + 0x444], edx
mov ecx, dword [ebp - 4]
movsx edx, byte [ecx + 4]
mov eax, dword [ebp - 4]
movsx ecx, byte [eax + 5]
shl ecx, 8
or edx, ecx
mov eax, dword [ebp - 4]
movsx ecx, byte [eax + 6]
shl ecx, 0x10
or edx, ecx
mov eax, dword [ebp - 4]
movsx ecx, byte [eax + 7]
shl ecx, 0x18
or edx, ecx
mov eax, dword [ebp + 8]
mov dword [eax + 0x448], edx
mov ecx, dword [ebp - 4]
movsx edx, byte [ecx + 8]
mov eax, dword [ebp - 4]
movsx ecx, byte [eax + 9]
shl ecx, 8
or edx, ecx
mov eax, dword [ebp - 4]
movsx ecx, byte [eax + 0xa]
shl ecx, 0x10
or edx, ecx
mov eax, dword [ebp - 4]
movsx ecx, byte [eax + 0xb]
shl ecx, 0x18
or edx, ecx
mov eax, dword [ebp + 8]
mov dword [eax + 0x44c], edx
mov ecx, dword [ebp - 4]
movsx edx, byte [ecx + 0xc]
mov eax, dword [ebp - 4]
movsx ecx, byte [eax + 0xd]
shl ecx, 8
or edx, ecx
mov eax, dword [ebp - 4]
movsx ecx, byte [eax + 0xe]
shl ecx, 0x10
or edx, ecx
mov eax, dword [ebp - 4]
movsx ecx, byte [eax + 0xf]
shl ecx, 0x18
or edx, ecx
mov eax, dword [ebp + 8]
mov dword [eax + 0x450], edx
mov esp, ebp
pop ebp
ret 0x10