Function at 0x10294a10
Capabilities:
Encode data using xor
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 8
xor edx, edx
mov ebx, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
movsx edi, word [esi]
mov eax, dword [ebp + 0xc]
movsx eax, word [eax]
mov ecx, edi
sub ecx, eax
cmp ebx, 2
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x10], eax
jl 0x10294a69
xor edx, edx
xor eax, eax
inc eax
movsx ebx, word [esi + eax*2]
movsx edi, di
mov esi, dword [ebp + 0xc]
movsx esi, word [esi + eax*2]
add esi, edi
mov edi, ebx
sub edi, esi
mov esi, dword [ebp + 8]
cmp edi, ecx
cmovl ecx, edi
mov edi, ebx
mov ebx, dword [ebp + 0x10]
cmovl edx, eax
inc eax
cmp ebx, eax
jne 0x10294a3e
jmp 0x10294a6b
xor edx, edx
movsx esi, word [esi + ebx*2 - 2]
mov eax, dword [ebp + 0xc]
movsx eax, word [eax + ebx*2]
add esi, eax
mov edi, 0x8000
sub edi, esi
cmp edi, ecx
cmovge edi, ecx
cmovl edx, ebx
test edi, edi
jns 0x10294c19
test edx, edx
je 0x10294aa9
cmp edx, ebx
jne 0x10294ac4
mov ecx, 0xffff8000
sub ecx, eax
mov esi, dword [ebp + 8]
mov word [esi + ebx*2 - 2], cx
jmp 0x10294ab2
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x10]
mov word [esi], ax
mov edx, dword [ebp - 0x14]
inc edx
cmp edx, 0x14
jne 0x10294a21
jmp 0x10294b66
xor ecx, ecx
test edx, edx
jle 0x10294adc
xor eax, eax
mov edi, dword [ebp + 0xc]
movsx esi, word [edi + eax*2]
add ecx, esi
inc eax
cmp edx, eax
jne 0x10294acf
jmp 0x10294adf
mov edi, dword [ebp + 0xc]
movsx eax, word [edi + edx*2]
sar eax, 1
mov dword [ebp - 0x10], eax
add ecx, eax
mov eax, 0x8000
cmp edx, ebx
jge 0x10294b0b
mov esi, edi
mov eax, 0x8000
mov edi, ebx
mov ebx, esi
movsx esi, word [esi + edi*2]
sub eax, esi
mov esi, ebx
dec edi
cmp edi, edx
jg 0x10294afc
mov edi, dword [ebp + 8]
movsx esi, word [edi + edx*2 - 2]
movsx edi, word [edi + edx*2]
add edi, esi
mov esi, edi
sar esi, 1
and edi, 1
add edi, esi
sub eax, dword [ebp - 0x10]
cmp ecx, eax
jle 0x10294b3b
mov ebx, ecx
cmp edi, ecx
mov esi, dword [ebp + 8]
jg 0x10294b4b
cmp edi, eax
cmovg eax, edi
mov ebx, eax
jmp 0x10294b4b
mov ebx, eax
cmp edi, eax
mov esi, dword [ebp + 8]
jg 0x10294b4b
cmp edi, ecx
cmovg ecx, edi
mov ebx, ecx
sub ebx, dword [ebp - 0x10]
mov word [esi + edx*2 - 2], bx
mov eax, dword [ebp + 0xc]
add bx, word [eax + edx*2]
mov word [esi + edx*2], bx
mov ebx, dword [ebp + 0x10]
jmp 0x10294ab2
push ebx
push esi
call fcn.10294c30
add esp, 8
mov edi, dword [ebp + 0xc]
movzx eax, word [edi]
movzx ecx, word [esi]
cmp cx, ax
cmovg eax, ecx
mov word [esi], ax
cmp ebx, 2
jl 0x10294bff
xor ecx, ecx
inc ecx
movzx edx, word [edi + ecx*2]
mov esi, eax
add si, dx
movsx esi, si
sar esi, 0xf
xor esi, 0xffff8000
add ax, dx
cmovo eax, esi
mov esi, dword [ebp + 8]
movzx edx, word [esi + ecx*2]
cmp dx, ax
cmovg eax, edx
mov word [esi + ecx*2], ax
inc ecx
cmp ebx, ecx
jne 0x10294b8a
movsx ecx, word [edi + ebx*2]
mov eax, 0x8000
sub eax, ecx
movsx ecx, word [esi + ebx*2 - 2]
cmp ecx, eax
cmovl eax, ecx
mov word [esi + ebx*2 - 2], ax
cmp ebx, 2
jl 0x10294c19
cwde
mov ecx, dword [ebp + 0xc]
movsx ecx, word [ecx + ebx*2 - 2]
sub eax, ecx
mov edx, dword [ebp + 8]
movsx ecx, word [edx + ebx*2 - 4]
cmp ecx, eax
cmovl eax, ecx
mov word [edx + ebx*2 - 4], ax
dec ebx
cmp ebx, 1
jne 0x10294bda
jmp 0x10294c19
movsx eax, word [edi + ebx*2]
mov ecx, 0x8000
sub ecx, eax
movsx eax, word [esi + ebx*2 - 2]
cmp eax, ecx
cmovl ecx, eax
mov word [esi + ebx*2 - 2], cx
add esp, 8
pop esi
pop edi
pop ebx
pop ebp
ret