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

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
and esp, 0xfffffff0
sub esp, 0x10
mov eax, dword [ebp + 8]
mov edi, dword [eax]
mov esi, dword [eax + 8]
mov edx, dword [eax + 4]
mov dword [esp + 0xc], edi
test esi, esi
je 0x42e680
test edi, edi
je 0x42e680
movzx eax, byte [esi]
mov ebx, edi
and edx, 0x100
jne 0x42e700
cmp eax, 0x7f
jbe 0x42e720
add edi, 1
mov dword [esp + 8], edi
mov dword [esp + 0xc], edi
xor edi, edi
mov edx, dword [esp + 8]
jmp 0x42e696
mov dword [esp + 0xc], 1
xor edx, edx
xor edi, edi
xor ebx, ebx
mov dword [esp + 8], 1
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x42e6f1
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
mov dword [esp + 4], eax
test eax, eax
je 0x42e6f1
mov ecx, eax
mov eax, edi
mov byte [ecx], al
test ebx, ebx
je 0x42e6e8
sub edx, ebx
and eax, 1
lea ecx, [ebx - 1]
mov ebx, dword [esp + 4]
movzx eax, al
add ebx, edx
mov edx, edi
mov edi, eax
lea esi, [esi]
movzx eax, byte [esi + ecx]
xor eax, edx
movzx eax, al
add eax, edi
mov byte [ebx + ecx], al
shr eax, 8
mov edi, eax
sub ecx, 1
jae 0x42e6d0
mov eax, dword [ebp + 0xc]
mov esi, dword [esp + 8]
add dword [eax], esi
mov eax, dword [esp + 0xc]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
cmp eax, 0x80
mov eax, dword [esp + 0xc]
jbe 0x42e730
add eax, 1
mov edi, 0xffffffff
mov dword [esp + 8], eax
mov dword [esp + 0xc], eax
jmp 0x42e67a
test edx, edx
jne 0x42e700
mov dword [esp + 8], edi
xor edi, edi
jmp 0x42e67a
mov dword [esp + 8], eax
mov edi, 0xffffffff
jne 0x42e67a
cmp eax, 1
je 0x42e728
lea edi, [eax - 1]
sub eax, 2
cmp eax, 0xe
jbe 0x42e8dd
mov ecx, edi
pxor xmm3, xmm3
pxor xmm4, xmm4
mov eax, esi
and ecx, 0xfffffff0
pxor xmm2, xmm2
lea edx, [ecx + esi]
lea esi, [esi]
movdqu xmm1, xmmword [eax + 1]
movdqu xmm0, xmmword [eax + 1]
add eax, 0x10
punpcklbw xmm1, xmm4
punpckhbw xmm0, xmm4
movdqa xmm5, xmm1
punpcklwd xmm1, xmm2
punpckhwd xmm5, xmm2
por xmm1, xmm5
movdqa xmm5, xmm0
punpcklwd xmm0, xmm2
punpckhwd xmm5, xmm2
por xmm0, xmm5
por xmm1, xmm0
por xmm3, xmm1
cmp eax, edx
jne 0x42e770
movdqa xmm0, xmm3
lea edx, [ecx + 1]
psrldq xmm0, 8
por xmm3, xmm0
movdqa xmm0, xmm3
psrldq xmm0, 4
por xmm3, xmm0
movd eax, xmm3
cmp edi, ecx
je 0x42e8bc
movzx ecx, byte [esi + edx]
mov edi, dword [esp + 0xc]
or eax, ecx
lea ecx, [edx + 1]
cmp ecx, edi
jae 0x42e8bc
movzx ecx, byte [esi + edx + 1]
or eax, ecx
lea ecx, [edx + 2]
cmp ecx, edi
jae 0x42e8bc
movzx ecx, byte [esi + edx + 2]
or eax, ecx
lea ecx, [edx + 3]
cmp ecx, edi
jae 0x42e8bc
movzx ecx, byte [esi + edx + 3]
or eax, ecx
lea ecx, [edx + 4]
cmp ecx, edi
jae 0x42e8bc
movzx ecx, byte [esi + edx + 4]
or eax, ecx
lea ecx, [edx + 5]
cmp ecx, edi
jae 0x42e8bc
movzx ecx, byte [esi + edx + 5]
or eax, ecx
lea ecx, [edx + 6]
cmp ecx, edi
jae 0x42e8bc
movzx ecx, byte [esi + edx + 6]
or eax, ecx
lea ecx, [edx + 7]
cmp ecx, edi
jae 0x42e8bc
movzx ecx, byte [esi + edx + 7]
or eax, ecx
lea ecx, [edx + 8]
cmp ecx, edi
jae 0x42e8bc
movzx ecx, byte [esi + edx + 8]
or eax, ecx
lea ecx, [edx + 9]
cmp ecx, edi
jae 0x42e8bc
movzx ecx, byte [esi + edx + 9]
or eax, ecx
lea ecx, [edx + 0xa]
cmp ecx, edi
jae 0x42e8bc
movzx ecx, byte [esi + edx + 0xa]
or eax, ecx
lea ecx, [edx + 0xb]
cmp ecx, edi
jae 0x42e8bc
movzx ecx, byte [esi + edx + 0xb]
or eax, ecx
lea ecx, [edx + 0xc]
cmp ecx, edi
jae 0x42e8bc
movzx ecx, byte [esi + edx + 0xc]
or eax, ecx
lea ecx, [edx + 0xd]
cmp ecx, edi
jae 0x42e8bc
movzx ecx, byte [esi + edx + 0xd]
or eax, ecx
lea ecx, [edx + 0xe]
cmp ecx, edi
jae 0x42e8bc
movzx edx, byte [esi + edx + 0xe]
or eax, edx
test eax, eax
setne al
mov edx, eax
movzx eax, al
neg edx
mov edi, edx
mov edx, dword [esp + 0xc]
add edx, eax
mov dword [esp + 8], edx
mov dword [esp + 0xc], edx
jmp 0x42e67a
xor eax, eax
mov edx, 1
jmp 0x42e7da