Function at 0x10009e80
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
push ebx
push esi
push edi
mov edi, ecx
mov eax, dword [edi + 0x1c]
mov edx, dword [edi + 0x3c]
mov ebx, dword [edi + 0x28]
mov esi, dword [edi + 0x2c]
mov ecx, dword [edi + 0x20]
mov dword [ebp - 0xc], eax
mov eax, dword [edi + 0x24]
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x1c], edx
mov edx, dword [edi + 0x38]
mov dword [ebp - 0x10], eax
and dword [ebp - 0x10], 0x7fff
mov dword [ebp - 4], edx
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x18], esi
mov eax, dword [ebp - 8]
mov edx, dword [edi + 0x88]
test edx, edx
jne 0x10009ee0
cmp dword [edi + 0x80], edx
je 0x1000a2b1
test ecx, ecx
je 0x1000a2b1
mov esi, dword [ebp - 0xc]
mov eax, 0x1000
mov ebx, dword [edi + 0x88]
add esi, ecx
sub eax, ecx
and esi, 0x7fff
cmp ebx, eax
cmovb eax, ebx
sub ebx, eax
mov dword [ebp - 0x2c], eax
add ecx, eax
mov dword [edi + 0x88], ebx
mov ebx, dword [ebp - 0x14]
mov dword [ebp - 0x20], ecx
test eax, eax
je 0x10009f88
mov ebx, eax
mov eax, 0x8000
mov ecx, ebx
sub eax, esi
cmp eax, ebx
cmovb ecx, eax
lea eax, [edi + 0x90]
push ecx
push dword [edi + 0x84]
add eax, esi
mov dword [ebp - 0x28], ecx
push eax
call fcn.1002cae0
add esp, 0xc
cmp esi, 0x101
jae 0x10009f6d
mov eax, 0x101
sub eax, esi
cmp dword [ebp - 0x28], eax
cmovb eax, dword [ebp - 0x28]
push eax
push dword [edi + 0x84]
lea eax, [edi + 0x8090]
add eax, esi
push eax
call fcn.1002cae0
add esp, 0xc
mov eax, dword [ebp - 0x28]
add esi, eax
add dword [edi + 0x84], eax
and esi, 0x7fff
sub ebx, eax
jne 0x10009f16
mov ebx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x20]
mov eax, 0x8000
sub eax, ecx
cmp eax, dword [ebp - 8]
cmovae eax, dword [ebp - 8]
cmp dword [edi + 0x80], 0
jne 0x10009fab
cmp ecx, 0x1000
jb 0x1000a2ae
mov esi, dword [ebp - 0x18]
mov dword [ebp - 8], eax
cmp ecx, 4
jb 0x1000a1e1
mov eax, dword [ebp - 0x10]
nop dword [eax]
mov ebx, dword [ebp - 0xc]
add eax, 0x90
add eax, edi
mov edx, 1
mov dword [ebp - 0x2c], eax
mov ecx, dword [eax]
and ecx, 0xffffff
mov eax, ecx
mov dword [ebp - 0x28], ecx
shr eax, 0x11
xor eax, ecx
and eax, 0xfff
movzx ecx, word [edi + eax*2 + 0x29272]
mov word [edi + eax*2 + 0x29272], bx
mov eax, ebx
mov ebx, dword [ebp - 0x14]
sub eax, ecx
movzx eax, ax
mov dword [ebp - 0x24], eax
cmp eax, dword [ebp - 8]
ja 0x1000a11d
and ecx, 0x7fff
lea eax, [edi + 0x90]
add eax, ecx
mov ecx, dword [eax]
and ecx, 0xffffff
cmp ecx, dword [ebp - 0x28]
jne 0x1000a11d
mov edx, dword [ebp - 0x2c]
mov esi, 0x20
mov cx, word [edx + 2]
add edx, 2
add eax, 2
cmp cx, word [eax]
jne 0x1000a077
mov cx, word [edx + 2]
add edx, 2
add eax, 2
cmp cx, word [eax]
jne 0x1000a077
mov cx, word [edx + 2]
add edx, 2
add eax, 2
cmp cx, word [eax]
jne 0x1000a077
mov cx, word [edx + 2]
add edx, 2
add eax, 2
cmp cx, word [eax]
jne 0x1000a077
sub esi, 1
jne 0x1000a036
mov cl, byte [edx]
mov dword [ebp - 0x14], esi
mov esi, edx
sub esi, dword [ebp - 0x2c]
xor edx, edx
sar esi, 1
cmp cl, byte [eax]
sete dl
cmp dword [ebp - 0x14], 0
lea eax, [edx + esi*2]
mov esi, dword [ebp - 0x24]
jne 0x1000a0a1
mov eax, esi
neg eax
sbb eax, eax
and eax, 0x102
cmp eax, 3
jb 0x1000a115
jne 0x1000a0b0
cmp esi, 0x2000
jae 0x1000a115
mov edx, dword [ebp - 0x20]
cmp eax, edx
cmovb edx, eax
dec esi
mov word [ebx + 1], si
mov dword [ebp - 0x24], esi
mov esi, dword [ebp - 0x18]
lea eax, [edx - 3]
mov byte [ebx], al
mov al, byte [esi]
shr al, 1
or al, 0x80
mov byte [esi], al
mov eax, dword [ebp - 0x24]
and eax, 0x1ff
movzx ecx, byte [eax + 0x1006b650]
mov eax, dword [ebp - 0x24]
shr eax, 8
cmp dword [ebp - 0x24], 0x200
movzx eax, byte [eax + 0x1006b048]
cmovb eax, ecx
inc word [edi + eax*2 + 0x83d2]
movzx eax, word [edx*2 + 0x1006b44a]
inc word [edi + eax*2 + 0x8192]
mov eax, 3
jmp 0x1000a131
mov esi, dword [ebp - 0x18]
mov edx, 1
mov eax, dword [ebp - 0x28]
mov byte [ebx], al
shr byte [esi], 1
movzx eax, al
inc word [edi + eax*2 + 0x8192]
mov eax, edx
add ebx, eax
sub dword [ebp - 4], 1
mov dword [ebp - 0x14], ebx
jne 0x1000a14c
mov esi, ebx
mov dword [ebp - 4], 8
inc ebx
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x14], ebx
mov eax, dword [ebp - 8]
mov ecx, 0x8000
add dword [ebp - 0x1c], edx
add eax, edx
add dword [ebp - 0xc], edx
cmp eax, ecx
cmovb ecx, eax
mov eax, dword [ebp - 0x10]
mov dword [ebp - 8], ecx
add eax, edx
mov ecx, dword [ebp - 0x20]
and eax, 0x7fff
sub ecx, edx
mov dword [ebp - 0x10], eax
lea edx, [edi + 0x1926a]
mov dword [ebp - 0x20], ecx
cmp ebx, edx
jbe 0x1000a1d5
mov eax, dword [ebp - 0xc]
xor edx, edx
mov dword [edi + 0x1c], eax
mov eax, dword [ebp - 8]
mov dword [edi + 0x24], eax
mov eax, dword [ebp - 0x1c]
mov dword [edi + 0x20], ecx
mov ecx, edi
mov dword [edi + 0x3c], eax
mov eax, dword [ebp - 4]
mov dword [edi + 0x28], ebx
mov dword [edi + 0x2c], esi
mov dword [edi + 0x38], eax
call fcn.100099a0
mov ecx, eax
test ecx, ecx
jne 0x1000a2db
mov eax, dword [edi + 0x3c]
mov ebx, dword [edi + 0x28]
mov esi, dword [edi + 0x2c]
mov ecx, dword [ebp - 0x20]
mov dword [ebp - 0x1c], eax
mov eax, dword [edi + 0x38]
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x18], esi
cmp ecx, 4
jae 0x10009fc0
mov eax, dword [ebp - 8]
test ecx, ecx
je 0x10009ec2
mov edx, dword [ebp - 4]
nop dword [eax]
mov eax, dword [ebp - 0x10]
inc dword [ebp - 0x1c]
mov al, byte [edi + eax + 0x90]
mov byte [ebx], al
inc ebx
shr byte [esi], 1
sub edx, 1
mov dword [ebp - 0x14], ebx
mov dword [ebp - 4], edx
jne 0x1000a21d
mov esi, ebx
mov dword [ebp - 4], 8
inc ebx
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x14], ebx
inc dword [ebp - 0xc]
mov edx, 0x8000
movzx eax, al
inc word [edi + eax*2 + 0x8192]
mov eax, dword [ebp - 8]
inc eax
cmp eax, edx
cmovb edx, eax
mov eax, dword [ebp - 0x10]
inc eax
mov dword [ebp - 8], edx
mov edx, dword [ebp - 4]
and eax, 0x7fff
mov dword [ebp - 0x10], eax
dec ecx
lea eax, [edi + 0x1926a]
mov dword [ebp - 0x20], ecx
cmp ebx, eax
jbe 0x1000a2a1
mov eax, dword [ebp - 0xc]
mov dword [edi + 0x1c], eax
mov eax, dword [ebp - 8]
mov dword [edi + 0x20], ecx
mov ecx, edi
mov dword [edi + 0x24], eax
mov eax, dword [ebp - 0x1c]
mov dword [edi + 0x38], edx
xor edx, edx
mov dword [edi + 0x3c], eax
mov dword [edi + 0x28], ebx
mov dword [edi + 0x2c], esi
call fcn.100099a0
mov ecx, eax
test ecx, ecx
jne 0x1000a2db
mov eax, dword [edi + 0x3c]
mov ebx, dword [edi + 0x28]
mov esi, dword [edi + 0x2c]
mov edx, dword [edi + 0x38]
mov ecx, dword [ebp - 0x20]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x18], esi
mov dword [ebp - 4], edx
test ecx, ecx
jne 0x1000a1f0
jmp 0x10009ebf
mov esi, dword [ebp - 0x18]
mov edx, dword [ebp - 0xc]
mov dword [edi + 0x24], eax
mov eax, dword [ebp - 0x1c]
mov dword [edi + 0x1c], edx
mov edx, dword [ebp - 4]
mov dword [edi + 0x3c], eax
mov eax, 1
mov dword [edi + 0x28], ebx
mov dword [edi + 0x2c], esi
mov dword [edi + 0x20], ecx
mov dword [edi + 0x38], edx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor eax, eax
test ecx, ecx
pop edi
pop esi
setns al
pop ebx
mov esp, ebp
pop ebp
ret