Function at 0x404eb0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x5c
push ebx
push esi
push edi
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
mov dword [ebp - 4], ecx
mov edx, dword [ebp - 4]
add edx, 1
mov dword [ebp - 4], edx
mov eax, dword [ebp - 4]
xor ecx, ecx
mov cl, byte [eax]
mov dword [ebp - 8], ecx
cmp dword [ebp - 8], 0
jne 0x404ee8
mov edx, dword [ebp + 0xc]
mov dword [edx], str._at_end_of_pattern
jmp 0x405117
cmp dword [ebp - 8], 0x30
jl 0x404ef4
cmp dword [ebp - 8], 0x7a
jle 0x404ef9
jmp 0x405117
mov eax, dword [ebp - 8]
movsx ecx, word [eax*2 + 0x449fcc]
mov dword [ebp - 0xc], ecx
cmp dword [ebp - 0xc], 0
je 0x404f18
mov edx, dword [ebp - 0xc]
mov dword [ebp - 8], edx
jmp 0x405117
mov eax, dword [ebp - 8]
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp - 0x18]
sub ecx, 0x30
mov dword [ebp - 0x18], ecx
cmp dword [ebp - 0x18], 0x48
ja case.0x404f3c.5
mov eax, dword [ebp - 0x18]
xor edx, edx
mov dl, byte [eax + 0x405141]
jmp dword [edx*4 + 0x405129]
mov ecx, dword [ebp + 0xc]
mov dword [ecx], str.PCRE_does_not_support_L__l__N__P__p__U__u__or_X
jmp 0x405117
cmp dword [ebp + 0x18], 0
jne 0x404fc0
mov edx, dword [ebp - 4]
mov dword [ebp - 0x10], edx
mov eax, dword [ebp - 8]
sub eax, 0x30
mov dword [ebp - 8], eax
mov ecx, dword [ebp - 4]
xor edx, edx
mov dl, byte [ecx + 1]
xor eax, eax
mov al, byte [edx + 0x44a17c]
and eax, 4
test eax, eax
je 0x404f9c
mov ecx, dword [ebp - 8]
imul ecx, ecx, 0xa
mov edx, dword [ebp - 4]
add edx, 1
mov dword [ebp - 4], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dl, byte [eax]
lea eax, [ecx + edx - 0x30]
mov dword [ebp - 8], eax
jmp 0x404f66
cmp dword [ebp - 8], 0xa
jl 0x404faa
mov ecx, dword [ebp - 8]
cmp ecx, dword [ebp + 0x10]
jg 0x404fba
mov edx, dword [ebp - 8]
add edx, 0x11
neg edx
mov dword [ebp - 8], edx
jmp 0x405117
mov eax, dword [ebp - 0x10]
mov dword [ebp - 4], eax
mov ecx, dword [ebp - 4]
xor edx, edx
mov dl, byte [ecx]
mov dword [ebp - 8], edx
cmp dword [ebp - 8], 0x38
jl case.0x404f3c.0
mov eax, dword [ebp - 4]
sub eax, 1
mov dword [ebp - 4], eax
mov dword [ebp - 8], 0
jmp 0x405117
mov ecx, dword [ebp - 8]
sub ecx, 0x30
mov dword [ebp - 8], ecx
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0xc]
add eax, 1
mov dword [ebp - 0xc], eax
cmp edx, 2
jge 0x405035
mov ecx, dword [ebp - 4]
xor edx, edx
mov dl, byte [ecx + 1]
cmp edx, 0x30
jl 0x405035
mov eax, dword [ebp - 4]
xor ecx, ecx
mov cl, byte [eax + 1]
cmp ecx, 0x37
jg 0x405035
mov edx, dword [ebp - 4]
add edx, 1
mov dword [ebp - 4], edx
mov eax, dword [ebp - 4]
xor ecx, ecx
mov cl, byte [eax]
mov edx, dword [ebp - 8]
lea eax, [ecx + edx*8 - 0x30]
mov dword [ebp - 8], eax
jmp 0x404fee
mov ecx, dword [ebp - 8]
and ecx, 0xff
mov dword [ebp - 8], ecx
jmp 0x405117
mov dword [ebp - 8], 0
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0xc]
add eax, 1
mov dword [ebp - 0xc], eax
cmp edx, 2
jge 0x4050b6
mov ecx, dword [ebp - 4]
xor edx, edx
mov dl, byte [ecx + 1]
xor eax, eax
mov al, byte [edx + 0x44a17c]
and eax, 8
test eax, eax
je 0x4050b6
mov ecx, dword [ebp - 4]
add ecx, 1
mov dword [ebp - 4], ecx
mov edx, dword [ebp - 4]
xor eax, eax
mov al, byte [edx]
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0x61
jl 0x405097
mov ecx, dword [ebp - 0x14]
sub ecx, 0x20
mov dword [ebp - 0x14], ecx
mov edx, dword [ebp - 8]
shl edx, 4
add edx, dword [ebp - 0x14]
xor eax, eax
cmp dword [ebp - 0x14], 0x41
setge al
dec eax
and al, 0xf9
add eax, 0x37
sub edx, eax
mov dword [ebp - 8], edx
jmp 0x40504d
jmp 0x405117
mov ecx, dword [ebp - 4]
add ecx, 1
mov dword [ebp - 4], ecx
mov edx, dword [ebp - 4]
xor eax, eax
mov al, byte [edx]
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x4050de
mov ecx, dword [ebp + 0xc]
mov dword [ecx], str.c_at_end_of_pattern
xor eax, eax
jmp 0x405122
cmp dword [ebp - 8], 0x61
jl 0x4050f3
cmp dword [ebp - 8], 0x7a
jg 0x4050f3
mov edx, dword [ebp - 8]
sub edx, 0x20
mov dword [ebp - 8], edx
mov eax, dword [ebp - 8]
xor eax, 0x40
mov dword [ebp - 8], eax
jmp 0x405117
mov ecx, dword [ebp + 0x14]
and ecx, 0x40
test ecx, ecx
je 0x405117
mov edx, dword [ebp - 8]
mov dword [ebp - 0x1c], edx
mov eax, dword [ebp + 0xc]
mov dword [eax], str.unrecognized_character_follows__
mov ecx, dword [ebp + 8]
mov edx, dword [ebp - 4]
mov dword [ecx], edx
mov eax, dword [ebp - 8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret