Function at 0x4149c0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x150
push ebx
mov ebx, edx
mov eax, ecx
mov dword [ebp - 0x30], ebx
mov dword [ebp - 8], eax
push esi
push edi
test ebx, ebx
je 0x4481ff
mov esi, dword [ebp + 0x10]
mov dword [ebp - 0x3c], 0
add byte [eax], al
mov dword [ebp - 0x38], 0
mov eax, dword [esi]
mov ecx, dword [esi + 0x50]
add byte [ebx - 0x6976f3bb], cl
test byte [eax], al
add byte [eax], al
mov edi, dword [esi + 0x7c]
mov eax, dword [ebp - 8]
mov dword [ebp - 0x28], edi
cmp eax, edi
jae 0x44e4bf
movzx ecx, word [eax]
add eax, 2
cmp dword [ebp - 0x24], 0
invalid
mov eax, dword [ebp - 8]
cmp eax, dword [esi + 0x7c]
jae 0x44e4bf
movzx ecx, word [eax]
add eax, 2
cmp dword [ebp - 0x24], 0
mov dword [ebp - 0x14], ecx
mov dword [ebp - 8], eax
je 0x414eb9
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
je 0x449bc7
mov eax, ecx
cdq
and edx, 0x7f
add eax, edx
mov edx, dword [ebp - 0x14]
sar eax, 7
movzx ecx, byte [eax + 0x4b3b40]
mov eax, edx
shl ecx, 7
and eax, 0x8000007f
jns 0x414edf
dec eax
or eax, 0xffffff80
inc eax
add ecx, eax
movzx eax, word [ebx + 2]
movzx ecx, word [ecx*2 + 0x4a5840]
mov dword [ebp - 0x14], ecx
cmp eax, 9
jne 0x449bef
movzx eax, word [ebx + 4]
mov ecx, dword [eax*4 + 0x4a45d0]
lea eax, [eax*4 + 0x4a45d0]
cmp edx, ecx
jb 0x449df1
lea eax, [eax + 4]
cmp edx, ecx
je 0x414f25
mov ecx, dword [eax]
cmp edx, ecx
jae 0x414f13
jmp 0x449df1
cmp edi, 0x10
jne case.0x414a45.157
mov edx, dword [ebp - 8]
add ebx, 6
mov dword [ebp - 0x30], ebx
jmp 0x414a1f
mov eax, dword [ebp - 8]
jmp 0x448f62
mov edi, dword [ebp - 0x24]
jmp 0x44956f
cld
dec dword [ebx + 0x458b1850]
mov al, 0x89
add ch, cl
aaa
invalid
push ebp
jo 0x448f74
cmp dword [ebp - 8], ecx
jne 0x4c7e135
mov edx, dword [ebp - 8]
jmp 0x414b1a
cld
inc dword [ebx + 0x660f487e]
cmp dword [esi + 0x48], 0xf
inc bp
cmp eax, dword [esi + 0x34]
jne 0x415084
cmp dword [esi + 0x1c], 1
je 0x414cc0
mov ax, word [ecx + 2]
cmp ax, word [esi + 0x36]
jne 0x415084
cld
invalid
cld
invalid
jmp 0x414cc0
add al, 0x48
cmp edx, eax
jne 0x415084
add ebx, 2
mov dword [ebp - 0x30], ebx
jmp switch.0x00414a45
mov ecx, dword [ecx - 0x73417c08]
inc eax
cmp dword [ebp], eax
cmp dword [esi + 0x4539408c], 0
je 0x415084
add eax, 2
cmp eax, dword [esi + 0x7c]
jb 0x415084
cmp dword [esi + 0x18], 0
jne 0x415084
cmp dword [esi + 0x1c], 2
jne 0x415084
mov eax, dword [ebp - 8]
mov ax, word [eax]
cmp ax, word [esi + 0x34]
jne 0x415084
mov dword [esi + 0x68], 0xf7001
cmp dword [esi + 0x4539408c], 1
jle 0x415084
xchg byte [eax + 0xff60000], cl
xchg byte [esi - 0x45], dh
cld
inc edi
inc esi
push 0xf7001
sldt word [ebx + 0x39408cbe]
inc ebp
add dword [edi - 0x74], edi
sldt word [ebx + 0x39408cbe]
inc ebp
add dword [edi - 0x74], edi
add ebx, 2
mov dword [ebp - 0x30], ebx
jmp 0x414cc6
inc eax
add ah, byte [esi + 0x3b]
inc esi
jne 0x449092
mov ecx, dword [edi]
mov eax, dword [esi + 0x7c]
add ecx, ecx
sub eax, ecx
cmp dword [ebp - 8], eax
mov eax, dword [ebp - 8]
jne 0x449095
jmp 0xe9449131
mov ecx, eax
mov eax, dword [esi + 0x44]
test byte [ecx + eax], 0x10
je 0xc49377
mov ecx, 0x483068b
jmp 0xc49379
add byte [ebp + 0x26], dh
cmp dword [esi + 0x1c], 2
jne 0x449598
mov ax, word [eax]
cmp ax, word [esi + 0x34]
jne 0x449595
mov dword [esi + 0x68], 0xf7001
cmp dword [esi + 0x4539408c], 1
jg 0xc490e6
mov eax, dword [ebp - 8]
mov ecx, dword [esi + 0x7c]
cmp eax, ecx
jae 0xf644e4e5
add eax, 2
mov dword [ebp - 8], eax
test edi, edi
je 0x414cc0
cmp eax, ecx
jae 0x414cc0
pop es
mov bh, 0xfc
invalid
pop es
mov bh, 0xfc
jmp dword [esi - 0x75]
mov ax, word [eax]
mov ecx, 0xfc00
and ax, cx
mov ecx, 0xdc00
cmp ax, cx
jne 0xe9414cc0
push cs
inc ebp
clc
add ch, cl
in eax, 0xb6
cld
dec dword [ebx + 0x463bf845]
jl 0x4495f1
cmp esi, 0x4e
add dh, dh
add eax, 2
mov dword [ebp - 8], eax
dec byte [esi]
test byte [ebx + 0x458902c0], 0xf8
jmp 0x414cc0
dec dword [ebx + 0x463bf845]
jl 0x449608
and edi, 0x4e
add dh, dh
movzx ecx, word [eax]
add eax, 2
push cs
jge 0x4495e3
add byte [ecx + 0x2e74f845], cl
mov dword [ebp - 8], eax
je 0x44963b
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xf600d800
jne 0x44963b
mov eax, dword [ebp - 8]
and ecx, 0xfff03ff
shl ecx, 0xa
movzx eax, word [eax]
and eax, 0xfff03ff
or ecx, eax
add ecx, 0xe8018306
push es
add dword [ecx], 0xffffffe8
push es
add dword [ecx], 0xffffffe8
add dword [ebp - 8], 2
cmp ecx, 0x70e80183
jae 0x414cc0
mov eax, dword [esi + 0x44]
test byte [ecx + eax], 4
jne 0x415084
jmp 0x414cc0
push es
add dword [ecx], 0xffffffe8
add dword [ebp - 8], 2
cmp ecx, 0x590445ff
ja 0x415084
mov eax, dword [esi + 0x44]
test byte [ecx + eax], 4
je 0x415084
jmp 0x414cc0
push es
add dword [ecx], 0xffffffe8
add dword [ebp - 8], 2
cmp ecx, 0x70e80183
jae 0x414cc0
mov eax, dword [esi + 0x44]
test byte [ecx + eax], 1
jne 0x415084
jmp 0x414cc0
push es
add dword [ecx], 0xffffffe8
add dword [ebp - 8], 2
cmp ecx, 0x590445ff
ja 0x415084
mov eax, dword [esi + 0x44]
test byte [ecx + eax], 1
je 0x415084
jmp 0x414cc0
push es
add dword [ecx], 0xffffffe8
add dword [ebp - 8], 2
cmp ecx, 0x70e80183
jae 0x414cc0
mov eax, dword [esi + 0x44]
test byte [ecx + eax], 0x10
jne 0x415084
jmp 0x414cc0
push es
add dword [ecx], 0xffffffe8
add dword [ebp - 8], 2
cmp ecx, 0x590445ff
ja 0x415084
mov eax, dword [esi + 0x44]
test byte [ecx + eax], 0x10
je 0x415084
jmp 0x414cc0
cmp ecx, 0x8500c785
je 0x44992d
lea eax, [ecx - 0x2028]
push cs
inc esi
add dword [edi], ecx
xchg dword [edi - 0x49], edx
cld
inc dword [ebx + 0xf006c7e]
test dword [ebp - 0x49], ecx
cld
invalid
cmp dword [esi + 0x6c], 0
jne 0x415084
jmp 0x414cc0
sal byte [esi - 0x8161704], 0xb2
cld
inc dword [ecx + 0x6205ff9]
xor dword [edi + 0x2f], 0xf
test byte [ebp - 0x7e00034a], ch
stc
add byte [eax], ah
push es
or dword [edi], 0xffffff82
fnsave dword [edx - 0x67e0004]
or ah, byte [eax]
push es
or dword [edi], 0xffffff86
xchg ebp, eax
mov dh, 0xfc
inc dword [ecx + 0x6202ff9]
or dword [edi], 0xffffff84
mov dword [esi - 0x3f161704], esi
mov dl, 0xfc
inc dword [ecx + 0x63000f9]
add byte [eax], dh
push es
or dword [edi], 0xffffff84
js 0x4499c0
cld
call 0xfcf749f9
dec dword [ebx + 0x463bf845]
jl 0x449a27
or eax, 0x4a
add dh, dh
movzx ecx, word [eax]
add eax, 2
push cs
jge 0x449a02
add byte [ecx + 0x2e74f845], cl
mov dword [ebp - 8], eax
je 0x449a5a
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xf600d800
jne 0x449a5a
mov eax, dword [ebp - 8]
and ecx, 0xfff03ff
shl ecx, 0xa
movzx eax, word [eax]
and eax, 0xfff03ff
or ecx, eax
add ecx, 0xe8018306
add dword [ebp - 8], 2
cmp ecx, 0xf600180e
ja 0x449a9e
je 0x414cc0
cmp ecx, 0x8306cca0
ja 0x449a8d
je 0xe9414cc0
push cs
stc
or dword [edi], ecx
test byte [ecx - 0x4e], al
cld
call 0xf659391
test esp, edi
mov ch, 0xfc
invalid
cmp ecx, 0x451680
jne 0x415084
jmp 0x414cc0
cmp ecx, 0x8306205f
ja 0x449ad5
je 0x414cc0
cmp ecx, 0x83062000
jb 0x415084
cmp ecx, 0x8306200a
jbe 0x414cc0
cld
mov cl, 0xfc
invalid
cld
mov cl, 0xfc
inc dword [ecx + 0x6202ff9]
or dword [edi], 0xffffff85
mov ah, 0xb5
cld
invalid
cmp ecx, 0x8306202f
jne 0x415084
jmp 0x414cc0
cmp ecx, 0x83063000
jne 0x415084
jmp 0x414cc0
xor eax, 0xe9fffcb5
insb byte es:[edi], dx
mov cl, 0xfc
inc dword [ecx + 0x62028f9]
or dword [edi], 0xffffff82
pushal
mov cl, 0xfc
inc dword [ecx + 0x62029f9]
or dword [edi], 0xffffff86
sbb byte [ebp + 0x4fe9fffc], dh
mov cl, 0xfc
dec dword [ebx + 0x463bf845]
jl 0x449b87
sub dword [eax + 0x49], 0
test byte [edi], 0xb7
or byte [ebx + 0x7d0e02c0], al
fadd qword [eax]
mov dword [ebp - 8], eax
je 0x449bba
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xf600d800
jne 0x449bba
mov eax, dword [ebp - 8]
and ecx, 0xfff03ff
shl ecx, 0xa
movzx eax, word [eax]
and eax, 0xfff03ff
or ecx, eax
add ecx, 0xe8018306
add dword [ebp - 8], 2
cmp ecx, 0x8306cc85
ja 0x449bd9
je 0x414cc0
dec dword [ebp - 0x77c09bf]
add ecx, dword [edi]
xchg dword [eax - 0x1600034c], esi
out 0xb0, eax
cld
dec dword [ebp - 0x20277f]
dec dword [esi]
lea eax, [ecx - 0xa]
cmp eax, 3
ja 0x415084
jmp 0x414cc0
lea eax, [ecx - 0x2028]
push cs
inc esi
add dword [edi], ecx
xchg dword [esp + esi*4 - 0x2c160004], ebx
mov al, 0xfc
dec dword [ebx - 0x1e7e07bb]
inc dword [ebx]
dec dword [edi]
clc
and ecx, 0xfff03ff
shl ecx, 0xa
movzx eax, word [eax]
and eax, 0xfff03ff
or ecx, eax
add ecx, 0xe8018306
add dword [ebp - 8], 2
mov dword [ebp - 0x14], ecx
jmp 0xe9414edf
cli
mov al, byte [0x72004539]
or al, 0x81
cli
call edi
push es
or dword [edi], 0xffffff86
inc esi
invalid