Function at 0x7c1142
Capabilities:
Encrypt data using rc4 prga

Disassembly:
sub esp, 0x2c
push ebx
mov ebx, dword [esp + 0x34]
mov ecx, dword [ebx + 0x138]
push esi
mov esi, dword [esp + 0x40]
movzx eax, byte [esi + 3]
cmp ecx, eax
mov dword [esp + 0x18], 0
jbe 0x7c1167
mov eax, ecx
mov dword [ebx + 0x138], eax
mov eax, dword [esi + 0x18]
cmp eax, 0x75daa8
je 0x7c11ab
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x4c]
push ecx
mov ecx, dword [esp + 0x4c]
push edx
mov edx, dword [esp + 0x4c]
push ecx
push edx
push eax
mov eax, dword [esp + 0x50]
push eax
push ebx
call fcn.007c1142
add esp, 0x1c
cmp eax, 0xffffffff
mov dword [esp + 0x18], eax
jne 0x7c11ab
pop esi
or eax, eax
pop ebx
add esp, 0x2c
ret
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x4c]
push ebp
push edi
push eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x54]
lea ecx, [esp + 0x14]
push ecx
push edx
mov edx, dword [esp + 0x50]
lea eax, [esp + 0x20]
push eax
movzx eax, byte [esi + 3]
lea ecx, [eax + eax*4]
mov eax, dword [ebx + edx*4 + 0x10]
movzx ecx, word [eax + ecx*4 + 4]
push ecx
mov ecx, esi
call fcn.007bf7c2
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
mov ecx, dword [esi + 0x2c]
mov ebp, edx
sub eax, ebx
sub ebp, ebx
sub eax, 0x240
sub ebp, 0x93e
test ecx, ecx
mov dword [esp + 0x1c], ecx
je 0x7c1309
movzx edi, byte [esi + 3]
movzx ecx, byte [ecx + 3]
inc edi
cmp ecx, edi
jne 0x7c1309
mov ecx, dword [esp + 0x1c]
cmp dword [ecx + 0x34], 3
jne 0x7c1309
cmp eax, ebp
jne 0x7c128c
mov edi, dword [esp + 0x54]
mov esi, dword [esp + 0x4c]
mov ecx, edx
sub ecx, edi
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x7c1288
mov ecx, dword [esp + 0x48]
cmp byte [ecx], 0
jne 0x7c1288
mov eax, ecx
mov cl, byte [eax + 1]
test cl, cl
jne 0x7c1288
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x14]
push ecx
mov ecx, dword [esp + 0x20]
push edx
mov edx, dword [esp + 0x58]
push edx
mov edx, dword [esp + 0x50]
push eax
push ecx
push edx
push ebx
call fcn.007c1142
mov esi, dword [esp + 0x64]
add esp, 0x1c
jmp 0x7c1431
mov esi, dword [esp + 0x48]
movzx ecx, byte [esi]
test ecx, ecx
movzx edi, byte [esi + 1]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x40], edi
jne 0x7c12c7
mov edx, dword [esp + 0x44]
lea eax, [esp + 0x18]
push eax
mov eax, dword [ebx + edx*4 + 0x10]
lea ecx, [esp + 0x18]
push ecx
mov ecx, dword [esp + 0x24]
push eax
call fcn.007c03f2
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
mov edi, dword [esp + 0x40]
test edi, edi
jne 0x7c12f2
mov eax, dword [esp + 0x44]
lea ecx, [esp + 0x40]
push ecx
mov ecx, dword [ebx + eax*4 + 0x10]
lea edx, [esp + 0x14]
push edx
push ecx
mov ecx, dword [esi + 0x2c]
call fcn.007c0472
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
mov edi, dword [esp + 0x40]
mov eax, dword [esp + 0x14]
sub eax, ebx
sub edx, ebx
sub eax, 0x240
sub edx, 0x93e
mov ebp, edx
jmp 0x7c1324
movzx ecx, byte [esi]
mov edi, dword [esp + 0x50]
mov edx, dword [esp + 0x58]
or ecx, edi
movzx edi, byte [esi + 1]
or edi, edx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x40], edi
mov edx, dword [esp + 0x44]
mov edx, dword [ebx + edx*4 + 0x140]
inc dword [ebx + 0x13c]
test ecx, ecx
mov dword [esp + 0x1c], edx
jne 0x7c139a
test edi, edi
jne 0x7c139a
mov edi, dword [ebx + 4]
mov edi, dword [edi + 0xb8]
lea edx, [edx + edx*4]
lea edx, [edi + edx*8]
movzx edi, byte [esi + 3]
inc edi
cmp edi, dword [edx + 8]
jne 0x7c1392
mov edx, dword [edx + 4]
and edx, 0x1001
cmp edx, 1
jne 0x7c1392
cmp eax, ebp
jne 0x7c1392
mov ecx, eax
lea edi, [ebx + 0x93e]
lea esi, [ebx + 0x240]
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
mov esi, dword [esp + 0x48]
jne 0x7c138e
mov eax, 1
jmp 0x7c1436
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov edi, dword [esp + 0x40]
test cl, cl
jns 0x7c13cd
lea edi, [ebx + 0x240]
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], eax
mov eax, dword [ebx + 4]
xor ecx, 0x80
push 0
mov dword [esp + 0x30], ecx
mov ecx, dword [eax]
mov eax, dword [ecx]
lea edi, [esp + 0x28]
push edi
push edx
call dword [eax + 0x94]
jmp 0x7c1431
and cl, 4
neg cl
lea edx, [ebx + 0x240]
mov dword [esp + 0x30], edx
mov edx, edi
mov dword [esp + 0x28], ebp
mov dword [esp + 0x34], eax
lea edi, [esp + 0x24]
sbb ecx, ecx
and dl, 8
and ecx, 3
neg dl
mov dword [esp + 0x38], ecx
lea ecx, [ebx + 0x93e]
mov dword [esp + 0x24], ecx
mov ecx, dword [ebx + 4]
sbb edx, edx
neg edx
add edx, 3
neg ebp
sbb ebp, ebp
and ebp, edi
neg eax
sbb eax, eax
push ebp
lea edi, [esp + 0x34]
and eax, edi
mov dword [esp + 0x30], edx
mov ecx, dword [ecx]
mov edx, dword [ecx]
push eax
mov eax, dword [esp + 0x24]
push eax
call dword [edx + 0x94]
cmp eax, 0xffffffff
je 0x7c146f
mov edi, dword [esp + 0x20]
mov esi, dword [esi + 0x1c]
add edi, eax
cmp esi, 0x75daa8
je 0x7c147c
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x50]
push ecx
mov ecx, dword [esp + 0x50]
push edx
mov edx, dword [esp + 0x4c]
push eax
push ecx
push esi
push edx
push ebx
call fcn.007c1142
add esp, 0x1c
cmp eax, 0xffffffff
jne 0x7c147a
pop edi
pop ebp
pop esi
or eax, 0xffffffff
pop ebx
add esp, 0x2c
ret
add edi, eax
mov eax, edi
pop edi
pop ebp
pop esi
pop ebx
add esp, 0x2c
ret