Function at 0x61c900
Capabilities:
Encrypt data using rc4 prga

Disassembly:
mov ecx, dword [0x8c8600]
mov ecx, dword fs:[ecx]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x61cc30
sub esp, 0x34
movzx eax, byte [esp + 0x38]
test al, al
je 0x61cc17
cmp al, 8
ja 0x61cc17
mov edx, dword [esp + 0x40]
test edx, edx
je 0x61ca33
mov ebx, dword [esp + 0x3c]
movzx ebp, byte [ebx]
cmp al, 8
jae 0x61c95b
movzx ecx, al
mov esi, 1
shl esi, cl
cmp ecx, 0x20
sbb edi, edi
and esi, edi
add esi, 0xffffffff
and ebp, esi
movzx ecx, al
mov eax, 1
shl eax, cl
lea esi, [ecx - 0x20]
mov edi, ecx
mov ecx, esi
mov ebx, 1
shl ebx, cl
neg ecx
mov edx, 1
shr edx, cl
cmp edi, 0x20
sbb edi, edi
and eax, edi
cmp esi, 0x20
sbb esi, esi
and ebx, esi
cmp ecx, 0x20
sbb esi, esi
and esi, edx
or ebx, esi
add eax, 0xffffffff
adc ebx, 0xffffffff
test ebx, ebx
sete dl
seta bl
cmp eax, ebp
seta al
and edx, eax
or edx, ebx
test dl, dl
jne 0x61c9ed
mov eax, dword [esp + 0x44]
lea edx, [eax - 1]
mov ebx, edx
neg edx
sar edx, 0x1f
and edx, 1
mov esi, dword [esp + 0x40]
lea edi, [esi - 1]
mov ecx, eax
mov eax, dword [esp + 0x3c]
add edx, eax
mov dword [esp + 0x18], eax
xor eax, eax
mov dword [esp + 0x2c], eax
xor eax, eax
mov dword [esp + 0x14], eax
xor eax, eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x18]
jmp 0x61ca9d
mov dword [esp + 0x48], ebp
mov dword [esp + 0x4c], 0
mov eax, dword [esp + 0x44]
dec eax
mov ecx, dword [esp + 0x40]
dec ecx
mov edx, eax
neg eax
sar eax, 0x1f
and eax, 1
mov ebx, dword [esp + 0x3c]
add eax, ebx
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], ecx
mov dword [esp + 0x58], edx
mov dword [esp + 0x5c], 0
mov dword [esp + 0x60], 0
add esp, 0x34
ret
mov eax, dword [0x8a7418]
mov ecx, dword [0x8a741c]
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
mov ebx, dword [esp + 0x3c]
mov dword [esp + 0x50], ebx
mov dword [esp + 0x54], edx
mov edx, dword [esp + 0x44]
mov dword [esp + 0x58], edx
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], ecx
add esp, 0x34
ret
mov ecx, dword [esp + 0x28]
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x44]
mov esi, dword [esp + 0x40]
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x14], ebp
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x3c]
mov ebx, dword [esp + 0x28]
mov ebp, edx
mov edx, dword [esp + 0x30]
test edi, edi
je 0x61cbe3
movzx ecx, byte [edx]
mov byte [esp + 0xf], cl
dec ebx
mov dword [esp + 0x28], ebx
neg ebx
sar ebx, 0x1f
and ebx, 1
and ecx, 0x7f
mov dword [esp + 0x24], ecx
dec edi
mov dword [esp + 0x20], edi
add edx, ebx
mov dword [esp + 0x30], edx
mov ebx, dword [esp + 0x14]
cmp ebx, 1
sbb esi, esi
xor esi, 0xffffffff
mov eax, dword [esp + 0x10]
or esi, eax
mov ecx, esi
mov edx, dword [esp + 0x24]
shl edx, cl
lea edi, [ecx - 0x20]
mov ecx, edi
mov ebx, dword [esp + 0x24]
shl ebx, cl
neg ecx
mov eax, dword [esp + 0x24]
shr eax, cl
cmp esi, 0x20
sbb esi, esi
and edx, esi
mov esi, edx
add edx, ebp
cmp edi, 0x20
sbb edi, edi
and ebx, edi
cmp ecx, 0x20
sbb edi, edi
and eax, edi
or ebx, eax
add esi, ebp
mov eax, dword [esp + 0x2c]
adc ebx, eax
movzx eax, byte [esp + 0xf]
test al, 0x80
je 0x61cbaf
mov eax, dword [esp + 0x10]
add eax, 7
mov ebp, dword [esp + 0x14]
adc ebp, 0
test ebp, ebp
xchg esi, ebx
seta bl
xchg esi, ebx
xchg edi, ebx
sete bl
xchg edi, ebx
cmp eax, 0x3f
setae cl
and ecx, edi
or ecx, esi
test cl, cl
je 0x61ca6f
lea eax, [0x6d6000]
mov dword [esp], eax
lea eax, [0x8a7420]
mov dword [esp + 4], eax
call fcn.0040b2d0
mov eax, dword [esp + 8]
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x58], ecx
lea ecx, [0x734a60]
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x60], eax
add esp, 0x34
ret
mov dword [esp + 0x48], edx
mov dword [esp + 0x4c], ebx
mov eax, dword [esp + 0x30]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], 0
mov dword [esp + 0x60], 0
add esp, 0x34
ret
mov edx, dword [0x8a7418]
mov ebx, dword [0x8a741c]
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], esi
mov dword [esp + 0x58], ecx
mov dword [esp + 0x5c], edx
mov dword [esp + 0x60], ebx
add esp, 0x34
ret
lea eax, [0x6c0080]
mov dword [esp], eax
lea eax, [0x733e08]
mov dword [esp + 4], eax
call fcn.00470a40
nop
call fcn.00475ee0
jmp fcn.0061c900