Function at 0x4c5c40
Capabilities:
Encrypt data using rc4 prga

Disassembly:
mov ecx, dword [0x5efcb0]
mov ecx, dword fs:[ecx]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x4c5ea7
sub esp, 0x50
mov edx, dword [esp + 0x54]
test byte [edx], al
mov edx, dword [edx + 0x20]
test edx, edx
setne dl
mov byte [esp + 0x16], dl
jne 0x4c5c6d
jmp 0x4c5c6f
jmp 0x4c5c86
mov edx, dword [esp + 0x54]
test byte [edx], al
mov edx, dword [edx + 8]
test edx, edx
setne dl
xor edx, 1
mov byte [esp + 0x16], dl
jmp 0x4c5c86
movzx edx, byte [esp + 0x16]
test dl, dl
jne 0x4c5c91
jmp 0x4c5c95
add esp, 0x50
ret
mov edx, dword [esp + 0x54]
test byte [edx], al
mov ebx, dword [edx + 0xc]
mov ebp, dword [edx + 8]
mov edx, dword [edx + 0x10]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x18], 0
mov dword [esp + 0x20], ebx
jmp 0x4c5cbe
mov edx, dword [esp + 0x18]
cmp dword [esp + 0x20], edx
jg 0x4c5ccd
jmp 0x4c5d67
mov eax, dword [esp + 0x24]
add eax, dword [esp + 0x18]
movzx eax, byte [eax]
mov byte [esp + 0x10], al
mov byte [esp], al
call fcn.004c4470
movzx eax, byte [esp + 4]
mov byte [esp + 0x16], al
test al, al
jne 0x4c5cf3
jmp 0x4c5cf5
jmp 0x4c5d69
cmp byte [esp + 0x10], 0x3a
je 0x4c5cfe
jmp 0x4c5d5c
mov word [esp + 0x14], 0
lea eax, [esp + 0x14]
mov dword [esp + 0x40], eax
test byte [eax], al
mov byte [eax], 0x2e
mov eax, dword [esp + 0x40]
test byte [eax], al
mov byte [eax + 1], 0x5c
mov eax, dword [esp + 0x40]
test byte [eax], al
jmp 0x4c5d24
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], 2
mov dword [esp + 0x4c], 2
mov ecx, dword [esp + 0x54]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
mov dword [esp + 0xc], 2
call fcn.004c3640
add esp, 0x50
ret
jmp 0x4c5d5e
inc dword [esp + 0x18]
jmp 0x4c5cbe
jmp 0x4c5d69
mov edx, dword [esp + 0x54]
test byte [edx], al
mov edx, dword [edx + 0xc]
mov dword [esp + 0x1c], edx
cmp edx, 3
setge dl
mov byte [esp + 0x12], dl
jge 0x4c5d84
jmp 0x4c5db7
mov edx, dword [esp + 0x54]
test byte [edx], al
mov ecx, dword [edx + 0xc]
mov edx, dword [edx + 8]
test ecx, ecx
ja 0x4c5d99
jmp 0x4c5e9f
movzx eax, byte [edx]
mov byte [esp + 0x17], al
mov byte [esp], al
call fcn.004c4470
movzx eax, byte [esp + 4]
mov byte [esp + 0x11], al
mov byte [esp + 0x12], al
jmp 0x4c5db9
jmp 0x4c5db9
movzx edx, byte [esp + 0x12]
mov byte [esp + 0x13], dl
test dl, dl
jne 0x4c5dc8
jmp 0x4c5deb
mov edx, dword [esp + 0x54]
test byte [edx], al
mov ecx, dword [edx + 0xc]
mov edx, dword [edx + 8]
cmp ecx, 1
ja 0x4c5dde
jmp 0x4c5e95
cmp byte [edx + 1], 0x3f
sete dl
mov byte [esp + 0x13], dl
jmp 0x4c5ded
jmp 0x4c5ded
movzx edx, byte [esp + 0x13]
mov byte [esp + 0x16], dl
test dl, dl
jne 0x4c5dfc
jmp 0x4c5e1c
mov edx, dword [esp + 0x54]
test byte [edx], al
mov ecx, dword [edx + 0xc]
mov edx, dword [edx + 8]
cmp ecx, 2
ja 0x4c5e0f
jmp 0x4c5e8b
cmp byte [edx + 2], 0x3f
sete al
mov byte [esp + 0x16], al
jmp 0x4c5e1e
jmp 0x4c5e1e
movzx eax, byte [esp + 0x16]
test al, al
jne 0x4c5e29
jmp 0x4c5e85
mov word [esp + 0x14], 0
lea eax, [esp + 0x14]
mov dword [esp + 0x30], eax
test byte [eax], al
mov byte [eax], 0x5c
mov eax, dword [esp + 0x30]
test byte [eax], al
mov byte [eax + 1], 0x2e
mov eax, dword [esp + 0x30]
test byte [eax], al
jmp 0x4c5e4f
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], 2
mov dword [esp + 0x3c], 2
mov ecx, dword [esp + 0x54]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
mov dword [esp + 0xc], 2
call fcn.004c3640
jmp 0x4c5e87
jmp 0x4c5e87
add esp, 0x50
ret
mov eax, 2
call fcn.00475830
mov eax, 1
call fcn.00475830
xor eax, eax
call fcn.00475830
nop
call fcn.004743b0
jmp fcn.004c5c40