Function at 0x4098e0
Capabilities:
Encode data using xor
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xa0
mov eax, dword [ebp + 8]
add eax, dword [ecx + 0x60]
mov dword [esp + 0x50], 0
mov dword [esp + 0x68], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x54], 0
mov word [esp + 0x50], 0x5b41
mov byte [esp + 0x52], 0x50
mov dword [esp + 0x10], 0
mov edx, dword [esp + 0x10]
cmp edx, 0x1b
ja 0x409989
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x10]
movzx esi, byte [esp + esi + 0x50]
lea edi, [edx + 0x70920ab3]
and edi, esi
add edx, esi
add edx, 0x70920ab3
add edi, edi
sub edx, edi
add dl, 0x1b
mov esi, dword [esp + 0x10]
mov byte [esp + esi + 0x50], dl
inc dword [esp + 0x10]
mov edx, dword [esp + 0x10]
cmp edx, 0x1c
jb 0x409950
mov dword [esp + 0x70], 0x3e3c302a
mov word [esp + 0x74], 0x413e
mov dword [esp + 0x76], 0
mov dword [esp + 0x7a], 0
mov dword [esp + 0x7e], 0
mov dword [esp + 0x82], 0
mov dword [esp + 0x10], 0
mov edx, dword [esp + 0x10]
cmp edx, 0x15
ja 0x409a00
nop
nop
nop
nop
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x10]
movzx esi, byte [esp + esi + 0x70]
lea edi, [edx + 0x76]
and edi, esi
add edx, esi
add edi, edi
sub edx, edi
add dl, 0x3c
mov esi, dword [esp + 0x10]
mov byte [esp + esi + 0x70], dl
inc dword [esp + 0x10]
mov edx, dword [esp + 0x10]
cmp edx, 0x16
jb 0x4099d0
mov dword [esp + 0x10], 0xfcf2a6a1
mov dword [esp + 0x14], 0xf0f0a2aa
mov dword [esp + 0x18], 0xf7e8f2a1
mov dword [esp + 0x1c], 0x888f88eb
mov dword [esp + 0x20], 0xd08f9394
mov dword [esp + 0x24], 0x9ee12735
mov dword [esp + 0x28], 0x9d879598
mov dword [esp + 0x2c], 0x9cf8c296
mov dword [esp + 0x30], 0x8e81818b
mov dword [esp + 0x34], 0x8e978199
mov dword [esp + 0x38], 0x95d8c388
mov dword [esp + 0x3c], 0xf0b3b78b
mov dword [esp + 0x40], 0xa0bca2aa
mov dword [esp + 0x44], 0xacbaedc7
mov dword [esp + 0x48], 0xe9cfa6b9
mov byte [esp + 0x4c], 0xa
mov word [esp + 0x4d], 0
mov byte [esp + 0x4f], 0
mov dword [esp + 0xc], 0
mov edx, dword [esp + 0xc]
cmp edx, 0x3f
ja 0x409af3
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 0xc]
mov esi, dword [esp + 0xc]
movzx esi, byte [esp + esi + 0x10]
lea edi, [edx + esi]
add edi, 0x36f6d033
add edx, 0x36f6d033
and edx, esi
add edx, edx
mov esi, edx
xor esi, edi
not edx
and edx, edi
add edx, edx
sub edx, esi
mov esi, edx
or esi, 0x9a
and edx, 0x9a
add edx, esi
inc dl
mov esi, dword [esp + 0xc]
mov byte [esp + esi + 0x10], dl
inc dword [esp + 0xc]
mov edx, dword [esp + 0xc]
cmp edx, 0x40
jb 0x409aa0
mov esi, dword [ebp + 0xc]
movzx ebx, byte [esp + 0x10]
mov edx, eax
test bl, bl
je 0x409b1b
lea edi, [esp + 0x11]
mov edx, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x409b10
mov byte [edx], 0
movzx ebx, byte [esi]
test bl, bl
je 0x409b3b
inc esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x409b30
mov esi, dword [ebp + 0x10]
mov byte [edx], 0
movzx ebx, byte [esp + 0x70]
test bl, bl
je 0x409b5b
lea edi, [esp + 0x71]
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x409b50
mov byte [edx], 0
movzx ebx, byte [esi]
test bl, bl
je 0x409b7b
inc esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x409b70
mov byte [edx], 0
movzx ebx, byte [esp + 0x50]
test bl, bl
je 0x409b9b
lea esi, [esp + 0x51]
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x409b90
mov byte [edx], 0
sub edx, eax
add dword [ecx + 0x60], edx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0xc