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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push esi
push edi
mov esi, ecx
push 0x4000
mov word [esi + 0x3e], 0
call fcn.008f6480
mov edi, eax
add esp, 4
test edi, edi
jne 0x6a1d70
pop edi
mov dword [esi + 0x10], 2
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0x1c]
mov cx, word [eax + 0x102]
add cx, word [eax + 0x34]
push ebx
sub cx, 2
movzx ebx, cx
cmp bx, 0x4000
jbe 0x6a1da6
push edi
call fcn.008f64c0
add esp, 4
pop ebx
pop edi
mov dword [esi + 0x10], 3
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret
mov edx, dword [esi]
mov eax, dword [edx + 0xc]
push 0x34
mov ecx, esi
call eax
mov edx, dword [esi]
mov eax, dword [edx + 8]
movzx ebx, bx
push ebx
push edi
mov ecx, esi
call eax
xor eax, eax
test ebx, ebx
jle 0x6a1de0
jmp 0x6a1dd0
movzx cx, byte [eax + edi]
add word [esi + 0x3e], cx
add eax, 1
cmp eax, ebx
jl 0x6a1dd0
add eax, 0x34
mov dword [ebp - 4], eax
mov eax, dword [esi + 0x1c]
mov ecx, 0xc5
cmp word [eax + 0x34], cx
mov dword [ebp - 8], 0
jb 0x6a1e50
add eax, 0x63
cmp byte [eax], 0xbb
jne 0x6a1e50
cmp byte [eax + 3], 0x4d
jne 0x6a1e50
cmp byte [eax + 4], 0x41
jne 0x6a1e50
cmp byte [eax + 5], 1
jne 0x6a1e50
cmp byte [eax + 0xa], 1
jne 0x6a1e50
cmp byte [eax + 0xb], 1
jne 0x6a1e50
mov ecx, dword [esi + 0x18]
mov edx, dword [ecx]
mov eax, dword [edx + 0x20]
mov dword [ebp - 8], 1
call eax
mov eax, dword [esi + 0x1c]
movzx ebx, word [eax + 0x102]
movzx eax, word [eax + 0x34]
mov ecx, dword [esi + 0x18]
mov edx, dword [ecx]
mov edx, dword [edx + 0x24]
push ebx
lea eax, [eax + edi - 2]
push eax
call edx
mov eax, dword [esi]
mov edx, dword [eax + 0x18]
mov ecx, esi
call edx
test eax, eax
jne 0x6a1f01
mov eax, dword [esi]
mov edx, dword [eax + 8]
push 0x4000
push edi
mov ecx, esi
call edx
movzx ebx, ax
test bx, bx
mov dword [ebp - 0x10], ebx
je 0x6a1f01
mov edx, dword [esi + 0x20]
cmp dword [edx + 0x104], 0
je 0x6a1ebd
movzx eax, bx
test eax, eax
mov dword [ebp - 0xc], eax
jbe 0x6a1ebd
mov ecx, dword [ebp - 4]
mov ebx, dword [ebp - 0xc]
mov eax, edi
sub ecx, edi
mov dword [ebp - 0xc], ebx
lea ebx, [ecx + eax]
and ebx, 0xff
mov bl, byte [ebx + edx + 4]
xor byte [eax], bl
add eax, 1
sub dword [ebp - 0xc], 1
jne 0x6a1ea2
mov ebx, dword [ebp - 0x10]
cmp dword [ebp - 8], 0
je 0x6a1ed2
mov ecx, dword [esi + 0x18]
mov eax, dword [ecx]
mov eax, dword [eax + 0x24]
movzx edx, bx
push edx
push edi
call eax
movzx ecx, bx
add dword [ebp - 4], ecx
xor eax, eax
test ecx, ecx
jle 0x6a1ef0
mov edi, edi
movzx dx, byte [eax + edi]
add word [esi + 0x3e], dx
add eax, 1
cmp eax, ecx
jl 0x6a1ee0
mov eax, dword [esi]
mov edx, dword [eax + 0x18]
mov ecx, esi
call edx
test eax, eax
je 0x6a1e61
push edi
call fcn.008f64c0
add esp, 4
cmp dword [ebp - 8], 0
je 0x6a1f37
mov ecx, dword [esi + 0x18]
mov eax, dword [ecx]
mov edx, dword [eax + 0x28]
call edx
mov ecx, dword [eax]
mov dword [esi + 0x28], ecx
mov edx, dword [eax + 4]
mov dword [esi + 0x2c], edx
mov ecx, dword [eax + 8]
mov dword [esi + 0x30], ecx
mov edx, dword [eax + 0xc]
mov dword [esi + 0x34], edx
mov eax, dword [eax + 0x10]
mov dword [esi + 0x38], eax
mov eax, dword [esi + 0x1c]
cmp byte [eax + 0x48], 0
jne 0x6a1f45
add word [esi + 0x3e], 1
mov cx, word [esi + 0x3e]
xor edx, edx
cmp cx, word [eax + 0x36]
pop ebx
sete dl
pop edi
pop esi
mov eax, edx
mov esp, ebp
pop ebp
ret