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

Disassembly:
sub esp, 0x24
push ebx
push ebp
push esi
mov esi, ecx
mov eax, dword [esi + 0x1c]
xor ebx, ebx
cmp eax, 0xa
mov dword [esp + 0x14], ebx
jl 0x4cd208
lea eax, [esp + 0x14]
push eax
push 1
lea ecx, [esp + 0x17]
push ecx
lea edx, [esi + 4]
push edx
call fcn.0049f9d0
cmp dword [esp + 0x14], ebx
jne 0x4cd1fa
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x24
ret
movzx ebp, byte [esp + 0xf]
add ebp, 0xa
mov dword [esp + 0x24], ebp
jmp 0x4cd20e
mov ebp, eax
mov dword [esp + 0x24], eax
push edi
mov edi, dword [esi + 0x30]
xor al, al
xor cl, cl
xor dl, dl
cmp edi, dword [esi + 0x34]
mov byte [esp + 0x17], bl
jl 0x4cd2a0
cmp dword [esi + 0x1c], 2
jne 0x4cd508
mov ecx, dword [esi + 0x28]
cmp ecx, 1
jne 0x4cd3cf
mov eax, dword [esi + 0x30]
cmp eax, dword [esi + 0x34]
mov edx, dword [esi + 0x38]
movzx edi, byte [edx + eax - 1]
jge 0x4cd508
jmp 0x4cd250
mov ecx, dword [esi + 0x38]
mov dl, byte [ecx + eax]
lea ebp, [ecx + eax]
movzx ecx, dl
shl edi, 8
or edi, ecx
mov ecx, dword [esi + 0x24]
mov ebx, edi
shr ebx, cl
add eax, 8
xor bl, dl
mov byte [ebp], bl
cmp eax, dword [esi + 0x34]
jl 0x4cd250
mov edx, dword [esi + 0x30]
pop edi
mov dword [esi + 0x3c], edx
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0x24
ret
mov al, byte [esp + 0x16]
mov cl, byte [esp + 0x15]
mov dl, byte [esp + 0x14]
mov ebp, dword [esp + 0x28]
mov byte [esp + 0x17], al
mov eax, dword [esi + 0x38]
mov byte [esp + 0x15], dl
lea edx, [esp + 0x18]
push edx
mov byte [esp + 0x1a], cl
mov cl, byte [edi + eax]
push 1
lea eax, [esp + 0x1b]
push eax
lea eax, [esi + 4]
push eax
mov byte [esp + 0x24], cl
call fcn.0049f9d0
cmp dword [esp + 0x18], ebx
je 0x4cd3c5
movzx eax, byte [esp + 0x13]
lea ecx, [ebp - 0xb]
cmp ecx, 3
mov dword [esp + 0x1c], eax
ja case.default.0x4cd2ea
jmp dword [ecx*4 + 0x4cd518]
mov ecx, dword [esi + 0x38]
mov edx, ecx
sub edx, dword [esi + 0x30]
mov dl, byte [edx + edi]
add dl, al
mov byte [ecx + edi], dl
jmp 0x4cd3b4
mov ecx, dword [esi + 0x38]
add ecx, edi
add byte [ecx], al
jmp 0x4cd3b4
mov ecx, dword [esi + 0x38]
movzx ebp, byte [ecx + edi]
mov edx, ecx
sub edx, dword [esi + 0x30]
movzx edx, byte [edx + edi]
add edx, ebp
sar edx, 1
add dl, al
mov byte [ecx + edi], dl
jmp 0x4cd3b4
mov ebp, dword [esi + 0x38]
mov edx, dword [esi + 0x30]
mov eax, ebp
sub eax, edx
movzx ecx, byte [eax + edi]
movzx edx, byte [esp + edx + 0x14]
movzx eax, byte [edi + ebp]
mov dword [esp + 0x20], eax
sub eax, edx
add eax, ecx
mov dword [esp + 0x2c], edx
mov edx, eax
sub edx, ecx
jns 0x4cd35b
neg edx
mov ebx, eax
sub ebx, dword [esp + 0x20]
mov dword [esp + 0x24], ebx
jns 0x4cd36d
neg ebx
mov dword [esp + 0x24], ebx
sub eax, dword [esp + 0x2c]
jns 0x4cd375
neg eax
mov ebx, dword [esp + 0x24]
cmp edx, ebx
jg 0x4cd38c
cmp edx, eax
jg 0x4cd38c
add cl, byte [esp + 0x1c]
xor ebx, ebx
mov byte [edi + ebp], cl
jmp 0x4cd3b4
cmp ebx, eax
jg 0x4cd39f
mov al, byte [esp + 0x20]
add al, byte [esp + 0x1c]
xor ebx, ebx
mov byte [edi + ebp], al
jmp 0x4cd3b4
mov al, byte [esp + 0x2c]
add al, byte [esp + 0x1c]
xor ebx, ebx
mov byte [edi + ebp], al
jmp 0x4cd3b4
mov ecx, dword [esi + 0x38]
mov byte [edi + ecx], al
add edi, 1
cmp edi, dword [esi + 0x34]
jl 0x4cd290
jmp 0x4cd221
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x24
ret
cmp ecx, 8
jne 0x4cd408
mov eax, dword [esi + 0x30]
cmp eax, dword [esi + 0x34]
jge 0x4cd508
mov ecx, dword [esi + 0x38]
mov edx, ecx
sub edx, dword [esi + 0x24]
add eax, 1
mov dl, byte [edx + eax - 1]
add byte [ecx + eax - 1], dl
cmp eax, dword [esi + 0x34]
jl 0x4cd3e0
mov edx, dword [esi + 0x30]
pop edi
mov dword [esi + 0x3c], edx
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0x24
ret
mov eax, 1
shl eax, cl
xor edx, edx
xor ebp, ebp
mov byte [esp + 0x17], bl
sub eax, 1
cmp dword [esi + 0x2c], ebx
mov dword [esp + 0x30], eax
mov eax, dword [esi + 0x30]
mov byte [esp + 0x16], bl
mov byte [esp + 0x15], bl
mov byte [esp + 0x14], bl
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x2c], ebx
jle 0x4cd508
lea ebx, [ebx]
mov edi, dword [esi + 0x28]
cmp ebp, edi
jge 0x4cd477
mov ecx, dword [esp + 0x1c]
mov eax, dword [esi + 0x38]
movzx eax, byte [eax + ecx]
mov ecx, dword [esp + 0x20]
add dword [esp + 0x1c], 1
shl ecx, 8
or eax, ecx
mov dword [esp + 0x20], eax
add ebp, 8
mov al, byte [esp + 0x16]
mov cl, byte [esp + 0x15]
mov byte [esp + 0x17], al
mov byte [esp + 0x16], cl
mov eax, ebp
sub eax, edi
mov byte [esp + 0x15], bl
mov ebx, dword [esp + 0x20]
mov ecx, eax
shr ebx, cl
mov ecx, dword [esi + 0x24]
mov ebp, eax
mov eax, dword [esp + 0x24]
add bl, byte [esp + ecx + 0x14]
mov ecx, edi
and bl, byte [esp + 0x30]
shl edx, cl
movzx ecx, bl
add eax, edi
or edx, ecx
cmp eax, 8
mov byte [esp + 0x14], bl
mov dword [esp + 0x24], eax
jle 0x4cd4d9
mov edi, dword [esp + 0x28]
lea ecx, [eax - 8]
mov eax, edx
shr eax, cl
mov ecx, dword [esi + 0x38]
add edi, 1
mov dword [esp + 0x28], edi
mov byte [edi + ecx - 1], al
mov eax, dword [esp + 0x2c]
add eax, 1
cmp eax, dword [esi + 0x2c]
mov dword [esp + 0x2c], eax
jl 0x4cd450
mov eax, dword [esp + 0x24]
test eax, eax
jle 0x4cd508
mov ecx, 8
sub ecx, eax
mov eax, dword [esi + 0x38]
shl dl, cl
mov ecx, dword [esp + 0x28]
mov byte [ecx + eax], dl
mov edx, dword [esi + 0x30]
pop edi
mov dword [esi + 0x3c], edx
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0x24
ret