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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xc
mov eax, dword [ebp + 0x10]
and dword [esp + 8], 0
cmp dword [ebp + 0xc], 0
mov cl, byte [eax]
mov dl, byte [eax + 1]
push ebx
push esi
push edi
jle 0x401d5b
movzx edi, cl
mov ecx, dword [0x43b458]
movzx ebx, dl
lea eax, [edi + 1]
cdq
mov esi, 0x329
idiv esi
movzx edi, dl
lea esi, [edi + ecx]
movzx eax, byte [esi]
add eax, ebx
mov byte [esp + 0x12], dl
cdq
mov ebx, 0x329
idiv ebx
mov al, byte [esi]
movzx ebx, dl
add ecx, ebx
mov byte [esp + 0x13], dl
mov dl, byte [ecx]
mov byte [esi], dl
mov byte [ecx], al
movzx ecx, byte [ecx]
movzx eax, byte [esi]
add eax, ecx
cdq
mov ecx, 0x329
idiv ecx
mov byte [esp + 0x11], dl
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
call fcn.00402754
mov esi, eax
call fcn.0040218e
mov eax, dword [ebp + 8]
mov esi, dword [esp + 0x14]
movzx edx, byte [esp + 0x11]
mov ecx, dword [0x43b458]
mov dl, byte [edx + ecx]
add eax, esi
xor byte [eax], dl
inc esi
cmp esi, dword [ebp + 0xc]
mov dword [esp + 0x14], esi
jl 0x401982
mov cl, byte [esp + 0x12]
mov eax, dword [ebp + 0x10]
mov dl, byte [esp + 0x13]
pop edi
pop esi
mov byte [eax], cl
mov byte [eax + 1], dl
pop ebx
mov esp, ebp
pop ebp
ret