Function at 0x57de40
Capabilities:
Encode data using xor
Encrypt data using rc4 ksa

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x404
mov edi, edx
mov esi, ecx
mov ebp, dword [esp + 0x41c]
mov ebx, dword [esp + 0x418]
lea eax, [esp + 4]
push 0x400
push 0
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
cmp ebx, 0x8000
jae 0x57df97
test ebx, ebx
je 0x57deed
mov dword [esp], esi
mov eax, ebx
and eax, 3
xor ecx, ecx
cmp ebx, 4
jb 0x57deca
mov edx, ebx
and edx, 0xfffffffc
xor ecx, ecx
nop word cs:[eax + eax]
movzx esi, byte [edi + ecx]
inc dword [esp + esi*4 + 4]
movzx esi, byte [edi + ecx + 1]
inc dword [esp + esi*4 + 4]
movzx esi, byte [edi + ecx + 2]
inc dword [esp + esi*4 + 4]
movzx esi, byte [edi + ecx + 3]
inc dword [esp + esi*4 + 4]
add ecx, 4
cmp edx, ecx
jne 0x57dea0
test eax, eax
mov esi, dword [esp]
je 0x57deed
add edi, ecx
xor ecx, ecx
nop word cs:[eax + eax]
movzx edx, byte [edi + ecx]
inc dword [esp + edx*4 + 4]
inc ecx
cmp eax, ecx
jne 0x57dee0
movd xmm1, ebx
pxor xmm0, xmm0
xor eax, eax
movdqa xmm4, xmmword [0x8bb360]
nop
movdqu xmm5, xmmword [esp + eax*4 + 4]
movdqu xmm2, xmmword [esp + eax*4 + 0x14]
movdqa xmm3, xmm5
pxor xmm3, xmm4
movdqa xmm7, xmmword [0x8bb370]
pcmpgtd xmm7, xmm3
movdqa xmm3, xmm5
pand xmm3, xmm7
movdqa xmm6, xmmword [str._v_v_v_v]
pandn xmm7, xmm6
por xmm7, xmm3
movdqa xmm6, xmm2
pxor xmm6, xmm4
movdqa xmm3, xmmword [0x8bb370]
pcmpgtd xmm3, xmm6
movdqa xmm6, xmm2
pand xmm6, xmm3
pandn xmm3, xmmword [str._v_v_v_v]
por xmm3, xmm6
paddd xmm7, xmm7
paddd xmm5, xmm7
movdqu xmmword [esp + eax*4 + 4], xmm5
paddd xmm3, xmm3
paddd xmm2, xmm3
movdqu xmmword [esp + eax*4 + 0x14], xmm2
paddd xmm1, xmm7
paddd xmm0, xmm3
add eax, 8
cmp eax, 0x100
jne 0x57df00
jmp 0x57e07a
xor eax, eax
nop dword [eax]
movzx ecx, byte [edi + eax]
inc dword [esp + ecx*4 + 4]
add eax, 0x1d
cmp eax, ebx
jb 0x57dfa0
add ebx, 0x1c
mov ecx, 0x8d3dcb09
mov eax, ebx
mul ecx
shr edx, 4
movd xmm1, edx
pxor xmm0, xmm0
xor eax, eax
nop dword [eax + eax]
movdqu xmm7, xmmword [esp + eax*4 + 4]
movdqu xmm4, xmmword [esp + eax*4 + 0x14]
movdqa xmm2, xmm7
movdqa xmm5, xmmword [0x8bb360]
pxor xmm2, xmm5
movdqa xmm3, xmmword [0x8bb370]
pcmpgtd xmm3, xmm2
movdqa xmm2, xmm7
pand xmm2, xmm3
movdqa xmm6, xmmword [str._v_v_v_v]
pandn xmm3, xmm6
por xmm3, xmm2
movdqa xmm6, xmm4
pxor xmm6, xmm5
movdqa xmm2, xmmword [0x8bb370]
pcmpgtd xmm2, xmm6
movdqa xmm6, xmm4
pand xmm6, xmm2
pandn xmm2, xmmword [str._v_v_v_v]
por xmm2, xmm6
paddd xmm3, xmm3
movdqa xmm5, xmmword [0x8bb390]
por xmm3, xmm5
paddd xmm7, xmm3
movdqu xmmword [esp + eax*4 + 4], xmm7
paddd xmm2, xmm2
por xmm2, xmm5
paddd xmm4, xmm2
movdqu xmmword [esp + eax*4 + 0x14], xmm4
paddd xmm1, xmm3
paddd xmm0, xmm2
add eax, 8
cmp eax, 0x100
jne 0x57dfd0
paddd xmm0, xmm1
mov eax, dword [esp + 0x420]
mov ecx, dword [esp + 0x424]
mov edx, dword [esp + 0x428]
lea ebx, [esp + 4]
pshufd xmm1, xmm0, 0xee
paddd xmm1, xmm0
pshufd xmm0, xmm1, 0x55
paddd xmm0, xmm1
movd edi, xmm0
sub esp, 0x20
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], ebp
mov dword [esp + 4], ebx
mov dword [esp], esi
movd dword [esp + 8], xmm0
mov dword [esp + 0xc], 8
call fcn.005638b0
add esp, 0x20
xor eax, eax
mov ecx, 1
jmp 0x57e0fb
add ecx, 2
cmp ecx, 0x101
je 0x57e120
mov edx, dword [esp + ecx*4]
test edx, edx
je 0x57e10c
movzx esi, byte [ebp + ecx - 1]
imul edx, esi
add eax, edx
mov edx, dword [esp + ecx*4 + 4]
test edx, edx
je 0x57e0f0
movzx esi, byte [ebp + ecx]
imul edx, esi
add eax, edx
jmp 0x57e0f0
imul eax, eax, 0x7d
xor edx, edx
div edi
add esp, 0x404
pop esi
pop edi
pop ebx
pop ebp
ret