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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
mov eax, dword [ebp + 8]
push ebx
mov ebx, ecx
push esi
push edi
mov dword [ebp - 4], ebx
movzx eax, word [eax + ebx + 0xa7a]
lea edi, [ebx + 0x2a7a]
mov dword [ebp - 0x28], eax
mov esi, eax
mov eax, dword [ebp + 0xc]
push edi
push 0
movzx eax, word [eax + ebx + 0xa7a]
mov dword [ebp + 8], eax
lea eax, [esi + 3]
push eax
call fcn.10001db0
mov eax, 0x8126
cmp word [ebx + 0x2c48], ax
jne 0x100029e6
mov ecx, 0x2c4b
lea eax, [ecx - 1]
jmp 0x10002a15
cmp word [ebx + 0x2c35], ax
jne 0x100029f9
mov ecx, 0x2c38
lea eax, [ecx - 1]
jmp 0x10002a15
mov eax, 0x3126
cmp word [ebx + 0x2c5d], ax
jne 0x10002c0e
mov ecx, 0x2c5b
mov eax, 0x2c5a
mov al, byte [ebx + eax]
cmp al, 0x37
je 0x10002a24
cmp al, 0xb8
jne 0x10002c0e
movzx eax, word [ecx + ebx]
mov ecx, ebx
push edi
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x20], eax
lea eax, [esi + 4]
push 0
push eax
call fcn.10001db0
mov edx, ebx
mov eax, 0xfe81
cmp word [edx + 0x2afa], ax
jne 0x10002a53
mov eax, 0x2afc
jmp 0x10002a75
cmp word [edx + 0x2ae7], ax
jne 0x10002a63
mov eax, 0x2ae9
jmp 0x10002a75
cmp word [edx + 0x2b10], ax
jne 0x10002c0e
mov eax, 0x2b12
movzx eax, word [eax + edx]
movzx ecx, word [edx + 0xc6a]
movzx esi, byte [edx + 0xc69]
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x10], eax
mov eax, ecx
shr eax, 2
and eax, 0xc0
shl ecx, 8
add eax, esi
add ecx, eax
movzx eax, cx
cmp eax, ebx
ja 0x10002c0e
movzx ecx, word [edx + 0xc6e]
mov eax, ecx
shl ecx, 8
shr eax, 2
and eax, 0xc0
add eax, esi
mov esi, dword [ebp - 0x10]
add ecx, eax
movzx eax, cx
cmp eax, esi
jb 0x10002c0e
mov al, byte [edx + 0x1cd6e]
cmp al, 0x80
je 0x10002ae1
cmp al, 0x81
jne 0x10002c0e
movzx eax, byte [edx + 0x1cd71]
movzx ecx, word [edx + 0x1cd6f]
and eax, 0x3f
and ecx, 0x3f
mov dword [ebp - 8], eax
or eax, ecx
mov dword [ebp - 0x24], ecx
je 0x10002c0e
cmp ebx, esi
jae 0x10002bf2
nop dword [eax + eax]
movzx eax, bx
xor esi, esi
mov bx, ax
mov dword [ebp - 0xc], esi
and eax, 0xc0
shr bx, 8
lea eax, [ebx + eax*4]
and ebx, 0xc0
and eax, 0xffc0
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 8]
test eax, eax
je 0x10002be2
mov ebx, 1
cmp ecx, ebx
jbe 0x10002bd6
mov eax, dword [ebp - 0x14]
or eax, esi
mov dword [ebp + 0xc], eax
push edi
mov esi, ebx
mov ecx, edx
or esi, dword [ebp - 0x18]
push eax
push esi
call fcn.10001db0
mov eax, dword [ebp + 0x10]
cmp eax, 0xdd8
jne 0x10002b85
mov ecx, dword [ebp - 4]
push 0x200
push dword [ebp - 0x1c]
push edi
push edi
call fcn.100020d0
jmp 0x10002bb1
cmp eax, 0xdf2
jne 0x10002c0e
mov eax, dword [ebp - 0x20]
mov ecx, edi
movzx eax, ax
mov edx, 0x1ff
nop dword [eax]
xor word [ecx], ax
lea ecx, [ecx + 1]
ror ax, 1
movzx eax, ax
sub edx, 1
jne 0x10002ba0
mov ecx, dword [ebp - 4]
push edi
push dword [ebp + 0xc]
push esi
call fcn.10001ec0
test eax, eax
je 0x10002c0e
mov ecx, dword [ebp - 0x24]
inc ebx
mov edx, dword [ebp - 4]
mov eax, dword [ebp + 0xc]
cmp ebx, ecx
jl 0x10002b58
mov esi, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
inc esi
mov dword [ebp - 0xc], esi
cmp esi, eax
jl 0x10002b43
mov ebx, dword [ebp + 8]
inc ebx
mov dword [ebp + 8], ebx
cmp ebx, dword [ebp - 0x10]
jl 0x10002b10
mov eax, dword [ebp - 0x28]
mov byte [edi], 0
dec eax
pop edi
pop esi
mov word [edx + 0x2a7b], ax
mov eax, 4
pop ebx
mov esp, ebp
pop ebp
ret 0xc
pop edi
pop esi
mov eax, 5
pop ebx
mov esp, ebp
pop ebp
ret 0xc