Function at 0x101ab9d0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
mov eax, dword [edx + 0x18]
mov ecx, dword [edx]
push ebx
mov ebx, dword [edx + 0x1c]
push esi
mov esi, dword [ebp + 8]
push edi
mov edi, dword [edx + 0x10]
mov dword [ebp - 8], eax
mov eax, dword [edx + 0x14]
mov edx, dword [edx + 0x24]
sar edi, 1
sar edx, 1
test ebx, ebx
je 0x101abbdd
add edi, edi
add edx, edx
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x1c], edx
mov edx, eax
dec ebx
xor edx, ecx
mov dword [ebp - 0x20], ebx
test dl, 2
je 0x101abb0c
mov edi, dword [ebp - 8]
mov dword [ebp - 4], edi
test al, 2
je 0x101aba52
movzx edx, word [eax]
movzx ebx, word [ecx]
movzx edi, si
and ebx, edi
and edx, edi
add ebx, edx
movzx edx, word [ecx]
mov edi, esi
not edi
and edi, edx
movzx edx, word [eax]
and edi, edx
sar ebx, 1
add ebx, edi
mov edi, dword [ebp - 8]
mov word [eax], bx
add eax, 2
add ecx, 2
dec edi
mov dword [ebp - 4], edi
mov edx, dword [ecx - 2]
add ecx, 2
cmp edi, 1
jle 0x101abacc
movzx edi, si
mov esi, edi
mov ebx, edi
shr ebx, 1
shl esi, 0xf
or esi, ebx
mov ebx, edi
shl ebx, 0x10
or ebx, edi
not ebx
mov dword [ebp - 0xc], ebx
mov ebx, dword [ebp - 4]
lea edi, [ebx - 2]
shr edi, 1
inc edi
mov dword [ebp - 0x10], edi
neg edi
lea edi, [ebx + edi*2]
mov dword [ebp - 4], edi
jmp 0x101aba90
mov edi, dword [ecx]
mov ebx, edi
shl ebx, 0x10
shr edx, 0x10
add edx, ebx
mov ebx, dword [eax]
mov dword [ebp - 0x14], edi
shr ebx, 1
mov edi, edx
shr edi, 1
and ebx, esi
and edi, esi
add edi, ebx
mov ebx, dword [ebp - 0xc]
and ebx, edx
and ebx, dword [eax]
mov edx, dword [ebp - 0x14]
add edi, ebx
mov dword [eax], edi
add eax, 4
add ecx, 4
dec dword [ebp - 0x10]
jne 0x101aba90
mov edi, dword [ebp - 4]
mov esi, dword [ebp + 8]
test edi, edi
je 0x101abb00
movzx edi, word [eax]
shr edx, 0x10
mov ebx, edx
mov dword [ebp - 0x14], ebx
movzx ebx, bx
movzx edx, si
and edi, edx
and ebx, edx
movzx edx, word [eax]
add ebx, edi
mov edi, esi
not edi
and edi, dword [ebp - 0x14]
sar ebx, 1
and edi, edx
add ebx, edi
mov word [eax], bx
add ecx, 2
add eax, 2
mov edx, dword [ebp - 0x18]
lea ecx, [ecx + edx - 2]
jmp 0x101abbcf
mov ebx, dword [ebp - 8]
test cl, 2
je 0x101abb42
movzx edx, word [eax]
movzx ebx, word [ecx]
movzx edi, si
and ebx, edi
and edx, edi
add ebx, edx
movzx edx, word [ecx]
mov edi, esi
not edi
and edi, edx
movzx edx, word [eax]
sar ebx, 1
and edi, edx
add ebx, edi
mov word [eax], bx
mov ebx, dword [ebp - 8]
add ecx, 2
add eax, 2
dec ebx
cmp ebx, 1
jle 0x101abb9e
movzx edi, si
mov edx, edi
mov esi, edi
shr esi, 1
shl edx, 0xf
or edx, esi
mov esi, edi
shl esi, 0x10
or esi, edi
lea edi, [ebx - 2]
shr edi, 1
inc edi
mov dword [ebp - 0x14], edi
neg edi
not esi
lea edi, [ebx + edi*2]
mov dword [ebp - 0xc], esi
mov dword [ebp - 0x10], edi
jmp 0x101abb77
mov esi, dword [ebp - 0xc]
mov edi, dword [ecx]
mov ebx, dword [eax]
and esi, dword [eax]
shr ebx, 1
and esi, dword [ecx]
shr edi, 1
and ebx, edx
and edi, edx
add ebx, edi
add ebx, esi
mov dword [eax], ebx
add ecx, 4
add eax, 4
dec dword [ebp - 0x14]
jne 0x101abb74
mov esi, dword [ebp + 8]
mov ebx, dword [ebp - 0x10]
test ebx, ebx
je 0x101abbcc
movzx edx, word [eax]
movzx ebx, word [ecx]
movzx edi, si
and ebx, edi
and edx, edi
add ebx, edx
movzx edx, word [ecx]
mov edi, esi
not edi
and edi, edx
movzx edx, word [eax]
sar ebx, 1
and edi, edx
add ebx, edi
mov word [eax], bx
add ecx, 2
add eax, 2
add ecx, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x20]
add eax, dword [ebp - 0x1c]
test ebx, ebx
jne 0x101aba06
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret