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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x58
mov esi, dword [esp + 0x70]
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x10], eax
mov dword [esp + 0x24], ecx
mov eax, dword [ecx + 0x80]
mov dword [esp + 0x20], eax
mov word [esp + 8], 0x3d3f
mov byte [esp + 0xa], 0xca
mov word [esp + 0xb], 0
mov ebx, 0x33
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + ebx - 0x2b]
mov eax, ecx
and eax, ebx
add al, al
sub cl, al
movzx eax, cl
add eax, ebx
inc al
mov byte [esp + ebx - 0x2b], al
inc ebx
cmp ebx, 0x38
jne 0x409450
mov dword [esp + 0x14], 0x121014fe
mov word [esp + 0x18], 0x1d12
mov dword [esp + 0x1a], 0
xor edi, edi
xor ebp, ebp
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + ebp + 0x14]
mov ebx, edi
and ebx, 0x14
mov eax, ebp
xor eax, 0xc8691d7a
add eax, ebx
mov ebx, eax
and ebx, ecx
add eax, ecx
add ebx, ebx
sub eax, ebx
add al, 0x9e
mov byte [esp + ebp + 0x14], al
inc ebp
add edi, 2
cmp ebp, 0xa
jne 0x409490
mov dword [esp + 0x28], 0xacf93735
mov dword [esp + 0x2c], 0xb187a9ae
mov dword [esp + 0x30], 0x8ee2ccb4
mov dword [esp + 0x34], 0xbcb9b5b3
mov dword [esp + 0x38], 0xbc87bd81
mov dword [esp + 0x3c], 0xb9f2f3be
mov dword [esp + 0x40], 0xfabb8783
mov dword [esp + 0x44], 0xba8eb4b0
mov dword [esp + 0x48], 0xbe8cf9c7
mov dword [esp + 0x4c], 0xe5dfb8b1
mov byte [esp + 0x50], 0
mov dword [esp + 0x51], 0
lea ebx, [esp + 0x28]
mov ebp, 0xb5
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [ebx]
lea ecx, [ebp - 0x2bcffd00]
or ecx, eax
mov edi, ecx
not edi
lea edx, [ecx + edi*2]
and eax, ebp
not eax
not edx
lea ecx, [ecx + edi*2]
inc ecx
or ecx, eax
add ecx, edx
lea eax, [ecx + ecx]
not eax
add eax, ecx
add al, 0x8e
mov byte [ebx], al
inc ebx
dec ebp
cmp ebp, 0x88
jne 0x409530
mov eax, dword [esp + 0x20]
add dword [esp + 0x10], eax
mov word [esp], 0xa8af
mov byte [esp + 2], 0x9a
mov word [esp + 3], 0
mov edi, 0x9b
mov ecx, dword [esp + 0x24]
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + edi - 0x9b]
mov ebx, eax
not ebx
or ebx, edi
add bl, bl
add bl, al
neg bl
movzx eax, bl
add eax, edi
add al, 0xf7
mov byte [esp + edi - 0x9b], al
inc edi
cmp edi, 0xa0
jne 0x409590
movzx ebx, byte [esp]
mov eax, dword [esp + 0x10]
mov edi, eax
test bl, bl
je 0x4095dc
lea ebp, [esp + 1]
mov edi, eax
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [ebp]
inc ebp
test bl, bl
jne 0x4095d0
mov byte [edi], 0
movzx ebx, byte [ecx + 0x60]
test bl, bl
je 0x4095fe
lea ebp, [ecx + 0x61]
mov edx, dword [esp + 0x74]
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [ebp]
inc ebp
test bl, bl
jne 0x4095f0
jmp 0x409602
mov edx, dword [esp + 0x74]
mov byte [edi], 0
movzx ebx, byte [esp + 0x28]
test bl, bl
je 0x40962c
lea ebp, [esp + 0x29]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [ebp]
inc ebp
test bl, bl
jne 0x409620
mov byte [edi], 0
movzx ebx, byte [esi]
test bl, bl
je 0x40964b
inc esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x409640
mov byte [edi], 0
movzx ebx, byte [esp + 0x14]
test bl, bl
je 0x40966b
lea esi, [esp + 0x15]
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x409660
mov byte [edi], 0
movzx ebx, byte [edx]
test bl, bl
je 0x40968b
inc edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [edx]
inc edx
test bl, bl
jne 0x409680
mov byte [edi], 0
movzx edx, byte [esp + 8]
test dl, dl
je 0x4096ab
lea esi, [esp + 9]
nop
nop
nop
nop
nop
mov byte [edi], dl
inc edi
movzx edx, byte [esi]
inc esi
test dl, dl
jne 0x4096a0
mov byte [edi], 0
sub edi, eax
add dword [ecx + 0x80], edi
add esp, 0x58
pop esi
pop edi
pop ebx
pop ebp
ret 0xc