Function at 0x46e6d0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
mov ecx, dword [0x5b96c8]
mov ecx, dword fs:[ecx]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x46e981
sub esp, 0x38
mov eax, dword [esp + 0x40]
mov dword [esp + 4], eax
mov ecx, dword [esp + 0x3c]
mov dword [esp], ecx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
call fcn.0044e4f0
movzx eax, byte [esp + 0x10]
test al, al
je 0x46e71b
mov eax, 1
jmp 0x46e73f
mov eax, dword [esp + 0x40]
mov dword [esp + 4], eax
mov ecx, dword [esp + 0x3c]
mov dword [esp], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 8], ecx
call fcn.0044e4f0
movzx eax, byte [esp + 0x10]
xor eax, 1
test al, al
jne 0x46e770
mov eax, dword [esp + 0x40]
mov dword [esp + 4], eax
mov ecx, dword [esp + 0x3c]
mov dword [esp], ecx
mov dword [esp + 0xc], 0x7fefffff
mov dword [esp + 8], 0xffffffff
call fcn.0044e550
movzx eax, byte [esp + 0x10]
test al, al
je 0x46e784
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x48], eax
add esp, 0x38
ret
mov dword [esp + 4], 0
mov dword [esp], 0
mov eax, dword [esp + 0x40]
mov dword [esp + 0xc], eax
mov ecx, dword [esp + 0x3c]
mov dword [esp + 8], ecx
call fcn.0044e550
movzx eax, byte [esp + 0x10]
test al, al
jne 0x46e7d4
mov eax, dword [esp + 0x40]
mov ecx, eax
shr eax, 0x14
and eax, 0x7ff
test eax, eax
jne 0x46e7ce
mov eax, dword [esp + 0x3c]
xor edx, edx
jmp 0x46e965
mov edx, dword [esp + 0x3c]
jmp 0x46e7e8
mov dword [esp + 0x44], 1
mov dword [esp + 0x48], 0x7ff80000
add esp, 0x38
ret
add eax, 0xfffffc01
and ecx, 0x800fffff
or ecx, 0x100000
test eax, 1
je 0x46e80b
shl ecx, 1
mov ebx, edx
shr ebx, 0x1f
or ecx, ebx
shl edx, 1
mov dword [esp + 0x30], eax
shl ecx, 1
mov ebx, edx
shr edx, 0x1f
or edx, ecx
shl ebx, 1
mov ecx, 0x200000
xor ebp, ebp
xor esi, esi
xor edi, edi
xor ebp, ebp
mov dword [esp + 0x20], ebp
xor ebp, ebp
mov dword [esp + 0x24], ebp
jmp 0x46e86f
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], esi
mov dword [esp + 0x34], ebx
shl ebp, 1
shr esi, 0x1f
mov eax, dword [esp + 0x1c]
shr eax, 1
shl ebx, 0x1f
or esi, ebp
mov ebp, dword [esp + 0x28]
shl ebp, 1
or ebx, eax
mov eax, dword [esp + 0x34]
shr eax, 1
mov dword [esp + 0x20], ecx
mov ecx, eax
mov eax, ebp
mov ebp, ebx
mov ebx, eax
mov eax, esi
mov esi, edx
mov edx, eax
mov dword [esp + 0x28], ebx
test ecx, ecx
setne al
test ebp, ebp
setne bl
or ebx, eax
test bl, bl
je 0x46e8fe
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x14], esi
mov dword [esp + 0x18], edi
mov dword [esp + 0x2c], edx
add esi, ebp
mov ebx, ecx
adc ecx, edi
cmp edx, ecx
seta al
xchg edi, ebx
sete bl
xchg edi, ebx
mov edx, dword [esp + 0x28]
cmp esi, edx
setbe dl
and edi, edx
or edi, eax
xchg edi, eax
test al, al
xchg edi, eax
je 0x46e8e1
mov eax, ebp
add ebp, esi
mov edi, ecx
adc edi, ebx
mov edx, ebp
mov ebp, dword [esp + 0x28]
sub ebp, esi
mov esi, ebp
mov ebp, dword [esp + 0x2c]
sbb ebp, ecx
mov ecx, dword [esp + 0x20]
add ecx, eax
mov eax, dword [esp + 0x24]
adc eax, ebx
jmp 0x46e833
mov esi, dword [esp + 0x28]
mov ebp, dword [esp + 0x2c]
mov edx, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
jmp 0x46e833
mov eax, dword [esp + 0x28]
test eax, eax
setne al
test edx, edx
setne cl
or eax, ecx
test al, al
je 0x46e926
mov eax, dword [esp + 0x20]
mov ecx, eax
and eax, 1
add eax, ecx
mov ecx, dword [esp + 0x24]
adc ecx, 0
jmp 0x46e92e
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x30]
sar edx, 1
mov ebx, ecx
shr ecx, 1
shr eax, 1
shl ebx, 0x1f
or ebx, eax
lea eax, [edx + 0x3fe]
shl eax, 0x14
add ebx, 0
mov dword [esp + 0x44], ebx
adc eax, ecx
mov dword [esp + 0x48], eax
add esp, 0x38
ret
shl ecx, 1
mov ebx, eax
shr ebx, 0x1f
or ecx, ebx
shl eax, 1
dec edx
test ecx, 0x100000
sete bl
and ebx, 1
test bl, bl
jne 0x46e959
lea ebx, [edx + 1]
mov edx, eax
mov eax, ebx
jmp 0x46e7e8
call fcn.00465370
jmp fcn.0046e6d0