Function at 0x103b9a0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x18
push esi
mov dword [ebp - 0x10], ecx
mov eax, dword [ebp - 0x10]
add eax, 2
mov dword [ebp - 4], eax
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x650]
movzx eax, byte [edx]
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 8]
mov al, byte [edx + eax + 0x96c]
mov byte [ecx + 0xa6e], al
mov ecx, dword [ebp - 4]
movzx edx, byte [ecx + 1]
sub edx, 1
shl edx, 7
mov eax, dword [ebp + 8]
lea ecx, [eax + edx + 0xa70]
mov edx, dword [ebp + 8]
movzx eax, byte [edx + 0xa6d]
mov edx, dword [ebp - 0x10]
mov edx, dword [edx + 8]
movzx edx, word [edx]
mov esi, dword [ebp + 8]
movzx edx, byte [esi + edx + 0x86b]
add eax, edx
mov edx, dword [ebp + 8]
movzx edx, byte [edx + 0xa6e]
add eax, edx
mov edx, dword [ebp - 4]
movzx edx, byte [edx]
mov esi, dword [ebp + 8]
movzx edx, byte [esi + edx + 0x96c]
lea eax, [eax + edx*2]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 0x664]
sar edx, 0x1a
and edx, 0x20
add eax, edx
lea eax, [ecx + eax*2]
mov dword [ebp - 8], eax
mov ecx, dword [ebp + 8]
add ecx, 0x4a70
mov dword [ebp - 0xc], ecx
mov edx, dword [ebp - 0xc]
mov eax, dword [edx + 8]
shr eax, 0xe
mov ecx, dword [ebp - 0xc]
mov dword [ecx + 8], eax
mov edx, dword [ebp - 8]
movzx ecx, word [edx]
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0xc]
mov edx, dword [edx + 4]
sub edx, dword [eax]
mov esi, dword [ebp - 0xc]
mov eax, edx
xor edx, edx
div dword [esi + 8]
cmp eax, ecx
jae 0x103bb44
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 4]
mov dword [eax + 0x650], ecx
mov edx, dword [ebp - 4]
movzx eax, byte [edx + 1]
mov dh, 0x42
add dword [ebx], esi
leave
cmp eax, 0x80
setl cl
mov edx, dword [ebp - 4]
movzx eax, byte [edx + 1]
add eax, ecx
mov ecx, dword [ebp - 4]
mov byte [ecx + 1], al
mov edx, dword [ebp + 8]
mov dword [edx + 0x4a7c], 0
mov eax, dword [ebp - 8]
movzx ecx, word [eax]
mov edx, dword [ebp + 8]
mov dword [edx + 0x4a80], ecx
mov eax, 1
test eax, eax
je 0x103baf3
mov ecx, dword [ebp - 8]
movzx edx, word [ecx]
add edx, 0x80
mov eax, dword [ebp - 8]
movzx ecx, word [eax]
add ecx, 0x20
sar ecx, 7
sub edx, ecx
movzx edx, dx
mov dword [ebp - 0x14], edx
jmp 0x103bb16
mov eax, dword [ebp - 8]
movzx ecx, word [eax]
add ecx, 0x80
mov edx, dword [ebp - 8]
movzx eax, word [edx]
add eax, 0x20
sar eax, 7
sub ecx, eax
and ecx, 0xffff
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp - 8]
mov dx, word [ebp - 0x14]
mov word [ecx], dx
mov eax, dword [ebp + 8]
mov byte [eax + 0xa6d], 1
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x664]
add edx, 1
mov eax, dword [ebp + 8]
mov dword [eax + 0x664], edx
jmp 0x103bc02
mov ecx, dword [ebp - 8]
movzx edx, word [ecx]
mov eax, dword [ebp + 8]
mov dword [eax + 0x4a7c], edx
mov ecx, 1
test ecx, ecx
je 0x103bb78
mov edx, dword [ebp - 8]
movzx eax, word [edx]
mov ecx, dword [ebp - 8]
movzx edx, word [ecx]
add edx, 0x20
sar edx, 7
sub eax, edx
movzx eax, ax
mov dword [ebp - 0x18], eax
jmp 0x103bb95
mov ecx, dword [ebp - 8]
movzx edx, word [ecx]
mov eax, dword [ebp - 8]
movzx ecx, word [eax]
add ecx, 0x20
sar ecx, 7
sub edx, ecx
and edx, 0xffff
mov dword [ebp - 0x18], edx
mov edx, dword [ebp - 8]
mov ax, word [ebp - 0x18]
mov word [edx], ax
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x4a80], 0x4000
mov edx, dword [ebp - 8]
movzx eax, word [edx]
sar eax, 0xa
movzx ecx, byte [eax + 0x2d3b5c]
mov edx, dword [ebp + 8]
mov dword [edx + 0x658], ecx
mov eax, dword [ebp + 8]
mov dword [eax + 0x654], 1
mov ecx, dword [ebp - 4]
movzx edx, byte [ecx]
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 8]
mov cl, byte [ecx + 0xa6c]
mov byte [eax + edx + 0x66c], cl
mov edx, dword [ebp + 8]
mov byte [edx + 0xa6d], 0
mov eax, dword [ebp + 8]
mov dword [eax + 0x650], 0xa8fa0000
mov ch, 0x35
insb byte es:[edi], dx
cwde
mov dl, 0x42
salc
leave
mov ebx, 0xbcf940db
lodsb al, byte [esi]