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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x6b8
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
lea eax, [ebp - 0x4b0]
push eax
push 0x104
mov eax, dword [edi + 0x758]
call eax
lea eax, [ebp - 0x90]
push eax
mov eax, dword [edi + 0x75c]
call eax
xor eax, eax
mov word [ebp - 0x2a8], ax
lea eax, [ebp - 0x2a8]
push 0x104
push eax
push dword [edi + 0x700]
mov eax, dword [edi + 0x678]
call eax
test eax, eax
je 0x2fc7a12
push 0x5c
lea eax, [ebp - 0x2a8]
push 0x104
push eax
call fcn.02fc7f04
mov edx, eax
add esp, 0xc
test edx, edx
je 0x2fc7a12
add edx, 2
jne 0x2fc7a9c
xor eax, eax
mov ecx, 0xb239
mov word [ebp - 0x2a8], ax
mov eax, 0xb238
mov dword [ebp - 0x18], 0xb277
mov word [ebp - 0x14], cx
mov word [ebp - 0x12], ax
mov eax, 0xb236
mov word [ebp - 0x10], cx
mov word [ebp - 0xe], ax
mov eax, 0xb23a
mov word [ebp - 0xc], ax
mov eax, 0xb232
mov word [ebp - 0xa], ax
xor eax, eax
mov word [ebp - 8], ax
mov ax, word [ebp - 0x14]
xor eax, eax
nop dword [eax + eax]
mov cx, word [ebp + eax*2 - 0x14]
movzx edx, cx
movzx ecx, word [ebp - 0x18]
xor edx, ecx
mov word [ebp + eax*2 - 0x14], dx
inc eax
cmp eax, 6
jb 0x2fc7a64
xor eax, eax
mov word [ebp - 8], ax
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x2a8]
push eax
call fcn.02fc7f94
add esp, 8
lea edx, [ebp - 0x2a8]
mov eax, 0x30
mov ebx, 0x77
mov word [ebp - 0x7e], ax
mov esi, 0x7e
mov word [ebp - 0x7c], bx
mov eax, 0x67
mov word [ebp - 0x7a], si
mov ecx, 0x3f
mov word [ebp - 0x78], ax
mov edi, 0x30
mov eax, 0x4c
mov word [ebp - 0x76], ax
mov eax, 0x7b
mov word [ebp - 0x74], ax
mov word [ebp - 0x72], ax
mov eax, 0x5e
mov word [ebp - 0x70], ax
mov eax, 0x74
mov word [ebp - 0x6e], ax
mov eax, 0x72
mov word [ebp - 0x6c], ax
mov eax, 0x79
mov word [ebp - 0x6a], ax
mov eax, 0x82
mov word [ebp - 0x68], cx
mov word [ebp - 0x66], ax
mov eax, 0x6a
mov word [ebp - 0x64], ax
mov word [ebp - 0x62], di
mov word [ebp - 0x60], bx
mov ebx, edi
mov word [ebp - 0x5e], si
mov esi, 0x3b
mov word [ebp - 0x5c], ax
mov eax, 0x3d
mov word [ebp - 0x5a], bx
mov word [ebp - 0x58], si
mov word [ebp - 0x56], cx
mov ecx, 0x6f
mov word [ebp - 0x54], cx
mov word [ebp - 0x52], bx
mov word [ebp - 0x50], si
mov word [ebp - 0x4e], ax
mov word [ebp - 0x4c], cx
mov word [ebp - 0x4a], bx
mov ebx, 0x6a
mov word [ebp - 0x48], si
mov word [ebp - 0x46], ax
mov word [ebp - 0x44], cx
mov word [ebp - 0x42], bx
mov word [ebp - 0x40], di
mov word [ebp - 0x3e], si
mov word [ebp - 0x3c], ax
mov word [ebp - 0x3a], cx
mov word [ebp - 0x38], di
mov word [ebp - 0x36], si
mov word [ebp - 0x34], ax
mov word [ebp - 0x32], cx
mov word [ebp - 0x30], di
mov word [ebp - 0x2e], si
mov word [ebp - 0x2c], ax
mov eax, edi
mov edi, dword [ebp + 8]
mov word [ebp - 0x2a], cx
mov word [ebp - 0x28], bx
mov word [ebp - 0x26], ax
mov eax, 0x39
mov word [ebp - 0x24], cx
mov word [ebp - 0x22], ax
mov eax, 0x78
mov word [ebp - 0x20], cx
mov word [ebp - 0x1e], ax
mov eax, 0x7b
mov word [ebp - 0x1c], ax
xor eax, eax
mov word [ebp - 0x1a], ax
xor ecx, ecx
mov ax, word [ebp - 0x7e]
nop dword [eax]
mov ax, word [ebp + ecx*2 - 0x7e]
movzx eax, ax
add eax, 0xfffffff5
mov word [ebp + ecx*2 - 0x7e], ax
inc ecx
cmp ecx, 0x32
jb 0x2fc7be4
movzx eax, word [ebp - 0x82]
push eax
movzx eax, word [ebp - 0x84]
push eax
movzx eax, word [ebp - 0x86]
push eax
movzx eax, word [ebp - 0x88]
push eax
movzx eax, word [ebp - 0x8a]
push eax
movzx eax, word [ebp - 0x8e]
push eax
movzx eax, word [ebp - 0x90]
push eax
push edx
lea eax, [ebp - 0x4b0]
push eax
lea eax, [ebp - 0x7e]
push eax
lea eax, [ebp - 0x6b8]
push eax
mov eax, dword [edi + 0x768]
call eax
lea eax, [ebp - 4]
mov dword [ebp - 4], 0
push eax
lea eax, [ebp - 0xa0]
push eax
push edi
call fcn.02fc7d14
add esp, 0x38
test eax, eax
js 0x2fc7d00
push 0
push 0x80
push 2
push 0
push 0
push 0xc0000000
lea eax, [ebp - 0x6b8]
push eax
mov eax, dword [edi + 0x684]
call eax
mov ebx, eax
cmp ebx, 0xffffffff
je 0x2fc7cf5
mov eax, dword [edi + 0x740]
call eax
mov ecx, dword [ebp + 0xc]
xor edx, edx
mov dword [ebp - 0x9c], eax
test ecx, ecx
push 0
push 0
lea eax, [ebp - 0x9c]
mov dword [ebp - 0x98], ecx
cmove eax, edx
mov dword [ebp - 0x94], 1
push eax
push dword [ebp + 0x10]
mov eax, dword [edi + 0x754]
push ebx
call eax
push eax
push 0xffffffffffffffff
call dword [ebp - 4]
mov ecx, dword [edi + 0x690]
mov esi, eax
push ebx
call ecx
test esi, esi
je 0x2fc7cf5
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
call dword [0x2febfb4]
or eax, 0xe0ff0000
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret